对时功能电子钟设计报告

上传人:cl****1 文档编号:552620498 上传时间:2023-05-27 格式:DOC 页数:15 大小:256.01KB
返回 下载 相关 举报
对时功能电子钟设计报告_第1页
第1页 / 共15页
对时功能电子钟设计报告_第2页
第2页 / 共15页
对时功能电子钟设计报告_第3页
第3页 / 共15页
对时功能电子钟设计报告_第4页
第4页 / 共15页
对时功能电子钟设计报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《对时功能电子钟设计报告》由会员分享,可在线阅读,更多相关《对时功能电子钟设计报告(15页珍藏版)》请在金锄头文库上搜索。

1、设计报告题 目完成人:张欣,杜枫一、 系统概述使用AT89C51单片机结合段码LED显示器,键盘设计一个具有对时功能的电子钟。1、设计要求:l 采用8个LED数码管,显示格式为“时时-分分-秒秒”,采用24小时制。l “时/分/秒”相应LED闪动,表示相应的部分处于对时状态。l 用5个功能键操作来设置当前时间:功能键K1K5功能如下。l K1进入时间设置状态,且“时时-分分-秒秒”LED闪动。l K2设置小时。l K3设置分钟。l K4设置秒钟。l K5确认完成设置,“时时-分分-秒秒”LED停止闪动,继续计时。l 未进入计时状态时,K2-K5键的操作被忽略。程序执行后LED显示“00:00:

2、00”,然后开始计时。2、用汇编语言编写相应软件;3、系统软、硬件联调。二、 方案设计本次设计是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED数码管时钟电路采用24小时计时方式。该电路采用AT89C51单片机,使用5V电池供电,只使用一个按键进行复位状态的控制以及正常显示等状态。LED显示采用静态扫描方式实现,采用6M晶振。该电子钟使用单片机模块控制,用单片机原理实现时、分、秒计时的装置。本次设计通过用单片机为主控制,通过电路仿真而实现。首先使用Proteus Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生

3、成hex文件,传入单片机内部,从而实现仿真效果。三、 硬件设计根据AT89C51单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C51的P3.0P3.1分别与74LS164的数据输入口和时钟信号输入口相连,74LS164是8位串入并出移位寄存器,负责将P3.0输出的串行数据转换成并行信号。显然,这种方式显示同样的位数使用单片机的口线大大减少,即可以让LED当前时间数值,数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口,本系统采用静态扫描显示方式。系统的时分显示部件由6只7段共阳LED数码管构成,前两只用于时的显示,中间两只用于分的显示,最后两只用于

4、秒的显示。每个LED数码管由相对应的74LS164驱动,数码管的a,b,c,d,e,f,g,h,分别分别74LS164的QA,QB,QC,QD,QE,QF,QH相连。3.1 AT89C51引脚及其功能引脚功能:Vcc(40):电源电压 GND(20):接地P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)RST(9):复位信号输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平

5、时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1(18):振荡器反相放大器的及内部时钟发生器的输入端。XTAL2(19):振荡器反相放大器的输出端。通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。3.2 时钟电路单片机必须在时钟的驱动下才能进行工作。MCS-51系列单片机内部有一时钟振荡电路,只需外接振荡电源,就能产生一定频率的时钟信号到单片机内部的各个单元,决定单片机的工作速度。电路如下图:3.3驱动部件74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器

6、,可双向传输数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。图3(a)为74LS245的管脚图。图3(a)74LS245管脚图3.4显示部分由8个共阴极的数码管组成时、分、秒和分隔符的显示P0口的8条数据线P0.0至P0.7分别与74LS245的A口对应相接,增大AT89C51的带负载能力;P3口对应接八个数码管的公共端,通过程序控制数码管的亮与灭,这样通过P0口送出一个存储单元的高位、低位BCD显示代码,通过P3口送出 扫描选通代码轮流点亮LED1至LED8,就会将要显示的数据在数码管中显示出来,从P0口输出的代码是BCD码,从P3口输

7、出的就是位选码。这是扫描显示原理。LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1)本表所列各字符的显示段码均为小数点不亮的情况。 (2)“空白”字符即没有任何显示。四、 软件设计本次设计的软件部分由主程序,静态显示子程序,中断服务程序,时、分、秒加1子程序,时、分、秒单元清零子程序组成。4.1 电子钟的主程序本设计中,计

8、时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。其主程序执行流程见下图。开始设堆栈指针秒分时计数单元清零设定时器工作方式设定时器初值设中断方式中断初始化调显示子程序TMOD=01为工作方式14.2定时器中断服务程序定时器TO用于时间计时,定时溢出中断周期设为100ms,中断进入后,判断是否到1秒钟,到了,则调用加法子程序对秒进行加1处理,处理完后返回断点地址,同时判断秒是否到了60秒,到了则对秒单元清零,同时对分进行加1操作,同样对分进行判断,到60分则对分单元清零,同时对时加1,同样也对时进行判断,到24小时,则对时单元清零,最后中断返回。 T0中断

