电子电工课程设计(多功能数字时钟--万年历).doc

上传人:scccc 文档编号:12976119 上传时间:2021-12-09 格式:DOC 页数:10 大小:31KB
返回 下载 相关 举报
电子电工课程设计(多功能数字时钟--万年历).doc_第1页
第1页 / 共10页
电子电工课程设计(多功能数字时钟--万年历).doc_第2页
第2页 / 共10页
电子电工课程设计(多功能数字时钟--万年历).doc_第3页
第3页 / 共10页
电子电工课程设计(多功能数字时钟--万年历).doc_第4页
第4页 / 共10页
电子电工课程设计(多功能数字时钟--万年历).doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《电子电工课程设计(多功能数字时钟--万年历).doc》由会员分享,可在线阅读,更多相关《电子电工课程设计(多功能数字时钟--万年历).doc(10页珍藏版)》请在三一文库上搜索。

1、电子电工课程设计(多功能数字时钟-万年历),212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0; uchar codelon=9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0;void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=120;y>0;y-);void yinyue()uint i,j,k=0,l;for(l=0;l<

2、26;l+)for(i=0;i<codelonk*20;i+) if(key4=0)beep=0;break;beep=beep;for(j=0;j<codetonek/3;j+);delay(10);k+;void write_LCD_com(uchar com)rs=0;rw=0;P0=com;delay(5);en=1;delay(5);en=0;void write_LCD_da(uchar data1)rs=1;rw=0;P0=data1;delay(5);en=1;delay(5);en=0;void Init_LCD()uchar num;write_

3、LCD_com(0x38); delay(1);write_LCD_com(0x01); delay(1);write_LCD_com(0x06); delay(1);write_LCD_com(0x0c); delay(1); write_LCD_com(0x80);for(num=0;num<10;num+)write_LCD_da(codetablenum); delay(1);write_LCD_com(0x80+0x40); for(num=0;num<8;num+)write_LCD_da(codetable1num); delay(1);void wr

4、ite_LCDsfm(uchar add,uchar date) uchar ge,shi;shi=date/10;ge=date%10;write_LCD_com(0x80+0x40+add); write_LCD_da(0x30+shi);write_LCD_da(0x30+ge); void write_LCDnyr(uchar add,uchar date) uchar ge,shi;shi=date/10;ge=date%10;write_LCD_com(0x80+add); write_LCD_da(0x30+shi);write_LCD_da(0x30+ge);void writ

5、e_LCDweek(uchar week) write_LCD_com(0x80+0x0b); switch(week) case 1:write_LCD_da(M); write_LCD_da(O); write_LCD_da(N); break;case 2:write_LCD_da(T); write_LCD_da(U); write_LCD_da(E); break;case 3:write_LCD_da(W); write_LCD_da(E); write_LCD_da(D); break;case 4:write_LCD_da(T); write_LCD_da(H); write_

6、LCD_da(U); break;case 5:write_LCD_da(F);write_LCD_da(R);write_LCD_da(I);break;case 6:write_LCD_da(S);write_LCD_da(T);write_LCD_da(A);break;case 7:write_LCD_da(S);write_LCD_da(U);write_LCD_da(N);break;void write_LCD_Temperature(uchar add,uchar date) uchar ge,shi;shi=date/10;ge=date%10;write_LCD_com(0

7、x80+0x40+add);write_LCD_da(0x30+shi);write_LCD_da(0x30+ge);write_LCD_da(0xdf);write_LCD_da(0x43);void DS1302_write_byte(uchar a) uchar i;ACC=a;RST=1;for(i=8;i>0;i-) IO=ACC0;SCLK=0;SCLK=1;ACC=ACC>>1;uchar DS1302_read_byte()uchar j;RST=1;for(j=8;j>0;j-) ACC7=IO;SCLK=1;SCLK=

8、0;ACC=ACC>>1;return(ACC);void DS1302_write_date(uchar addr,uchar dat)/写数据 RST=0;SCLK=0;RST=1;DS1302_write_byte(addr);DS1302_write_byte(dat);SCLK=1;RST=0;uchar DS1302_read_date(uchar addr)uchar dat1,b;RST=0;SCLK=0;RST=1;DS1302_write_byte(addr);dat1=DS1302_read_byte();SCLK=1;RST=0;b=dat1

