数字电子时钟设计论文免费Word格式.docx
《数字电子时钟设计论文免费Word格式.docx》由会员分享,可在线阅读,更多相关《数字电子时钟设计论文免费Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
2)单片机应用技术新教程电子工业出版社
目录
1
一、系统总体方案选择与说明1
1.系统总体方案选择1
2.说明1
二、系统结构框图与工作原理3
1.系统结构框图3
2.工作原理4
三、各单元硬件设计说明及计算方法5
1.定时器\计数器5
2.中断系统:
6
3.键盘6
4.LED数码管显示器:
7
5.LED数码显示器有两种连接方法7
图
(1)LED引脚排列8
四、软件设计与说明(包括流程图)8
1.主程序8
2.数码管显示模块9
3.定时器/计数器T0中断服务程序10
4.按键处理模块11
五、程序清单13
1.中断子程序13
2.延时程序13
3.主程序和定时器中断子程序13
4.LED显示子程序14
5.按键控制子程序15
6.数字电子时钟系统PROTUES仿真19
六、参考文献20
致谢21
一、系统总体方案选择与说明
1.系统总体方案选择
该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计的一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等,用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为50000。
形成定时时间为50ms。
计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。
因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。
8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。
数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。
“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。
“时单元”采用24进制计时器,可实现对一天24小时的累计。
显示电路将“时”、“分”、“秒”通过七段显示器显示出来。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下second,秒单元就加1,按一下minute,分就加1,按一下hour,时就加1。
2.说明
2.1、系统由AT89C51、LED数码管、按键、电容、电阻等部分构成,能实现时间的调整、输出、调时间等功能。
系统中按钮BUTTON能对时间进行调整功能的按钮,采用单键控制调时功能,运用软件去抖判断按键的时间从而选择完成相对应的功能
2.2、时钟显示:
在此部分的设计中,在显示时,首先将时间十进制数据转化为显示段码,然后送往数码管显示。
显示段码采用动态扫描的方式。
2.3、时间调整:
该设计需要校对时间,所以用三个按键来实现。
按hour来调节小时的时间,按minute来调节分针的时间,按sceond来调节秒的时间。
按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;
如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;
如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;
如果没有按下,就把时间显示出来。
2.4、中断:
中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。
所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。
关于中断的概念有下列几个名词:
(1)程序A称为主程序,
(2)处理事件B的程序称为中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应。
关于中断的概念可以打个如下的比喻。
领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断电话,继续做自己的工作(返回主程序继续执行)。
二、系统结构框图与工作原理
1.系统结构框图
数字电子时钟的原理图
2.工作原理
软时钟是利用单片机内部的定时器\计数器来实现的,它的处理过程如下:
首先设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。
然后通过数码管把它们的内容在相应位置显示出来即可。
数码管显示可以采用静态显示方法或动态显示方法。
静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示用8个数码管。
由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。
动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。
译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;
硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。
在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。
在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。
另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了键盘设置子程序。
单片机应用系统由硬件系统和软件系统两部分组成。
硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。
在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。
配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。
在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。
单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。
三、各单元硬件设计说明及计算方法
1.定时器\计数器
1、MCS-51系列中51子系列有两个16位的可编程定时\计数器可:
定时\计数器T0和定时\计数器T1。
它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。
方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。
2、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。
3、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。
通过编程可设定工作于某种方式。
四种工作方式为:
13位定时\计数器、16位定时\计数器、8位自动重置定时\计数器、两个8位定时\计数器(只有T0有)
4、每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
1、MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。
2、MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。
中断允许寄存器IE的字节地址为A8H,可以进行位寻址。
系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置“1”。
3、MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级。
通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址。
如果某位被置“1”,则对应的中断源被设为高优先级;
如果某位被清零,则对应的中断源被设为低优先级。
对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数器T1中断、串行口中断。
通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。
4、MCS-51单片机响应中断的条件为:
中断源有请求且中断允许。
3.键盘
键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。
键盘的结构形式一般有两种:
独立式键盘和矩阵式键盘。
矩阵式键盘的工作方式有3种:
查询工作方式、定时扫描工作方式和中断工作方式。
LED数码管显示器在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。
LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。
在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。
所谓译码方式是指由显示字符转换得到对应的字段码的方式。
对于LED数码管显示器,通常的译码方式有两种:
硬件译码方式和软件译码方式。
LED数码管在显示时,通常有两种显示方式:
静态显示方式和动态显示方式。
在使用时可以把它们组合起来。
在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。
5.LED数码显示器有两种连接方法
(1)共阳极接法把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时则不点亮。
(2)共阴极接法。
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时则不点亮。
在本设计中所采用的是共阴极LED数码显示器,其引脚排列如下图
(1)所示:
图
(1)LED引脚排列
四、软件设计与说明(包括流程图)
电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,
1.主程序
主程序执行流程如下图
(2),主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。
图
(2)主程序执行流程
2.数码管显示模块
本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。
采用软件译码动态显示。
流程图如下图(3)所示:
图(3)数码管显示程序流程图
3.定时器/计数器T0中断服务程序
定时器/计数器T0用于时间计时。
选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;
分单元加到60则对时单元加1,同时分单元清0;
时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到存储单元的指定位置。
定时器/计数器T0中断服务程序流程图如下图(4):
图(4)定时器/计数器T0中断服务程序流程图
4.按键处理模块
按键处理设置为:
如没有按键,则时钟正常走时。
当按下K0按键时,进入调分状态,时钟停止走动;
按K1可K2按键可进行加1或减1操作;
继续按K0键可分别进行分和小时的调整;
最后按K0键将退出调整状态,时钟开始计时运行
图(5)按键控制程序流程图
五、程序清单
采用8位LED软件译码动态显示程序
使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳
LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。
1.中断子程序
timer0(void)interrupt1using1
{
u++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
2.延时程序
voiddelay()
unsignedinttime,p;
for(time=30;
time>
0;
time--)
for(p=0;
p<
10;
p++);
3.主程序和定时器中断子程序
#include<
reg51.h>
charmod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
charsceond,minute,hour,i,k,l,j,x,y;
intu;
sbitP1_0=P1^0;
sbitP1_1=P1^1;
sbitP1_2=P1^2;
voidmain()
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
do
{
kongzhi();
xianshi();
while
(1);
}
4.LED显示子程序
voidxianshi()
if(u==20)
{
u=0;
sceond++;
while(sceond==60)
sceond=0;
minute++;
if(minute==60)
minute=0;
hour++;
if(hour==24)
hour=0;
x=hour%10;
y=hour/10;
l=minute%10;
j=minute/10;
i=sceond%10;
k=sceond/10;
P2=0x7f;
P0=mod[i];
delay();
P2=0xbf;
P0=mod[k];
P2=0xdf;
P0=0x40;
P2=0xef;
P0=mod[l];
P2=0xf7;
P0=mod[j];
P2=0xfb;
P2=0xfd;
P0=mod[x];
P2=0xfe;
P0=mod[y];
5.按键控制子程序
voidkongzhi()
if(P1_0==0)
TR0=0;
while(P1_0==0);
while
(1)
if(P1_1==0)
if(sceond==60)
while(P1_1==0);
if(P1_2==0)
sceond--;
if(sceond<
0)
while(P1_2==0);
minute++;
while(minute==60)
{
minute=0;
}
while(P1_1==0);
if(P1_2==0)
minute--;
if(minute<
minute=0;
while(P1_2==0);
l=minute%10;
j=minute/10;
P2=0xef;
P0=mod[l];
delay();
P2=0xf7;
P0=mod[j];
if(P1_0==0)
{
hile(P1_0==0);
while
(1)
if(P1_1==0)
hour++;
while(hour==24)
hour=0;
if(P1_2==0)
hour--;
if(hour<
}
x=hour%10;
y=hour/10;
P2=0xfd;
P0=mod[x];
P2=0xfe;
P0=mod[y];
if(P1_0==0)
{
while(P1_0==0);
TR0=1;
return;
}
6.数字电子时钟系统PROTUES仿真
用PROTUES软件,根据数字电子钟的原理图,仿真程序得如图(6)所示:
图(6)数字电子时钟的PROTES仿真
六、参考文献
1、《单片机C语言轻松入门》周坚编北京航空航天大学出版社。
2、单片机人机接口实例公茂法编著,北京航空航天大学出版社。
3、李广,弟朱月,秀王秀山.《单片机基础》[M].北京航空航天出版社。
4、谢维成杨加国《单片机原理与应用及C51程序设计》[M].清华大学出版社。
5、《单片微型计算机原理及接口技术》陈光东等编华中科技大学出版社
6、《单片机实用系统设计技术》房小翠编国防工业出版社
致谢
首先感谢我们的指导老师王红梅老师和黄进财老师。
在我学习单片机课程期间,王老师给了我无微不至的关心。
她认真工作的态度一直感染着我,这必将激励我在今后的工作和生活中不断前进。
以及黄老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样,他循循善诱的教导和不拘一格的思路给予我无尽的启迪。
其次我要感谢一直陪同我完成单片机课程考试论文的同学,谢谢他们平时对我帮助和关心。
我很高兴能生活在一个互助友爱和充满活力的集体中,从他们的身上我学到了很多,同时他们给我的大学生活留下了许多美好的回忆。
再次,我要特别感谢我的父母。
在我求学的过程中他们付出的不仅仅是辛勤的劳动和汗水,而是世界上最崇高、最伟大的爱。
他们所做的一切是我这一生都无法回报的。
最后,真诚感谢给予我热情帮助和关注的所有人。