基于单片机的数字电子钟设计毕业设计论文(编辑修改稿)内容摘要:

的好习惯 ,一个程序的完美与否不仅仅是实现功能 ,而应该让人一看就能明白你的思路 ,这样也为资料的保存和交流提供了方便。 在设计课程过程中遇到问题是很正常德 ,但我们应该将每次遇到的问题记录下来 ,并分析清楚 ,以免下次再碰到同样的问题。 10 这次课程设 计让我们学到了很多东西 ,查资料、选方案、设计电路、撰写设计报告等等 ,使我们得到了一次较全面的工程实践训练 ,而且进一步巩固了课程的基本知识。 参考文献 [1].李群芳,肖看 .《单片机原理、接口及应用》 .清华大学出版社, [2].丁元杰 .《单片微机原理及应用》(第二版) .机械工业出版社, [3].张有德,赵志英 .《单片微型机原理、应用于实验》 .复旦大学出版社, 附录一 源程序 include include unsigned char a,miao,shi,shi1,shi2,fen,fen1,fen2,x,key1n,temp,j=0,mmiao=0,mfen=0。 unsigned char ri,yue,nian,week。 include unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}。 unsigned char code point[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}。 //带小数点数的代码 sbit qiehuan=P3^0。 sbit key1=P3^1。 sbit key2=P3^2。 sbit key3=P3^3。 sbit SD=P3^4。 sbit LED1=P2^0。 sbit LED2=P2^1。 sbit LED3=P2^2。 sbit LED4=P2^3。 sbit LED5=P2^4。 sbit LED6=P2^5。 sbit POT =P0^7。 void display(uchar x)。 void miaobiaoxianshi()。 void shengdian()。 uchar m=0,m1=0,m2=0,m3=0,m4=0。 void delayms(uint x) 11 { uchar j。 while(x) { for(j=0。 j114。 j++) {; } } } void ReadTime() { miao = BCD_Decimal(read_1302(0x81))。 fen = BCD_Decimal(read_1302(0x83))。 shi = BCD_Decimal(read_1302(0x85))。 ri = BCD_Decimal(read_1302(0x87))。 yue = BCD_Decimal(read_1302(0x89))。 nian=BCD_Decimal(read_1302(0x8d))。 week=BCD_Decimal(read_1302(0x8b))1。 } uchar key1scan() { if(key1==0)// key1 为功能键 { delayms(10); //延时,用于消抖动 if(key1==0)//延时后再次确认按键按下 { m++。 if(m==5)m=0。 while(1) {display(m)。 if(key1==1)break。 } } } return m } void key2scan(uchar n) { if(n!=0)//当 key1 按下以下。 再按以下键才有效(按键次数不等于零) { if(key2==0) //上调键 12 { delayms(10)。 if(key2==0) { while(1){display(m)。 if(key2==1)break; } switch(n) { case 1:shi1=shi/10。 shi1++。 if(shi1==3)shi1=0。 temp=shi1*16+(shi)%10。 //十进制转换成 DS1302 要求的 BCD码 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x84,temp)。 //向 DS1302 内写小时寄存器 84H 写入调整后的小时数据 BCD 码 write_1302(0x8e,0x80)。 //打开写保护 break。 case 2:shi2=shi%10。 shi2++。 if(shi/10==2) { if(shi2==5)shi2=0。 } else if(shi2==10)shi2=0。 temp=shi/10*16+shi2。 //十进制转换成 DS1302 要求的 BCD 码 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x84,temp)。 //向 DS1302 内写小时寄存器 84H 写入调整后的小时数据 BCD 码 write_1302(0x8e,0x80)。 //打开写保护 break。 case 3:fen1=fen/10。 fen1++。 if(fen1==6)fen1=0。 temp=fen1*16+(fen)%10。 //十进制转换 成 DS1302要求的 BCD码 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x82,temp)。 //向 DS1302 内写分寄存器 82H 写入调整后的分数据 BCD 码 13 write_1302(0x8e,0x80)。 //打开写保护 break。 case 4:fen2=fen%10。 fen2++。 if(fen2==10) fen2=0。 temp=fen/10*16+fen2。 //十进制转换成 DS1302 要求的 BCD 码 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x82,temp)。 //向 DS1302 内写分寄存器 82H 写入调整后的分数据 BCD 码 write_1302(0x8e,0x80)。 //打开写保护 break。 } } } } } void key3scan(uchar n) { if(n!=0)//当 key1 按下以下。 再按以下键才有效(按键次数不等于零) { if(key3==0) //上调键 { delayms(10)。 if(key3==0) { while(1){display(m)。 if(key3==1)break。 } switch(n) { case 1:shi1=shi/10。 shi1。 if(shi1==(01))shi1=2。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。