单片机数字时钟设计文档十五.docx
- 文档编号:26448745
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:21
- 大小:342.44KB
单片机数字时钟设计文档十五.docx
《单片机数字时钟设计文档十五.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟设计文档十五.docx(21页珍藏版)》请在冰豆网上搜索。
单片机数字时钟设计文档十五
单片机多功能数字时钟的设计
引言
现代社会科技飞速发展,人们生活节奏加快,时间就是金钱,时间就是生命。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
20世纪末,电子技术得到飞速发展,各类电子产品相继出现在市场,电子产品主要朝着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
数字化电子产品已渗入到人类生活的方方面面。
单片计算机即单片微型计算机(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多输入输出口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。
而52单片机是51单片机的升级版,功能更强大。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
基于以上发展与现实需要本次设计课题就是基于单片机的设计-----基于单片机的多功能数字钟。
数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
一、设计目的:
1.了解数字时钟的组成及工作原理
2.熟悉数字钟的设计与制作:
1).由晶振电路产生1HZ标准秒信号。
2).秒、分为00-59六十进制计数器。
3).时为00-23二十四进制计数器。
4).可手动校正:
能分别进行秒、分、时的校正。
只要将开关置于手动位置。
可分别对秒、分、时进行连续脉冲输入调整。
3.了解单片机的构造
4.熟悉单片机的各种指令
5.学会用C语言编写单片机程序
二、设计要求:
1.设计一个具有“时”,“分”,“秒”的十进制数字显示(小时从00-23)的计时器
2.采用七段数码管,显示范围0分00秒—23时59分59秒
3.当电路发生走时误差时,要求电路具有校时功能
4.具有定时功能,定时时间到,蜂鸣器响
三、方案设计与论证:
总体分析:
电子时钟是采用数字电路实现对时、分、秒数字显示的计时装置,主要有时钟运算模块、校时模块和显示模块组成。
其中校时模块和时钟运算模块对时、分、秒的数值进行操作。
本多功能数字时钟采用单片机内部的定时器不断地进行中断实现定时功能,通过软件计数和软件译码,以动态扫描的方式将时间显示在数码管上。
通过按键的检测可以控制单片机的相应动作,来达到调时的目的。
总体方案及简要论证:
本多功能数字时钟以AT89S52单片机为核心器件设计,电路原理图见附图
(1)。
系统由AT89S52单片机、锁存器74HC573、LED数码管、按键、蜂鸣器等部分构成,能实现比较精确地走时、时间的调整等功能。
1)、运算模块:
秒信号由单片机内部的定时器产生。
每次定时器的定时时间为250μs,对中断进行计数,当实现4000次中断时为1S,秒加1,当秒计数达到60时,秒清零,分加1,当分计满60清零,时加1,当时计满24时,时清零。
2)、校时模块:
本数字时钟对时、分、秒的调节功能集中于S1、S2、S3三个按键上,按键按下一次,对应的数值加1。
3)、定时模块:
当分计数至60时,调用报时程序,蜂鸣器发出声音。
4)、显示模块:
显示部分硬件用六只共阴极的数码管显示。
为了节省单片机的IO口,通常采用动态扫描的显示方法,将每个数码管的同名段连在一起,分6次向数码管写数据,每次对6个数码管写相同的数据,每次选通一个数码管,完成扫描,通过调整、缩短扫描的时间,由于人眼的视觉暂留作用,使得人们看起来就像同时显示一样,以达到动态显示的目的
5)、组成框图如图所示:
四、系统的设计
(一)系统的的硬件设计:
1.电源电路:
电源是单片机系统的重要组成部分,他不仅为系统提供多路电压源还直接影响到系统的技术指标和抗干扰性能。
89S52单片机和一般的数字芯片一样,都是5V电压供电,所以可以共用一个5V电源。
另外,为了提高
电源的稳定性,在离电源的最近处做好退耦处理,即用一个0.1UF和一个10UF电容,以滤去干扰,保证电源的稳定。
2.数码管显示电路:
要同时使得6个数码管点亮,所需的IO口是很多的。
为了节省单片机的IO口,通常采用动态扫描的显示方法,将每个数码管的同名段连在一起,分6次向数码管写数据,每次对6个数码管写相同的数据,每次选通一个数码管,完成扫描,通过调整、缩短扫描的时间,由于人眼的视觉暂留作用,使得人们看起来就像同时显示一样,以达到动态显示的目的。
如图(3)所示。
图(3)
本电路采用7段共阴极数码管
3.锁存器74HC573:
74HC573包含八路D型透明锁存器,每个锁存器具有独立的D型输入,以及适用于面向总线的应用的三态输出。
所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。
Dn:
第n路输入数据;On:
第n路输出数据;当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。
当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。
当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。
OE端的操作不会影响锁存器的状态。
操作电压范围:
2.0V~6.0V。
低输入电流:
1.0uA。
锁存器的管脚图、功能表及逻辑图如图(3)。
管脚图:
逻辑图:
4.单片机最小系统:
1)、电源引脚,工作电压为5V
Vcc40电源端
GND20接地端
2)、外接晶体引脚,其晶振连接的内部、外部方式图如下:
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
3)、复位电路RST(9)
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。
当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。
复位操作不会对内部RAM有所影响。
常用的复位电路如下图所示:
4)、输入输出引脚
(1)、0端口[P0.0-P0.7]P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。
作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2)、P1端口[P1.0-P1.7]P1是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收低8位地址信息。
(3)、P2端口[P2.0-P2.7]P2是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4)、P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
5)、蜂鸣器
蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
其中蜂鸣器电路中三极管的作用是放大声音信号.三极管是一种控制元件,主要用来控制电流的大小,以共发射极接法为例(信号从基极输入,从集电极输出,发射极接地),当基极电压UB有一个微小的变化时,基极电流IB也会随之有一小的变化,受基极电流IB的控制,集电极电流IC会有一个很大的变化,基极电流IB越大,集电极电流IC也越大,反之,基极电流越小,集电极电流也越小,即基极电流控制集电极电流的变化。
但是集电极电流的变化比基极电流的变化大得多,这就是三极管的放大作用。
其驱动电路如下图所示:
6)、校时电路
鉴于使用中断电路会增加硬件电路的复杂度,本电路采用独立按键的方法,只需在程序中加入扫描程序即可。
其中P0.0接按键1,控制秒的校正,每按一下,秒加1;P0.1接按键2,控制分的校正,每按一下,分加1;P0.2接按键3,控制时的校正,每按一下,时加1。
如图所示:
(二)、程序设计
1.主程序流程图:
2.定时器中断程序流程图:
3.具体程序:
利用C语言编程如下(部分说明已注释):
/*P1口接段选,P2口接位选(P2.0到P2.5),段选letch接P3.1,位选letch接P3.2*/
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidSYSCLK_Init(void);
voidPort_Init(void);
voiddelay();
sbitdula=P3^1;
sbitwela=P3^2;
sbitalarm=P2^7;
sbitkey1=P0^0;
sbitkey2=P0^1;
sbitkey3=P0^2;
ucharcodeduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//共阴极数码管的显示译码
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
ucharcodewei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//段选编码
uchari,j;//定义循环变量
ucharsec1=0,sec2=0,min1=0,min2=0,hour1=0,hour2=0,sec=0,min=0,hour=0;//定义代表时分秒的变量
ucharcon=0;
uintms10;//定义10ms定时变量
keyscan()//调时按键处理函数
{
EA=0;
if(key1==0)
{
delay();delay();
if(key1==0)
{
while(!
key1);
sec++;
if(sec==60)
sec=0;
}
}
if(key2==0)
{
delay();delay();
if(key2==0)
{
delay();
while(!
key2);
min++;
if(min==60)
min=0;
}
}
if(key3==0)
{
delay();delay();
if(key3==0)
{
while(!
key3);
hour++;
if(hour==24)
hour=0;
}
}
EA=1;
}
voidmain(void)
{
alarm=0;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
keyscan();
{
P2=0xff;
dula=0;
P1=duan[sec1];/*6*///显示秒的个位
dula=1;
wela=0;
P2=0xfe;
wela=1;
delay();
}
{
P2=0xff;
dula=0;
P1=duan[sec2];/*5*///显示秒的十位
dula=1;
wela=0;
P2=0xfd;
wela=1;
delay();
}
{
P2=0xff;
dula=0;
P1=duan[min1];/*4*///显示分的个位
dula=1;
wela=0;
P2=0xfb;
wela=1;
delay();
}
{
P2=0xff;
dula=0;
P1=duan[min2];/*3*///显示分的十位
dula=1;
wela=0;
P2=0xf7;
wela=1;
delay();
}
{
P2=0xff;
dula=0;
P1=duan[hour1];/*2*///显示时的个位
dula=1;
wela=0;
P2=0xef;
wela=1;
delay();
}
{
P2=0xff;
dula=0;
P1=duan[hour2];/*1*///显示时的十位
dula=1;
wela=0;
P2=0xdf;
wela=1;
delay();
}
}
}
voiddelay()//定义延时函数
{uintj,k;
for(j=0;j<50;j++)
for(k=0;k<5;k++);
}
voidtimer0(void)interrupt1//使用定时器0中断
{
ms10++;
if(ms10==4000)
{
ms10=0;
sec++;
if(sec==60)
{
sec=0;
min++;
alarm=1;
alarm=0;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
alarm=1;
alarm=1;
alarm=1;
alarm=0;
}
}
}
}
sec1=sec%10;
sec2=sec/10;
min1=min%10;
min2=min/10;
hour1=hour%10;
hour2=hour/10;
ET0=1;
}
至一个完整的基于单片机的多功能数字钟即完成。
五、其它
硬件制作电路板,并将程序烧至单片机内,运行并调试。
在此应注意:
电路板的焊接,防止虚焊和短路,因为引脚较多,且排列紧密所以要求,焊接技术较高。
除此以外,编程也是较重要的,要注意每个引脚的功用,和确定准确的延时时间。
电路焊接完成后就运行调试,以及时发现并改正错误。
六、问题分析
制作一块完整电路板,一次性完全正确较不易,总会遇到这样或那样的问题。
我们在设计电路板是也同样遇到诸多问题,但经过组员的齐心协力终于完成任务。
问题如下:
1、在调试时,显示十位分的数码管始终不亮。
我们2位同学重新检查了关于此数码管的所有连接,结果发现有一条电路线断路,重新连接后,此数码管同样不会点亮。
然后检查程序,才发现,秒的十位位选并没有选择,修改程序后,此数码管点亮。
2、接通电路后,蜂鸣器一直闹铃。
查找资料,分析后,知道不同型号的三极管对应于蜂鸣器的接法是不一样的。
而我们,显然是弄错了三极管的型号。
改正后,电路工作正常。
3、编程时,同样出现了错误。
如P口对应错误,按键控制错误等。
七、设计体会
两个期的单片机课程设计很快就结束了,在这两周当中,虽然开始有点困难,但是经过我们们分工合作,合理地进行设计安排,我们于顺利地完成了本次单片机课程设计,同时也学到了很多东西。
在本次课程设计中,我们通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步巩固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作、调试的方法。
在设计时根据课题要求,复习相关的知识,查询相关的资料。
根据实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。
这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。
与此同时,我们也对团队分工合作有了进一步的认识,只有通过合理的分工合作,我们们才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。
最重要的是,这次课程设计也增加了我们对问题的研究和探讨,在我们以后的学习中会有更多的帮助。
单片机作为我们们的主要专业课之一,虽然初学们对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我们发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。
作为一名电子专业的大三学生,我们觉得做单片机课程设计是十分有意义的,而且是十分必要的。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我们发现效率很高,这是我们做这次课程设计的又一收获。
然后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
在完成单片机课程设计后,我们们发现我们们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。
但通过学习这一次实践,增强了我们们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面。
从中增强了我们们的团队合作精神,并让我们们认识到把理论应用到实践中去是多么重要.
元件清单:
单片机芯片AT89S521
锁存器芯片74HC5732
三极管90131
按键6*6*51
蜂鸣器5V驱动1
瓷片电容30pF2
电解电容47uF/50V1
电解电容10uF/50V1
电阻1K9
电阻4.7K4
数码管LG5011AH6
晶振12M1
插槽2C-401
插槽2C-201
电路板10*15cm1
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 时钟 设计 文档 十五