完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
发下我的程序,大家 看看哪有错误
#define uchar unsigned char #define unit unsigned int #define write_second 0x80 #define write_minute 0x82 #define write_hour 0x84 #define read_second 0x83 #define read_minute 0x85 #define read_hour 0x8e ***it SCLK=P3^3; ***it SDA=P3^4; ***it RST=P3^5; uchar hour=23;minute=59;second=58; void delay1(uchar x) { uchar i; while(x--) for(i=0;i<110;i++); } void DS1302WriteByte(uchar dat) { uchar i; for(i=0;i<8;i++ { SDA=dat&0x01 delay1(2); SCLK=1 delay1(2); dat>>=1; SCLK=0; } } uchar DS1302ReadByte() { uchar i,dat; delay1(2); for(i=0;i<8;i++) { dat>>=1; if(SDA==1 dat|=0x80; delay1(2); SCLK=0; delay1(2); } return dat; } /*每次发起数据传输之前,要复位ds1302*/ void resetds1302(void) { RST=0; SCLK=0; RST=1; } /*写数据前清除写保护*/ void cleards1302wp(void) { resetds1302(); RST=1; DS1302WriteByte(0X8E); DS1302WriteByte(0); SDA=0; RST=0; } /*写完数据设置写保护*/ void setds1302wp(void) { resetds1302(); RST=1; DS1302WriteByte(0X8E); DS1302WriteByte(0X80); SDA=0; RST=0; } uchar DS1302Read(uchar addr) { uchar tmp=0; resetds1302(); RST=1; DS1302WriteByte(addr); tmp=DS1302ReadByte(); SDA=0; RST=0; return tmp; } void DS1302Write(uchar addr,uchar dat) { resetds1302; RST=1; DS1302WriteByte(addr); DS1302WriteByte(dat); SDA=0; RST=0; } void set_time(uchar addr,uchar time) { uchar tmp; tmp=time/10; time=time%10; time=time+tmp*16; cleards1302wp(); DS1302Write(addr,time); setds1302wp(); } void read_time(uchar addr,uchar time) { time=DS1302Read(addr); } void dispalytime(uchar addr,uchar time) { uchar shi,ge; shi=time/16; ge=time%16; com(addr); dat(0x30+shi); dat(0x30+ge); } void main() { set_time(write_hour,hour); set_time(write_minute,minute); set_time(write_second,second); while(1) { read_time(read_hour,hour); dispalytime(0x90,hour); read_time(read_minute,minute); dispalytime(0x92,minute); read_time(read_second,second); dispalytime(0x94,second); } } com(),dat() 是12864 显示所需子函数. 硬件上一开始显示初始值,完后马上显示17 : 3; : 3: 这算是乱码吗?且时间不变化, 硬件上没有在晶振处加电容 谁有能用的程序给一份 但是大多数都是这样的吧 |
|
相关推荐
24个回答
|
|
额。。。这个。。。
|
|
|
|
我也遇到这样的问题
|
|
|
|
我自己新做的一块板,上面ds1302是全新的,不懂如何初始化,谁能帮助一下!十分感谢
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1054 浏览 3 评论
720 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
821 浏览 0 评论
905 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
728 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10853 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-25 10:14 , Processed in 0.580513 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191