完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
数据在数码管上显示
问题:1.打开初始ds1302写保护时,数据可以设置,但是每次关掉电源数据都会重新设置一次,起不了时钟的功能 2.关闭初始ds1302写保护时 ,数据设置不了,每次掉电都能保持原有数据 (下方标示处为问题所在,各位帮帮忙看下,我QQ:410294170) #include #define uchar unsigned char unsigned int second10,second1,minute10,minute1,hour10,hour1,date10,date1,month10,month1,year10,year1,day; int num; ***it RST=P1^2; ***it SCLK=P1^0; ***it SDA=P1^1; ***it key1=P1^4; void delay(int hm) //延时函数 { int i,j; for(i=hm;i>0;i--) for(j=110;j>0;j--); } #define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define READ_DATE 0x87 //几号 #define READ_MONTH 0x89 #define READ_DAY 0x8B //星期几 #define READ_YEAR 0x8D #define WRITE_SECOND 0x80 #define WRITE_MINUTE 0x82 #define WRITE_HOUR 0x84 #define WRITE_DATE 0x86 //几号 #define WRITE_MONTH 0x88 #define WRITE_DAY 0x8A //星期几 #define WRITE_YEAR 0x8C unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //定义共阳极字型码0123456789- void delayum(int hm) { int i,j; for(i=hm;i>0;i--) for(j=110;j>0;j--); } void ds1302writebyte(uchar dat) { uchar i; SCLK=0; for(i=0;i<8;i++) { SDA=dat&0x01; SCLK=1; SCLK=0; dat>>=1; } } uchar ds1302readbyte() // { uchar i,dat; for(i=0;i<8;i++) { dat>>=1; if(SDA==1) dat|=0x80; SDA=dat&0x01; SCLK=1; SCLK=0; } return(dat); } uchar ds1302read(uchar cmd)//写进去 地址 读出来数据 { uchar dat; RST=0; SCLK=0; RST=1; ds1302writebyte(cmd); dat=ds1302readbyte(); SCLK=1; RST=0; return(dat); } void ds1302write(uchar cmd,uchar dat) { RST=0; SCLK=0; RST=1; ds1302writebyte(cmd); ds1302writebyte(dat); SCLK=1; RST=0; } void display(second10,second1,minute10,minute1,hour10,hour1) //显示子程序 { P0=0; P2=0xfe; P0=dispcode[second10];//显示秒的十位 delayum(1);P0=0; P2=0xfd; P0=dispcode[second1]; //显示秒的个位 delayum(1);P0=0; P2=0xfb; P0=dispcode[10]; //显示"-" delayum(1);P0=0; P2=0xf7; P0=dispcode[minute10];//显示分的十位 delayum(1);P0=0; P2=0xef; P0=dispcode[minute1]; //显示分的个位 delayum(1);P0=0; P2=0xdf; P0=dispcode[10]; //显示"-" delayum(1);P0=0; P2=0xbf; P0=dispcode[hour10]; //显示时的十位 delayum(1);P0=0; P2=0x7f; P0=dispcode[hour1]; //显示时的个位 delayum(1); } void init_ds1302() { // ds1302write(0x8e,0x00);// 写保护关 ds1302write(WRITE_SECOND ,0x55);// 初始秒值为 0 0 0 0 ds1302write(WRITE_MINUTE,0x55); // 初始分钟值为 0 0 0 0 ds1302write(WRITE_HOUR,0x23);// 初始为 24242424 小时模式 初始时间为 ds1302write(WRITE_DAY,0x07);//2011 年 1 月 1 日 星期 6 ds1302write(WRITE_MONTH,0x12); ds1302write(WRITE_YEAR,0x13); ds1302write(WRITE_DATE,0x31); ds1302write(0x90,0x01);// 充电 ds1302write(0xc0,0xf0); // 初始化一次标示 // ds1302write(0x8e,0x80); } void init_dat() { second10=ds1302read(READ_SECOND)/16; second1=ds1302read(READ_SECOND)%16; minute10=ds1302read(READ_MINUTE)/16; minute1=ds1302read(READ_MINUTE)%16+num; hour10=ds1302read(READ_HOUR)/16; hour1=ds1302read(READ_HOUR)%16; date10=ds1302read(READ_DATE)/16; date1=ds1302read(READ_DATE)%16; month10=ds1302read(READ_MONTH)/16; month1=ds1302read(READ_MONTH)%16; year10=ds1302read(READ_YEAR)/16; year1=ds1302read(READ_YEAR)%16; day=ds1302read(READ_DAY); } main() { init_ds1302(); while(1) { init_dat(); display(minute10,minute1,hour10,hour1,second10,second1); } } |
|
相关推荐
10个回答
|
|
{:4:}{:4:}{:4:}{:4:}
|
|
|
|
各位帮帮忙啊 啊啊啊啊啊 啊
|
|
|
|
楼主还在不,问题解决木有 ,分享下啊
|
|
|
|
|
|
|
|
|
|
|
|
init_ds1302();作用是第一次下载的时候将DS1302赋初值的,之后要把init_ds1302();这个删掉。再下载一起。如果没有删掉,每次开机都会做init_ds1302();这个,这个就是每次都会赋初值,所以~~~~~~你懂的
|
|
|
|
我的程序和你一样的 我把初始化ds1302 第一下载没删 但是第二次下载删了 还是没用啊!
|
|
|
|
我的程序和你一样的
|
|
|
|
1302如果没有后备电源的话,断电后数据就会丢失,时钟会停止的。不管如何进行时钟设置,应该是再时钟初始化后,在1302的其中一个RAM里写一个标志,代表已经初始化了,每次初始化前先对这个标志进行判断,如果已经初始化了,就不再进行初始化,这样应该就可以解决问题 |
|
|
|
有没有查询1302是否数据,如有数据则跳过初始化的方法
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
148 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
348 浏览 2 评论
558 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
252 浏览 0 评论
388 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:39 , Processed in 0.737771 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号