毕业论文--电子时钟设计.doc

上传人:爱问知识人 文档编号:3939154 上传时间:2019-10-10 格式:DOC 页数:32 大小:311.02KB
返回 下载 相关 举报
毕业论文--电子时钟设计.doc_第1页
第1页 / 共32页
毕业论文--电子时钟设计.doc_第2页
第2页 / 共32页
毕业论文--电子时钟设计.doc_第3页
第3页 / 共32页
毕业论文--电子时钟设计.doc_第4页
第4页 / 共32页
毕业论文--电子时钟设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《毕业论文--电子时钟设计.doc》由会员分享,可在线阅读,更多相关《毕业论文--电子时钟设计.doc(32页珍藏版)》请在三一文库上搜索。

1、0 毕业设计(论文) 题 目 名 称 电子时钟设计 课 程 名 称 单片机原理与接口技术 学 生 姓 名 于彩虹 学 号 系 、专 业 机电工程系电气自动化类 指 导 教 师 马世强 2012 年 5 月 1 日 1 电子时钟设计电子时钟设计 摘 要 单片计算机即单片微型计算机。由 RAM ,ROM,CPU构成,定时,计数和多 种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业 自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程 设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本设计主要设计了一个基于AT89C51单片机的电子时

2、钟。并在数码管上显示相 应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用 Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、 准确,节省了硬件资源。 关键字:单片机;子时钟;键盘控制。 2 3 目 录 摘 要2 英文摘要.3 目 录4 1 电子时钟6 1.1 电子时钟简介6 1.2 电子时钟的基本特点6 1.3 电子时钟的原理6 2 单片机识的相关知识7 2.1 单片机简介7 2.2 单片机的发展史8 2.3 单片机的特点8 2.4 89C51 单片机介绍9 3 控制系统的硬件设计.11 3.1 单片机型号的选择11 3.2 数码管

3、显示工作原理11 3.3 键盘电路设计12 3.4 整个电路原理图13 4 控制系统的软件设计.14 4.1 程序设计14 4.2 程序流程图 .17 4.3 仿真图 .20 4.4 仿真结果分析 .21 5 结束语.22 4 6 参考文献.23 7 附录.24 5 1电子时钟 1.1 电子时钟简介 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电 子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时 程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一, 满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人

4、民日常生活 补课缺少的工具。 1.2 电子时钟的基本特点 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、 石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试, 数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显 示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以 进行时和分的校对,片选的灵活性好。 1.3 电子时钟的原理 该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动 电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟, 六十分钟为一小时,满二十

5、四小时为一天。而电路中唯一的一个控制键却拥有多种不 同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按 下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按 键不放松,则可实现小时的调节,同样每按一次小时加一。 2 单片机识的相关知识 2.1 单片机简介 单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。从应用领 域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入 6 式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。 2.2 单片机的发

6、展史 1 . 4位单片机 1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;此后,各个 计算机公司竞相推出四位单片机。日本松下公司的MN1400系列,美国洛克威尔公司 的PPS/1系列等。四位单片机的主要应用领域有:PC机的输入装置,电池充电器, 运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩 具,钟表,计算器,多功能电话等。 2 . 8位单片机 1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率 先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和仙 童公司合作生产的3870系列,摩托罗拉公

7、司生产的6801系列等。随着集成电路工艺 水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的 MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。这 类单片机的寻址能力达64KB,片内ROM容量达4-8KB,片内除带有并行IO口 外,还有串行IO口,甚至还有AD转化器功能。8位单片机由于功能强,被广泛用 于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。 3 . 16位单片机 1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷 面市。这一阶段的代表产品有1983年Intel公司推出的MCS-9

8、6系列,1987年 Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的 783XX系列等。16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。 4 . 32位单片机 随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理, 复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单 片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流 行的ARM系列单片机。32位单片机是单片机的发展趋势,随着技术的发展及开发成 本和产品价格的下降,将会与8位单片机并驾齐驱。 5 . 64位单片

9、机 7 近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算 法密集的实时控制场合已有应用,如英国Inmos公司的Transputer T800是高性能 的64位单片机。 2.3 单片机的特点 1 . 单片机的存储器ROM和RAM时严格区分的。ROM称为程序存储器,只 存放程序,固定常数,及数据表格。RAM则为数据存储器,用作工作区及存放用户 数据。 2 . 采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能力 ,特别是单片机具有很强的位处理能力。 3 . 单片机的I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了解决实 际引脚数和需要的信号线的矛盾,采

10、用了引脚功能复用的方法,引脚处于何种功能, 可由指令来设置或由机器状态来区分。 4 . 单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时,均可在 外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便 。 2.4 89C51 单片机介绍 VCC:电源。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。 当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储 器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口, 当FIASH进行校验时,P0输出原码,此时P0外部必须被

11、拉高。 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口 8 输

12、出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据 存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和 校验时接收高八位地址信号和控制信号。 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/

