数字电子钟.docx
《数字电子钟.docx》由会员分享,可在线阅读,更多相关《数字电子钟.docx(22页珍藏版)》请在冰豆网上搜索。
数字电子钟
单片机技术课程设计说明书
数字电子钟
系、部:
电气与信息工程
学生姓名:
XXXXX
指导教师:
XXX
专业:
电子信息工程
班级:
XXXXXXXX
完成时间:
2011-1-1
摘要
数字电子钟广泛应用于生活生产中,因此对其深入了解很有必要,在此用单片机设计了一个简单的数字电子钟。
本设计为基于AT89S52单片机,辅以必要的外围电路,设计了一个简单的数字电子时钟。
在硬件方面,除了CPU外,用数码管来进行显示,LED采用动态扫描显示。
通过LED能够比较准确显示时、分、秒,四个简单的按键实现对时间的调整。
软件方面采用汇编语言编程。
整个电子钟系统能完成时间的显示,调时,调分,调秒,复位等功能。
本次设计的电子钟带有独立式键盘,用共阴数码管显示,现在生活中液晶显示器用的比较多,所以此电子钟在生活中推广的现实意义不是很大。
关键词数字电子钟;AT89S52;汇编语言
ABSTRACT
Digitalelectronicclockiswidelyusedintheproductionoflife,soitisnecessaryforitsunderstanding,inthissinglechipmicrocomputerdesignedasimpledigitalelectronicclock.
ThisdesignisbasedontheAT89S52microcontroller,combinedwiththenecessaryperipheralcircuits,designasimpledigitalelectronicclocks.Onthehardwareside,inadditiontoCPU,tocarryadigitaltubedisplay,LEDdisplaydynamicscan.ThroughtheLEDcanaccuratelydisplayhours,minutes,seconds,foursimplekeystorealizethetimeadjustment.Softwareusingassemblylanguageprogramming.Thecompletionoftheentireelectronictimeclocksystemtothedisplay,transfer,thetransferpoints,transferseconds,resetandotherfunctions.Thedesignoftheelectronicclockwithastand-alonekeyboard,withatotalofYindigitaltubedisplay,liquidcrystaldisplaysnowusedindailylifearemore
Therefore,theelectronicclockinlifetopromotethepracticalsignificanceisnotgreat.
Keywords:
Digitalelectronicclock;AT89S52;AssemblyLanguage
目录
1、整体设计方案……………………………………………………………4
1.1课题设计内容与要求………………………………………………4
1.2功能设计要求………………………………………………………4
1.3设计方案及工作原理………………………………………………4
2、硬件系统的设计………………………………………………………..6
2.1硬件电路简介………………………………………………………6
2.2硬件系统各模块功能简介………………………………………..6
2.3电路元器件简介………………………………………………….10
3、软件系统的设计……………………………………………………….11
3.1使用单片机资源的情况………………………………………….11
3.2软件系统各模块功能简介……………………………………….11
3.3软件系统程序流程框图………………………………………….11
4、设计结论、分析……………………………………………………….15
4.1设计结论及使用说明…………………………………………….15
4.2仿真结果………………………………………………………….15
4.3误差分析………………………………………………………….16
4.4设计体会………………………………………………………….16
参考文献…………………………………………………………………..17
致谢…………………………………………………………………………18
附录………………………………………………………………………..19
1、整体设计方案
1.1课题设计内容与要求
1.1.1设计任务
数字电子钟
设计一个具有特定功能的电子钟。
通过理论与实践解决相应问题,巩固和应用在《单片机技术》中所学知识,掌握单片机一般设计方法,提高设计和动手能力,为以后从事电子电路设计,研发电子产品打下良好基础。
1.1.2设计要求
1、编程语言:
汇编或C51;
2、计算机打印《单片机技术》课程设计说明书一份;
3、设计时间:
一周;
4、实物制作;
5、人员分组:
一人一组一实物。
1.2功能设计要求
设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
1.3设计方案及工作原理
1.3.1单片机的选择
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
1.3.2电子钟工作原理
数字电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。
8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。
数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。
“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。
“时单元”采用24进制计时器,可实现对一天24小时的累计。
显示电路将“时”、“分”、“秒”通过七段显示器显示出来。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下ksec,秒单元就加1,按一下kmin,分就加1,按一下khour,时就加1。
2、硬件系统的设计
2.1硬件电路简介
硬件电路能够完成以下功能:
时间设置控制功能,当按下控制键后,进入设置状态,再次按下,结束并返回显示时间。
对时间进行设置,当按下时加一键时,时数字加一;当时数字大于等于24时,自动变为零。
当按下分加一键时,分数字加一;当分数字大于等于60时,自动变为零,同时实数字加一。
2.1.1硬件电路原理图
图2-1系统硬件电路原理图
2.2硬件系统各模块功能简介
2.2.1LED显示电路
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。
采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。
LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。
图2-2数码管的硬件连接示意图
2.2.2共阳数码管
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:
发光二极管LED显示器、液晶LCD显示器、CRT显示器等。
LED显示器是现在最常用的显示器之一,如下图所示。
图2-3LED显示器的符号图
发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图是共阳式、共阴式LED数码管的原理图和符号.
图2-4共阳式、共阴式LED数码管的原理图和数码管的符号图
数码管使用条件:
a、段及小数点上加限流电阻
b、使用电压:
段:
根据发光颜色决定;小数点:
根据发光颜色决定
c、使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA峰值电流100mA
数码管使用注意事项说明:
(1)数码管表面不要用手触摸,不要用手去弄引角;
(2)焊接温度:
260度;焊接时间:
5S
(3)表面有保护膜的产品,可以在使用前撕下来。
2.2.3键盘控制电路
该设计需要校对时间,所以用三个按键来实现。
按khour来调节小时的时间,按kmin来调节分针的时间,按ksec来调节秒的时间。
下图是按键硬件连接图。
图2-5按键控制电路的硬件连接图
当用手按下一个键时,如图2-6所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。
这就是抖动。
抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。
很容易想到,抖动问题不解决就会引起对闭合键的识别。
用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。
图2-6按键抖动信号波形
2.3电路元器件简介
2.3.1原理图
见附录二。
2.3.2PCB图
见附录三。
2.3.3数字电子钟元器件清单
表2.1数字电子钟元器件清单
名称
型号
数量
备注
单片机
AT89S52
1块
含插座
电阻
200Ω
9个
电阻
1k
1个
电阻
4.7k
4个
上拉排阻
8×4.7kΩ
1片
数码管
2块
4位一体
电容
30pF
2个
电解电容
22μF
1个
下载线接口
1个
双列10针针
按键
5个
3、软件系统的设计
3.1使用单片机资源的情况
P0口接数码管段控,P2口接数码管位控,P1.0,P1.1,P1.2口为控制按键。
3.2软件系统各模块功能简介
(1)显示程序:
显示程序通过数码管显示时钟数字的时,分,秒。
(2)延时程序:
用于延时
(3)数字转换程序:
转换数字用于数码管显示
3.3软件系统程序流程框图
这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
图3-1主程序流程图
按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。
图3-2按键处理流程图
定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。
图3-3定时器中断流程图
时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,最后是时十位显示。
图3-4时间显示流程图
4、设计结论、分析
4.1设计结论及使用说明
4.1.1PROTUES软件介绍
Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
4.1.2设计结论
由于时间关系,本设计的硬件电路还有需要改进,按键处理,稳定性不高。
4.2仿真结果
用PROTUES软件,根据数字电子钟的原理图,画出仿真图,得到的图如下所示。
图5-1数字钟的PROTES仿真
4.3误差分析
时间是一个基本物理量,具有连续、自动流逝、不重复等特性。
我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。
结合时间概念和误差理论,可以定义电子钟的走时误差S=S1-S2,S1表示程序实际运行计算所得的秒;S2表示客观时间的标准秒。
S>0时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”;反之,S<0表示秒单元数值的刷新超前,即走时误差为“快”。
本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。
晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。
4.4设计体会
本次做课程设计,从硬件方面说,我认为本次设计的重点在于单片机的最小系统,若单片机的最小系统不能正常工作,那后面一切都免谈;从软件方面说,我编程的思路就是从简单到难,一步一步实现各个功能。
这个电子钟的程序重点在于显示程序和中断服务程序的编写,这两个小模块编好了,就很容易了。
在做课程设计的过程中,学到很多东西,比如说做PCB板的技术有了很大的提高,再比如说,自己通过编电子钟的程序,使自己对汇编指令的应用越来越熟练,编程的能力也有了较大提高。
在制作电子钟的过程中,遇到的问题都能尝试去自己解决,比如说调试程序,检查线路等等,使自己发现问题、解决问题的能力大大提高。
参考文献
[1]李广第,朱月秀,冷祖祁.单片机基础[M].第三版.北京:
航空航天大学出版社,2007.18-152
[2]马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计[4].北京:
北京航空航天大学出版社,2007.
致谢
在本课程设计进行过程中得到吴乐老师的悉心指导,还有很多同学的帮助。
吴老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。
在此,谨向老师和帮助我的同学致以诚挚的谢意和崇高的敬意。
附录
(一)数字电子钟程序清单
#include
sbitk0=P1^0;
sbitksec=P1^3;
sbitkmin=P1^2;
sbitkhour=P1^1;
unsignedcharsecshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;
unsignedintnum=0,sec=0,min=0,hour=0;
unsignedcharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voiddelay(unsignedint);
voidkeyscan();
voiddisplay();
main()
{
while(k0)
{P2=0x7f;
P0=0x0c;}
delay(135);
k0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while
(1)
{display();
if(k0==0)
{delay(130);
k0=1;
loop:
while
(1)
{display();
keyscan();
if(k0==0)
{delay(90);
k0=1;
while
(1)
{
display();
if(k0==0)
{k0=1;
delay(190);
k0=1;
gotoloop;
}
}}}}}}
voiddelay(unsignedintz)
{unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
voidtime0()interrupt1
{num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
voiddisplay()
{if(num==20)
{num=0;
sec++;
if(sec==60)
{sec=0;
min++;
if(min==60)
{min=0;
hour++;
if(hour==24)
{hour=0;
min=0;
sec=0;
}
}
}
}
secge=sec%10;
secshi=sec/10;
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
P2=0xfe;
P0=table[secge];
delay
(2);
P2=0xfd;
P0=table[secshi];
delay
(2);
P2=0xfb;
P0=0xbf;
delay
(2);
P2=0xf7;
P0=table[minge];
delay
(2);
P2=0xef;
P0=table[minshi];
delay
(2);
P2=0xdf;
P0=0xbf;
delay
(2);
P2=0xbf;
P0=table[hourge];
delay
(2);
P2=0x7f;
P0=table[hourshi];
delay
(2);}
voidkeyscan()
{
if(ksec==0)
{delay(10);
if(ksec==0)
{sec++;
if(sec>=60)
sec=0;}
while(ksec==0)
display();}
if(kmin==0)
{delay(10);
if(kmin==0)
{min++;
if(min>=60)
min=0;}
while(kmin==0)
display();
}
if(khour==0)
{delay(10);
if(khour==0)
{hour++;
if(hour>=24)
hour=0;
}
while(khour==0)
display();
}
}
(二)原理图
(三)硬件电路PCB图
(四)实物图