电子钟.docx
- 文档编号:28792533
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:34
- 大小:565.62KB
电子钟.docx
《电子钟.docx》由会员分享,可在线阅读,更多相关《电子钟.docx(34页珍藏版)》请在冰豆网上搜索。
电子钟
摘要
在日常生活中我们可以随处看到数字电子钟,数字电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
本课程设计是基于AT89S52单片机的基础上设计一简单的数字电子钟,其能够通过两个四位一体共阳数码管精确地显示时间及通过键盘进行时间的调整,并且能够完成整点报警功能,总体上达到了课程设计的要求,算是一次比较成功的设计。
关键词:
数字电子钟;AT89S52;LED数码管
ABSTRACT
Ineverydaylifewecanseeeverywhereindigitalelectronicclock,digitalclockisadigitalcircuitstimingdevicetodisplaytheseconds,minutes,hours,comparedwiththetraditionalmechanicalclock,itkeepsgoodtime,display,intuitive,noadvantagesofmechanicaltransmissiondevice,whichiswidelyused.ThecoursedesignisbasedontheAT89S52microcontrollerdesignedonthebasisofasimpledigitalclock,throughtwofour-in-oneYangdigitalaccuratelydisplaysthetimeandtimeadjustmentviakeyboardandbeabletocompletethewholepointofalarmfunctions,generallymeetstherequirementsofcurriculumdesign,isamoresuccessfuldesign.
Keywords:
Digitalelectronclock;AT89S52;LEDdigitaltube
1设计课题任务、功能要求说明及总体方案介绍
1.1课题设计任务
设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
1.2功能要求说明
本设计所设计的电子钟上电显示P.进入等待状态,按下K0键电子钟从00-00-00开始运行。
在电子钟运行状态下再次按下K0键进入调整状态,此时判断按键标志位通过K1和K2键对电子钟进行加减调时。
当显示至59秒时分显示自动加一;当分、秒显示至59分59秒时,小时显示自动加一;当显示至23小时59分59秒时,电子钟自动变为0时0分0秒显示;同时,当整点时蜂鸣器发出报警声提醒整点到。
1.3总体方案介绍
电子钟的总体功能原理是以AT89S52单片机为主要的控制核心,通过外接8个独立式键盘作为控制信号源,两个四位一体数码管作为显示器件,单片机实时的去执行相应的功能。
在数码管上显示出来,此时通过不同的按键来观察和调节各种数据。
1.4工作原理介绍
本电子钟主要由单片机(AT89S52)、独立式键盘电路、数码管显示电路和复位电路等部分组成,总体方案如图1所示:
图1总体设计方案图
2硬件系统的设计
2.1硬件系统各模块功能简要介绍
2.1.1AT89S52单片机的介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,6个中断源:
两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.1.2时钟电路模块
单片机的时钟电路由振荡电路和分频电路组成,用于产生单片机工作时所需要的时钟控制信号,单片机的内部电路在时钟信号控制下,严格地按照时序执行指令进行工作,而时序所研究的是指令执行中各个信号在时间上的关系。
振荡电路通过XTAL1和XTAL2两个引脚在芯片外并接石英晶体振荡器和两只电容。
石英晶体为一感性元件,与电容构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡器。
振荡电路产生的振荡信号并不直接为单片机所用,而要进行分频,经分频后才能得到单片机各种相关的时钟信号。
单片机的内部电路在时钟信号控制下,严格地按照时序执行指令进行工作。
单片机各个功能部件的运行都是以时钟控制信号为基准,有条不紊的一拍一拍地工作。
而时钟信号是通过振荡信号分频得到的,所以晶振频率直接影响着时钟信号频率。
单片机晶振频率高,系统的时钟频率就高,单片机运行速度也就快。
AT89S52单片机的晶振频率为12MHz。
2.1.3独立式键盘模块
独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。
因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。
在本次课程设计中,8个独立式键盘经上拉电阻接在单片机P1口8根口线上,且P1.0~P1.7分别对应于按键S0、S1、S2、S3、S4、S5、S6、S7。
因为按键为机械按钮,因此在键被按下时由于机械触点的弹性以及电压突跳等原因,在触点闭合及释放的瞬间将出现电压抖动,所以在键扫描时应该要消除抖动,而且对于一键多功能的按钮必须要判释放,以免某个程序段多次执行。
2.1.4数码管显示模块
在本次设计中,采用两个四位一体共阳极数码管,利用三极管驱动段控口以便LED发出较亮的光。
其段控端接在AT89S52单片机的P0口线上,且P0.7~P0.0分别对应于LED的显示段dp,g,f,e,d,c,b,a,位控端接在AT89S52单片机的P2口线上,且P2.7~P2.0分别对应于LED7~LED0。
2.1.5复位电路模块
复位是单片机的硬件初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。
复位操作有上电自动复位和按键手动复位两种方式。
复位电路通过极性电容和1个电阻串联,电容接VCC,电阻接地完成了上电复位,在电容两端并联一个电阻就可以实现按键电平复位。
2.1.6流水灯电路模块
在单片机的P3口上经限流电阻接8个发光二极管构成流水灯电路,其中8个发光二极管的一端共连接VCC。
当P3口某一口线为低电平时相应的发光二极管点亮。
2.1.7蜂鸣电路模块
蜂鸣器经三极管驱动接在P3.1口,当P3.1口有高低电平变化时蜂鸣器发出蜂鸣声。
2.2原理图、PCB图、元器件布局图
2.2.1电路原理图
Protel原理图见附录A
2.2.2PCB图
PCB底层图、顶层图见附录B
2.2.3元器件布局图
元器件布局图见附录C
2.3元器件清单
元器件清单见附录D
3软件系统的设计
3.1单片机资源使用情况说明
(1)单片机片内定时/计数器0:
用于定时10ms。
(2)单片机P0口接数码管段控端:
P0.0~P0.7对应于LED的a~dp。
(3)单片机P1口经上拉电阻接8个按键:
P1.0~P1.7对应于S0~S7。
(4)单片机P2口接数码管位控端:
P2.7~P2.0对应于LED7~LED0。
(5)单片机P3口接8个发光二极管,用于指示相应的调整位。
(6)单片机P3.1接蜂鸣器:
作为电子钟调整时提醒信号。
3.2软件系统各模块功能介绍及程序流程框图
3.1.1系统监视程序模块
系统监视程序的功能主要是系统初始化及复位后显示P.、正常显示时间和判断功能转换键。
初始化包括数据堆栈区、定时/计数器的初始化、AT89S52芯片的初始化及时间、显示数据的初始化。
系统监视程序流程框图如图2所示:
图2系统监视程序框图
3.1.2定时中断程序模块
定时中断是电子时钟的核心。
T0工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时10ms,共定时100次,即可完成1秒的定时功能。
时钟的最小计时单位是秒,60s进位为1min,60min进位为1h,24h进位为1天。
T0用于产生最小单位1s,定时时间为10ms,中断累计100次即为1s。
计数单元中每逢60进位。
定时中断程序流程如图3所示。
图3中断服务程序流程框图
3.1.3加1、减1程序模块
在系统提示符"P."状态下,只有按启动键/调整键才能开启电子钟,电子钟进入运行状态;再次按下启动键/调整键,电子钟进入调整状态,发光二极管反映调整的的位。
此时,可通过加1键和减1键。
对电子钟实现精确调整:
长按加减键能够快速调整。
调整结束后,再次按下启动键/停止键,电子钟由调整状态返回运行状态,紧跟着以调整以后的时间运行。
时间的调整是通过判断键标志和K1、K2来实现的。
进入时间调整模式,K0键每按下一次,键标志就加1,满四次清零。
当键标志为0、1、2、3分别对应调时、分、秒。
调时程序流程图如图4、图5所示。
图4加1子程序流程框图
图5减1子程序流程框图
3.1.4显示子程序模块
电子时钟的时钟时间在8个数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元,数据存放在30H-37H内存单元中。
其中30H、31H单元存放秒数据,32H-33H单元存放分数据,34H-35H单元存放时数据,36H单元存放星期数据。
如表1所示。
表1数码管的缓冲单元
LED7
LED6
LED5
LED4
LED3
LED2
LED1
LED0
7FH
7EH
7DH
7CH
7BH
7AH
79H
78H
时十位
时个位
间隔符
分十位
分个位
间隔符
秒十位
秒个位
图6显示子程序流程框图
3.1.5键扫子程序模块
键盘扫描程序是通过CPU来对外围键盘电路进行查询。
该程序能够解决的问题有:
(1)判断有无按键动作;
(2)去抖动:
一个电压信号是通过机械触点的闭合、断开过程来实现信号传递的。
抖动时间一般为5~10ms。
按键的稳定闭合期为几百毫秒到几秒钟时间。
为了保证CPU对按键闭合仅做一次键输入处理,必须去除抖动影响,通常硬件或软件延时10ms处理。
(3)确认是否真正有键按下;
(4)计算并保存键值;
(5)判断键是否释放;
(6)恢复键值;
键扫子程序流程框图如图7所示。
图7键扫子程序流程框图
3.3软件系统的程序清单
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;项目名称:
数字式电子钟的设计
;设计者:
吕小洋
;2010年12月20日
;-----------------------------------------------------------------
;硬件模块:
(1)采用AT89S52单片机,包括复位电路模块、键盘功能模块、数码管显示模块(共阳极)等
(2)P1口经上拉电阻接8个按键:
P1.0~P1.7对应于K0、K1、K2、K3、K4、K5、K6、K7
(3)P0口接数码管段控端:
P0.7~P0.0对应于LED的显示段dp,g,f,e,d,c,b,a
(4)P2口接数码管位控端:
P2.7~P2.0对应于LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0。
(5)P3.1接蜂鸣器,作为电子钟整点报警信号。
;-----------------------------------------------------------------
;项目功能:
(1)电子钟上电或按键复位后能自动显示系统提示符"P.",进入时钟准备状态;
(2)第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;
(3)再次按电子钟启动/调整键,则电子钟进入时钟调整状态;并且电子钟停止运行。
(4)在调整状态下通过配合加1键和减1键可实现对电子钟的调整。
(5)整点是蜂鸣器响以作提醒。
(6)定义3个功能键:
分别为电子钟启动键/调整键、加1键、减1键。
在系统提示符"P."状态下,只有按启动键/调整键才能开启电子钟,电子钟进入运行状态;再次按下启动键/调整键,电子钟进入调整状态,发光二极管反映调整的的位。
此时,可通过加1键和减1键对电子钟实现精确调整:
长按加减键能够快速调整。
调整结束后,再次按下启动键/停止键,电子钟由调整状态返回运行状态,紧跟着以调整以后的时间运行。
(7)时间是24小时制,显示范围00到23小时,0到59分,0到59秒。
时、分、秒之间以“-”隔开。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-----------------------------------------------------------------
;1.键功能:
K0键【启动/调整】键
;K1键【加1】键
;K2键【减1】键
;2.常数表格:
;TABP(系统提示符P.字型代码序号表)
;TAB0(00-00-00字符的代码序号)
;TAB(共阳数码管字型代码表)
;3.子程序:
;DELAY(2毫秒延时子程序)
;DIR(数码管显示子程序)
;KEY(键扫描子程序)
;KEYCHULI(P1口数据处理子程序)
;-----------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;伪指令定义区;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SECEQU30H;秒存储单元
MINEQU31H;分存储单元
HOUREQU32H;时存储单元
CISHUEQU33H;定时次数存储单元
KEYBZEQU34H;键位标志存储单元
SECGEEQU78H;秒个位存储单元
SECSHIEQU79H;秒十位存储单元
MINGEEQU7BH;分个位存储单元
MINSHIEQU7CH;分十位存储单元
HOURGEEQU7EH;时个位存储单元
HOURSHIEQU7FH;时十位存储单元
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;系统起始程序区;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0000H
START:
LJMPMAIN
ORG000BH
LJMPTC0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;系统监控程序区;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG0030H
MAIN:
MOVSP,#80H;确立堆栈区
MOVPSW,#00H;初始化PSW,通用寄存器组为第0组
MOVTMOD,#01H;定义定时器的工作方式1
MOVTH0,#0D8H;定时器定时10ms
MOVTL0,#0F0H
SETBEA;允许总中断
SETBET0;允许定时器中断
MOVR0,#20H;RAM区
MOVR7,#5FH;RAM区单元个数95个,即从20H到7FH单元
ML:
MOV@R0,#00H;向从20H开始的95个RAM区写0
INCR0
DJNZR7,ML
TSF:
MOVDPTR,#TABP;系统初始化后提示符"P."字符代码表首地址
MOVR5,#08H;循环次数,即驱动数码管的位数
MOVR0,#78H;显示缓冲存储单元首地址
DIRTSF:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR5,DIRTSF
D:
LCALLDIR;调显示子程序显示提示符"P."
LCALLKEY;调键扫描子程序
JB20H.0,KS0;若K0键按下,则启动定时器
LJMPD;循环显示提示符P.
KS0:
MOVKEYBZ,#0;键功能标志:
0计时、1调时、2调分、3调秒
MOVSEC,#0;秒寄存器初始化
MOVMIN,#0;分寄存器初始化
MOVHOUR,#0;时寄存器初始化
MOVDPTR,#TAB0;"00-00-00"字符代码表首地址
MOVR5,#08H;循环次数,即驱动数码管的位数
MOVR0,#78H;显示缓冲存储单元首地址
DIRTSG:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR5,DIRTSG;显示"00-00-00"
KEYAS:
SETBTR0;开定时器
DI:
LCALLDIR
LCALLKEY;调键扫描子程序
CLRP3.7;电子钟运行时,发光二极管最高位D7点亮
K0:
JB20H.0,K00;判K0键是否按下
K1:
JB20H.1,K11;判K1键是否按下
K2:
JB20H.2,K22;判K2键是否按下
LJMPDI
;--------------------------------------
;;;;;;;;;;跳板;;;;;;;;;;;;;;;;;;;;;;;;;;
;----------------------------------------
K00:
LCALLTZ;K0键按下则调K0键【启动/调整】键功能程序
LJMPK1
K11:
LCALLADD_KEY;K1键按下则调K1键【加1】键功能子程序
LJMPK2
K22:
LCALLDEC_KEY;K2键按下则调K2键【减1】键功能子程序
LJMPDI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;键功能区;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-----------------------------------------------------------------
;;;;;;;;;;;;;1.K0键【启动/调整】键功能程序;;;;;;;;;;;;;;;;;;;;
;-----------------------------------------------------------------
TZ:
CLRTR0;关闭定时器,进入调整状态
MOVA,P3;发光二极管指示灯右移一位
RRA
MOVP3,A
INCKEYBZ;键标志加1
MOVA,KEYBZ
CJNEA,#4,DI;判键标志是否到4
MOVP3,#0FFH
MOVKEYBZ,#0;到4则清零键标志
LJMPKEYAS
RET
;-----------------------------------------------------------------
;;;;;;;;;;;;;;;;2.加1键ADD_KEY功能程序;;;;;;;;;;;;;;;;;;;;;;
;-----------------------------------------------------------------
ADD_KEY:
MOVA,KEYBZ
CJNEA,#01H,MIN_A;选择键功能标志为1调时,否则跳出
HOUR_A:
INCHOUR;时加1
MOVA,HOUR;时个十位分离
MOVB,#10
DIVAB
MOVHOURSHI,A;保存时十位
MOVHOURGE,B;保存时个位
MOVA,HOUR
CJNEA,#24,EXIT0;到24h则清0
MOVHOUR,#0
MOVHOURGE,#0
MOVHOURSHI,#0
MIN_A:
MOVA,KEYBZ
CJNEA,#02H,SEC_A;选择键
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子钟