单片机数字时钟实训论文_第1页
单片机数字时钟实训论文_第2页
单片机数字时钟实训论文_第3页
单片机数字时钟实训论文_第4页
单片机数字时钟实训论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、编号: 单片机综合设计实训论文说明书题 目: 数 字 钟 院 (系): 专 业: 学生姓名: 学 号: 指导教师: 2013年 12月30日摘 要时间是科学技术和日常生活中最基本的物理量之一,随着科技的快速发展和生活水平的不断提高,人们对时钟的精准度和实用性要求越来越高。本文基于单片机技术原理,以单片机AT89S52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个数字时钟系统。本文设计的系统要求可以对年、月、日、时、分、秒进行动态扫描显示计时,可以用三个按键实现所有功能的调整,还具有闹钟功能。该电路系统采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用

2、35V电压供电。本设计采用的Keil编译系统是现在使用比较多的ARM编译系统。与ADS编译系统相比,Keil编译系统不需要模版,自动生成启动文件,且Keil For Arm编译系统可以与Proteus联机,这一点在虚拟开发中是非常实用的。关键词:AT89S52单片机,动态扫描, Proteus仿真AbstractTime is one of the most fundamental physical quantities in science and technology and daily life. With the rapid development of science and tec

3、hnology and living standard , human beings are increasingly demanding of the accuracy and practicability of the clock . With reference to the analysis of the demand of the function of the clock in people's daily life, and with the single-chip microcomputer technical principal , and by considerin

4、g the AT89S52 single-chip computer as the core controller as well as the design of hardware circuit and the programming of software, a digital clock system can be designed and made .The year , month , day ,hour ,minute and second can be timed by this system Its extended function can use three keys t

5、o achieve the function adjustment.Besides , it can display them by dynamic scanning mode as well as well has the function of remind viewers. This circuit system adapts the AT89S52 single-chip computer as core, which has the advantage of low power. Therefore, it can work under the circumstance of low

6、 voltage of 3 ,Thus ,3-5 voltage will be enough to supply power . This design uses the Keil for ARM compiling system , which now is used widely. Compared with ADS compiler system, Keil compiler system does not require a template compilation, and generates boot file automatically, as well as Keil for

7、 Arm compiling systems can align with Proteus, this advantage is very practical in virtual development.Key Words:AT89S52 single-chip computer; Dynamic scanning; Simulation in Proteus目 录1 绪论41.1单片机发展简史41.2单片机应用41.3 课题研究的目的和意义52 数字钟总体方案介绍52.1 数字钟功能介绍62.2 数字钟方案介绍62.2.1计时方案62.2.2按键显示方案62.3系统各硬件设计62.3.1硬

8、件主控芯片概述及功能介绍62.3.2 引脚说明73 时钟电路设计83.1 按键电路93.2 LED指示灯电路93.3系统原理电路设计104 系统软件设计104.1主程序设计105 实验测试结果115.1仿真调试115.2 PCB图115.3结果展示126 心得体会12谢 辞14参考文献15附 录一161 绪论1.1单片机发展简史单片机诞生于20世纪70年代末,作为微型计算机的一个重要分支,单片机应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段:(1) 第一阶段(1976-1978):单片机的探索阶

9、段。以Intel公司的MCS48为代表。MCS48的推出是在工控领域的探索,参与这一探索的公司还有Motorola 、Zilog等,都取得了满意的效果。这就是SCM的诞生年代,“单片机”一词即由此而来。(2) 第二阶段(1978-1982):单片机的完善阶段。Intel公司在MCS48基础上推出了完善的、典型的单片机系列MCS51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。1) 完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口。2) CPU外围功能单元的集中管理模式。3) 体现工控特性的位地址空

10、间及位操作方式。4) 指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。(3) 第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS51系列的广泛应用,许多电气厂商竞相使用80C51作为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路功能,强化了智能控制的特征。(4) 第四阶段(1990):微控制器的全面发展阶段。随着

11、单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。1.2单片机应用由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面:(1) 单片机在智能仪表中的应用单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。(2) 单片机在机电一体化中的应用机电一体化是机械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床

12、、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。(3) 单片机在实时控制中的应用单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。(4) 单片机在分布式多机系统中的应用在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的

13、某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。(5) 单片机在人类生活中的应用自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传

14、统控制技术的一次革命。1.3 课题研究的目的和意义数字时钟系统可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89S52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB的Flash程序存储器,且允许在系统内改写或用编程器编程。另外,AT89S52的指令系统和引脚与8051完全兼容,片内有2

