基于单片机的旋转电子钟汇编程序_第1页
基于单片机的旋转电子钟汇编程序_第2页
基于单片机的旋转电子钟汇编程序_第3页
基于单片机的旋转电子钟汇编程序_第4页
基于单片机的旋转电子钟汇编程序_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、新颖的60秒旋转电子钟任务设计一款基于AT89C2051单片机的电子钟。二、设计要求1、基本要求(1) 用4只LED数码管输出显示时和分。(2) 可通过按键设置闹钟功能,且停闹无须手工操作。(3) 可通过按键设置分校时。(4) 月计时误差小于45秒。(5) 写出详细的设计报告。(6) 给出全部电路和源程序。2、发挥部分(1) 用60只LED发光管旋转显示,模拟“秒针”的行走(2) 模拟“秒针”行走的“嘀哒”声。(3) 增加室温检测和显示功能(可与时间交替显示)。增加停(掉)电保护功能。(5) 提高计时精度,使年计时误差小于30秒。(6) 增加日自动校准功能,使得该电子钟“永无误差”(7) 增加

2、红黄绿三色变色装饰。(8) 可通过按键设置一天两闹(比如早晨、中午各一次)新颖的60秒旋转电子钟目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。要知道当 前的时间,必须先开灯,故较为不便。现在市场上也出现了一些电子钟,它以六只LED数码管来 显示时分秒,与传统的以指针显示秒的方式不同,违背了人们传统的习惯与理念,而且这类电子钟 一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家 庭。此外,无论是机械钟、石英钟还是电子钟,都 存在着共同的问题:时间误差。针对以上存在的 问题,我们设计了一款采用LED显示器件显示的电子时钟,有效克服了时钟存

3、在的误差问题,并能在夜间不必其它照明就能看到时间,且 以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。 另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。1系统主要功能电子钟的外观如图1所示。周边60只发光管顺时旋转来显示秒,中间四只LED数码管用于 显示时间,中下方的七只LED灯顺时旋转,供装饰用。其主要功能有:整点报时;四只LED数码管显示当前时分;每隔一秒钟周边的60只LED 发光管旋转一格,装饰用的LED每隔一秒旋转一次。当发生停电事件时,由后备电池供电,系统 进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,

4、同时又保证了 CPU继续计 数,不至于因停电而时钟停止运行。当恢复供电后,系统自动恢复工作状态,不影响计时。图1多功能电子钟外观图2系统的硬件构成及功能电脑钟的原理框图如图2所示。它由以下几个部件组成:单片机89C2051、电源、时 分显 示部件、60秒旋转译码驱动电路。时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示 模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O 口控制。电源部分:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来 得到 +5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。正

5、常情况下电池是不提供电能的,以保证电池的寿命。具体电路参见“新颖的 秒旋转电60 子钟参考电路原理图”图2电子钟系统原理框图2. 1 AT89C2051单片机及其引脚说明AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字 节可编程FLASH存储器的低电压、高性能COM八位微处理器,与Intel MCS-51系列单片机的 指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制 系统,省去了外部的RAM ROM和接口器件,减少了硬件开销,节省了成本,提