9、服务程序执行流程见下图:保护现场 赋初值10数是否到?NY秒值加1是否到60秒?N Y秒清0分加1是否到60分?NY分清0小时加1是否到24小时?NY小时清0恢复现场返回中断4.3电子钟的显示子程序4.4延时子程序附:程序片段如下:S_SETBITP1.0M_SETBITP1.1H_SETBITP1.2SECONDEQU30HMINUTEEQU31H;定义MINUTE为31H单元标号,分计数单元HOUREQU32H;定义HOUR为32H单元标号,时计数单元TCNTEQU34H;定义TCNT为34H单元标号定时器TO计数ORG00H;程序开始地址SJMPSTART ;跳转到START执行ORG0

10、BH;定时器TO中断入口地址LJMP INT_T0;跳转到INT-TO执行START:MOV DPTR,#TABLE;指针指向TABLE首地址MOVHOUR,#0;初始化秒计数单元MOVMINUTE, #0;初始化分计数单元MOVSECOND,#0;初始化时计数单元MOVTCNT,#0;初始化T0计数单元MOVTMOD,#01H;工作方式1MOVTH0,#(65536-50000)/256;定时 50 毫秒MOVTL0,#(65536-50000)MOD 256MOVIE,#82H;允许定时器TO中断SETBTR0;启动定时器T0;判断是否有控制键按下,是哪一个键按下A1:LCALLDISPL

11、AY;跳转到DISPLAY执行JNBS_SET,S1;检查 P1.0 口 电平JNBM_SET,S2;检查 Pl.l 口电平JNBH_SET,S3;检查 P1.2 口 电平LJMPA1;返回S1:LCALLDELAY;去抖动JBS_SET,A1;确认 P1.0 口电平INCSECOND;秒值加1MOVA,SECOND;秒数值送入A比较CJNE A,#60,J0;判断是否加到60秒MOVSECOND,#0;SECOND 单元清零LJMPK1;转到K1执行S2:LCALLDELAY;长调用DELAY指令 JBM_SET,A1;确认Pl.l 口电平K1:INCMINUTE;分钟值加1MOVA,MIN

12、UTE;分数值送入A比较CJNEA,#60,J1;判断是否加到60分MOVMINUTE,#0;秒单元清零LJMPK2;调用K2指令S3:LCALLDELAY;调用延时子程序JBH_SET,A1;确认?1.2 口电平K2:INCHOUR;小时值加1MOVA,HOUR;时数值送入A比较CJNEA,#24,J2;判断是否加到24小时MOVHOUR, #0;时单元清零MOVMINUTE, #0;分单元清零MOVSECOND,#0;秒单元清零LJMPA1;跳转到程序A1;等待按键抬起J0: JBS_SET,A1;调用A1指令LCALLDISPLAY;调用显示子程序SJMPJ0;返回J0指令J1: JBM

13、_SET,A1;数值比较LCALLDISPLAY;调用显示子程序SJMPJ1;返回J1指令J2: JBH_SET,A1;数值比较LCALLDISPLAY;调用显示子程序SJMPJ2;返回J2指令;定时器TO中断服务子程序,对秒,分钟和小时的计数INT_T0:MOVTH0,# (65536-50000)/256;定时 50msMOVTL0,# (65536-50000) MOD 256INCTCNT;定时器TO计数单元中的数值加1MOVA, TCNT;定时器T0计数单元中的数值送入A比较CJNEA,#20,RETUNE ;计时 1 秒,INCSECOND;秒计数单元中的数值加1MOVTCNT,#

14、0;定时器TO计数单元归零MOVA,SECOND;秒计数单元中的数值送入A比较CJNEA, #60,RETUNE;记时 1 分,INCMINUTE;分计数单元中的数值加1MOVSECOND, #0;秒计数单元归零MOVA, MINUTE;分计数单元中的数值送入A比较CJNEA,#60,RETUNE;记时 1 时,INCHOUR;时计数单元中的数值加1MOVMINUTE, #0;分计数单元归零MOVA,HOUR;时计数单元中的数值送入A比较CJNEA, #24,RETUNE;记时 1 天,MOVHOUR,#0;时计数单元归零MOVMINUTE, #0;分计数单元归零MOVSECOND, #0;秒计数单元归零MOVTCNT,#0;定时器T0计数单元清零RETUNE: RETI;中断返回 ;显示控制子程序DISPLAY: MOVA,SECOND;显示秒MOVB, #10;B寄存器赋值为10D

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号