15、56B的RAM、32条IO口线、2个16位定时计数器、5个中断源、一个全双工串行口等。且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。 2 数字钟总体方案介绍2.1 数字钟功能介绍1、八位数码管动态显示;2、实现年、月、日、时、分、秒的显示;3、能交替显示时间和日期或自定义选择显示;4、时间和日期都可以设定和调整5、实现闹铃设置和闹铃功能;6、用三个按键实现所有功能的调整2.2 数字钟方案介绍2.2.1计时方案利用AT89S52单片机内部的定时/计数器和时钟芯片DS1302进行终端定时,配合软件延

16、时实现年、月、日、时、分、秒的计时。该方案节省硬件成本,并且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼和提高,对单片机的指令系统能有更深入的了解。2.2.2按键显示方案AT89S52外接8个LED数码管构成显示器,外接3个按键(K1、K2、K3)构成按键控制部分。设计框图如图一所示: 图一:电子时钟设计框图2.3系统各硬件设计2.3.1硬件主控芯片概述及功能介绍AT89S52单片机为40引脚双列直插芯片,有四个I/O口(P0、P1、P2、P3),AT89S52单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作为输出或输入。单片机的最小系统如下图所示

17、,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后能够形成上电复位电路。如图二所示,实物上的20引脚为接地端,40引脚为电源端。图二:AT89S52引脚图2.3.2 引脚说明VCC:供电电压。  GND:接地。  P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址

18、的第八位。在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”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,

19、P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。  P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊

20、功能口,如下表所示:口管脚 备选功能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编程期间,此引脚用于输入编程脉冲。在平时,

21、ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。  /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。  /EA/VPP:当/EA保持低电

22、平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。  XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。  XTAL2:来自反向振荡器的输出。2.3.3 振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过

23、一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3 时钟电路设计3.1 按键电路按键电路相对简单,该系统选用单片机的P3口作为按键输入端口,按键按下的有效电瓶为低电平,三个按键与一端IO口连接另一端直接接到地GND。图三:按键电路3.2 LED指示灯电路数码管显示电路选用单片机的P0口作为段码输出,P2口的四位作为位码的控制端,由于89C51系列单片机的P0口是COMS漏极设计具有吸收大电流作用,该端口无法输出有效高电平,故在P0口要添加上拉电阻,图中RS1是1K的8段排阻,此外由于P0口驱动能力不足以驱动八位数码管,采用三极管8550作为驱动器件,由

24、于8550为PNP型,故采用共阳数码管时,低电平点亮。再者采用上电复位方式设计系统的复位方式,设计原则RC时间常数大于10毫秒。图四:数码管显示电路3.3系统原理电路设计图五:原理图4 系统软件设计4.1主程序设计定时中断主程序的流程图如图3-1所示: 恢复初值保护开始清显示缓冲区初始化定时计数器赋时钟初值开定时器调整时间数码管显示当前时钟值 秒加1中断 秒单元清0,60秒到吗?分加1时加1分单元清0,60秒到吗?时单元清0,24小时到吗?天加1天单元清0堆栈返回 图六: 主程序框图简要说明:(1)实现24小时制电子钟,8位数码管显示,显示时分秒;实现年月日日期显示。(2)显示格式:23-59

25、-59(小时十位如果为0则不显示);年月日显示格式2011.12.28(3)通过3只按键来调整时间和日期(4)调整选择键SET_KEY:P3.0;通过选择键选择调整位,选中位闪烁(5)增加键ADD_KEY:P3.1;按一次使选中位加1(6)减少键DEC_KEY;P3.2;按一次使选中位减1(7)如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁(8)如果选中位是秒,则按增加键或减少键都是将秒清零(9)P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12MHZ5 实验测试结果5.1仿真调试软件仿真:在进行硬件制作前对我的制作进行了软件仿真,用了proteus7.0

26、进行了软件的仿真仿真图如下图,根据仿真图的显示结果我的电路设计已经达到了课题的基本要求。当前日期:2012年1月4日 当前时间:21点12分08秒5.2 PCB图本次课程设计的PCB如图七所示: 图七: PCB图6 心得体会 本设计是基于AT89S52的时钟设计,用2个四位一体的共阳数码管做为显示器,可以明确的显示年、月、日、时、分、秒并带有闹钟功能;设计中有3个按键,其中K1为选择调整位置和日期、时间的切换显示,K2为加控制键,K3为减控制键,结果与设计要求完全相符,本设计成功。在本设计的仿真和电路的调试过程中遇到了几个问题:仿真过程中1、LED数码管的断码错乱,后来发现由于太粗心没有认真看

27、清各引脚的信息,接错了位置,经过自己的一番调整解决了断码或乱码情况。2、对数字时钟修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮的现象。针对这个问题,我反复翻阅了各种书籍,再检查了自己的程序,发现电路的驱动能力不足,最后在输入端接入1K的上拉电阻后,电路的驱动能力才能满足,终于解决了不亮现象。 本以为仿真成功后把板焊接好,再调试出来就没问题了,但现实是残酷的,在电路调试过程中我遇到了更大的问题:1、把程序烧进去后,电路板居然什么显示都没有,这下我有些绝望了,想到这么多天的努力都要白费了。器件都检查了还是什么问题都没看出来,后来叫了同学帮忙一起检查,同学细心的发现了我的板有两处铜线断了没导

28、通,问题出在这就好办多了,我用电烙铁点上焊锡将其连接起来后,居然就成功的显示了。经过两周坚持不懈的努力,在同学们和自己的努力下,我制作的数字时钟电路可以正常工作了,基本实现了课题的设计目的,达到了设计要求。努力就会有收获,通过这次实训也发现了自己还有很多不足之处,比如在焊接过程中太粗心,在焊接电路板时,不能出现虚焊漏悍,这样才能使电路板看起来更美观,实现功能才会好。焊接工艺还不是很熟练,有待提高,在程序方面还有待加强等等。在这次实训中,让我对本专业的基本理论、专业知识和基本技术有了更深入的了解和体会,使我在课本中所学到的知识得到了一个系统的巩固,真正达到了学以致用, 特别是在动手能力方面有了很

29、大的提高,实训不仅提高焊接、布局、电路检查能力;还提高了我的软件调试能力。通过完成一个包括电路设计到制作的完整过程,为今后从事相应打下了基础。谢 辞本次课程设计历时两周,不管其中的风风雨雨,首先对我的指导老师符强表示衷心的感谢,他帮助我解决在课设过程中遇到的种种问题,耐心辅导,同时也要感谢在课设中给以我指点的同学们,以及我们宿舍的全体成员,感谢他们的大力支持和帮助,是他们的指点使我设计的电路功能更为齐全更为美观。谢谢你们,有你们的相助,使我成功的完成此次课程设计。我会在以后的工作和学习中不断完善自己,为我最热爱的专业争光,为自己翻开辉煌的新篇章。参考文献1 李光飞,楼然苗,胡佳文编著.单片机课

30、程设计实例指导.北京:北京航空航天大学出版社. 20042 黄仁欣主编. 单片机原理及应用技术. 北京: 清华大学出版社. 2005.3 高吉祥主编. 电子技术基础实验与课程设计.北京:电子工业出版社. 20024陈永甫编著.电子电路智能化设计.实例与应用.北京:电子工业出版,20025康华光主编.电子技术 基础(第四版).北京:高等教育出版社,19996陈晓文. 电子电路课程设计.北京:电子工业出版社.2004.7赵伟军.PROTEL99 SE 教程.人民邮电出版社.20048卢超. 基于单片机的数字电子钟的设计与制作J. 大庆师范学院学报, 2006附 录一 /*程序名称:51单片机8位数

31、码管数字钟汇编程序简要说明:1.实现24小时制电子钟,8位数码管显示,显示时分秒*/ ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定时器0中断入口地址 LJMP TIMER_0 ORG 0300H /*程序开始,初始化*/ START: SETB 48H ;使用一个bit位用于调时闪烁标志 SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基 MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒 MOV 20H,#00H ;用于控制秒基准时钟源的产生 /*时间显示寄存器*/ MOV 21H,#00H ;清零秒寄存器 MOV

32、 22H,#30H ;清零分寄存器 MOV 23H,#12H ;清零时寄存器 MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生 /*闹钟显示寄存器*/ MOV 25H,#05H ;清零秒寄存器 MOV 26H,#30H ;清零分寄存器 MOV 27H,#12H ;清零时寄存器 MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00H /*年月日显示寄存器*/ MOV 39H,#00H ;清零年百位寄存器 MOV 38H,#00H ;清零年千位寄存器 MOV 37H,#25H ;清零天寄

