电子信息工程毕业论文基于单片机的数字时钟设计.doc
-
资源ID:3988947
资源大小:84KB
全文页数:10页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
电子信息工程毕业论文基于单片机的数字时钟设计.doc
郑州航空工业管理学院单片机课程设计论文 09 届 电子信息工程 专业 0913081 班级题 目 基于单片机的数字时钟设计 学 号 091308133 姓 名 张 笑 笑 指导教师 程 琤 二一 二 年 一 月 三 日一、 电子时钟的基本原理 我们的这次单片机数字式电子钟集成电路基本上都是由振荡器、分频器、计数器、译码器、LED显示器组成。译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差。并且我们还添加了蜂鸣器来增加它的闹钟功能。 本设计就是研究用数字电路实现的数字电子钟,整体的电路设计就是由振荡器、分频器、计数器、译码器、LED显示器、校时电路组成。这种用数字电路实现的电子钟与机械式时钟相比具有更高的准确性和直观性,且使用寿命更长。(1)计数、显示电路 该部分是由两个60进制计数器,一个24进制计数器、译码器、显示器组成。按设计原理连接电路并进行仿真。给60进制计数器一个1 Hz的脉冲。观察数码管的显示,看计数器是否正常计时,并且当秒计数器计满60后向分计数器进位。分计数器计满60后向小时计数器进位。(2)校时电路 当时间不准确时,按下暂停键,然后按选择键来选择时分秒,选定后,按加一减一键来调整时间,并且可以设置闹钟功能。二、电子时钟的硬件设计电路原理图如下图1所示:图1 电子时钟原理图元器件清单如下表1所示:表1 电子时钟元件清单表 序号器件名称参数数量1USB座12USB线13双排针(2)14跳帽25104电容0.1uF66LED灯17电阻2K18STC89C5219晶振12MHz110电容20pF211复位键112电阻10K113蜂鸣器114三极管9015915电阻33011616针座117MAX232118单排针(5)119按键420单排针(3)121跳帽1224位LED数码管223电阻4.7K824电阻3308 三、 电子时钟的软件设计源程序见附录 按键S4按下?调表程序开始初始化程序复位键按下?按键S2按下?加时程序按键S1按下?移动程序按键S3按下减时程序电子时钟程序流程图 : 四、课程设计总结通过着手制作自己和同学调制和焊接的数字时钟,我体会到了学习电子的乐趣,体验到了设计和焊接过程的冥思苦想与设计成功后的成就感。在学习的过程中我们也遇到诸多问题,比如在下载程序的时候,计算机总是提示没有为其上电,经过我组成员的冥思苦想还有老师的相关指导,发现原来我们板子上的两路线焊接有误,经过一番调整,终于下载成功了,让人欣喜万分。从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,实践是检验真理的唯一标准。我们电子专业的学习更是如此,不仅要有丰富的理论知识,还要有很强的动手能力,只有理论与实践并重,我们的专业水平才能提高。五、指导教师评语 成绩 指导教师签名附录:#include<reg52.h> #include<intrins.h> /*定义*/ Unsigned char code Tab14=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xbf,0xff; unsigned long second; unsigned long clock,temp; unsigned char int_time=0; unsigned char flag=0; sbit k1=P33; sbit k2=P32; sbit k3=P31; sbit k4=P30; sbit bibi=P16; bit k,o=0; sbit x=P27; unsigned char m; void delay(unsigned int j) unsigned char i;while(j-) for(i=0;i<60;i+); void key_set() /set按键检测 if(k4=0)/按下K5,调时标志转换delay(40);if(k4=0) while(k4=0);/判断是否按键松开,松开之后才执行下面的程序;flag+=1;if(flag=2)flag=0; /*扫描函数*/ void Display() if(flag=0) temp=second;else temp=clock; P2=0x7f; if(k=0&&flag=0)|(o=0&&flag=1) P0=Tabtemp/3600/10; else if(k=1&&flag=0)|(o=1&&flag=1) if(temp/3600%10>=8) P0=Tabtemp/3600/10+2; else P0=Tabtemp/3600/10+1; delay(2); P0=Tab13; P2=0xbf; if(k=0&&flag=0)|(o=0&&flag=1) P0=Tabtemp/3600%10; else if(k=1&&flag=0)|(o=1&&flag=1) P0=Tabtemp/3600%10+2; delay(2); P0=Tab13; P2=0xdf; P0=Tab12; delay(2); P0=Tab13; P2=0xef; P0=Tabtemp%3600/60/10; delay(2); P0=Tab13; P2=0xf7; P0=Tabtemp%3600/60%10; delay(2); P0=Tab13; P2=0xfb; P0=Tab12; delay(2); P0=Tab13; P2=0xfd; P0=Tabtemp%60/10; delay(2); P0=Tab13; P2=0xfe; P0=Tabtemp%60%10; delay(2); P0=Tab13; P0=0xff; delay(2); /*Beep函数*void beep()/参数a控制响的次数,1只响一声unsigned char beep_i,i;P2=0x7f;/x=0;P0=0xf7;while(1) beep_i=5;while(beep_i-)for(i=0;i<50;i+) bibi=0;delay(1);bibi=1;delay(1);P2=_cror_(P2,1); if(P2=0x7f) if(P0=0xf7) P0=0xfe;else P0=0xf7;if(k4=0)delay(5); if(k4=0)while(!k4);return ; delay(250);delay(400); /*数函数*/ void main(void) TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; k=1; second=0; clock=0; while(1) if(second=clock&&k=o)beep(); if(flag=0) if(k1=0) delay(5); if(k1=0) dosecond=second+3600;for(m=0;m<15;m+) Display();while(k1=0); else if(k2=0) delay(5); if(k2=0) dosecond=second+60;for(m=0;m<15;m+) Display();while(k2=0); else if(k3=0) delay(5); if(k3=0) dosecond=second+1;for(m=0;m<15;m+) Display();while(k3=0); else if(flag=1) if(k1=0) delay(5); if(k1=0) doclock=clock+3600; if(clock>=43200) clock=0;o=o; for(m=0;m<15;m+) Display();while(k1=0); else if(k2=0) delay(5); if(k2=0) doclock=clock+60;for(m=0;m<15;m+) Display();while(k2=0); Display(); key_set(); void interserve(void) interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;int_time+;if(second>=43200) second=0;k=k; if(int_time=20) int_time=0; second+;