本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
小弟初学,想用1602LCD做一个万年历!可是遇到一个问题,那就是按键设置时间和程序运行显示时间的问题,问题是这样的:
按键设置时间,那么应该是个位为9,再加一的话就应该个位为零十位加一。
那么我在按键设置时间时用了lcd_wdat(init[0]/10+0x30)显示秒的十位(其中init【0】为从DS1302读取的秒的数据)
lcd_wdat(init[0]/%10+0x30)显示秒的个位
在时间显示中我是用lcd_wdat(((init[0]&0x70)>>4)+0x30)显示秒十位
lcd_wdat(((init[0]&0x70)>>4)+0x30)显示秒个位
问题就出来了,因为按键设置是按照十进制来的,假如当前按键设置成了55保存近了init[0],那么在显示时间时init【0】里面的数据时55的十六进制也就是37,那么按键设置完毕时间显示程序显示秒时就由设置好的55变成37,并从37开始计时!
我想过将时间显示里面的lcd_wdat(((init[0]&0x70)>>4)+0x30)改成lcd_wdat(init[0]/10+0x30)这种,可是这么一来,显示的秒就不对了,不是从1到60而是中间会跳的,9->16,25->32,41->48,57->64,73->80,而且是90秒才向分进位。
鉴于此,我又将按键设置程序里面的时间显示改成lcd_wdat(((init[0]&0x70)>>4)+0x30)这种形式,虽然没了上诉两个问题,不过又多出个问题来,那就是由于是16进制,所以我的按键按到9接着按不会出现10而是0:(因该是10对应的字符吧),要多按5下,也就是一共15次后才出现10,而且秒最多只能到30几来着,我设置的是能按到59的。
各位大虾,救命了,这个问题困扰小弟已经一周多了,一直弄不出来!哪位大侠可以联系我,我要拜师!417717643,大侠这是我扣扣,方便的话教我 |
|