13、RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U4 AT89C51 图 2.1 89C51 单片机 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个 TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入, 由于外部下拉为低电平,P3

14、口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 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口同时为闪烁编程和编程校验接收一些控制信号。 9 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平 时间。 ALE/PROG:当访问外部存储器时,地址锁存允许

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

16、的/PSEN信号 将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH), 不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当 /EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施 加12V编程电源(VPP)。 3 控制系统的硬件设计 3.1 单片机型号的选择 通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。 89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 10 位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的 MC

17、S-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单 个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具 有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是 最好的选择。 3.2 数码管显示工作原理 数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是 共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公 共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极 管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为 8段,即8个LED

18、显示段,这是为工程应用方便如设计的,分别为 A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位 的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段 都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为 静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。 动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位 数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公 共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视 觉暂留速度时,

19、显示就会清晰显示出来。 图 3.1 共阴数码管 11 3.3 键盘电路设计 该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗, 该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开, 可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按 键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时 的调节,同样每按一次小时加一。达到时间调节的目的。 图 3.2 多功能控制键 12 3.4整个电路原理图整个电路原理图 图 3.3 系统电路原理图 13 4 控制系统的软件设计 4.1 程序设计 本系统的软件系统主要可分为主

20、程序、定时计数中断程序、时间调整程序、延 时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块 作介绍。 定时计数中断程序: MOV TMOD,#00H ;写控制字 MOV TH0,#0F0H ;写定时常数 MOV TLO,#0CH SETB TR0 ;启动T0 SETB ETO ;允许T0中断 SETB EA ;开放CPU中断 AJMP $ 时间调整程序: SETMM: cLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示 (省电) MOV R2,

21、#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作 14 LCALL ADD1 ;调用加1子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A,#60H,HH

22、H ;调整单元数据与60比较 HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志 AJMP SET4 ;跳转到SET4循环 CLOSEDIS:SETB ET0 ;省电(LED不显示)状态。开T0中 断 SETB TR0 ;开启T0定时器(开时钟) CLOSE: JB P3.7,CLOSE ;无按键按下,等待。 LCALL DISPLAY ;有键按下,调显示子程序延时削抖 JB P3.7,CLOSE ;是干扰返回CLOSE等待 WAITH: JNB P3.7,WAITH ;等待键释放 LJMP STA

23、RT1 ;返回主程序(LED数据显示亮) SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态) SETHH1: JNB P3.7,SET5 ;等待键释放 SETB 01H ;小时调整标志置1 SET6: JB P3.7,SET7 ;等待按键按下 LCALL DL05S ;有键按下延时0.5秒 JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整 MOV R0,#79H ;按下时间小于0.5秒加1小时操作 LCALL ADD1 ;调加1子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;计时单元数据与24比较 HOUU: JC SET6 ;

24、 小于24转SET6循环 LCALL CLR0 ;大于或等于24时清0操作 AJMP SET6 ; 跳转到SET6循环 15 SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释 放 LCALL DISPLAY ;延时削抖 JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待 CLR 01H ;清调小时标志 CLR 00H ;清调分标志 CLR 02H ;清闪烁标志 CLR TR1 ;关闭定时器T1 CLR ET1 ;关定时器T1中断 SETB TR0 ;开启定时器T0 SETB ET0 ;开定时器T0中断(计时开始) LJMP START1 ;跳回主程序 S

25、ET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示 SET3: LCALL DISPLAY ;等待调分按键时时钟显示用 AJMP SET4 SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时) AJMP SETHH1 ;防止键按下时无时钟显示 SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6 SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按下时无时钟显示 延时程序: 1MS延时程序,LED显示程序用 DL

26、1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET 16 ;20MS延时程序,采用调用显示子程序以改善LED 的显示闪烁现象 DS20MS: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET 4.2 程序流程图 系统的流程图如图4.1和图4.2所示: 17 图 4.1 主程序流程图 18 图 4.2 中断处理流程图 19 4.3 仿真结果仿真结果 图 4.3 开始运行程序仿真图 20 图 4.4 运行一段时间后仿真图 4.4 仿真结果分析 功能太过单调,只能实现时分秒的显

27、示,设计比较简单。电路图的设计过于单调, 用的器件太少,实现调节时间的按钮太少,不能很好的实现时间的调节。在测试过程 中,六位数码显示管只显示五位数字,有一位数字不亮,通过多次的修改程序并在 PROTEUS软件环境中进行仿真,最终解决了这个问题,同时也透露出本人在单片机 电路设计和程序设计方面的不足。不过最后的仿真效果非常好,实现了预期的效果, 能过通过多功能控制键调节时间和是否进入省电模式,是一个比较令人满意的设计。 21 5 结束语 在马世强老师耐心的指导下,我顺利完成了这次单片机课程设计课题中的数码时 钟设计,通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本 上的很多知

28、识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理 解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗 了过多的内存资源。 本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化, 怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们 灌输专业知识,而我应把所学的用到我们现实的生活中去,此次的电子时钟设计给我 奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞 争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同 学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解

