智能定时闹钟设计毕业设计_第1页
智能定时闹钟设计毕业设计_第2页
智能定时闹钟设计毕业设计_第3页
智能定时闹钟设计毕业设计_第4页
智能定时闹钟设计毕业设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、 智能定时闹钟设计学生:XXX 指导教师:XXX内容摘要:学习和稳固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过的根底知识能有更深入的理解,并融会贯穿。学会独立思考、独立工作,培养一定的自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题的能力,同时培养成良好的科学态度和严谨的设计习惯本设计采用单片机AT89C51作为核心元件,12MHZ晶振,由P0口输出所要显示的字形段码,由P2口输出字位信号。在其根底上扩展外围芯片与电路,附加时钟电路及LED电路。LED采用共阴极接法,低电平有效选中相应的LED。 单片机具有集成度高、功能强、通用性好、特别是它能耗低、价

2、格廉价、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。为了进一步的熟悉并掌握单片机的应用及开发,认真的做好此次课程设计非常必要。 一个单片机的定时闹钟系统离不开软件和硬件,硬件是软件的依托,软件是硬件的内核。设计硬件电路时应该先设计一个单片机的最小系统,它是单片机应用系统的设计根底,然后在此根底上添加外围器件,如显示器、按键等构成闹钟的硬件电路图。在设计应用程序时遵循模块化的设计方法,在明确了设计方向之后按照分成的几大模块分别画出流程图,然后根据流程图写出程序,在每个模块编写好之后分别调试、修改、完善。最后在

3、主程序下调用再次调试、修改。 通过这次设计让我更深入了解单片机根本电路、如何 HYPERLINK :/ wenluxuan /wlx/xslw/zdkz/24_1.html t _blank 控制和定时器和中断编程的根本方法,从而锻炼了我学习、设计和开发软、硬件的能力。关键词:定时闹钟系统 传感器技术 智能仪器 阴极接法Smarttimeralarm clockdesignAbstract: Learning and consolidation of the knowledge of microcomputer technology, electronic technology, sensor

4、 technology and intelligent instruments, and have learned the basics to have a more in-depth understanding and mastery. Learn to think independently, work independently, develop self-learning ability and independent analysis of capacity and enhancing the system the ability to use theoretical knowled

5、ge to solve practical problems, while cultivating a good scientific attitude and a rigorous design habits.This design uses AT89C51 microcontroller as the core component, 12MHZ crystal, shaped segment code to be displayed by the P0 port output signal from the P2 port output word. Expansion on the bas

6、is of the peripheral chips and circuits, additional clock circuit and the LED circuit. LED common cathode connection, active-low select the appropriate LED.Microcontrollers, high integration, functionality, versatility, its low energy consumption, cheap, high reliability, strong anti-interference ab

7、ility and ease of use and other unique advantages, so the microcontroller is now widely applied to household appliances, electrical and mechanical products, childrens toys, robots, office automation products and other fields. In order to further familiar with and master MCU application and developme

8、nt of very necessary to do the course design. A single-chip timing alarm system can not be separated from the software and hardware, hardware, software, relying on software is the core of the hardware. Should the design of hardware circuit design the minimum system of a single-chip microcomputer app

9、lication system design basis, and then on this basis, to add peripheral devices such as displays, buttons, etc. constitute the hardware schematic of the alarm clock. Follow a modular design approach in the design of the application.Keywords: timing alarm system sensor technology, intelligent instrum

10、ents and cathode connection 目 录 TOC o 1-4 h z u HYPERLINK 111.doc l _Toc326266864前言 PAGEREF _Toc326266864 h 1 HYPERLINK 111.doc l _Toc3262668651设计目的及意义 PAGEREF _Toc326266865 h 1 HYPERLINK 111.doc l _Toc3262668661.1设计任务 PAGEREF _Toc326266866 h 1 HYPERLINK 111.doc l _Toc3262668671.2设计系统的主要功能 PAGEREF _

11、Toc326266867 h 1HYPERLINK 111.doc l _Toc3262668682 系统总体方案及硬件设计 PAGEREF _Toc326266868 h 2 HYPERLINK 111.doc l _Toc3262668692.1系统总体方案 PAGEREF _Toc326266869 h 2 HYPERLINK 111.doc l _Toc3262668702.2系统设计总框图 PAGEREF _Toc326266870 h 2 HYPERLINK 111.doc l _Toc3262668712.3硬件设计 PAGEREF _Toc326266871 h 2 HYPER

