标题: 单片机电子钟调整后的时间无法写入ds1302 [打印本页]
作者: ai58520 时间: 2019-3-24 01:29
标题: 单片机电子钟调整后的时间无法写入ds1302
程序一开始是能够完善运行的,设置时间时停止不动,设置完毕后开始走动。
但是后来我将字库中的字符从8*16修改为16*32以后,虽然设置时间的时候仍是停止不动,但是其实还是在计时,设置完毕后时间就会自动跳转,不是我设置的那个数了。 目前发现仅有秒无法正确修改,且修改时只能减不能加,其余时,分,日期都能正常修改。
我怀疑是下面那段程序出错了,求解答。
如果能帮我解决一下12864显示残缺的问题就更好了,十分感谢!
单片机源程序:
- //-----------------------------------------------------------
- // 设置时间
- //---------------------------------------------------------
- void SET_DS1302() // 设置时间
- {
- uchar i;
- Write_Data_TO_DS1302(0x8E,0x00); //写控制字,取消写保护
- // 分,时,日,月,年依次写入
- for(i=1;i<7;i++)
- {
- // 分的起始地址是10000010(0x82),后面依次是时,日,月,周,年,写入地址每次递增2
- Write_Data_TO_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]%10)); //希望能解释一下这一句。
- }
- Write_Data_TO_DS1302(0x8E,0x80); //写控制字,加写保护
- }
- //--------------------------------------------------------
- // 读取当前时间
- //-------------------------------------------------------
- void GetTime() // 读取当前时间
- {
- uchar i;
- for(i=0;i<7;i++)
- {
- DateTime[i]=Read_Data_FROM_DS1302(0x81+2*i);
- }
- }
复制代码
作者: wc86110 时间: 2019-3-24 09:19
编者有意这么写的算不算错?
要解决残缺的问题得上剧本
作者: zl2168 时间: 2019-3-24 11:16
本帖最后由 zl2168 于 2019-3-26 11:16 编辑
实例91 具有校正功能的时钟1302(LCD1602显示)
先Proteus仿真,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,书中电路和程序设计有详细说明,程序语句条条有注解。
作者: 甫生啊啊啊 时间: 2021-4-25 14:49
你好,可以向向您请教一下.c 源代码吗?
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |