汇编单片机电子钟设计报告_第1页
汇编单片机电子钟设计报告_第2页
汇编单片机电子钟设计报告_第3页
汇编单片机电子钟设计报告_第4页
汇编单片机电子钟设计报告_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、课程设计题目: 电子时钟二、课程设计要求1. 根据具体设计课题的技术指标和给定条件,独立进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;2. 查阅有关参考资料和手册,并能正确选择有关元器件和参数,对设计方案进行仿真;3. 完成预习报告,报告中要有设计方案,设计电路图,还要有仿真结果;4. 进实验室进行电路调试,边调试边修正方案;5. 撰写课程设计报告最终的电路图、调试过程中遇到的问题和解决问题的方法。三、进度安排1时间安排序 号内 容学时安排(天)1方案论证和系统设计12完成电路仿真,写预习报告13电路调试24写设计总结报告与答辩1合 计5设计调试地点:电气楼4102执

2、行要求微机原理与接口技术课程成绩优秀的可以自拟题目,其余的同学都是指定题目。每组不得超过2人,要求学生在教师的指导下,独力完成所设计的详细电路(包括计算和器件选型)。严禁抄袭,严禁两篇设计报告雷同。摘要随着电子技术的迅速发展,特别是随大规模集成电路出现,给生活带来了根本性的改变,尤其是单片机技术的应用产品已经走进了千家万户。数字电子钟的出现给人们的生活带来诸多方便。数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。采用LED数码管的数字显示以其亮度高、显示直观等优点被广泛应用于智能仪器及家用电器

3、等领域。本设计报告介绍一种以AT89S51芯片为核心,辅以必要的电路,以共阳极LED数码管作为显示器件组成6位数字显示,采用独立式按键进行时间调整的实用简易电子时钟设计,该时钟可显示时、分、秒,也可切换为年、月、日显示,更具有省电模式,可以在关闭显示的同时继续走时。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。关键字:AT89S51 数字钟 单片机 LED数码管 省电模式 Abstract The system uses the MCU has a date display, time display, time adjustment, power saving modes and

4、 features such as digital clock based on microcontroller AT89S51 as the core component of modern digital tube display dynamic "date" every minute "of timing pared with traditional mechanical clock, it has to go accurate, display an intuitive features. frequently encountered in everyda

5、y life and in the automatic control system, the demand for real-time monitoring of the time, the system at the same time monitoring, if reaches the pre-setthe time, make LED flashing prompt time has come to. addition the program also has a school function, able to adjust the time at any time and at

6、any time convenient to the expansion extended to other versatile use of the digital clock programming MCUthe advantage of the flexible, easy to function expansion.Key words: AT89S51 Electronic clock Single-chip LED digital tube Power saving mode目录第一章 绪论········

7、;··································(6)第二章 系统设计方案·············

8、3;····················(7)第三章 仿真····························&

9、#183;·············(52)第四章 调试··································

10、83;·······(53)第五章 结论·········································

11、;·(54)第六章 心得体会······································(54)参考文献·······

12、83;·····································(55)引 言计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。以单片机、嵌入式处理器、数字信号处理器(DSP)为核心的

13、计算机系统,以其软硬件可裁剪、高度的实时性、高度的可靠性、功能齐全、低功耗、适应面广等诸多优点而得到极为广泛的应用。目前计算机硬件技术向巨型化、微型化和单片机化三个方向发展。自1975年美国德州仪器公司(Texas Instruments)第一块微型计算机芯片TMS-1000问世以来,在短短的20年间,单片机技术已发展成为计算机领域一个非常有前途的分支,它有自己的技术特征、规范和应用领域。单片机是自动控制系统的核心部件,主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小、性能突出可靠性高(某些方面的性能指标大大优于通用微机中央处理器)、价格低廉等一系列优点,应用领域不断扩大,除了工业控