9、/16*10+dat1%16;return(b);void DS1302_Init()SCLK=0;RST=0;DS1302_write_date(0x8e,0x00);DS1302_write_date(0x8e,0x80);void keyscan()if(key1=0)if(key1=0)while(!key1);count+;if(count=11) count=1;switch(count) case 1:TR0=0;write_LCD_com(0x80+0x40+0x0f); write_LCD_da(M);m=miao/10*16+miao%10;DS1302_write_dat

10、e(0x8e,0x00); DS1302_write_date(0x80,0x80|m); DS1302_write_date(0x8e,0x80); break;case 2:write_LCD_com(0x80+0x40+0x0f);write_LCD_da(F);break;case 3:write_LCD_com(0x80+0x40+0x0f); write_LCD_da(S);break;case 4:write_LCD_com(0x80+0x40+0x0f); write_LCD_da(W);break;case 5:write_LCD_com(0x80+0x40+0x0f); w

11、rite_LCD_da(R);break;case 6:write_LCD_com(0x80+0x40+0x0f); write_LCD_da(Y);break;case 7:write_LCD_com(0x80+0x40+0x0f); write_LCD_da(N);break;case 8:write_LCD_com(0x80+0x40+0x0e); write_LCD_da(R); delay(3);write_LCD_com(0x80+0x40+0x0f);write_LCD_da(F); delay(3);write_LCD_com(0x80+0x40+0x04);break;cas

12、e 9:write_LCD_com(0x80+0x40+0x0e); write_LCD_da(R); delay(3);write_LCD_com(0x80+0x40+0x0f); write_LCD_da(S); delay(3);write_LCD_com(0x80+0x40+0x01);break;case 10:write_LCD_com(0x80+0x40+0x0e);write_LCD_da(0); delay(3);write_LCD_com(0x80+0x40+0x0f); write_LCD_da(0); delay(3);delay(3);write_LCD_com(0x

13、0c);TR0=1;m=(miao)/10*16+(miao)%10;DS1302_write_date(0x8e,0x00);DS1302_write_date(0x80,0x00|m);DS1302_write_date(0x8e,0x80);break;if(count!=0)if(key2=0)delay(10);if(key2=0)while(!key2);switch (count)case 1:miao+;if(miao=60)miao=0;write_LCDsfm(0x06,miao); m=miao/10*16+miao%10;DS1302_write_date(0x8e,0

14、x00); DS1302_write_date(0x80,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x07); break;case 2:fen+;if(fen=60)fen=0;write_LCDsfm(0x03,fen); m=fen/10*16+fen%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x82,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x04); break;case

15、3:shi+;if(shi=24)shi=0;write_LCDsfm(0x00,shi); m=shi/10*16+shi%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x84,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x01); break;case 4:week+;if(week=8)week=0;write_LCDweek(week);m=week/10*16+week%10;DS1302_write_date(0x8e,0x00); DS1302_wr

16、ite_date(0x8a,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x0d); break;case 5:ri+;if(ri=32)ri=0;write_LCDnyr(0x08,ri);m=ri/10*16+ri%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x86,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x09); break;case 6:yue+;if(yue=13)yue=1;write_LCD

17、nyr(0x05,yue); m=yue/10*16+yue%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x88,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x06); break;case 7:nian+;if(nian=51)nian=0;write_LCDnyr(0x02,nian); m=nian/10*16+nian%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x8c,m); DS1302_write_

18、date(0x8e,0x80); write_LCD_com(0x80+0x03); break;case 8:ringfen+;if(ringfen=60)ringfen=0;write_LCDsfm(0x03,ringfen);write_LCD_com(0x80+0x40+0x04); break;case 9:ringshi+;if(ringshi=24)ringshi=0;write_LCDsfm(0x00,ringshi);write_LCD_com(0x80+0x40+0x01); break; if(key3=0)delay(10);if(key3=0)while(!key3)