6、高了系统的性价 比。AT89C2051是一个有20个引脚的芯片,引脚配置如图3所示。与8051相比,AT89C2051减 少了两个对外端口(即P0 P2 口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。 AT89C2051芯片的20个引脚功能为:CD40I 7昨rqi测Q5 1J”0Vlri(RXDifijDCI193P1.7 3P1.6U1215R心 CTALIt*|f 1P15加-TUlkXTALJCs1 JPUQMO畑匚16II13JPI J02 斗13一圣石购5JPLbAINI)OS512c匸 7(W14Jf ZIPUXAIQ7 11竝匸§13勵P3.7037-J

7、(HJKJC12CNDCi 4715y9QH图3 AT89C2051引脚配置图4CD4017引脚图VCC电源电压。GND接地。RST复位输入。当RST变为高电平并保持2个机器周期时,所有I/O弓|脚复位至XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡放大器的输出。P1 口 8位双向I/O 口。引脚P1.2P1.7提供内部上拉,当作为输入并被外部下拉为低电平 时,它们将输出电流,这是因内部上拉的缘故。P1.0WP1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AINO)和反向输入(AIN1 ) , P1 口输出缓冲器能接收 20mA电流,并能直接驱动LED

8、显示器;P1 口引脚写入“ T后,可用作输入。在闪速编程与编 程校验期间,P1 口也可接收编码数据。P3 口弓脚P3.0P3.5与P3.7为7个带内部上拉的双向I/O引脚。P3.6在内部已与片内比 较器输出相连,不能作为通用I/O引脚访问。P3 口的输出缓冲器能接收20mA的灌电流;P3 口写入“ T后,内部上拉,可用输入。P3 口也可用作特殊功能口,其功能见表1。 P3 口同时也可为闪速存储器编程和编程校验接收控制信号。表1 P3 口特殊功能P3 口引脚特殊功能P3.0RXD (串行输入口)P3.1TXD (串行输出口)P3.2INTO (外部中断0)P3.3而i (外部中断1)P3.4T0

9、 (定时器0外部输入)P3.5T1 (定时器1外部输入)2. 2 60秒旋转译码驱动原理按常规传统设计,需60进制译码驱动电路才能实现60秒旋转译码驱动,若用六片 十进制计 数译码器构成六十进制计数译码电路,则电路连线多(需要120根连线),硬件电路庞大,开销大。为此,我们巧妙地采用了两片CD4017进行六十进制计数译码,实现60秒旋 转译码驱动。既减少了电路的复杂程度又可降低了成本。图4为CD4017功能引脚图,图5为其时序图。图5CD4017时序图CD4017集成电路是十进制计数/时序译码器,共有10个译码输出Q0-Q9海个译码 输出通常处于低电平,且在时钟脉冲由低到高的上升沿输出高电平;

10、每个高电平输出维持1个时钟 周期;每输入10个时钟脉冲,输出一个进位脉冲,因此进位输出信号可作为下一级计数器的时钟信 号。在清零输入端(R)加高电平或正脉冲时,只有输出端Q0为高电平,其余各输出端均为低电 平 “ 0” O为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二极管串联限流 电阻后接地。当译码端口 Q0- Q9中任一端口为高电平,则对应的发光二极管 点亮,如图6 (左) 所示。仔细考查CD4017的功能,可发现其10个输出的高电平是相互排斥的,即任一时刻只有一 只发光二极管点亮,因此可将图6(左)电路迸一步简化为如图6 (右)所示,从而简化电路设计。丿 *3V1

11、KI K 1 HQ3Qc十只限济屯图6 CD4017控制发光二极管原理图在本电子钟设计中,每秒点亮一个发光二极管,循环点亮一周共需60个发光二极管,若用上述的6片CD4017实现驱动,显然电路复杂。为此我们选用两片CD4017和一片6反相器,采用“纵横双译码”技术,巧妙地实现60秒旋转译码驱动,其中一片接成10进制,一片接成6进制,实现6X10=60的功能,具体连接方法如图7所示oLD10UJ60LV20图7发光二极管“纵横双译码”循环点亮LED原理图将周期为1秒的输入脉冲作为其中一片CD4017勺时钟脉冲,而此片的级联进位输出端(Q)作为另一片的时钟输入,并将Q6与复位端相连。在两片译码输出

12、端交叉点上接入发光二极 管,构成6X 10矩阵。根据CD4017时序特点,在初始状态,作为高位(纵)的CD4017译码器 输出端口 Q0处于高平,经反相器反相后为低电平。当作为彳氐位(横)的CD4017译码器输出端口 QLQ9依次输出高电平后,则对应的二极管LD1LD10依次点亮;此后由于Q端的进位,高位 CD4017译码输出端口 Q1输出高电平,反相后输出低 电平,当低位的CD4017译码输出端口 Q(Q9依次输出高电平后,二极管LD11LD20依次点亮。如此往复,直至高位Q6向复位端输 入高电平,CD4017复位,60秒循环点亮重新开始。2. 3时分显示部件由于系统要显示的内容较简单,显示

13、量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图8所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一 起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“ 8”的 各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻f row aRx«BnTRx8图8 LED数码管结构原理图众所周知,LED显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低

14、成本和功耗,软件译码的另一优势还在于比硬件译码 有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构 原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“ 8”字形字符的7 段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。各段码位与 显示段的对应尖系如表2。表2各段码位的对应矢系段码位D7D6D5D4D3D2D1DO显示段:dpPgfePd :cba需说明的是当用数据口连接LED数码管adp引脚时,不同的连接方法,各段码位与显示段 有不同的对应尖系。通常数据口的DO位与a段连接,D1位与b段连接,D7位与dp段连

15、接, 如表2所示,表3为用于LED数码管显示的十六进制数和空白字符与P的显示段码。表3 LED显示段码字型共阳极段共阴极段字型共阳极段共阴极段0COH3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79 H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:(1 )本表所列各字符的显示段码均为小数点不亮的情况(2) “空白,,字符即没有任何显示。根据AT89C205仲片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C205啲P1.0

16、P1.7分别与共阳数码管的ag及dp相连,高电平的位对应的LED数码 管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0 口输出不同的段码,就可以控制 数码管显示不同的字符。例如:当P0 口输出的段码为1100 0000,数码管显示的字符为0。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位LED数码管 的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0 口实现;而每一位的公共端,即LED数码管的“位控”,则由P3 口控制。这种连接方式由 于多位字段线连在一起,因此,要想显

17、示不同的内容,必然要采取轮流显示的方式,即在某一瞬 间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输 出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统 中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开尖”状态。系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示,后两只用于分 的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只LED数码管倒置摆放,这样就形成了两个很自然的闪烁点。与此同时,为了能使两点显示 能够形象的表示时钟“秒”的变化,设计时,将两个点

18、由P17单独控制,每隔一秒使P1.7发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。3系统的软件构成及功能本系统的软件系统主要可分为主程序和定时器中断程序两大模块。在程序过程中,加入了抗干 扰措施。下面对部分模块作介绍。主程序的功能是完成系统的初始化,在显示时间之前,对系统是否停电状态进行检测;若停 电,将系统进入低功耗状态,用电池电压维持单片机计时工作,但此时不显示 时间,用节省用电; 若不停电,则将时分发送显示。程序流程如图9所示。3. 2中断程序设计中断程序(如图10所示)完成时间计数,时间调整,误差消除等功能。中断采用 AT89C2051内部TO中断实现,定时时间为125m

19、s当时间到达125msX 8,即1分钟时,分 计数 缓冲器MINBUFFE增加1倒达1小时,则时计数缓冲器HOURBUFFER加1,并将分、时的个 位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60mi n、24h时,则对它们清零,以便从新计数。在中断设计中,还通过软件实现了累计误差消除功能,使 整个系统时间的精确度得到保证。系统参数初始化时间显示、等待定时中断-二二期舷时I'一A时间调整子程序肃二定闹设置子程用 n H-JY 时I'一发“嘀” 一声时间至I一_闹铃一分钟图9系统主程序流程图图10定时中断程序4结束语上述电子钟,无论在外观上还是功能上都实现了较为完

20、善的设计。特别值得一提的是本系统在 精度上的设计,突破传统的方法,对可能产生的积累误差采用“抵消法”而有效地降低了时间误,从 差。由于计数时产生的积累误差所导致的时间误差,是所有的电子计时系统共同存在的问题。但在 目前市场上的电子时钟产品,如计算机中的时钟,手机中的时钟等并没有有效的采取消除误差的措 施。本系统设计的消除积累误差来减少时间误差的软件方法,并不需要任何的硬件,因此在不增加 成本的情况下,可以普遍用于所有的电子时钟产品。新颖60秒旋转电子钟材料清单名称型号数量单片机AT89C20511数字集成芯片CD40172数字集成芯片CD40691超咼亮数码管共阳尺寸0.5inch4咼亮发光二

21、极管3红、透明13咼亮发光二极管3绿、透明50普通二极管IN40014普通二极管IN41482稳压二极管C4V7 ( 4.7V)1三极管90125三极管90131轻触按键小(尺寸 6 x 6mm X 5.5 )3蜂鸣器5 V1晶振6M (小体积)1底座14脚1底座16脚2底座20脚1底座40脚1电阻220欧姆,1/8瓦8电阻4.7K, 1/8 瓦5电阻100欧姆,1/8瓦1电阻10k, 1/8 瓦4电阻270欧姆,1/8瓦1电容100微法/25伏2电容220微法/25伏1电容30P瓷片3电容104 (0.1 微法)3变压器5 V/100 M A1电源线150cm1固定脚铜3套PCB线路板直径门

22、.51新颖的60秒旋转电子钟参考电路原理图£电子钟PCB实物图A28816JLMOOu-6nOU3SU-PB° 104104 <>SU-PB30p SPEfiKgR鼬丿8.ELB81a 6 Q仪器设备: 单片机仿真器(带AT89C2051仿真头); 焊接实验工具箱一套; 5V电源(有变压器时可不用); 制板设备(厂家制板时可不用)。电子钟整体实物图60秒旋转电子钟部分参考程序清单ALARMHBUFF1 EQU 76H;闹铃时间的时个位计时绶冲ALARMMBUFF2 EQU 75H;闹铃时间的分十位计时绶冲ALARMMBUFF1 EQU 74H;闹铃时间的分个位计

23、时绶冲HBUFF2 EQU 73H;时十位计时绶冲HBUFF1 EQU 72H;时个位计时绶冲MBUFF2 EQU 71H;分十位计时绶冲MBUFF1 EQU 70H;分个位计时绶冲DPEQU 6FH;控制数码管点的亮暗NUMEQU 78H;刖四秒还是后四秒计数SBUFFEQU 79H;秒十进制计时绶冲(低四位对应个位,咼四位对应十位)MBUFFEQU 7AH;分十进制计时绶冲HBUFFEQU 7BH;时十进制计时绶冲ALARMHBUFF2 EQU 77H闹铃时间的时十位计时绶冲ALARMMBUFF EQU 7CH;ALARMHBUFF EQU 7DH;NUMT1EQU 67H;闹铃时间的分十

24、进制计时绶冲闹铃时间的时十进制计时绶冲用于控制时间调整时按键P3.2 一次按下时,计数器T1中断 的次数NUMT2EQU 68H;用于控制时间调整时按键P3.3 一次按下时,计数器T1中断 的次数KEYNUMT1 EQU 69H;KEYNUMT2 EQU 6AH;ST0REKEYNUMT2 EQU 6BH ;用于存储NUMT1B经计数到第几个半秒用于存储NUMT1B经计数到第几个半秒用于存储当前KEYNUMT的值,以和下次做比较,看是否 有变化ST0REKEYNUMT1 EQU 6CH :用于存储当刖KEYNUMT的值,以和下次做比较,看是否有变化ORG 0000HAJMP STARTORG

25、OOOBHMOV THO,#OBH;MOV TLO , R4AJMP INTERTOORG 001BHAJMP INTERT1ORG 0040HSTART: MOV NUMT1 , #00HMOV NUMT2 , #00HMOV KEYNUMT1 , #00HMOV KEYNUMT2 , #00HMOV ST0REKEYNUMT2 , #00HMOV ST0REKEYNUMT1 , #00H设置计数初值,R4用来存储低位的初值MOV NUM , #8MOV DPTR,#TABMOV ALARMHBUFF,#18HMOV ALARMMBUFF , #55HMOV ALARMHBUFF2, #01

26、HMOV ALARMHBUFF1,#08HMOV ALARMMBUFF2,#05HMOV ALARMMBUFF1 , #05HMOV HBUFF2,#01H :MOV HBUFF1, #08HMOV MBUFF2 , #05HMOV MBUFF1 , #03HMOV HBUFF ,#18HMOV MBUFF , #53HMOV SBUFF,#3CH;MOV TCON , #05H;MOV TMOD,#11H ;MOV THO,#0BH ;MOV TLO , #0DBHMOV TH1 , #3CH ;T1MOV TL1 , #0B0HMOV IE , #82H ;SETB PTO ;T0SETB

27、 TRO ;SETB P3.2SETB P3.3START1:MOVA,HBUFF;SUBB A , #7HJC START2MOV A,HBUFFSUBB A, #21HJNC START2ACALL DISPLAYACALLZDBSAJMP START3START2: ACALL NIGHTDISPLAYSTART3: MOV A ,ALARMHBUFFCJNE A , HBUFF , START4 MOV A , ALARMMBUFF CJNE A ,MBUFF ,START4 MOV C, DP ;MOV P3.2, CMOV A , SBUFF JNZ START1 ;;置闹铃时间初

28、始值为18:55置闹钟时间为18:53置初始秒为60,计时时减 下降沿触发初始化定时器,T0 ,T1 16位计时设置计数初值,125ms计时置初值'进行100ms计时,用于调整时间开T0中断中断优先级最高允许T0计数显示时,7点以前及21点以后亮度调暗检测是否是定闹时间若是定闹时间,则利用dp的值来决定蜂鸣若还没到1分钟,则继续蜂鸣SETB P3.2START4: JNB P3.2,ADJUSTTIME1 ;循环等待中断并检测是否键按下,若是,则进入相应程ADJUSTTIME1:NOPMOV KEYNUMT1 ,#00HMOV TH1 ,#3CH;T1MOV TL1 , #0B0HSE

29、TBET1;SETBPT1;SETBTR1;MOV STOREKEYNUMT1 , KEYNUMT1TIME1_1:ACALL DISPLAYMOV A, KEYNUMT1CJNE A , STOREKEYNUMT1 ,TIME1_2 ;置初值,进行100ms计时,用于调整时间开T1中断设T1中断优先级最高允许T1计时存储当前次KEYNUMT的值若当前KEYNUMT的值与上一次的值不等,则时间 加1分,否则继续循环,等等至半分钟AJMPTIME1_3TIME1_2:MOV STOREKEYNUMT1 , KEYNUMT1ACALLADDBUFFO;加1后存储当前的KEYNUMT的值 分加1TI

30、ME1_3:JNBP3.2,TIME1_1若P3.2已尖,则退出增时,否则继续循环CLR ET1CLR PT1CLR TR1AJMP START1时间增1分+*序JNB P3.3,ADJUSTTIME2AJMP START1AJMP START1*intO中断子程序* 料心 *ADDBUFFO:MOV A , MBUFF ;ADD A , #1DA AMOV MBUFF,AANL A,#0FHMOV MBUFF1 , AMOV A, MBUFF若按键小于1s,则分增1SWAP AANL A,#OFHMOV MBUFF2 , AMOV A, MBUFFCJNEA,#60H, ADDBUFF1MO

31、V MBUFF , #00HMOV MBUFF2 , #00H时增1若没到24小时,则不必初值置0MOV MBUFF1 , #00HMOV A, HBUFFADD A , #1DA AMOV HBUFF , AANLA,#0FHMOV HBUFF1 , AMOV A, HBUFFSWAP AANL A,#0FHMOV HBUFF2 , AMOV A, HBUFFCJNEA,#24H, ADDBUFF1MOV HBUFF , #00HMOV HBUFF2 , #00HMOV HBUFF1 , #00H ADDBUFF1:RET it:*inti 中断子程序 itADJUSTTIME2: NOPA

32、CALLDL100MSMOV C , P3.3JC TIME2_6 :如果(P3.3按键 100ms以上)则不做处理MOV KEYNUMT2 , #00H ;否则进入定闹设置TIME2_1:NOPMOV TH1 ,#3CH ;T1MOV TL1 , #0B0HSETBET1;SETBPT1;SETBTR1;TIME2 2:ACALL ALARMDISPLAYMOV STOREKEYNUMT2 , KEYNUMT2 ;记录当前NUMT2的数据,以看下次有没改变置初值,进行100ms计时,用于调整时间开T1中断设T1中断优先级最高允许T1计时MOV A, KEYNUMT2CJNE A , STOR

33、EKEYNUMT2 ,TIME2_3AJMPTIME2 4TIME2 3: MOV STOREKEYNUMT2 . KEYNUMT2MOVA, ALARMMBUFFADD A , #1DA AMOV ALARMMBUFF , AANLA , #0FHMOV ALARMMBUFF1 , A MOVA , ALARMMBUFF SWAP AANLA , #0FHMOV ALARMMBUFF2 , A MOVA , ALARMMBUFF CJNE A , #60H , TIME2_4MOV ALARMMBUFF , #00HMOV ALARMMBUFF2 , #00HMOV ALARMMBUFF1

34、, #00HMOV A , ALARMHBUFFADD A , #1DA AMOV ALARMHBUFF , AANLA , #0FHMOV ALARMHBUFF1 , A MOVA , ALARMHBUFF SWAP AANLA , #0FHMOV ALARMHBUFF2 , A MOV A , ALARMHBUFF CJNE A , #24H , TIME2_4 ;MOV ALARMHBUFF , #00HMOV ALARMHBUFF2 , #00HMOV ALARMHBUFF1 , #00H TIME2_4:NOPJNB P3.3,TIME2_2 ;CLR ET1CLR TR1MOV K

35、EYNUMT2 , #00HMOV NUMT2 , #00HMOV R2,#10若按键小于1s,则分增1若没到24小时,则初值不必置0若按键已经未按,则退岀循环TIME2_7:MOV R1 , #200TIME2_5:ACALL ALARMDISPLAY直到p3.3 20s钟内都是未按,此时复原数据,即退出设置ACALL DL1MSJNB P3.3 , TIME2_1DJNZ R1 , TIME2_5DJNZ R2 , TIME2 7 TIME2 6:CLR ET1CLR PT1CLR TR1LJMP START1 *T j【断 T彳呈* *INTERT1:NOPMOVTH1 ,#3CH ;T

36、1MOVTL1 ,#0B0HPUSHACCPUSHPSWCLRETOCLRET1 ;MOVA , NUMT1INCAMOVNUMT1 , A;CJNEA, #5, INTERT1NEXT;MOVA .KEYNUMT1INCAMOVKEYNUMT1,AMOVNUMT1 , #00H :NUMT1INTERT1NEXT:NOPMOV A , NUMT2 ;置初值,进行100ms计时,用于调整时间INCAMOV NUMT2 , ACJNE A, #5,ENDINTERT1 ;MOV A, KEYNUMT2INCA矢T1中断中断一次则相应的增加NUMT1每中断五次,即半秒,都增加KEYNUMT1已经是

37、5 了,则处理过KEYNUMT后,重置NUMT1中断一次则相应的增加NUMT1每中断五次'即半秒'都增加 KEYNUMT1MOV KEYNUMT2 , AMOV NUMT2 , #00H ;NUMT1ENDINTERT1:SETB ET1SETB ETOPOP ACCPOP PSWRETI已经是5 T,则处理过KEYNUMT后重置NUMT1%!* %!*整点报时*ZDBS: MOV A , MBUFF;在整点时,响半秒JNZZDBSENDMOVA,SBUFFCJNE A , #3CH , ZDBSENDCLR P3.2ACALL DLOFIVESETB P3.2ZDBSEND:

38、RETJ;*定闹显示子程序*JALARMDISPLAY: MOV P1 ,#OFFH ;使时的十位亮 MOV A , ALARMHBUFF2MOVC A , A+DPTRSETB ACC.7MOV P1 , ACLR P3.0ACALL DL1MSSETB P3.0MOV A , ALARMHBUFF1 ;使时的个位亮 MOVC A , A+DPTRMOVC,DPMOV ACC.7 , CMOV P1 , ACLR P3.1ACALL DL1MSSETB P3.1MOV A ,ALARMMBUFF2 ;使分的十位亮 MOVC A , A+DPTRMOVC,DPMOV ACC.7 , CMOV

39、P1 , ACLR P3.4ACALL DL1MSSETB P3.4MOV A , ALARMMBUFF1 ;使时的个位亮 MOVC A , A+DPTRSETB ACC.7MOVP1,ACLR P3.5ACALL DL1MSSETB P3.5RET*晚上显示子程序 ifNIGHTDISPLAY: NOPMOV P1 ,#0FFHMOV A , HBUFF2MOVC A , A+DPTRSETB ACC.7MOV P1 , ACLR P3.0ACALLDL1MSSETB P3.0ACALLDL1MSACALLDL1MSMOV A , HBUFF1MOVC A , A+DPTRMOV C,DPMOV ACC.7 , CMOV P1 , ACLR P3.1ACALLDL1MSSETB P3.1ACALLDL1MSACALLDL1MSMOV A ,MBUFF2MOVC A , A+DPTRMOV C,DPMOV ACC.7 , CMOV P1 , ACLR P3.4ACALLDL1MSSETB P3.4ACALLDL1MSACALLDL1M

温馨提示

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

评论

0/150

提交评论