14、制、智能化仪表、通信、家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件,已经渗入到人们工作和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,前景广阔。数字钟具备单片机最小系统的基本组成,对于我们了解单片机有很大的帮助。一 绪 论1.1 课题意义:在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等,早期常用的一些时间控制单元都是用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则

15、可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的借口芯片,可以构造各种各样、功能各异的微电子产品。目前市场上提供的无论机械钟还是石英钟在晚上无照明的情况下都是不可见的。要知道当前的时间,必须先开灯,故较为不便。现在市场上也出现了一些电子钟,它以LED数码管来显示具体时间,与传统的以指针显示时间的方式不同,违背了人们传统的习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。针对以上存在的问题,我们设计了一款采用LED数码管显

16、示的电子时钟,有效克服了时钟存在的误差。二方案设计2.1 设计任务1 能实现显示日期的年、月、日和时间的时、分、秒,并具有时间的设置和加减功能。2 调整时间时按位闪烁功能。3 关闭显示的省电模式2.2 设计思路以AT89S51作为核心控制、LED显示模块、控制模块作为外围电路达到设计要求。2.3 设计方案系统由AT89S51、LED数码管、按键、发光二极管等部分构成,能实现日期及时间的调整、定时日期及时间的设定,输出等功能。系统的功能选择由“K1”和“K2”两个功能键来完成。短按K1可在“显示年月日”、“显示时分秒”,“省电模式”之间切换,在“年月日模式”和“时分秒”模式下可以通过长按“K1”

17、进入设定模式,在设定模式下,短按“K1”键来增加时间,短按“K2”键来减少时间,长按“K1”键可以改变调整年、月、日或时、分、秒。硬件框图如下所示:六位数码管74LS245单片机电源P0口字位晶振复位电路74LS245P3.0开关X2P2口字形P3.1我们的电子钟的主控芯片用的是AT89S52,主要通过编写程序来完成走时和调时功能。整个系统使用了两个开关,一个开关用来进行“年月日“,”时分秒“和”省电模式“之间的切换,进入调试模式和增加时间;另一个按钮用来减小时间。三 数字钟的硬件设计3.1 总电路图P0口控制六位数码管的字位,P2口控制LED数码管的字形,P3.0、P3.1分别与K1、K2相

18、连作为功能设置来使用。3.2 AT89S51概述及其特点AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存

19、取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。主要特性有:Ø AT89S51 CPU与MCS-51 兼容Ø 4K字节可编程FL

20、ASH存储器(寿命:1000写/擦循环)Ø 全静态工作:0Hz-24KHzØ 三级程序存储器保密锁定Ø 128*8位内部RAMØ 32条可编程I/O线Ø 两个16位定时器/计数器Ø 6个中断源Ø 可编程串行通道Ø 低功耗的闲置和掉电模式Ø 片内振荡器和时钟电路管脚说明:图3 AT89S51引脚图VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八

21、位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。

22、P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。AT89S51 的新功能有: (1) 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!(2) ISP

23、在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。 (3) 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。 (4) 具有双工UART串行通道;内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路;双数据指示器;电源关闭标识。 (5) 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。 (6) 兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-5

