《数字钟论文 基于单片机c语言的多功能数字钟的设计.doc》由会员分享,可在线阅读,更多相关《数字钟论文 基于单片机c语言的多功能数字钟的设计.doc(12页珍藏版)》请在三一文库上搜索。
1、基于单片机c语言的多功能数字钟的设计系别:自动化系专业名称:自动化学生姓名:陈聪 陈永宇 蒋海勇学号:指导教师姓名、职称:李攀峰完成日期 2010 年 06 月 26 日摘要本设计论文主要介绍了用stc89c51单片机来控制数字钟的硬件结构和软件设计,给出了c语言的源程序。此数字钟是一个将“时”“分”“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,计时满刻度为23小时59分59秒,另外还有校时功能。电路由时钟脉冲发生器,时钟计时器,数码管驱动电路,以及蜂鸣器报时电路组成。数码管选用LED八段共阳数码管,在驱动电路下显示清晰,直观的数字符号。针对数字钟会产生走时误差的现象,在电路中有
2、校准时间电路的功能的电路。关键词:单片机; 数字钟 ;计时 ;数码管电子技术课程设计正文一、电子设计题目: 数字钟设计二、电子设计任务和基本要求:1. 设计任务 基于单片机c语言设计一台可以显示时、分、秒的数字钟。2. 基本要求(1).能直接显示时、分、秒的数字钟,要求二十四为一计数周期。(2).当电路发生走时误差时,要求电路具有校时功能。(3).具有整点报时的功能,在离整定10s时,便自动发出鸣叫声,步长1s,每隔1s鸣叫一次。(4).计时准确度,每天计时的误差不超过10s。(5).要求电源电压+5伏三、课程设计题目分析:1. 设计要点(1).设计一个单片机小系统电路 (2).设计数码管显示
3、电路(3).设计按键校时电路(4).设计蜂鸣器整点报时电路2. 工作原理:(1) 单片机小系统原理:单片机最小系统由晶振电路,复位电路和电源基本组成。晶振电路在电路上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络。时钟电路用于产生单片机工作所需要的时钟信号,而时序的所研究的是指令执行中每个信号之间的相互的关系。单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按照时序进行工作。复位电路的成功与否,关系到单片机系统能否正常的工作,电路上电时候或电压波动不稳定的时候,当给单片机上电那一瞬间,电压有在几微秒内(有的是几毫秒内)不是直接跳变
4、到5V的而是一个直线上升的阶段,这时候,单片机不能正常工作,需要复位电路给它延时以等到电压稳定。(2) 数码管显示原理: 一般数码管的驱动是用三极管驱动的原理为,用三极管控制共阳极数码管是利用三极管的开关特性,用pnp三极管的话,集电极接地,然后通过基极控制三极管的通断,当通过单片机给基极一个低电平时,发射极导通,集电极与发射极也之间也导通了,一般都是用三极管控制数码管的位选引脚。简单地说就集电极和发射极相当于一个开关,基极是控制端,基极给高电平是,开关是断开基极给低电平时,开关合上,这样数码管就驱动了。 (3) 键盘控制电路原理: 按键电路相对来说是比较简单的,只需要一个微动开关接单片机的I
5、/O口,一端接地,因为单片机的I/O口一般默认的都是高电平,单片机开始检测这个P口,如果按键按下的话就会产生低电平这样,这样就能按着程序走了。(4) 蜂鸣器报时原理:蜂鸣器驱动同样是应用了三极管的开关特性,当三极管导通是蜂鸣器就响了,这样就实现了报时作用。四、电路原理图: 整体设计电路图:五、c程序设计部分: 数字钟程序相对来说还是比较简单,其核心问题就是数码管的动态显示部分和检测按键的部分。还利用了中断函数的定时功能,从而使得数字钟的读秒过程算是比较精确。源代码如下:#include#includesbit w=P27;sbit d=P26;sbit k1=P11;sbit k2=P12;#
6、define uint unsigned int#define uchar unsigned charuchar code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;uchar code wei=0xfe,0xFd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar x,y,z,aa,num;sbit fm=P21;unsigned int i,j,n,ge,shi,bai,c,cc,ccc;void dingdhi();/定时void time(uint);void play(uint c,uint c
7、c,uint ccc);/显示函数void main() dingdhi();aa=0;j=0;n=0;i=0; while(1) play(j,i,n);/调用显示函数k1=0xff;k2=0xff;if(k1=0)time(20);if(k1=0) j+;if(j=25) j=0;while(!k1);/时if(k2=0)time(20);if(k2=0)i+;n=0;if(i=60) i=0;while(!k2);/分 void play(uint c,uint cc,uint ccc)/显示函数 d=0; P0=tablej/10;d=1;w=0; P3=wei0;w=1; time(
8、1);d=0; P0=tablej%10;d=1;w=0; P3=wei1;w=1; time(1);d=0; P0=0xbf;d=1;w=0; P3=wei2;w=1; time(1);d=0; P0=tablei/10;d=1;w=0; P3=wei3;w=1; time(1);d=0; P0=tablei%10;d=1;w=0; P3=wei4;w=1; time(1);d=0; P0=0xbf;d=1;w=0; P3=wei5;w=1; time(1);d=0; P0=tablen/10;d=1;w=0; P3=wei6;w=1; time(1);d=0; P0=tablen%10;d
9、=1;w=0; P3=wei7;w=1; time(1); void time(uint z)/延时 uint i,j; for(i=60;i0;i-) for(j=z;j0;j-);void timer0() interrupt 1/定时函数TH0=(65536-20000)/256;TL0=(65536-20000)%256;/设定时值为20000us(20ms)aa+;if(aa=50)aa=0; n+;if(i=59&n=50) fm=0;time(50);fm=1;/蜂鸣器闹钟if(n=60) n=0;i+;if(i=60) i=0;j+; void dingdhi()/定时头函数T
10、MOD=0x1;TH0=(65536-20000)/256;TL0=(65536-20000)%256;/定时EA=1;ET0=1;TR0=1; 六、心得体会:在这次开放性实的制作过程中,我们队员都很用心的去完成。在整个电路都跑通的时候,心里有种说不出的满足感。拿到实验项目后,我们确定了方案,用单片机来控制。所以我们首先拿到郭天祥的单片机视频教程来自学单片机。讲到哪里然后就用自己的开发板来实践。看完数码管后,心想这个数字钟的设计应该够用了。所以我们先是来设计电路图,由于本实验所需要的原件不是很复杂,所以我们算是比较快就画完了。然后我们开始焊接电路了,我们知道电路板的布局是十分重要的,我们队布局
11、做了个整体的规划后就开始布局了,我们的焊接功夫不是很好,有时焊接的时候时不时的烫到手,一声惨叫后就继续,其余部分不算太难关键的就是数码挂的端口的焊接是最复杂的,由于我们用了八个数码管,端口的话就需要8*8=64根导线。不过这也考验了我们的仔细认真的方面。焊接完毕了就开始测试了,当我们辛辛苦苦把写好的程序放进单片机里时,只看见有几个数码管理的发光二极管有些微微地亮,这时我们的心有凉凉的,出问题了,我们焊接了一天的电路没有成功,加上头有些昏昏的。可是我们没有放弃,继续检查电路,一会儿,我去看开发板上的单片机的vcc口怎么和我们的不一样呢,赶紧翻书查查,这是我发现,我们的单片机小系统的链接方式是按照逻辑图来连线的,而不是实物图,这是一个很大的错误。我们又重新的焊接了一遍,这是就预感我们成功了,最后不出所料,所有的功能完全实现,我们都会心的笑了。开放性试验是一个学习新知识、巩固加深所学课本理论知识的过程,它培养了我们综合运用知识的能力,思考和解决问题的能力。它不仅加深了我对电子技术课程的理解,还让我感受到了设计电路的乐趣。在这次设计中,我们不怕麻烦,反复焊接与修改,就是希望能把这次实验做好。因此对我们来说,这次开放性实验是非常有意义的七、参考文献:1李华,王思明.单片机原理及运用.兰州大学出版社.2吴蓉.数字电子技术.兰州大学出版社.
链接地址:https://www.31doc.com/p-7211901.html