完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include
#include #define uint unsigned int #define uchar unsigned char ***it SCK=P3^6; ***it SDA=P3^4; ***it RST=P3^5; ***it rs=P2^6; ***it rw=P2^5; ***it lcden=P2^7; uchar timedata[7]={14,02,03,18,12,0,0}; //nian 星期 y uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; uchar disp[13]; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_ds1302_byte(uchar dat) { uchar i; for(i=0;i<8;i++) { SCK=0; SDA=dat&0x01; dat=dat>>1; SCK=1; } } void write_ds1302(uchar add,uchar dat) { RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); RST=0; _nop_(); SCK=1; SDA=1; } read_ds1302(uchar add) { uchar i,temp; RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); write_ds1302_byte(add); for(i=0;i<8;i++) { temp>>=1; SCK=0; if(SDA) temp=temp|0x80; SCK=1; } RST=0; _nop_(); SCK=0; _nop_(); SCK=1; SDA=1; return temp; } void set_rtc() { uchar i,tmp; for(i=0;i<7;i++) { tmp=timedata[i]/10; timedata[i]=timedata[i]%10; timedata[i]=timedata[i]+tmp*16; } write_ds1302(0x8e,0x00); for(i=0;i<7;i++) { write_ds1302(write_add[i],timedata[i]); } write_ds1302(0x8e,0x80); } void read_rtc(uchar add) { uchar i; for(i=0;i<7;i++) { timedata[0]=read_ds1302(add); } } void write_com(uchar com) { rs=0; rw=0; lcden=0; delay(5); P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date) { rs=1; rw=0; lcden=0; delay(5); P0=date; delay(5); lcden=1; delay(5); lcden=0; } void display() { read_rtc(0x81); write_com(0x80+0x40); write_date('0'+timedata[0]/16); //时 write_date('0'+(timedata[0]&0x0f)); write_date('-'); write_date('0'+timedata[5]/16); //分 write_date('0'+(timedata[5]&0x0f)); write_date('-'); write_date('0'+timedata[4]/16); //秒 write_date('0'+(timedata[4]&0x0f)); /* write_com(0x80); write_date('2'); write_date('0'); write_date('0'+TIME[6]/16); //年 write_date('0'+(TIME[6]&0x0f)); write_date('-'); write_date('0'+TIME[4]/16); //月 write_date('0'+(TIME[4]&0x0f)); write_date('-'); write_date('0'+TIME[3]/16); //日 write_date('0'+(TIME[3]&0x0f)); write_com(0x8D); write_date('0'+(TIME[5]&0x07)); */ } void init() { lcden=0; write_com(0x38); write_com(0x0f); write_com(0x06); write_com(0x01); } void main() { init(); set_rtc(); while(1) { display(); } } |
|
相关推荐
1个回答
|
|
|
求大神解释下为什么 那错了!!我实在找不到了!!都快疯了!!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
528 浏览 0 评论
654 浏览 0 评论
858 浏览 0 评论
837 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
770 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17060 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 16:14 , Processed in 1.373298 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
567