33、存器 MOV 36H,#12H ;清零月寄存器 MOV 35H,#13H ;清零年寄存器 MOV 34H,#20H MOV IP,#02H ;IP,IE初始化 MOV IE,#82H MOV TMOD,#01H ;设定定时器0工作方式1 MOV TH0,#3CH MOV TL0,#0B0H ;赋定时初值,定时50ms SETB TR0 ;启动定时器0 MOV SP,#50H ;重设堆栈指针 MOV P1,#0FFH/*主程序*/ MAIN: LCALL DISPLAY ;调用显示子程序 LCALL NAOZHONG ;调用“判断是否到闹钟时间”子程序 LCALL KEY_SCAN ;调用按键检

34、测子程序 JZ MAIN ;无键按下则返回重新循环 LCALL SET_KEY ;调用选择键处理子程序 JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整 LCALL ADD_KEY ;调用增加键处理子程序,加一 LCALL DEC_KEY ;调用减少键处理子程序,减一 LJMP MAIN ;重新循环 /*定时器中断服务程序*/ TIMER_0: PUSH ACC PUSH PSW ;保护现场 MOV TH0,#3CH MOV TL0,#0B0H ;重新赋定时初值 CPL 47H ;产生脉冲用于调时快进时基 INC 24H MOV A,24H CJNE A,#1

35、0,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁 CPL 48H ;取反调时闪烁标志位 MOV 24H,#00HADD_TIME: ;走时 INC 20H MOV A,20H CJNE A,#20,RETI1 ;产生1秒基准时钟 MOV 20H,#00H ;一秒钟时间到,清零20H MOV A,21H ADD A,#01H DA A ;作十进制调整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H ;一分钟到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H ;一小时到

36、 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H ;到24点,清零小时 MOV A,37H ADD A,#01H DA A MOV 37H,A LCALL INT_00 MOV A,36H CJNE A,#13H,RETI1 MOV 36H,#01 MOV A,35H ADD A,#01H DA A MOV 35H,A CJNE A,#100,RETI1 MOV 35H,#00H MOV A,34H ADD A,#01H DA A MOV 34H,A CJNE A,#100,RETI1 MOV 34H,#00

37、HRETI1: POP PSW POP ACC ;恢复现场 RETI ;中断返回RETI10: RETINT_00: MOV R6,00H MOV R7,00H MOV R6,36H MOV R7,37H CJNE R6,#01H,INT_01 CJNE R7,#32H,RETI10 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_01: CJNE R6,#02H,INT_02 MOV A,35H MOV B,#4 DIV AB MOV A,B CJNE A,#00H,PD CJNE R7,#30H,RETI5 MOV 37H,#

38、01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETPD: CJNE R7,#29H,RETI5 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RET RETI5: RETINT_02: CJNE R6,#03H,INT_03 CJNE R7,#32H,RETI10 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_03: CJNE R6,#04H,INT_04 CJNE R7,#31H,RETI10 MOV 37H,#01H MOV A,36H

39、ADD A,#01H DA A MOV 36H,A RETINT_04: CJNE R6,#05H,INT_05 CJNE R7,#32H,RETI10 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_05: CJNE R6,#06H,INT_06 CJNE R7,#31H,RETI10 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_06: CJNE R6,#07H,INT_07 CJNE R7,#32H,RETI2 MOV 37H,#01H MOV A,36H A

40、DD A,#01H DA A MOV 36H,A RETINT_07: CJNE R6,#08H,INT_08 CJNE R7,#32H,RETI2 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_08: CJNE R6,#09H,INT_09 CJNE R7,#31H,RETI2 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_09: CJNE R6,#10H,INT_10 CJNE R7,#32H,RETI2 MOV 37H,#01H MOV A,36H ADD

41、A,#01H DA A MOV 36H,A RETINT_10: CJNE R6,#11H,INT_11 CJNE R7,#31H,RETI2 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETINT_11: CJNE R6,#12H,RETI3 CJNE R7,#32H,RETI2 MOV 37H,#01H MOV A,36H ADD A,#01H DA A MOV 36H,A RETRETI2: LCALL RETI10RETI3: RET ;退出子程序 /*判断是否到闹钟时间*/ NAOZHONG: MOV A,23H CJNE A,

42、27H,RETI001 MOV A,22H CJNE A,26H,RETI001 MOV A,21H CJNE A,25H,RETI001 CLR P1.7TINGZHI: LCALL DISPLAY MOV P3,#0FFH ;将P1口设置成输入状态 MOV A,P3 CPL A ANL A,#07H ;P3口低3位连接3个按键,只判断该3位 JZ TINGZHI ;无键按下则返回 LCALL DELAY ;延时去抖动 MOV A,P3 ;重新判断 CPL A ANL A,#07H JZ TINGZHI ;键盘去抖动 SETB P1.7 MOV A,#00HRETI001: RET /*显示