12、LINK 111.doc l _Toc3262668722.3.1单片机最小系统设计 PAGEREF _Toc326266872 h 2 HYPERLINK 111.doc l _Toc3262668732.3.2报警模块设计 PAGEREF _Toc326266873 h 6 HYPERLINK 111.doc l _Toc3262668742.3.3显示模块设计 PAGEREF _Toc326266874 h 7 HYPERLINK 111.doc l _Toc3262668752.3.4调时模块设计 PAGEREF _Toc326266875 h 9HYPERLINK 111.doc l

13、 _Toc3262668763 软件设计 PAGEREF _Toc326266876 h 10 HYPERLINK 111.doc l _Toc3262668773.1主程序流程图 PAGEREF _Toc326266877 h 10 HYPERLINK 111.doc l _Toc3262668783.2定时中断子程序流程图 PAGEREF _Toc326266878 h 11 HYPERLINK 111.doc l _Toc3262668793.3程序设计 PAGEREF _Toc326266879 h 12HYPERLINK 111.doc l _Toc3262668804 系统的仿真与

14、调试 PAGEREF _Toc326266880 h 13 HYPERLINK 111.doc l _Toc3262668814.1 proteus软件仿真 PAGEREF _Toc326266881 h 13 HYPERLINK 111.doc l _Toc3262668824.2 系统的调试 PAGEREF _Toc326266882 h 135 HYPERLINK 111.doc l _Toc326266883结束语 PAGEREF _Toc326266883 h 14HYPERLINK 111.doc l _Toc326266884附录1:源程序代码 PAGEREF _Toc32626

15、6884 h 14HYPERLINK 111.doc l _Toc326266885附录2:系统原理图 PAGEREF _Toc326266885 h 25HYPERLINK 111.doc l _Toc326266886参考文献 PAGEREF _Toc326266886 h 26基于智能定时闹钟系统设计前言学习和稳固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过的根底知识能有更深入的理解,并融会贯穿。学会独立思考、独立工作,培养一定的自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题的能力,同时培养成良好的科学态度和严谨的设计习惯本设计采用单片机AT89

16、C51作为核心元件,12MHZ晶振,由P0口输出所要显示的字形段码,由P2口输出字位信号。在其根底上扩展外围芯片与电路,附加时钟电路及LED电路。1 设计目的及意义学习和稳固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过的根底知识能有更深入的理解,并融会贯穿。学会独立思考、独立工作,培养一定的自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题的能力,同时培养成良好的科学态度和严谨的设计习惯。1.1 设计任务完成所选题目的分析与设计,到达技术性能要求。提交正式课程设计总结报告一份。本文设计的定时闹钟的核心模块采用AT89C51芯片,时、分、秒用6位LED数码管

17、显示。在电路中通过四个按键S1、S2、S3和S4来进行定时、调时和复位,定时时间到通过蜂鸣器发出报警声。1.2 设计系统的主要功能 能显示 时时分分秒秒。 能够设置定时时间、 修改定时时间。 定时时间到能发出报警 单片机的时钟产生方法有两种: 内部时钟方式和外部时钟方式。 本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响修改时间和定时用手动按键控制,报警声通过蜂鸣器发出。这样可以使得硬件电路设计较为简单,且软件设计

18、也易于实现,并能够降低本钱其集成度高、功能强、能耗低、通用性好、价格廉价。该器件采用ATMEL高密度非易失存储器制造技术制造。2 系统总体方案及硬件设计2.1 系统总体方案 由于LED显示器相对于其它显示器如LCD显示器来说其价格要廉价许多,而且亮度更高,耐温范围较广,所以采用6位数码管来显示“时时分分秒秒。 时间的定时用单片机内部时钟电路,在一定的时间内能使其误差较小,如经过一年其误差才仅有数秒。修改时间和定时用手动按键控制,报警声通过蜂鸣器发出。这样可以使得硬件电路设计较为简单,且软件设计也易于实现,并能够降低本钱。 核心模块采用AT89C51单片机,功能强、通用性好、价格廉价,且易于控制