24、1兼容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。3.3 T0定时器/计数器MCS-51内有两个独立的可编程定时器/计数器,称为T0和T1.他们本质上是可预置初值的加1计数器,既可用于计数,也可用来定时。当对从单片机引脚上输入的外部脉冲信号计数时,它是计数器;当对有固定时间间隔的内部机器周期进行计数时,它是定时器。TO定时特性功能寄存器由TL0(低8位)和TH0(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式;TCON则用于控制定时器T0和T1的启动和停止

25、计数,同时管理定时器TO和T1的溢出标志等。程序开始时需对TL0和TH0进行预设初值,用指令改变TMOD和TCON的内容,以定义它们的工作方式和控制T0和T1的计数,这样定时器/计数器就会从下一条指令的第一个机器周期开始按设定的方式自动进行工作。定时器计数器T0工作方式1的电路逻辑结构如图4所示。图4 定时器/计数器T0工作方式1的逻辑结构时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式;另一种为外部时钟方式。本文用的是内部时钟方

26、式。电路设计如图5所示。(7)图5 单片机时钟AT89S51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。在本系统时钟模块的设计中所选用的12 MHz的石英振荡器,由于6 MHz晶体振荡的每个定时周期为2 s,可得到2s的精度,为让设计准确本设计中使用1次定时50 ms,经过20次T0定时中断得到1 s,由此设置就可以使单片机在运行时能够有条不紊。3.4 数码管动态扫描单片机应用系统中使用较多的是7段LED数码管,本系统所用的AT89S51板中的数码管

27、是六位七段共阴极数码管。3.4.1 LED数码管的驱动方式:数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。(1)静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复

28、杂性。(2)动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位

29、数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。本数字钟系统将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到地线+5V上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。 (1)共阴极数码管 (2)共阳极数码管 图7 共阴极和共阳极数码管LED连接图图8 8位七段数码管字型代码3.4.2 LE

30、D数码管的显示控制在本设计中采用的是4位数码管动态扫描显示。它将所有数码管的8个段线相应地并接在一起,并接到AT89S51的P0口,有P2口控制字形,而各位数码管的共阴极由AT89S51的P0口控制P2.0-P2.5来实现8位数码管的位输出控制。这样,对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出地字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出地控制信号,用来选择第几位数码管工作,称为位码。由于各位数码管的段线并联,段码的输出对各位数码管来说是相同的。因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,4位数码管将显示相同的字符,若要各位数码管能够显示

31、出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其他各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其他各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间

32、隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。数码管是由7个条形的LED和下方一个圆形的LED组成,这样一共有8个段线,恰好适用于8位的并行系统。共阴极数码管的公共阴极接地,当各段阳极上的电平为“1”时,该段点亮,电平为“0”时,该段熄灭; 3.4.3本设计LED数码显示过程介绍首先,S51芯片程序运行时,按下K1功能键,通过对P0及P2口扫描,4位数码管即显示当前的日期:年月日( 例如“130315”),日为时到24

33、加1,当前日从1到29/30/31/32循环显示,月为日到/29/30/31/32时加1,当前月从1到12循环显示,年为月到13加1,当前年加1显示;按下K1功能键不超过1s,通过对P0及P2口扫描,4位数码管即显示当前的时间:时分秒(例如142018)秒为加1显示。分为秒到60后加1,当前分从00到59循环显示,时为分到60后加1,当前时从0到23循环显示。这些都是从基本的经过20次T0定时中断(一次定时50ms)扫描得到1 s,然后1秒计数60次即为1分,1分计数60此即为1时,1时计数24次即为1日,以此在数码管上输出显示。当长按K1超过1秒时,即进入调整当前数码管显示的日期和时间。当消

34、除键盘抖动后所扫描到准确的按键脉冲后,数码管显示进入调整日期和时间的状态。此时若短按K1可增加年,短按K2可减小年,长按K2可连续减小年,若长按K1超过0.5秒,则可以对月进行调整,以此类推可对日进行调整。当前可调整的是哪两位,这两位就会不断地闪烁,而其他的一直在显示。调整完日后长按K1超过0.5秒即可退出调整时间模式。由于每次调整日期的时候会关闭定时器T0,所以此时应按下K1不超过1秒切换到时间显示,用上述方法对时间进行修正即可准确运行。若在时间显示模式下按下K1不超过1秒,可切换到省电模式,定时器不会关闭,走时正常而数码管关闭不显示。省电模式下按下K1即可唤醒数码管并进入日期显示模式。3.

35、5 按键扫描电路3.5.1 按键扫描原理 当程序完成初始化后,电子钟的程序会在不同的程序段对P3.0和P3.1两个输入口进行循环的扫描,如果按键没有按下,P3.0和P3.1会保持高电平,如果开关按下,则该口电平会被拉低。当检测到电平的变化时,程序会进行判断来选择相应的分支结构继续执行。3.5.2 按键工作方式按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的长短常与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键

36、的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生相互影响。对按键的判断与处理模块是电子钟程序设计的核心,主要是接收“按键扫描模块”传递过来的值,对不同的按键能够结合当前的状态做出不同的处理与反馈,并且对各个状态从属分类。3.5.3按键定义本电子钟为了节约资源采用了两个按键进行控制,分别是K1和K2键。在日期显示模式下:短按K1可切换到时间显示模式,长按K1可切换到日期调整模式。在日期调整模式下:短按K1可增加日期,长按K1可切换调整年或月或日最后退出日期调整模式。短按K2可减小日期,长按K2可连续减

37、小时间。在时间显示模式下:短按K1可切换到省电模式,长按K1可切换到时间调整模式。在时间调整模式下:短按K1可增加时间,长按K1可以切换调整时或分或秒最后退出时间调整模式。短按K2可减小时间,长按K2可连续减小时间。在省电模式下:按下K1可切换到日期显示模式。3.6 复位电路AT89S51单片机的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。上电复位:上电复位电路时一种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一

38、个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。图11 复位电路如上图所示,上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。3.7 电源电路电源使用实验室提供的5V电源或由电脑USB口或手机充电器引出的5V直流电源。四 数字钟的软件设计4.1 系统软件设计内容本系统的主程序主要完成在定时器的初始化和日期、时间、

39、省电三种模式之间的切换工作。而年月日,时分秒的设定则是在两个不同的子程序中完成的。而时间的顺序加减则是在T0中断程序中完成的。T1中断程序的作用主要是控制当前调整位的闪烁标志位的置位和复位。除此之外还有一些子程序,如:加1子程序(可对时分秒年月日存储单元的值增加1),清零程序(对年、时、分、秒存储单元清零),置一程序(对月、日存储单元置1),两种显示模式和两种设置模式所对应的四个显示程序,闰年二月及大小月判断程序,延时程序。4.1.1 数据存储单元功能的划分05H调整模式的标志67H68H年单元的高低位20H调整5、4号位的标志6AH6BH日临时存储单元21H调整3、2号位的标志6CH6DH月

40、临时存储单元22H调整1、0号位的标志6EH-6FH年临时存储单元23H5、4号位是否显示的标志70H71H秒单元的高低位24H3、2号位是否显示的标志72H73H分单元的高低位25H1、0号位是否显示的标志74H75H时单元的高低位26H年月日高位为0的标志76H77H分临时存储单元28H延时循环次数178H79H时临时存储单元29H延时循环次数2R1显示数据首地址50H2月日期最大值R2闪动延时循环次数52H是否为闰年的标志R3日期的十六进制的十进制显示51H大小月的标志位R4中断T0循环20次为1s53H-54H年份的高低两位R5控制字位初值58H-59H日最大值的高低位R7显示单元清零

41、循环次数63H64H日单元的高低位其他65H66H月单元的高低位4.1.2 计时功能的实现与中断服务程序时间的运行依靠定时T0中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满50 毫秒后,对定时器初值校正后重装定时。中断20次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经查表译码后,通过扫描程序送LED 中逐位扫描显示出来,实现时钟计时功能。时间调整时的闪烁是靠T1中断子程序来完成的,当30ms后显示标志置1,30ms后置0,以此来完成显示

42、。4.2 数字钟流程图4.2.1主程序流程图:开始初始化时钟各存储单元清零定时器、中断初始化调用日期显示子程序K1是否按下YYN跳转到日期调整程序调用时间显示程序YK2是否按下YN跳转到时间调整程序跳转到关闭显示子程序K2是否按下关闭显示N4.2.2T0中断子程序流程图:T0中断程序开始保护现场并关中断中断响应时间修正是否到60s秒清零,送分钟单元地址,调用加一子程序是否到1s是否到60分分清零,送小时单元地址,调用加一子程序月是否到最大值月置1,送年单元地址,调用加一子程序送秒单元地址,调用加一子程序YYYYYN年是否到最大值年清零将数据从临时单元转移到各个单元YY中断返回是否到24h小时清

43、零,送日单元地址,调用加一子程序NNNNNN日是否到最大值日置1,送月单元地址,调用加一子程序日是否到最大值日置1,送月单元地址,调用加一子程序4.2.3 T0加1子程序流程图:加1子程序开始低位加1后与高位合成BCD码存入R3将R3中的内容按高四位低四位分别存储在高低位单元加1子程序返回4.2.4 闰年大小月判断子程序流程图:闰年大小月判断程序开始NNNN是2月吗?Y是大月吗?是闰年吗?YYY当前月最大值为30当前月最大值为31当前月最大值为28当前月最大值为29闰年大小月判断程序返回4.2.5 显示子程序流程图:查字位输出字位、字形初始化显示程序开始到第六位了吗?字位左移,字形指针加1查字

44、形输出显示程序返回4.2.6 闪烁显示子程序流程图:闪烁显示开始字位、字形初始化N字形指向时的高位YLED12标志为1N字形指向分的高位YYYYYNLED34标志为1吗?吗?NNN字位左移两位字形指针加2字形指向秒的高位LED56标志为1吗?吗?N查字形输出字位左移,字形指针加1到第六位了吗?Y闪烁显示返回4.2.7 T1中断服务程序流程图:重装初值T1中断程序开始NNNNN到6次了?YYYYY闪烁标志为1吗调时标志为1LED12标志置1,其余LED标志位清零调分标志为1吗LED12标志置1,其余LED标志位清零调秒标志为1吗LED12标志置1,其余LED标志位清零·闪烁标志位取反L

45、ED标志位全部清零T1中断程序返回4.2.8时间调整程序流程图:时间调整程序开始跳回主程序中的调用关闭显示程序循环延时1sYY按键释放了NN所有闪烁标志清零,关T0开T2闪烁和调时标志置1K1按下?K2按下?按键释放了延时0.5s小时减1减到最小值了变为23时小时加1加到最大值了变为00时NNNNYYYYYYYK1按下?K2按下?按键释放了延时0.5s分钟减1减到最小值了变为59分分钟加1加到最大值了变为00分闪烁和调时标志置1NNNNK1按下?K2按下?按键释放了延时0.5s秒钟减1减到最小值了变为59秒秒钟加1加到最大值了变为00秒闪烁和调时标志置1NNNNYYYYY所有标志清零,关闭定时

46、器T1,开启定时器T0跳回主程序的调用时间显示循环注:日期调整程序流程图与时间调整程序流程图基本相同,在此省略,共五种模式构成以下循环:日期显示模式时间显示模式省电模式日期调整模式时间调整模式4.3 数字钟程序; 中断入口程序 ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入

47、口 LJMP INTT1 ;跳至INTT1执行; 主 程 序 ; START: MOV R0,#63H ;清63H-84H共21个内存单元 MOV R7,#15H ; R7的值为21,表示做21次清零 CLEARDISP: MOV R0,#00H ;把R0所指的单元清零 INC R0 ;R0指向下一个单元 DJNZ R7,CLEARDISP ;判断R7是否减到0,若没有继续执行清零循环 MOV 62H,#02H MOV 61H,#00H MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定

48、时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY2 ;调用日期显示子程序 JNB P3.0,DATA1 ;P3.0口为0时转入日期调整程序 SJMP START1 ;P3.0口为1时跳回START1 DATA1: LJMP REVERSE ;转到日期调整程序REVERSE START2: LCALL DISPLAY

49、 ;调用时间显示子程序 JNB P3.0,SETMM1 ;P3.0口为0时转入时间调整程序 SJMP START2 ;P3.0口为1时跳回START2 SETMM1:LJMP SETHH ;转到时间调整子程序; 1秒计时程序 ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值 MOV R0,#71H ;指向秒计时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论