43、处理*/ DISPLAY: MOV A,21H ;秒 ANL A,#0FH MOV 2FH,A ;转换出秒个位,存入2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A ;转换出秒十位,存入2EH JB 46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理程序 CJNE R1,#3,MIN ;如果R1为3,闪烁秒位待调整 JB 48H,MIN MOV 2FH,#0AH ;使该位为10,查表得到使该位不显示的输出 MOV 2EH,#0AHMIN: MOV A,22H ;分 ANL A,#0FH MOV 2DH,A ;转换出分个位,存入2DH MOV A,22

44、H ANL A,#0F0H SWAP A MOV 2CH,A ;转换出分十位,存入2CH JB 46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理程序 CJNE R1,#2,HOUR ;如果R1为2,闪烁分位待调整 JB 48H,HOUR MOV 2DH,#0AH ;使该位为10,查表得到使该位不显示的输出 MOV 2CH,#0AHHOUR: MOV A,23H ;时 ANL A,#0FH MOV 2BH,A ;转换出时个位,存入2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A ;转换出时十位,存入2AH JB 46H,DISP ;如果长按按键(调

45、时快进),则跳过闪烁处理程序 CJNE R1,#1,DISP ;如果R1为1,闪烁时位待调整 JB 48H,DISP MOV 2BH,#0AH ;使该位为10,查表得到使该位不显示的输出 MOV 2AH,#0AH/*数码管动态扫描显示*/DISP: MOV DPTR,#TABLE MOV A,2FH MOVC A,A+DPTR MOV P0,A CLR P2.7 LCALL DELAY SETB P2.7 ;显示秒个位 MOV A,2EH MOVC A,A+DPTR MOV P0,A CLR P2.6 LCALL DELAY SETB P2.6 ;显示秒十位 MOV A,#0BFH MOV P

46、0,A CLR P2.5 LCALL DELAY SETB P2.5 ;显示“-” MOV A,2DH MOVC A,A+DPTR MOV P0,A CLR P2.4 LCALL DELAY SETB P2.4 ;显示分个位 MOV A,2CH MOVC A,A+DPTR MOV P0,A CLR P2.3 LCALL DELAY SETB P2.3 ;显示分十位 MOV A,#0BFH MOV P0,A CLR P2.2 LCALL DELAY SETB P2.2 ;显示“-” MOV A,2BH MOVC A,A+DPTR MOV P0,A CLR P2.1 LCALL DELAY SET

47、B P2.1 ;显示时个位 MOV A,2AH MOVC A,A+DPTR MOV P0,A CLR P2.0 LCALL DELAY SETB P2.0 ;显示时十位 RET /*按键检测子程序*/ KEY_SCAN: CLR 46H ;关闭长按调整(调时快进)标志 MOV P3,#0FFH ;将P1口设置成输入状态 MOV A,P3 CPL A ANL A,#07H ;P3口低3位连接3个按键,只判断该3位 JZ EXIT_KEY ;无键按下则返回 LCALL DELAY ;延时去抖动 MOV A,P3 ;重新判断 CPL A ANL A,#07H JZ EXIT_KEY ;键盘去抖动 M

48、OV R5,A ;临时将键值存入R5 MOV R4,#00H ;用于控制调时快进速度,设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 LOOP: ;进入长按处理 LCALL DISPLAY ;使长按时显示正常 MOV A,P3 CPL A ANL A,#07H JB 47H,LOOP1 INC R4 ;调时快进间隔时间基准加1LOOP1: CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理 LJMP LOOP3LOOP2: CJNE R4,#99H,LOOP3 MOV R4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度 SETB 46H

49、 ;长按调整(调时快进)标志 LCALL ADD_KEY LCALL DEC_KEYLOOP3: JNZ LOOP ;等待键释放 MOV A,R5 ;输出键值 RET EXIT_KEY: RET/*选择键处理子程序*/ SET_KEY: CJNE R5,#01H,EXIT ;选择键键值 INC R1 ;调整选择功能标志加一 CJNE R1,#5,EXIT LCALL MAINN/*加一键处理子程序*/ ADD_KEY: CJNE R5,#02H,EXIT ;增加键键值 CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,EXIT MOV 23H,#00HNEXT1: CJNE R1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,EXIT MOV 22H,#00HNEXT2: CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出 MOV 21H,#55H RET/*减一键处理子程序*/ DEC_KEY: CJNE R5,#04H,EXIT ;减少键键值 CJ

温馨提示

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

最新文档

评论

0/150

提交评论