19、。加上外围器件数码管、排阻、按键和蜂鸣器和应用程序,便构成了相应的应用系统。2.2 系统设计总框图数码管显示如图2.2-1 所示时钟电路和复位电路 单片机AT89C51键盘按钮蜂鸣器图2.2-1 定时闹钟系统设计总框图2.3 硬件设计 单片机最小系统设计芯片:AT89C51 因为51单片机是各单片机中最为典型和最有代表性的一种,在20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用广泛,开展很快,推广率和市场利润率较高,且适合于本设计系统中CPU内存和I/O等资源的要求,所以本设计采用AT89C51作为核心控制芯片。AT89C51是一种带4KB闪烁可编程可擦除只读存储器F

20、PEROMFlash Programmable and Erasable Read Only Memory的单片机,可稳定地工作于5V的电源下。其集成度高、功能强、能耗低、通用性好、价格廉价。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。其组合而成的配件产品在日常生活的使用过程中非常方便、简单且实用,深受着广阔消费者的喜爱。AT89C51管脚说明如下: Vic:供电电压端。 God:接地端。P0口:P0口为三态双向口,能带8个TTL电路。有两种

21、功能:第一功能是一个8位漏极开路型的双向I/O口,这时P0口可看作数据总线;第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P0口内部无上拉电阻,作为I/O口使用时,必须外接上拉电阻。P1口:P1口是一个内部带上拉电阻的8位准双向I/O口使用前有一个准备动作,负载能力为4个TTL电路。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部带上拉电阻的8位准双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。P2

22、口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口是一个内部带上拉电阻的准双向I/O口,可接收输出4个TTL门电流。同时为闪烁编程和编程校验接收一些控制信号。P3口的8个引脚都有各自的第二功能,可作为AT89C51的一些特殊功能口,如表-1 所示。 表-1 P3口第二功能P3口引脚第二功能注释串行输入口串行输出口外部中断0输入外部中断1输入定时/计时器0外部输入定时/计时器1外部输入外部数据存储器写信号外部数据存储器读信号RSTVPP:RST为复位信号输入端。当振荡器复位器件时,要保持R

23、ST脚两个机器周期(24个时钟周期)以上的高电平时间。VAP为内部RAM的备用电源输入端。当主电源一旦发生断电或电压降到一定值时,可通过VCC为单片机内部RAM提供电源,以保护片内RAM中的信息不丧失,使VCC上电后能继续正常运行。 ALOE/PROG:ALE为地址锁存允许信号,当访问外部存储器时,ALE用来锁存P0口送出的低8位地址信号。在FLSH编程期间,PROG用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SF

24、R的8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 PSEN:外部程序存储器的读选通信号。在由外部程序存储器取指期间,PSEN产生负脉冲做为外部ROM的选通信号,每个机器周期两次PSEN有效。但在访问外部数据存储器时,不会产生有效的PSEN信号。PSEN可驱动8个LETTEN门输入端。 Earp:访问外部程序存储器控制信号。当EA保持低电平时,那么在此期间只访问外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RST。当EA端保持高电平时,CPU访

25、问程序存储器有两种情况:一是访问的地址空间在0到4KB范围内,CUP访问片内程序存储器;二是访问的地址超出4KB时,CPU将自动执行外部程序存储器的程序。在PLSAH编程期间,此引脚也用于施加12V编程电源App.。XTAL1:晶体振荡电路的反向器输入端。 XTAL2:晶体振荡电路的反向器输出端。DIP封装的AT89C51管脚排列如图-1 所示。图2-1 AT89C51的管脚排列 时钟电路单片机的时钟产生方法有两种: 内部时钟方式和外部时钟方式。 本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz12MHz之间。电

26、容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF100pF之间取值。AT98C51单片机的时钟电路如图2.3.1-2所示。图2.3.1-2 AT98C51单片机的时钟电路复位电路复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位。其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的外部复位电路有上电自动复位和按键手动复位两种。本系统中AT89C51单片机采用上电加按键手动复位电路,如图-3 所示。图-3 AT89C51单片机的复位电路 报警模块设计为实现设计的定时闹钟系统在定时时间到时发出报

27、警声,采用蜂鸣器作为报警发声装置。在本设计中有多种报警声可供选择,可选择报警时播放音乐当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符当使能为低时,输出将锁存在已建立的数据电平上。报警电路设计如图-1 所示。图-1 定时闹钟系统的报警电路 显示模块设计本系统中采用6位LED数码管显示时、分、秒,用两片74HC573分别对段码和位码进行锁存,实现动态扫描方式显示,节省单片机I/O口资源,简化硬件电路。 LED显示器单片机中通常使用8段LE

28、D,LED是发光二极管显示器的缩写。LED显示器由于结构简单,价格廉价,体积小,亮度高,电压低,耐温范围广,可靠性高,寿命长,响应速度快,颜色鲜艳,配置灵活,与单片机接口方便而得到广泛应用。LED显示器是由假设干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。LED显示器有多种形式,如:“米字型显示器,点阵显示器和七段数码显示器等。在本系统中采用八段数码显示器。因为共阴极的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故本系统中的6位LED数码管均用共阴极的数码管。 74HC57

29、3芯片特点:三态总线驱动输出,置数全并行存取,缓冲控制输入,使能输入有改善抗扰度的滞后作用。 原理说明:74HC573的八个锁存器都是透明的D型锁存器,当使能G为高时,Q输出将随数据D输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种 HYPERLINK :/ 838dz / 电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲存放器,I/O 通道,双向总线驱动器和工作存放器。74HC573 HYPERLINK :/ 838dz t _blank 引脚

30、说明:OE:3态输出使能输入低电平有效。D0 - D7:数据输入端。Q0 - Q7:3态锁存输出。LE:锁存使能输入。GND:接地。VCC:电源电压。74HC573的 HYPERLINK :/ 838dz t _blank 引脚图、逻辑图及真值表如下:图-1 74HC573 HYPERLINK :/ 838dz t _blank 引脚图 HYPERLINK :/ 838dz /d/file/ad/PCB/2021-06-19/0197b5a364b0b9e801d548218a4fead6.jpg t _blank 图-2 74HC573逻辑图表-1 74HC573真值表OELeDdHXXZL

31、LXNo changeLHLLLHHh显示电路将两片74HC573的数据输入端D0 - D7都分别与AT89C51单片机的P0.0 和RESPACK-8排阻的 2 - 9 引脚连接,两片74HC573的锁存使能端L分别接至和,74HC573的输出端接至数码管,如图-3 所示。图-3 定时闹钟系统的显示电路 调时模块设计本系统要进行时间的调整和定时,因此用4个手动按键对其进行控制。键盘电路设计如图9所示。当按下时间调整键S1时,系统可进行时间调整的小时设置;当再按下S1时,可进行时间调整的分钟设置;再按下S1时,可进行时间调整的秒钟设置。3 软件设计3.1 主程序流程图开始初始化显示时间NS1按

32、下?YNS2按下?调整时间NNYS1按下?S3按下?YY选择报警声加时调整NNS3按下?S4按下?YY定时加时减时调整NS4按下?Y定时减时图3.1-1 主程序流程图3.2 定时中断子程序流程图开始N1秒到?Y秒变量加1N60秒到?Y分变量加1,秒变量清零N60分到?Y时变量加1,分变量清零N24时到?Y时变量清零蜂鸣器响Y定时到?N结 束图3.2-1 定时中断子程序流程图3.3 程序设计 根据程序流程图采用汇编语言进行程序设计,其中主程序可根据系统实现的功能划分为以下几个子程序模块。程序源代码见附录1 时间调整子程序模块; 闹钟时间设置子程序模块; 蜂鸣器报警子程序模块; 数码管显示子程序模

33、块。 指示灯信号LAMP2LAMP0为独立扩展下载板上CPLD器件的第11、10、9脚,内部已连接并已锁定,无需外接连线。 蜂鸣器报时信号SPEAK为独立扩展下载板CPLD器件的第31脚,内部已连接并已锁定,无需外接连线。 拨码开关SW1SW7内部已连接并已锁定,无需外接连线。数码管七个段位信号AG为独立扩展下载板上CPLD器件的第86、87、88、89、90、92、93脚,应接数码管段位引线接线组KPL_AH,从左到右依次对应的A、B、C、D、E、F、G引线插孔。 数码管段位译码控制信号SS0、SS1、SS2为独立扩展下载板上CPLD器件的第68、69、70脚,为数码管的位选扫描信号,分别接

34、信号接线组DS1-8AT的SS0、SS1、SS2引线插孔即在电源引线插孔组GND孔处。复位信号RESET为独立扩展下载板上CPLD器件的第71脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)的F9F12的任意一个插孔。按下S1时,系统恢复正常时间显示。当按下设置定时键S2时,系统可进行闹钟定时时间的小时设置,此时S1作为报警声选择键,可通过S1选择报警声;再按下S2时,可进行定时时间的分钟设置,此时也可通过S1选择报警声;第三次按下S2时,系统恢复正常时间显示,此时S1恢复为时间调整按键。设置时间时都通过加时按键S3和减时按键S4进行控制。图 定时闹钟系统的键盘电路4 系统的

35、仿真与调试4.1 proteus软件仿真使用WAVE软件编辑程序,在仿真设置中选择E6000/T仿真器,选择POD-51仿真头。为方便系统在proteus中进行仿真,选择了7SEG-MPX6-CC-BLUE数字显示器,并改变了一些I/O连接,如图4.1-1 所示,然后选择80C51CPU进行汇编程序编辑。经过仿真得知,通过S1、S2、S3和S4四个按键,可以对时间进行修改和闹钟的设置,定时时间到能发出报警声,系统非常完善地实现了所有要求的功能。图4.1-1 系统的proteus仿真图4.2 系统的调试 将所编程序在KEIL软件里进行编译,编译正确后生成HEX文件。 在AT89C51芯片中加载此

36、文件后,对完成的实物作品进行调试。系统运行后,能准确的显示时间,并能通过S1、S2、S3和S4四个按键对时间进行修改和闹钟定时时间的设置,定时时间到能发出报警声。5 结束语设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术开展的日新日异,单片机已经成为当今计算机应用中空前活泼的领域,在生活中可以说得是无处不在,作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。通过本次单片机原理及应用设计使我充分认识到了设计的重要性和必要性,本次设计使我对已学过的根底知识有了更深入的理解,学会了独立思考、独立工

37、作以及对应用所学根本理论分析和解决实际问题的能力有了很大的提高。另外,本次设计使我的实际操作技能得到了训练, 同时也进一步培养了我严谨的科学作风。回忆起此次单片机课程设计,从选题到定稿,从理论到实践,可以说得是有苦有甜,但是从中却学到很多很多的的东西,不但稳固了以前所学过的知识,而且对单片机原理课外知识也得到了拓展。做的过程中,开始确实遇到了不少困难的问题,比方说芯片管脚不熟悉怎么放置等,同时在这过程中也发现了自己的许多缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 通过单片机设计之后,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养创新精

38、神和严谨的科学作风,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,绝不放弃。在本次设计中我遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的毕业设计指导老师XX老师,他对我进行了无私的指导和帮助不厌其烦的帮助进行毕业设计修改和改良。XX老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇多。在此向帮助和指导我的XX老师表示最衷心的感谢!附录1 源程序代码汇编语言程序:;* 引脚及变量定义 * S1 BIT P3.2 ;按键1 S2 BIT P3.3 ;按键2 S3 BIT P3.4 ;按键3 S4 BIT P3

39、.5 ;按键4SPEAKER BIT P2.0 ;蜂鸣器 DULA BIT P2.6 ;段选锁存器锁存端 WELA BIT P2.7 ;位选锁存器锁存端 HOUR1 EQU 20H ;小时 MIN1 EQU 21H ;分钟 SEC1 EQU 22H ;秒钟 HOUR2 EQU 23H ;小时定时变量 MIN2 EQU 24H ;分钟定时变量 A1 EQU 25H ;显示变量 B1 EQU 26H C1 EQU 27H D1 EQU 28H E1 EQU 29H F1 EQU 30H A2 EQU 31H B2 EQU 32H C2 EQU 33H D2 EQU 34H NUM1 EQU 35H

40、 ;按键计数变量1 NUM2 EQU 36H ;按键计数变量2 COUNT EQU 37H ;计时变量 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME;* MAIN PROGRAM * ORG 1000HMAIN: MOV SP,#50HSTART: MOV HOUR1,#00H ;初始化时间变量 MOV MIN1,#00H MOV SEC1,#00H MOV HOUR2,#01H ;初始化定时变量 MOV MIN2,#01H MOV COUNT,#00H ;初始化计时变量 MOV NUM1,#00H ;初始化按键计数变量 MOV NUM2,#00H MOV T

41、MOD,#01H ;16位计数器 MOV TH0,#0D8H ;赋初值 MOV TL0,#0EFH SETB ET0 ;中断允许 SETB EA SETB TR0 ;启动T0LOOP: MOV A,NUM2 JNZ LOOP1 ;A不为0时转移 LCALL DISPLAY1 ;显示当前时间 LCALL KEYTIME ;调用时间调整子程序 LCALL SETTIME ;调用定时设置子程序 LJMP LOOPLOOP1: LCALL DISPLAY2 ;显示定时时间 LCALL KEYTIME ;调用时间调整子程序 LCALL SETTIME ;调用定时设置子程序 LJMP LOOP ;* SE

