完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define uchar unsigned char #define lcd P2 ***it rs=P3^0; //定义液晶模块 ***it rw=P3^1; ***it en=P3^2; ***it sclk=P1^0; #include #include #define uchar unsigned char #define lcd P2 ***it rs=P3^0; //定义液晶模块 ***it rw=P3^1; ***it en=P3^2; ***it sclk=P1^0; //定义ds1302模块 ***it rst=P1^1; ***it io=P1^2; uchar year1; uchar year0; uchar month1; uchar month0; uchar date1; uchar date0; uchar hour1; uchar hour0; uchar min1; uchar min0; uchar sec1; uchar sec0; //液晶显示模块 void delay(uchar k) { while(k--) { uchar i; for(i=0;i<120;i++); } } void wcom(uchar com) //写命令函数 { en=0; rs=0; rw=0; lcd=com; delay(10); en=1; delay(10); en=0; } void wdata(uchar d) //写数据函数 { en=0; rs=1; rw=0; lcd=d; delay(10); en=1; delay(10); en=0; } void init() //液晶初始化函数 { delay(300); wcom(0x38);//功能设置 delay(10); wcom(0x0c); //显示状态开关指令 delay(10); wcom(0x04); delay(10); wcom(0x01); delay(10); } //ds1302函数模块 void ds1302write(uchar addr,uchar data1) //写地址数据函数 { uchar i; rst=0; _nop_(); sclk=0; rst=1; for(i=0;i<8;i++) { if(addr&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); addr>>=1; } for(i=0;i<8;i++) { if(data1&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); data1>>=1; } } //ds1302读函数 uchar ds1302read(uchar addr) { uchar i; uchar dat=0; rst=0; sclk=0; _nop_(); rst=1; _nop_(); for(i=0;i<8;i++) { if(addr&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); addr>>=1; } for(i=0;i<8;i++) { dat<<=1; if(io) dat|=0x80; else dat|=0x00; sclk=1; _nop_(); sclk=0; _nop_(); } rst=0; _nop_(); return dat; } //获得时间 void gettime() { uchar dat1; dat1=ds1302read(0x8d); year0=(dat1&0x0f)+0x30; year1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x89); month0=(dat1&0x0f)+0x30; month1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x8b); date0=(dat1&0x0f)+0x30; date1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x85); hour0=((dat1&0x0f)+0x30); hour1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x83); min0=(dat1&0x0f)+0x30; min1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x81); sec0=(dat1&0x0f)+0x30; sec1=(dat1>>4)+0x30; delay(10); } void ds1302ini() { ds1302write(0x8e,0x00); ds1302write(0x8c,0x11); ds1302write(0x88,0x08); ds1302write(0x8a,0x30); ds1302write(0x84,0x22); ds1302write(0x82,0x14); ds1302write(0x80,0x00); } //主void main() void main() { init(); ds1302ini(); while(1) { wcom(0x80+0x01); wdata('D'); wdata('a'); wdata('t'); wdata('a'); wdata(':'); gettime(); wcom(0x80+0x06); wdata(year1); //写年 wdata(year0); delay(10); wcom(0x80+0x08); wdata('-'); wcom(0x80+0x09); wdata(month1); wdata(month0); delay(10); wcom(0x8b); wdata('-'); wcom(0x8c); wdata(date1); //写日 wdata(date0); wcom(0x80+0x44); wdata(hour1); wdata(hour0); delay(10); wcom(0x80+0x46); wdata(':'); wcom(0x80+0x47); wdata(min1); wdata(min0); delay(10); wcom(0x80+0x49); wdata(':'); wcom(0x80+0x4a); wdata(sec1); wdata(sec0); delay(10); } } #include #include #define uchar unsigned char #define lcd P2 ***it rs=P3^0; //定义液晶模块 ***it rw=P3^1; ***it en=P3^2; ***it sclk=P1^0; //定义ds1302模块 ***it rst=P1^1; ***it io=P1^2; uchar year1; uchar year0; uchar month1; uchar month0; uchar date1; uchar date0; uchar hour1; uchar hour0; uchar min1; uchar min0; uchar sec1; uchar sec0; //液晶显示模块 void delay(uchar k) { while(k--) { uchar i; for(i=0;i<120;i++); } } void wcom(uchar com) //写命令函数 { en=0; rs=0; rw=0; lcd=com; delay(10); en=1; delay(10); en=0; } void wdata(uchar d) //写数据函数 { en=0; rs=1; rw=0; lcd=d; delay(10); en=1; delay(10); en=0; } void init() //液晶初始化函数 { delay(300); wcom(0x38);//功能设置 delay(10); wcom(0x0c); //显示状态开关指令 delay(10); wcom(0x04); delay(10); wcom(0x01); delay(10); } //ds1302函数模块 void ds1302write(uchar addr,uchar data1) //写地址数据函数 { uchar i; rst=0; _nop_(); sclk=0; rst=1; for(i=0;i<8;i++) { if(addr&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); addr>>=1; } for(i=0;i<8;i++) { if(data1&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); data1>>=1; } } //ds1302读函数 uchar ds1302read(uchar addr) { uchar i; uchar dat=0; rst=0; sclk=0; _nop_(); rst=1; _nop_(); for(i=0;i<8;i++) { if(addr&0x01==1) io=1; else io=0; sclk=1; _nop_(); sclk=0; _nop_(); addr>>=1; } for(i=0;i<8;i++) { dat<<=1; if(io) dat|=0x80; else dat|=0x00; sclk=1; _nop_(); sclk=0; _nop_(); } rst=0; _nop_(); return dat; } //获得时间 void gettime() { uchar dat1; dat1=ds1302read(0x8d); year0=(dat1&0x0f)+0x30; year1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x89); month0=(dat1&0x0f)+0x30; month1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x8b); date0=(dat1&0x0f)+0x30; date1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x85); hour0=((dat1&0x0f)+0x30); hour1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x83); min0=(dat1&0x0f)+0x30; min1=(dat1>>4)+0x30; delay(10); dat1=ds1302read(0x81); sec0=(dat1&0x0f)+0x30; sec1=(dat1>>4)+0x30; delay(10); } void ds1302ini() { ds1302write(0x8e,0x00); ds1302write(0x8c,0x11); ds1302write(0x88,0x08); ds1302write(0x8a,0x30); ds1302write(0x84,0x22); ds1302write(0x82,0x14); ds1302write(0x80,0x00); } //主void main() void main() { init(); ds1302ini(); while(1) { wcom(0x80+0x01); wdata('D'); wdata('a'); wdata('t'); wdata('a'); wdata(':'); gettime(); wcom(0x80+0x06); wdata(year1); //写年 wdata(year0); delay(10); wcom(0x80+0x08); wdata('-'); wcom(0x80+0x09); wdata(month1); wdata(month0); delay(10); wcom(0x8b); wdata('-'); wcom(0x8c); wdata(date1); //写日 wdata(date0); wcom(0x80+0x44); wdata(hour1); wdata(hour0); delay(10); wcom(0x80+0x46); wdata(':'); wcom(0x80+0x47); wdata(min1); wdata(min0); delay(10); wcom(0x80+0x49); wdata(':'); wcom(0x80+0x4a); wdata(sec1); wdata(sec0); delay(10); } } |
|
相关推荐
4个回答
|
|
|
|
|
|
下面的图片为上面帖子仿真截屏
|
|
|
|
|
|
KANKAN....
|
|
|
|
只有小组成员才能发言,加入小组>>
12180 浏览 2 评论
4499 浏览 3 评论
3750 浏览 5 评论
9754 浏览 47 评论
4590 浏览 9 评论
744浏览 0评论
553浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 16:21 , Processed in 0.716575 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号