基于stc89c52rc单片机的电子时钟设计内容摘要:

设计的制作过程。 在这个过程中我收获的不只是制作成了一个能实现特定功能的电路 板,更重要的是在自己亲自的制作过程中发现任何小的问题都至关重要,任何大的问题基本不应该出现。 只有通过亲自操作才能发现问题,最重要的是要能在老师同学的帮助下解决问题,达到设计要求。 致谢 通过这次毕业设计的制作及论文的完成,我得到了鹤壁职业技术学院司老师的悉心指导和帮助,使我能够顺利完成毕业论文及电路板的制作在此表示衷心的感谢。 同时也得到了同学们的密切合作和帮助在此一并表示真诚的感谢。 附录 1(程序) //include define uint unsigned int include include include sbit k4=P1^3。 char k=0。 char shi,fen,miao,nian,yue,ri。 char baojingshi,baojingfen,baojingmiao。 void sjdisplay()。 void rqdisplay()。 void baojingdisplay()。 void delay(uint ms)。 void display(char shu,char wei)。 char table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}。 void main() { ds1302_write(0x80,0x55)。 ds1302_write(0x82,0x45)。 ds1302_write(0x84,0x00)。 ds1302_write(0x8c,0x11)。 ds1302_write(0x88,0x10)。 ds1302_write(0x86,0x07)。 while(1) { if(k4==0) { delay(5)。 if(k4==0) { while(k4==0)。 k++。 if(k==3) { k=0。 } } } if(k==0) sjdisplay()。 if(k==1) rqdisplay()。 if(k==2) baojingdisplay()。 if((shi==baojingshi)amp。 amp。 (fen==baojingfen)amp。 (miao==baojingmiao)) { didi(10)。 } key()。 } } void sjdisplay() { shi=ds1302_read(0x85)。 //hour fen=ds1302_read(0x83)。 //minites miao=ds1302_read(0x81)。 //second display((shi4)amp。 0x07,0)。 display(shiamp。 0x0f,1)。 display((fen4)amp。 0x07,3)。 display(fenamp。 0x0f,4)。 display((miao4)amp。 0x07,6)。 display(miaoamp。 0x0f,7)。 } void rqdisplay() { nian=ds1302_read(0x8d)。 //nian yue=ds1302_read(0x89)。 //yue ri=ds1302_read(0x87)。 //ri display((nian4)amp。 0x07,0)。 display(nianamp。 0x0f,1)。 display((yue4)amp。 0x07,3)。 display(yueamp。 0x0f,4)。 display((ri4)amp。 0x07,6)。 //0000 0111 display(riamp。 0x0f,7)。 } void baojingdisplay() { display(baojingshi/10,0)。 display(baojingshi%10,1)。 display((baojingfen/10,3)。 display(baojingfen%10,4)。 display((baojingmiao/10,6)。 display(baojingmiao%10,7)。 } void delay(uint ms) { uint i,j。 for(i=ms。 i0。 i) for(j=124。 j0。 j)。 } void display(char shu,char wei) { P0=table[shu]。 P2=~(1wei)。 delay(3)。 P2=0xff。 } // // include define uchar unsigned char define uint unsigned int sbit rst=P1^2。 sbit dat=P1^1。 sbit clk=P1^0。 void ds1302_write(char m,char dat1) { char temp,t。 rst=0。 clk=0。 rst=1。 temp=m。 for(t=0。 t8。 t++) { if(tempamp。 0x01) dat=1。 else dat=0。 clk=1。 temp=(temp1)。 clk=0。 } temp=dat1。 for(t=0。 t8。 t++) { if((tempamp。 0x01)==1)//0000 0001 dat=1。 else dat=0。 clk=1。 temp=temp1。 clk=0。 } rst=0。 } uchar ds1302_read(char m) { char temp,t。 rst=0。 clk=0。 rst=1。 temp=m。 for(t=0。 t8。 t++) { if(tempamp。 0x01) dat=1。 else dat=0。 clk=1。 temp=temp1。 clk=0。 } temp=0。 //00000000 for(t=0。 t8。 t++) { temp=temp1。 if(dat==1) temp=temp|0x80。 else temp=tempamp。 0x7f。 clk=1。 clk=0。 } rst=0。 return temp。 } ////include define char signed char define uint unsigned int sbit mode=P1^4。 sbit add=P1^5。 sbit sub=P1^6。 char mod=0。 extern void delay(uint ms)。 extern char shi,fen,nian,yue,ri。 extern char baojingshi,baojingfen。 extern char ds1302_read(char)。 extern void ds1302_write(char,char)。 void key() { shi=ds1302_read(0x85)。 fen=ds1302_read(0x83)。 if(mode==0) { delay(5)。 if(mode==0) { while(mode==0)。 mod++。 if(mod==8) { mod=0。 } } } if(add==0) { delay(5)。 if(add==0) { while(add==0)。 if(mod==1) { shi=(((shi4)amp。 0x03)*10+(shiamp。 0x0f))+1。 if(shi==24) { shi=0。 } ds1302_write(0x84,((sh。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。