42、TTIME PROGRAM *SETTIME: ;定时设置子程序LL1: JB S2,LL3 ;P3.3=1时转移 LCALL DELAY5 ;延时5MSMSTOP1: JB S2,LL3 ;P3.3=1时转移 MOV C,S2JNC MSTOP1 ;P3.3=0时转移 INC NUM2 ;按键计数变量加1 MOV A,NUM2 CJNE A,#1,LL2 ;判断按键计数是否为1 CLR TR0 ;定时器中断关闭LL2: CJNE A,#3,LL ;判断按键计数是否为3 MOV NUM2,#0 ;按键计数变量清0 SETB TR0 ;定时器中断翻开LL: LCALL DISPLAY2 ;显示定

43、时时间LL3: MOV A,NUM2 JZ LL5 ;A为0时转移 JB S3,KK2 ;P3.4=1时转移 LCALL DELAY5 ;延时5MSKK1:JB S3,KK2 ;P3.4=1时转移 MOV C,S3 JNC KK1 ;P3.4=0时转移 MOV A,NUM2 CJNE A,#1,MM1 ;判断按键计数是否为1INC HOUR2 ;小时定时变量加1 MOV A,HOUR2 CJNE A,#24,MM1 ;判断小时定时变量是否为24 MOV HOUR2,#0 ;小时定时变量为24那么复位0 LCALL DISPLAY2 ;显示定时时间MM1:LCALL DISPLAY2 ;显示定时

44、时间 MOV A,NUM2 CJNE A,#2,KK2 ;判断按键计数是否为2 INC MIN2 ;分钟定时变量加1MOV A,MIN2 CJNE A,#60,KK2 ;分钟定时变量是否为60 MOV MIN2,#0 ;分钟定时变量为60那么复位0 LCALL DISPLAY2 ;显示定时时间KK2:LCALL DISPLAY2 ;显示定时时间JB S4,LL5 ;P3.5=1时转移 LCALL DELAY5 ;延时5MSKK3:JB S4,LL5 ;P3.5=1时转移 MOV C,S4 JNC KK3 ;P3.5=0时转移 MOV A,NUM2 CJNE A,#1,MM2 ;判断按键计数是否

45、为1 DEC HOUR2 ;小时定时变量减1 MOV A,HOUR2 CJNE A,#0,MM2 MOV HOUR2,#24 LCALL DISPLAY2 ;显示定时时间MM2:LCALL DISPLAY2 ;显示定时时间 MOV A,NUM2 CJNE A,#2,LL5 ;判断按键计数是否为2DEC MIN2MOV A,MIN2 ;分钟定时变量减1CJNE A,#0,LL5MOV MIN2,#60LL5: LCALL DISPLAY2 ;显示定时时间RET ;* KEYTIME PROGRAM *KEYTIME: ;时间调整子程序L1: JB S2,L3 ;P3.2=1时转移 LCALL D

46、ELAY5 ;延时5MSMSTOP2: JB S2,L3 ;P3.2=1时转移 MOV C,S2 JNC MSTOP2 ;P3.2=0时转移 INC NUM1 MOV A,NUM1 CJNE A,#1,L2 ;判断按键计数是否为1 CLR TR0 ;定时器中断关闭L2: CJNE A,#4,L3 ;判断按键计数是否为4MOV NUM1,#0 SETB TR0 ;定时器中断翻开L3: MOV A,NUM1 JNZ FF ;A不为0时转移 LJMP L5FF: JB S3,K2 ;P3.4=1时转移 LCALL DELAY5 ;延时5MSK1: JB S3,K2 ;P3.4=1时转移 MOV C,

47、S3 JNC K1 ;P3.4=0时转移 MOV A,NUM1 CJNE A,#1,M1 ;判断按键计数是否为1 INC HOUR1 ;小时设置加1 MOV A,HOUR1 CJNE A,#24,M1 MOV HOUR1,#0 LCALL DISPLAY1 ;显示调整时间M1: LCALL DISPLAY1 ;显示调整时间 MOV A,NUM1CJNE A,#2,M2 ;判断按键计数是否为2INC MIN1 ;分钟设置加1MOV A,MIN1CJNE A,#60,M2MOV MIN1,#0LCALL DISPLAY1 ;显示调整时间M2:LCALL DISPLAY1 ;显示调整时间MOV A,