19、;switch (count)case 1:miao-;if(miao=-1)miao=59;write_LCDsfm(0x06,miao); m=miao/10*16+miao%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x80,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x07); break;case 2:fen-;if(fen=-1)fen=59;write_LCDsfm(0x03,fen); m=fen/10*16+fen%10;DS1302_writ

20、e_date(0x8e,0x00); DS1302_write_date(0x82,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x04); break;case 3:shi-;if(shi=-1)shi=23;write_LCDsfm(0x00,shi); m=shi/10*16+shi%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x84,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x40+0x01

21、); break;case 4:week-;if(week=0)week=7;write_LCDweek(week);m=week/10*16+week%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x8a,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x0d); break;case 5:ri-;if(ri=0)ri=31;write_LCDnyr(0x08,ri);m=ri/10*16+ri%10;DS1302_write_date(0x8e,0x00); DS1302_

22、write_date(0x86,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x09); break;case 6:yue-;if(yue=0)yue=12;write_LCDnyr(0x05,yue); m=yue/10*16+yue%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x88,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x06); break;case 7:nian-;if(nian=-1)nian

23、=50;write_LCDnyr(0x02,nian); m=nian/10*16+nian%10;DS1302_write_date(0x8e,0x00); DS1302_write_date(0x8c,m); DS1302_write_date(0x8e,0x80); write_LCD_com(0x80+0x03); break;case 8:ringfen-;if(ringfen=-1)ringfen=59;write_LCDsfm(0x03,ringfen);write_LCD_com(0x80+0x40+0x04); break;case 9:ringshi-;if(ringshi

24、=-1)ringshi=23;write_LCDsfm(0x00,ringshi);write_LCD_com(0x80+0x40+0x01); break;void set_dingshiqi()TMOD=0x01;TH0=64536/256;TL0=64536%256;EA=1;ET0=1;TR0=1;void gettime() beep=0;temp=Read_Temperature();miao=DS1302_read_date(0x81);fen=DS1302_read_date(0x83);shi=DS1302_read_date(0x85);week=DS1302_read_d

25、ate(0x8b);ri=DS1302_read_date(0x87);yue=DS1302_read_date(0x89);nian=DS1302_read_date(0x8d); write_LCDsfm(0x00,shi);write_LCDsfm(0x03,fen);write_LCDsfm(0x06,miao);if(miao=0&&fen=0&&shi>8&&shi<21) yinyue();if(fen=ringfen&&sh

26、i=ringshi)yinyue();if(key4=0)ringshi=0;ringfen=0; write_LCDweek(week);write_LCDnyr(0x08,ri);write_LCDnyr(0x05,yue);write_LCDnyr(0x02,nian);write_LCD_Temperature(0x09,temp); void main() Init_LCD();DS1302_Init();set_dingshiqi();while(1) keyscan(); void timer0() interrupt 1 TH0=64536/256;TL0=64536%256;

27、gettime();keyscan( ); Ds18b20.hsbit DQ=P1;/unsigned char wendu;/unsigned char tempbuf3;void delay0(unsigned char z) while(z-); void init_ds18b20()unsigned char x=0;DQ=1; /DQ复位delay0(8);DQ=0; /单片机将DQ拉低 delay0(80); /延时480us960us DQ=1; /拉高总线delay0(14); /等待15us60u。 x=DQ;delay0(80); /低电平至少要持续60240us void

28、 write_onechar(unsigned char dat) unsigned char i=0;for(i=0;i<8;i+)DQ=0;DQ=dat&0x01;delay0(15);DQ=1;dat=dat>>=1;delay0(5); unsigned char read_onechar()unsigned char i=0;unsigned char dat=0; for(i=0;i<8;i+)DQ=0;dat>>=1;DQ=1;if(DQ) dat|=0x80;delay0(20)

29、;return(dat);unsigned char Read_Temperature()unsigned char a,b;unsigned char temp_value;init_ds18b20();write_onechar(0xCC); /跳过读序列号的操作write_onechar(0x44); / 启动温度转换init_ds18b20();write_onechar(0xCC); /跳过读序列号的操作write_onechar(0xBE); /读取温度寄存器等(共可读9个寄存器) a=read_onechar();b=read_onechar();b=b<<4;a=a>>4;temp_value=b|a;return(temp_value); 前两个就是温度

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1