基于单片机的作息时间控制系统设计.doc_第1页
基于单片机的作息时间控制系统设计.doc_第2页
基于单片机的作息时间控制系统设计.doc_第3页
基于单片机的作息时间控制系统设计.doc_第4页
基于单片机的作息时间控制系统设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

淮北师范大学2011届学士毕业论文 基于单片机的作息时间控制系统设计淮北师范大学论文分类号:TP2011届学士学位毕业论文基于单片机的作息时间系统设计学院、专业 物理与电子信息学院 电子信息工程 研 究 方 向 单板微型计算机 学 生 姓 名 赵宏鹏 学 号 20071342169 指导教师姓名 窦德召 指导教师职称 讲师 2011年4月30日基于单片机的作息时间控制系统的设计赵宏鹏淮北师范大学 物理与电子信息学院 235000 摘要 随着电子技术的迅速发展,特别是随大规模集成电路出现,人类生活发生了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户,对时间的观念越来越重视,因此,用单片机设计的时间作息系统受到了人们的欢迎。本文首先进行了方案论证,然后描述了系统硬件工作原理,并附以系统结构框图加以说明,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。本作息系统能够设定时间和闹钟,并能对时间进行修改。本系统以单片机的C语言进行软件设计,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。系统通过阴四联LED数码管显示数据,不需要扩张存储器,整体结构简单,系统设计简单功能稳定,具有实用价值。关键词 单片机;时钟;四联LED数码管 Design of the Electronic Perpetual Calendar based on MicrocontrollerZhao HongpengSchool of Physics and Electronics Information, Huaibei Normal University, 235000Abstract Along with the rapid development of electronic technology, especially with the appearance of large scale integrated circuits, peoples life took a radical change. The applications of microcomputer technology has entered the household, and electronic perpetual calendar made a lot of convenience to peoples lives.At first, the article conducted a demonstration program, and then it described the working principle of the system hardware, it also attached a lot of diagrams to illustrate the system. It described in detail the various modules of the program and implementation process. The design based on digital integrated circuits technology, with single chip technology as the core. This article was prepared by the dominant ideology of combining hardware and software when basing on hardware, so as to program the functional modules. This electronic perpetual calendar can display the time and calarm. This system is the C language SCM software to increase the readability and portability of the program, in order to facilitate the expansion and change, the software design is modular in structure, so that the logic of programming is more concise. System through the overcast quadruple LED digital display data, do not expand the memory, the overall structure is simple, simple system design is stable, has practical value.朗读显示对应的拉丁字符的拼音字典 Keywords: SCM; Electronic Clock; LED digital tube quadruple目 录1 引 言32 作息时间控制系统硬件的设计42.1 AT89S51、74LS164芯片4简介42.2 方案论证102.3总体设计112.4 电路设计122.5 电路仿真143 作息时间控制系统软件的设计163.1 设计原理163.2 程序结构类型163.3程序流程图184 作息时间控制系统的调试204.1 调试205 总 结21参考文献22附录23致谢32 1 引 言 随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。 由于电子技术的飞速发展,可编程器件的发展,单片机被广泛的应用于工业控制、智能设计、家用电器以及电子玩具等方方面面。单片机微型计算机简称单片机(Single Chip Microcomputer),是指在块芯片中集成有中央处理器、存储器(RAM和ROM)、基本I/O接口以及定时器/计数器等部件,并具有独立指令系统的智能器件,既在一块芯片上实现一台微型计算机的基本功能。它具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。如果是简单控制对象,只需利用单片机作为控制核心,不需另加外部设备就能完成。对于较复杂的系统,只需对单片机进行适当的扩展即可,十分方便。由单片机设计的作息时间控制系统从硬件到软件都易于实现,外围电路的晶体震荡器可以选择频率为12MHZ,这样计时的精确度可以提高到百万分之一秒。软件的出现相当大的程度节省了成本,软件和硬件的结合可以使得大规模投入生产1。 本系统所研究的作息时间控制系统是由MCS-51系列单片机89S51做主控部件,外围电路用12MHZ晶体震荡器、74LS164寄存器、复位电路、三个按键、四联LED数码管做显示时间的器件,不需要外扩展存储器,就能实现其功能。整体结构简单,系统实现简单、经济,系统功能稳定,可广泛用于学校、工厂、和机关的自动打铃、电视、路灯、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒。具有相当可靠的实用价值。 2 作息时间控制系统硬件的设计2.1 AT89S51、74LS164芯片简介2.1.2单片机AT89S51AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。其可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其引脚图如图1所示。图1 AT89S51引脚图(1)主要特性:与MCS-51 兼容;4K字节可编程闪烁存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路;(2)管脚说明: VCC:供电电压;GND:接地;P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在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口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(TTL)这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下所示:管脚备选功能;P3.0 RXD(串行输入口);P3.1 TXD(串行输出口);P3.2 /INT0(外部中断0);P3.3 /INT1(外部中断1);P3.4 T0(记时器0外部输入);P3.5 T1(记时器1外部输入);P3.6 /WR(外部数据存储器写选通);P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2:来自反向振荡器的输出;(3)振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(4)芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止1。2.1.2 74LS164寄存器74LS164简述:串行输入带锁存;时钟输入,串行输入带缓冲;异步清除;最高时钟频率可高达36Mhz;功耗:10Mw/bit;74系列工作温度:0C to 70C;Vcc最高电压:7V;输入最高电压:7V;最大输出驱动能力:高电平为0.4mA,低电平为8 mA7;74LS164为8位移位寄存器,其主要电特性的典型值如图2:型号fmPn74LS16436 MHz80mW图2 74LS164电特性典型值当清除端(CLEAR)为低电平时,输出端(QAQH)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。引出端符号:CLOCK 时钟输入端;CLEAR 同步清除输入端(低电平有效);A,B 串行数据输入端;QAQH 输出端;74LS164真值表如图3:图3 74LS164真值表74LS164内部功能图如图4:图4 74LS164内部功能图74LS164 逻辑符号及其引脚图如图5:图 5 逻辑符号(左)及引脚图(右)时序图如图6:CLOCKA1A2RESET图6 时序图2.2 方案论证2.2.1 静态显示方法为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。LED静态显示接口电路由笔段代码锁存器、笔段译码器(有软件译码的LED静态显示驱动电路不需要笔段译码器)等部分组成。静态显示驱动程序简单,CPU占用率低,但是每一个LED数码管需要一个锁存器来锁存每一显示位的笔段代码,硬件开销大,制作电路板就比较困难。图7便是一种并行共阴极LED数码管的静态显示电路。图7 LED静态显示电路2.2.2动态显示方法考虑到只有四位要显示的时钟,而且系统又没有太复杂的处理任务,也可以采用动态显示法。动态显示方法中各显示笔段引脚adp并联在一起,共用一个笔段代码锁存器(由于单片机I/O口,I/O扩展电路,如8255等都具有输出锁存功能,一般不要再添加笔段代码锁存器)、笔段译码器(采用软件译码时不需要笔段译码器)以及驱动器;为了控制LED数码管轮流工作,各显示位的公共端与位译码、锁存、驱动电路相连。这样可以依次输出每一显示为的笔段代码和位扫描码,轮流点亮各LED数码显示管,实现动态显示的目的。可见在动态显示方式中只要一个笔段代码锁存、驱动器和一个为扫描码锁存驱动器,硬件开销较小,经济且容易实现。图8是一个简单的并行共阳LED数码管动态扫描驱动电路8。图8 LED动态扫描电路2.3总体设计1.系统总体框图:单片机最小系统LED显示器接口电路按键控制模块 图9 系统总体设计框图本系统设计的原理是利用单片机AT89S51的定时器/计数器定时和计数的原理。通过四联共阴极数码显示管接收由74LS164传来的数据并将其转换为十进制BCD码显示,该设计将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间按键模块中的按钮SW1、SW2、SW3与AT89S51的P3口相连,对单片机起到控制作用,通过按键控制模块把外界响应送到单片机最小系统(AT89S51)中,然后通过接口电路把要显示的时间送到四联LED数码管中,四联LED数码管的字段由串入并出的移位寄存器74LS164控制,74LS164的串行数据输入端由P1.4控制,移位脉冲由P1.5提供;字位由P1.0P1.3控制,P1.0P1.3对应控制L4L1。SW1SW3用来进行时间校准及控制时间点的设定。LED1LED8用来模拟被控制对象。另有铃响信号输出(铃响信号驱动蜂鸣发声)。当需要对电路时间校对时,在任何时候均可通过按键控制模块按压SW2和SW3按钮进行时间校准。每按动一下SW2小时自动加1;持续按住不放,小时将自动连续加1。当LED数码管指示小时为24时,再加1将自动回零。每按动一下SW3分钟自动加1;持续按住不放,分钟将自动连续加1。当LED数码管指示分钟为59时,再按动SW3,分钟将变为00。当需要设定控制时间点时,应首先按按键控制模块中的SW1按钮,然后再按动SW2和SW3,使在LED数码管上指示时间与要求时间一致,再按SW1按钮进入“控制码”设置状态,按SW3进行对象切换,最后按SW2保存时间点;也可以用SW1取消本次设定。如此可设定多个控制时间点。2.4 电路设计硬件设计是整个系统的基础,要考虑的方面很多,主要考虑以下几个因素7:(1) 系统稳定度;(2) 器件的通用性或易选购性;(3) 软件编程的易实现性;(4) 系统其它功能及性能指标;系统电路设计思想是按照图10进行的,有四位LED数码管显示当前的小时及分钟,通过外继电器、光光电耦合器或固体继电器还可实现多点、多路电气设备的控制。系统可以精确到十分之一秒,也可以更精确,这需要通过软件设定。电路采用单片机AT89S51,显示器采用四联共阴极LED数码显示器。其中字段由串入并出的移位寄存器74LS164控制,74LS164的串行数据输入端由P1.4控制,移位脉冲由P1.5提供;字位由P1.0到P1.3控制,P1.0到P1.3对应控制L4到L1。SW1、SW2、SW3用来进行时间校准及控制时间点的设定。LED1到LED8用来模被控对象。另有铃响信号输出(铃响信号驱动蜂鸣器发声)。 列驱动四位LED数码显示器AT89S51 P1.4P1.5 单片机 控 制 器 P1.0P1.3 图10 电路设计框架系统的硬件电路如图11所示:图11 系统硬件电路 2.5 电路仿真 本设计利用软件keil和proteus进行实验现象的仿真3.在keil环境下进行编写程序(程序见附录),然后进行程序调试,调试无误后,把此程序生成HEX文件输出。再在proteus环境下画好图12,然后把输出的HEX文件下载到电路的AT89S51芯片中,点击运行,即可进行电路模拟仿真。仿真图如图12:图12 电路仿真图(1)时间校对: 在任何时候均可通过按压SW2和SW3按钮进行时间校准。每按动一下SW2,小时自动加1;持续按动不放,小时将自动连续加1。当小时指示为24时,再加1将自动回零。每按动一下SW3,分钟自动加1;持续按住SW3按钮不放,分钟将自动连续加1。当分钟指示为59时,再按动SW3,分钟将变为00。(2)控制时间设定: 需要设定控制时间点时,应首先按SW1按钮,然后再按动SW2和SW3,使指示时间与要求时间一致,再按SW1按钮进入“控制对象”设置状态,按SW3进行对象切换,最后按SW2保存时间点;也可以按SW1取消本次设定。如此可设定多个控制时间点。 在正常状态下按下SW1不放,然后再按SW3按钮可删除所有的控制时间点。3 作息时间控制系统软件的设计硬件平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于编程涉及到数值运算不太多,易于操作,用我们平时常用的汇编语言编程便可容易实现。3.1 设计原理对于时钟功能,需要在数码管上显示当前的时间的小时及分钟,因此,可以在内部存储空间分别定义它们的显示缓存空间,来存放小时、分钟的BCD码,各2个字节6。由于时钟是不能停止的,因此需要采用内部定时器自动计时,并使用定时器中断处理程序来定时进行时间数值的刷新。51单片机的2个定时器都具有16位定时器的工作模式。当晶振为12MHz时,16位定时器的最大定时值为65.536mS;要达到1秒钟,可以采用两种方法:采用一个定时器定时与软件计数相结合的方法;或者采用两个定时器级联的方法5。由于作息时间控制系统在计时功能时也需要用到1个定时器,因此,我们采用第一个方法,只使用1个定时器,例如使用T0。为了达到较为准确的计时,使T0的溢出时间为50ms,使用一个字节作为软件计数器MS,计数值为20。定时器的中断处理程序对MS进行减1操作,当MS为0时,1秒到达,此时更新存放小时、分钟的显示缓存区。3.2 程序结构类型本系统用到了三种最主要的程序设计结构顺序结构选择分支结构循环结。顺序结构程序是一种最简单程序,在顺序结构程序中指令按照先后顺序一条一条的执行2。如图13所示:A B图13 串行结构程序循环结构程序有两种形式,即do_while形式和do_until形式,结构分别如图14所示: 循环初始状态循环初始状态 循环体为真时 循环体 Y 循环控制条件 N N (1) DO-WHILE结构 (2) DO-UNTIL结构图14 循环结构编写循环程序要注意设置循环的初始状态、循环体和循环控制部分。循环可以有多重结构。多重循环程序设计的基本方法和单重循环程序设计是一致的,应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。另外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置4。分支程序结构也可以有两种形式,如图15所示: 判断条件判断条件 Y NY BA . (a) IF-THEN-ELSE (b) CASE图15 分支结构程序的分支一般用条件转移指令来产生,利用转移指令不影响条件码的特性,连续地使用条件转移指令使程序产生了多个不同的分支,而对于数组中的每一个数,它只能是多个分支中的某一个。3.3程序流程图主程序: 子程序1(拆分):设置显示时间初始值12:00设置堆栈区在70H7FHT0中断及工作方式50ms定时参数启动定时器调用拆分子程序调用显示子程序时间校对子程序控制时间设定子程序判断定时间是否到compare子程序无条件转移子程序取分个位指向分个位显示缓冲单元114H 取分十位指向分十位显示缓冲单元取时个位指向时个位显示缓冲单元取时十位返回指向时十位显示缓冲单元开始子程序2(显示): 子程序3(控制时间设定):送字形表首地址关显示器器传送分个位字形到74L164R0加1,显示区下一位送显示缓冲区首地址(R0)及字位码(R2) 修改字位码修改后的字位码送入AACC.4=1结 束 查字形表取待显示字点亮对应位码显示管开始子程序显示CLR-SW1=0清除所有数据SW3=0显示CLR-SW2=0显示CLR-SW1=0显示06:00按SW2=0调时,SW2=0调分显示所调时间显示00SW1=0SW3=0调第几闹铃SW2=0保存设置返回 4 作息时间控制系统的调试4.1 调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试,包括对:键盘操作功能调试,声音输出功能调试,指示灯功能调试等。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后整体测试,使系统的所有功能得以实现9。4.1.1硬件调试电路安装完成后,首先进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分级调试,根据电路功能逐级进行:键盘功能调试;声音输出功能调试;指示灯功能调试;4.1.2软件调试本系统的软件系统不是很大,全部用汇编语言来编写,选用一般的Keil仿真器对汇编语言进行调试。除了语法差错外,当确认程序没问题时,通过直接下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。主要是液晶显示屏实时显示功能的调试。4.1.3软硬联调系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。5 总 结本系统主要由MCS-51系列单片机AT89S51做主控部件,外围电路用12MHZ晶体震荡器、74LS164寄存器、复位电路、三个按键、四位LED数码管做显示时间的器件。本系统具有基本时钟(显示当前时间的小时及分钟)功能,通过外扩继电器、光电耦合器或固体继电器还可实现多点、多路电气设备的控制。该作息时间控制系统可广泛用于学校、工厂和机关的自动打铃、电视、路灯、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒。 本次设计得到预定效果,设计成的作息时间控制系统按照原理运行,在计时上有一定误差,通过反复试验、调试,修改软硬件把误差控制在小于0.3%的范围内。参考文献1 刘玉宾;朱焕立,单片机原理及接口技术M,北京:机械工业出版社,20042 徐建民;王东,邵艳华.汇编语言程序设计M,电子工业出版社,20053 严天峰,单片机应用系统设计与仿真调试M,北京:电子工业出版社,20054 苏帆等,汇编语言程序设计M,武汉:华中科技大学出版社,20055 杨洪升;朱九彦,定时器时间常数的外部输入及应用J,承德石油高等专科学校学报, 2006年01期6 祁树胜,连续时间系统的时间最佳控制J,西安航空技术高等专科学校学报; 2001年03期7 金仁贵,单片机应用系统的开发方法 电脑知识与技术J,学术交流,2006 128 李秀忠,PLC控制的作息时间自动控制系统设计J,安徽电子信息职业技术学院学报; 2004年02期9 葛素娟;朱祥贤,单片机应用系统的抗干扰技术J,重庆科技学院学报:自然科学版,2006年04期附录汇编语言程序: ;作息时间控制系统;-头文件-OUT BIT P3.7F1 BIT 1BHSDATA BIT P1.4;定义74LS164串行移位数据端SCLK BIT P1.5;定义74LS164串行移位时钟端DISEQUP1 ;定义字形口ControlEQUP0 ;控制输出SW1EQUP3.2SW2EQUP3.3SW3EQUP3.4MS EQU 10H ;定义50ms计数器SecsEQU 11H;定义秒计数器Minute EQU 12H;定义分钟计数器HourEQU13H;定义时计数器T_MinuteEQU18H;定义定时分单元T_HourEQU19H ;定义定时时单元TControlEQU1AH;定义控制码单元;-ORG 0000HLJMPMain;-ORG000BHLJMPT0INT;-Main:MOVSP, #70H;将栈区设置在70H7FHMOVIE, #10000010B ;允许T0中断MOVTMOD, #01H ;T0定时方式1MOVMS, #20 ;50ms单元初值,使2050ms=1sMOVSecs, #0MOVMinute, #0MOVHour, #12H ;开机显示12:00MOVT_Minute, #0MOVT_Hour, #6MOVB, #20HCLRF0CLRF1MOVR7, #80MOVTL0, #00H ;50ms定时参数MOVTH0, #4CH SETBTR0 ;启动定时器LOOP:MOVR1, #MinuteLCALLSplit;调用拆分子程序NOPLCALLDISP;调用显示子程序NOPLCALLVerifyNOPLCALLSetupMOVA, SecsCJNEA, #5, $+3 ;定时精度控制在5秒以内JNCLOOPLCALL CompareSJMPLOOP;-T0INT:MOVTL0, #00HMOVTH0, #4CHPUSHACCDJNZMS, T0ExitMOVMS, #20MOVA, SecsINCAMOVSecs, ACJNEA, #60, $+3;60后不能加H,表示该数为十进制数JCT0Exit ;若秒小于60,则直接返回MOVSecs, #0 ;若秒大于或等于60,则回零MOVA, MinuteADDA, #1DAA ;对分进行十进制调整,以便送显示器显示MOVMinute, ACJNEA, #60H, $+3 ;60后一定要加H,表示该数为BCD码JCT0Exit ;若分小于60,则直接返回MOVMinute, #0 ;若分大于或等于60,则回零MOVA, HourADDA, #1MOVHour, ACJNEA, #24H, $+3JCT0ExitMOVHour, #0T0Exit:POPACCRETI;-Compare:MOVR0, #20H;定时数据存储区NextTime:LCALLDISPMOVA, R0CJNEA, Hour, CLP1INCR0MOVA, R0CJNEA, Minute, CLP2INCR0MOVA, R0CPLAMOVControl, Alcall SONGERINCR0RET;-CLP1:INCR0;指向分CLP2:INCR0;指向控制码MOVA, R0JNZCLP3RET;-CLP3:INCR0;指向下一个时间的开始CJNER0, #6FH, $+3JCNextTimeRET;-SONGER:PUSH PSWPUSH ACCPUSH 05HPUSH 06HSONGER1:MOV R1,#MinuteLCALL SplitLCALL DISPDJNZ R6,SONGER1MOV R6,#10CPL OUTDJNZ R5,SONGER1MOV R5,#10LCALL DISPMOV A,#SecsJZ SONGER1MOV Control,#0FFHPOP 06HPOP 05HPOP ACCPOP PSWRET Verify:JBSW3, VLP3;判断是否需要校分CLREACLRTR0 ;校时期间,暂时关闭定时器VLP1:MOVA, Minute ;SW3闭合时,则对分钟加1ADDA, #1DAAMOVMinute, ACJNEA, #60H, VLP2MOVMinute, #0VLP2:MOVR6, #40MOVR1, #MinuteLCALLSplit LCALLDISPDJNZR6, $-3JNBSW3, VLP1;若SW3未释放,则继续对分钟加1MOVSecs, #0;校时期间,将秒清零SETBEASETBTR0;恢复计数RET;-VLP3:JBSW2, VExit;判断是否需要校时CLREACLRTR0 ;校时期间,暂时关闭定时器VLP4:MOVA, Hour;SW3闭合时,则对小时加1ADDA, #1DAAMOVHour, ACJNEA, #24H, VLP5MOVHour, #0VLP5:MOVR6, #40MOVR1, #MinuteLCALLSplit LCALLDISPDJNZR6, $-3JNBSW2, VLP4;若SW3未释放,则继续对小时加1MOVSecs, #0;校时期间,将秒清零SETBEASETBTR0;恢复计数VExit:RET;-Setup:JNBSW1, SLP0;判断SW1是否闭合RETSLP0:MOVR6, #20;延时80ms(用显示程序)MOV14H, #10HMOV15H, #0AHMOV16H, #11HMOV17H, #0CHLCALLDISPDJNZR6, $-3JNBSW1, SLP0SLP1:MOVR6, #20;延时80ms(用显示程序)MOV14H, #10HMOV15H, #0AHMOV16H, #11HMOV17H, #0CHLCALLDISPDJNZR6, $-3JBSW3, SLP2LCALLClear ;按下SW1SW3则清除所有数据MOVR6, #50 ;延时200ms(用显示程序)MOV14H, #10HMOV15H, #0AHMOV16H, #11HMOV17H, #0CHLCALLDISPDJNZR6, $-3RET;-SLP2:JBSW2, SLP1 SETBF0SETBF1SLP21:MOVR6, #50;延时200ms(用显示程序)MOV14H, #10HMOV15H, #0AHMOV16H, #11HMOV17H, #0CHLCALLDISPDJNZR6, $-3JBSW

温馨提示

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

评论

0/150

提交评论