48、NUM1CJNE A,#3,K2 ;判断按键计数是否为3INC SEC1MOV A,SEC1CJNE A,#60,K2MOV SEC1,#0LCALL DISPLAY1 ;显示调整时间K2:LCALL DISPLAY1 ;显示调整时间JB S4,L5 ;P3.5=1时转移 LCALL DELAY5 ;延时5MSK3:JB S4,L5 ;P3.5=1时转移 MOV C,S4JNC K3 ;P3.5=0时转移MOV A,NUM1CJNE A,#1,M3 ;判断按键计数是否为1DEC HOUR1MOV A,HOUR1CJNE A,#0,M3MOV HOUR1,#24LCALL DISPLAY1 ;显

49、示调整时间M3:LCALL DISPLAY1 ;显示调整时间MOV A,NUM1CJNE A,#2,M4 ;判断按键计数是否为2DEC MIN1MOV A,MIN1CJNE A,#0,M4MOV MIN1,#60LCALL DISPLAY1 ;显示调整时间M4:LCALL DISPLAY1 ;显示调整时间MOV A,NUM1CJNE A,#3,L5 ;判断按键计数是否为3INC SEC1MOV A,SEC1CJNE A,#0,L5MOV SEC1,#60L5: LCALL DISPLAY1 ;显示调整时间RET ;* TIMEPRO PROGRAM *TIMEPRO: MOV R7,#50 ;

50、蜂鸣器报警子程序 CLR SPEAKER ;启动蜂鸣器报警 LCALL DELAYN ;延时50MS SETB SPEAKER LCALL DELAYN CLR SPEAKER LCALL DELAYN SETB SPEAKER;* DISPLAY1 PROGRAM *DISPLAY1: ;显示子程序1 PUSH ACC ;保护现场 MOV A,HOUR1 ;将时间的十位和个位分别赋给显示变量 MOV B,#10 DIV AB MOV A1,A MOV B1,B MOV A,MIN1 MOV B,#10 DIV AB MOV C1,A MOV D1,B MOV A,SEC1 MOV B,#10

51、 DIV AB MOV E1,A MOV F1,BMOV DPTR,#TABLE;指向7段编码表首地址 CLR DULA;关闭段选锁存器锁存端MOV A,A1 MOVC A,A+DPTR MOV P0,A;显示小时十位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FEH;选择第1位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,B1 MOVC A,A+DPTR MOV P0,A;显示小时个位SETB DULA;翻开段选锁存器锁存端

52、 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FDH;选择第2位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,C1 MOVC A,A+DPTR MOV P0,A;显示分钟十位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FBH;选择第3位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,D1 MOVC A,

53、A+DPTR MOV P0,A;显示分钟个位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0F7H;选择第4位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,E1 MOVC A,A+DPTR MOV P0,A;显示秒钟十位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0EFH;选择第5位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL

54、DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,F1 MOVC A,A+DPTR MOV P0,A;显示秒钟个位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0DFH;选择第6位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5POP ACC ;恢复现场 RET;* DISPLAY2 PROGRAM *DISPLAY2: ;显示子程序2 PUSH ACC ;保护现场 MOV A,HOUR2 ;将时间的十位和个位分别赋给显示变量 MOV B,#10 DIV AB MOV

55、A2,A MOV B2,B MOV A,MIN2 MOV B,#10 DIV AB MOV C2,A MOV D2,B MOV DPTR,#TABLE;指向7段编码表首地址 CLR DULA;关闭段选锁存器锁存端MOV A,A2 MOVC A,A+DPTR MOV P0,A;显示定时时间的小时十位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FEH;选择第1位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,B2 MOVC A,A+

56、DPTR MOV P0,A;显示定时时间的小时个位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FDH;选择第2位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL DELAY5 CLR DULA;关闭段选锁存器锁存端MOV A,C2 MOVC A,A+DPTR MOV P0,A;显示定时时间的分钟十位SETB DULA;翻开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端 MOV P0,#0FBH;选择第3位数码管 SETB WELA;翻开位选锁存器锁存端 CLR WELA LCALL

温馨提示

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

评论

0/150

提交评论