1、题目: 定期闹钟目录一、概述111设计目及意义112设计任务113设计系统重要功能1二、系统总体方案及硬件设计221系统总体方案222系统设计总框图223硬件设计2231单片机最小系统设计2232报警模块设计6233显示模块设计7234调时模块设计9三、软件设计1031主程序流程图1032定期中断子程序流程图1133程序设计11四、系统仿真与调试1241 proteus软件仿真1242系统调试11五、设计总结与体会13参照文献13附录1:源程序代码14附录2:系统原理图24一、概述11设计目及意义学习和巩固单片机技术、电子技术、传感器技术及智能仪器等知识,使对已学过基本知识能有更进一步理解,并
2、融会贯通。学会独立思考、独立工作,培养一定自学能力和独立分析问题能力,以及增强系统地运用已学理论知识去解决实际问题能力,同步培养成良好科学态度和严谨设计习惯。12设计任务完毕所选题目分析与设计,达到技术性能规定。提交正式课程设计总结报告一份。本文设计定期闹钟核心模块采用AT89C51芯片,时、分、秒用6位LED数码管显示。在电路中通过四个按键S1、S2、S3和S4来进行定期、调时和复位,定期时间到通过蜂鸣器发出报警声。13设计系统重要功能(1) 能显示 时时分分秒秒。(2) 可以设立定期时间、修改定期时间。(3) 定期时间到能发出报警声。二、系统总体方案及硬件设计21系统总体方案(1) 由于L
3、ED显示屏相对于其他显示屏(如LCD显示屏)来说其价格要便宜许多,并且亮度更高,耐温范畴较广,因此采用6位数码管来显示“时时分分秒秒”。(2) 时间定期用单片机内部时钟电路,在一定期间内能使其误差较小,如通过一年其误差才仅有数秒。修改时间和定期用手动按键控制,报警声通过蜂鸣器发出。这样可以使得硬件电路设计较为简朴,且软件设计也易于实现,并可以减少成本。(3) 核心模块采用AT89C51单片机,功能强、通用性好、价格便宜,且易于控制。加上外围器件(数码管、排阻、按键和蜂鸣器)和应用程序,便构成了相应应用系统。22系统设计总框图数码管显示(如图1所示)时钟电路和复位电路单片机 AT89 C51键盘
4、(按钮)蜂鸣器 图1定期闹钟系统设计总框图23硬件设计231单片机最小系统设计(1) 芯片:AT89C51 由于51单片机是各单片机中最为典型和最有代表性一种,在20世纪70年代问世以来,以其极高性能价格比,受到人们注重和关注,应用广泛,发展不久,推广率和市场利润率较高,且适合于本设计系统中CPU内存和I/O等资源规定,因此本设计采用AT89C51作为核心控制芯片。AT89C51是一种带4KB闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)单片机,可稳定地工作于5V电源下。其集成度高、功能强、能耗低、通用
5、性好、价格便宜。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业原则MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器。其组合而成配件产品在寻常生活使用过程中非常以便、简朴且实用,深受着广大消费者爱慕。AT89C51管脚阐明如下: :供电电压端。 :接地端。 P0口:P0口为三态双向口,能带8个TTL电路。有两种功能:第一功能是一种8位漏极开路型双向I/O口,这时P0口可看做数据总线;第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。在FIASH编程时,
6、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口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。P2口在FLASH编程和校验时接受高八位地址信号和控制信号。 P3口:P3口是一种内部带上拉电阻准双向I/O口,
7、可接受输出4个TTL门电流。同步为闪烁编程和编程校验接受某些控制信号。P3口8个引脚均有各自第二功能,可作为AT89C51某些特殊功能口,如表1所示。 表1 P3口第二功能P3口引脚第二功能注释P3.0串行输入口P3.1串行输出口P3.2外部中断0输入P3.3外部中断1输入P3.4定期/计时器0外部输入P3.5定期/计时器1外部输入P3.6外部数据存储器写信号P3.7外部数据存储器读信号 :为复位信号输入端。当振荡器复位器件时,要保持RST脚两个机器周期(24个时钟周期)以上高电平时间。为内部备用电源输入端。当主电源一旦发生断电或电压降到一定值时,可通过为单片机内部提供电源,以保护片内中信息不
8、丢失,使上电后能继续正常运营。 :为地址锁存容许信号,当访问外部存储器时,用来锁存口送出低8位地址信号。在编程期间,用于输入编程脉冲。在平时,端以不变频率周期输出正脉冲信号,此频率为振荡器频率1/6。因而它可用作对外部输出脉冲或用于定期目。然而要注意是:每当用作外部数据存储器时,将跳过一种脉冲。如想禁止输出可在8EH地址上置0。此时,只有在执行MOVX,MOVC指令时才起作用。此外,该引脚被略微拉高。如果微解决器在外部执行状态禁止,置位无效。 :外部程序存储器读选通信号。在由外部程序存储器取指期间,产生负脉冲做为外部选通信号,每个机器周期两次有效。但在访问外部数据存储器时,不会产生有效信号。可
9、驱动8个门输入端。 :访问外部程序存储器控制信号。当保持低电平时,则在此期间只访问外部程序存储器(0000H-FFFFH),不论与否有内部程序存储器。注意加密方式1时,将内部锁定为。当端保持高电平时,访问程序存储器有两种状况:一是访问地址空间在0到4KB范畴内,访问片内程序存储器;二是访问地址超过4KB时,将自动执行外部程序存储器程序。在编程期间,此引脚也用于施加12V编程电源()。:晶体振荡电路反向器输入端。 :晶体振荡电路反向器输出端。 (2) 时钟电路单片机时钟产生办法有两种:内部时钟方式和外部时钟方式。 本系统中AT89C51单片机采用内部时钟方式。最惯用内部时钟方式是采用外接晶体和电
10、容构成并联谐振回路。振荡晶体可在1.2MHz12MHz之间。电容值无严格规定,但电容取值对振荡频率输出稳定性、大小和振荡电路起振速度有少量影响,普通可在20pF100pF之间取值。AT98C51单片机时钟电路如图3所示。图3 AT98C51单片机时钟电路(3) 复位电路复位是单片机初始化操作。单片机系统在上电启动运营时,都需要先复位。其作用是使CPU和系统中其她部件都处在一种拟定初始状态,并从这个状态开始工作。单片机外部复位电路有上电自动复位和按键手动复位两种。本系统中AT89C51单片机采用上电加按键手动复位电路,如图4所示。图4 AT89C51单片机复位电路232报警模块设计为实现设计定期
11、闹钟系统在定期时间届时发出报警声,采用蜂鸣器作为报警发声装置。在本设计中有各种报警声可供选取,可选取报警时播放音乐。报警电路设计如图5所示。图5 定期闹钟系统报警电路233显示模块设计本系统中采用6位LED数码管显示时、分、秒,用两片74HC573分别对段码和位码进行锁存,实现动态扫描方式显示,节约单片机I/O口资源,简化硬件电路。(1) LED显示屏单片机中普通使用8段LED,LED是发光二极管显示屏缩写。LED显示屏由于构造简朴,价格便宜,体积小,亮度高,电压低,耐温范畴广,可靠性高,寿命长,响应速度快,颜色鲜艳,配备灵活,与单片机接口以便而得到广泛应用。LED显示屏是由若干个发光二极管构
12、成显示字段显示部件,当发光二极管导通时,相应一种点或一种笔划发光,控制不同组合二极管导通,就能显示出各种字符。LED显示屏有各种形式,如:“米”字型显示屏,点阵显示屏和七段数码显示屏等。在本系统中采用八段数码显示屏。由于共阴极LED数码管它驱动电流是分开,在单片机进行动态扫描时候不会影响彼此电流,故本系统中6位LED数码管均用共阴极数码管。(2) 74HC573芯片特点:三态总线驱动输出,置数全并行存取,缓冲控制输入,使能输入有改进抗扰度滞后作用。 原理阐明:74HC573八个锁存器都是透明D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立数据电平上
13、。输出控制不影响锁存器内部工作,即老数据可以保持,甚至当输出被关闭时,新数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别合用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。74HC573引脚阐明:OE:3态输出使能输入(低电平有效)。D0 - D7:数据输入端。Q0 - Q7:3态锁存输出。LE:锁存使能输入。GND:接地。VCC:电源电压。74HC573引脚图、逻辑图及真值表如下:图674HC573引脚图图7 74HC573逻辑图表2 74HC573真值表OELEDQ HXXZLLXNO CHANGE LHLLLHHH(3)
14、显示电路将两片74HC573数据输入端D0 - D7都分别与AT89C51单片机P0.0 - P0.7和RESPACK-8排阻 2 - 9 引脚连接,两片74HC573锁存使能端L分别接至P2.6和P2.7,74HC573输出端接至数码管234调时模块设计本系统要进行时间调节和定期,因而用4个手动按键对其进行控制。键盘电路设计如图9所示。当按下时间调节键S1时,系统可进行时间调节小时设立;当再按下S1时,可进行时间调节分钟设立;再按下S1时,可进行时间调节秒钟设立;再次按下S1时,系统恢复正常时间显示。当按下设立定期键S2时,系统可进行闹钟定期时间小时设立,此时S1作为报警声选取键,可通过S1
15、选取报警声;再按下S2时,可进行定期时间分钟设立,此时也可通过S1选取报警声;第三次按下S2时,系统恢复正常时间显示,此时S1恢复为时间调节按键。设立时间时都通过加时按键S3和减时按键S4进行控制。图9 定期闹钟系统键盘电路三、软件设计31主程序流程图开始初始化显示时间NS1按下?YNS2按下?调节时间NNYS1按下?S3按下?YY选取报警声加时调节NNS3按下?S4按下?YY定期加时减时调节NS4按下?Y定期减时图10主程序流程图32定期中断子程序流程图开始N1秒到?Y秒变量加1N60秒到?Y分变量加1,秒变量清零N60分到?Y时变量加1,分变量清零N24时到?Y时变量清零蜂鸣器响Y定期到?
16、N结 束图11定期中断子程序流程图33程序设计 依照程序流程图采用汇编语言进行程序设计,其中主程序可依照系统实现功能划分为如下几种子程序模块。(程序源代码见附录1)(1) 时间调节子程序模块;(2) 闹钟时间设立子程序模块;(3) 蜂鸣器报警子程序模块;(4) 数码管显示子程序模块。四、 系统仿真与调试41 proteus软件仿真使用WAVE软件编辑程序,在仿真设立中选取E6000/T仿真器,选取POD-51仿真头。为以便系统在proteus中进行仿真,选取了7SEG-MPX6-CC-BLUE数字显示屏,并变化了某些I/O连接,然后选取80C51CPU进行汇编程序编辑。通过仿真得知,通过S1、
17、S2、S3和S4四个按键,可以对时间进行修改和闹钟设立,定期时间到能发出报警声,系统非常完善地实现了所有规定功能。42 系统调试将所编程序在KEIL软件里进行编译,编译对的后生成HEX文献。 在AT89C51芯片中加载此文献后,对完毕实物作品进行调试。系统运营后,能精确显示时间,并能通过S1、S2、S3和S4四个按键对时间进行修改和闹钟定期时间设立,定期时间到能发出报警声。五、设计总结与体会设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力重要环节,是对学生实际工作能力详细训练和考察过程。随着科学技术发展日新日异,单片机已经成为当今计算机应用中空前活跃领域,在生活中可
18、以说得是无处不在,作为21世纪大学生来说掌握单片机开发技术是十分重要。通过本次单片机原理及应用设计使我充分结识到了设计重要性和必要性,本次设计使我对已学过基本知识有了更进一步理解,学会了独立思考、独立工作以及相应用所学基本理论分析和解决实际问题能力有了很大提高。此外,本次设计使我实际操作技能得到了训练, 同步也进一步培养了我严谨科学作风。回顾起本次单片机课程设计,从选题到定稿,从理论到实践,可以说得是有苦有甜,但是从中却学到诸多诸多东西,不但巩固了此前所学过知识,并且对单片机原理课外知识也得到了拓展。做过程中,开始确遇到了不少困难问题,例如说芯片管脚不熟悉怎么放置等,同步在这过程中也发现了自己
19、许多局限性之处,对此前所学过知识理解得不够深刻,掌握得不够牢固。 通过单片机设计之后,我不但加深了对单片机理论理解,将理论较好地应用到实际当中去,并且咱们还学会了如何去培养创新精神和严谨科学作风,从而不断地战胜自己,超越自己。更重要是,我在这一设计过程中,学会了坚持不懈,绝不放弃。参照文献1张毅刚.单片机原理及应用.北京:高等教诲出版社,2王幸之.单片机应用系统电磁干扰与抗干扰技术.北京:北京航空航天大学出版社,3何立民.单片机应用技术大全.北京:北京航空航天大学出版社,19944张毅刚.单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,19905谭浩强.单片机课程设计.北京:清华大学出版社
20、,19896余锡纯.单片机原理与接口技术.西安:电子科技大学出版社,7Mak.S,Radford.D.Designconsiderationsforimplementationoflargescaleautomaticmeterreadingsystems.PowerDelivery,IEEETransactionson,Volume10,Issue1,Jan.1995附录1:源程序代码1、 汇编语言程序:;* 引脚及变量定义 * S1 BIT P3.2 ;按键1 S2 BIT P3.3 ;按键2 S3 BIT P3.4 ;按键3 S4 BIT P3.5 ;按键4SPEAKER BIT P2.
21、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 ;按键计数变量1 NUM2 EQU 36H
22、 ;按键计数变量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 TMOD,#01H ;16位计数器 MOV T
23、H0,#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 ;* SETTIME PROGRAM *SETTIME
24、: ;定期设立子程序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 ;显示定期时间LL3: MOV A,NUM2 JZ L
25、L5 ;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 ;显示定期时间 MOV A,NUM2 CJNE A,#2,
26、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 ;判断按键计数与否为1 DEC HOUR2 ;小时定期变量减1 MO
27、V 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 DELAY5 ;延时5MSMSTOP2:JB S2,L
28、3 ;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,S3 JNC K1 ;P3.4=0时转移 MOV A,
29、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,NUM1CJNE A,#3,K2 ;判断按键计数与否为
30、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 ;显示调节时间M3:LCALL DISPLAY1 ;显示调
31、节时间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 ;蜂鸣器报警子程序 CLR SPEAKER ;启动蜂鸣器
32、报警 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 DIV AB MOV E1,A MOV F1,BMOV
33、 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;打开段选锁存器锁存端 CLR DULACLR WELA;关闭位选锁存器锁存端
34、 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,A+DPTR MOV P0,A;显示分钟个位SETB D
35、ULA;打开段选锁存器锁存端 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 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 D