29、。 最后,感谢马世强老师对我的细心的指导,正是由于马老师的细心的辅导和他提 供给我们的参考资料,使得我的课程设计能够顺利的完成,同时在课程设计过程中, 我们巩固和学习了我们的单片机知识。相信这对我以后的课程设计和毕业论文答辩将 会有很大的帮助! 22 6 参考文献参考文献 1 H.G.Cragon.The Elements of Single-Chip Microcomputer Architecture. Computer,1980 (13)2741 2 潘永雄.新编单片机原理与应用. 第2版.西安:西安电子科技大学出版社2006 3 何立民.我国单片机应用技术发展趋势及展望.自动化与仪表,

30、1992(1):15 4 向继文,廖立新.基于AT89S51 的电子钟系统设计.机电产品开发与创新,2007(2): 6263 5 张静.基于单片机数字钟的设计.办公自动化杂志,2006(89):45 6 樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学学院院 报,2005(1): 6263 7 魏立峰,王宝兴.单片机原理与应用技术M.北京:北京大学出版社,2006. 8 马立国. AD7888与AT89C51单片机接口应用技术.集成电路通讯,2007(25): 3334 23 7 7 附附 录录 ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号STA

31、RT执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口 RETI ;外中断1中断返回 ORG 001BH ;定时器 T1 中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 主程序开始; START: MOV R0,#70H ;清70H-7AH共11个内存单元 MOV R7,#0BH ; CLEARDISP: MOV R0,#00H ; INC R0 ;

32、DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入“熄灭符“数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值 24 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50MS20) START1: LCA

33、LL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; 1秒计时程序 ; 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,T

34、H0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值 MOV R0,#71H ;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加1程序(加1秒操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于60秒时中断退出 25 ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77

35、H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加1分钟 MOV A,R3 ;分数据放入A CLR C ;清进位标志 CJNE A,#60H,ADDHH ; ADDHH: JC OUTT0 ;小于60分时中断退出 ACALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0,#79H ;指向小时计时单元(78H-79H) ACALL ADD1 ;小时计时单元加1小时 MOV A,R3 ;时数据放入A CLR C ;清进位标志 CJNE A,#24H,HOUR ; HOUR: JC OUTT0 ;小于24小时中断退出 ACALL CLR0 ;大于或等于24小时

36、小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元 MOV 74H,78H ; MOV 75H,79H ; POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回 ; 闪动调时 程 序 ; ;T1中断服务程序,用作时间调整时调整单元闪烁指示 INTT1: PUSH ACC ;中断现场保护 PUSH PSW ; MOV TL1, #0B0H ;装定时器T1定时初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3秒未到退出

37、中断(50MS中断6次) MOV R2,#06H ;重装0.3秒定时用初值 26 CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H,FLASH1 ;02H位为1时显示单元“熄灭“ MOV 72H,76H ;02H位为0时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ; INTT1OUT: POP PSW ;恢复现场 POP ACC ; RETI ;中断退出 FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制 MOV 72H,7AH ;01H 位为0时,“熄灭符“数据放入分 MOV 73H,7AH ;显示单元(72

38、H-73H),将不显示分数据 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出 FLASH2: MOV 72H,76H ;01H位为1时,“熄灭符“数据放入 小时 MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示 MOV 74H,7AH ; MOV 75H,7AH ; AJMP INTT1OUT ;转中断退出 ; 加1子 程 序 ; ADD1: MOV A,R0 ;取当前计时单元数据到A DEC R0 ;指向前一地址 SWAP A ;A中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入A中低四位 ADD A,#

39、01H ;A加1操作 DA A ;十进制调整 MOV R3,A ;移入R3寄存器 ANL A,#0FH ;高四位变0 MOV R0,A ;放回前一地址单元 27 MOV A,R3 ;取回R3中暂存数据 INC R0 ;指向当前地址单元 SWAP A ;A中数据高四位与低四位交换 ANL A,#0FH ;高四位变0 MOV R0,A ;数据放入当削地址单元中 RET ;子程序返回 ; 清零程序 ; ;对计时单元复零用 CLR0: CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清 0 RET ;子程序返回 ; 时钟调整程序

40、 ; ;当调时按键按下时进入此程序 SETMM: CLR ET0 ;关定时器T0中断 CLR TR0 ;关闭定时器T0 LCALL DL1S ;调用1秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断 SETB TR1 ;开启定时器T1 SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待 SETB 00H ;键释放,分调整闪烁标志置1 SET4: JB P3.7,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时0.5秒 JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0.5秒加1分钟操作 LCALL ADD1 ;调用加1子程序 MOV A,R3 ;取调整单元数据 28 CLR C ;清进位标志 CJNE A,#60H,HHH ;调整单元数据与60比较 HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志 AJMP SET4 ;跳转到SET4循环 CLOSEDIS:SETB ET0 ;省电(LED不显示)状态。开T0中断 SETB TR0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1