应用案例1新颖60秒旋转电子钟

上传人:dja****22 文档编号:243362479 上传时间:2024-09-21 格式:PPT 页数:58 大小:1.90MB
返回 下载 相关 举报
应用案例1新颖60秒旋转电子钟_第1页
第1页 / 共58页
应用案例1新颖60秒旋转电子钟_第2页
第2页 / 共58页
应用案例1新颖60秒旋转电子钟_第3页
第3页 / 共58页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理及应用,课程设计实例,-,余水宝,新颖,60,秒旋转电子钟课程设计,单片机原理及应用,课程设计实例,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,新颖,60,秒,LED,旋转电子钟,余 水 宝,2007,年,5,月,1,任 务 书,设计一款基于,AT89C2051,单片机的电子钟。,设计基本要求, 用,4,只,LED,数码管输出显示时和分;, 可通过按键设置闹钟功能,自动停闹;, 闹钟时间的设置可增可减;, 月计时误差小于,45,秒;, 写出详细的设计报告;, 给出全部电路和源程序。,2,发挥部分要求, 用,60,只,LED,发光管旋转显示,模拟“秒针”的行走;, 模拟“秒针”行走的“嘀哒”声;, 增加室温检测和显示功能(与时间交替显示,每,5,分钟显示室温约,30,秒);, 增加停(掉)电保护功能;, 提高计时精度,使年计时误差小于,30,秒;, 系统限定只用“复位”、“定闹增”、“定闹减”三个按键,可通过按键设置一天两闹(比如早晨、中午各一次)。,3,选题背景,目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。要知道当前的时间,必须先开灯,故较为不便。现在市场上也出现了一些电子钟,它以六只,LED,数码管来显示时分秒,违背了人们指针式的传统习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。针对以上存在的问题,我们设计了一款采用,LED,显示器件显示的电子时钟,解决了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以,60,只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。另加七只装饰用的,LED,灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。,4,1,系统主要功能,电子钟的外观如图,1,所示。周边,60,只发光管顺时旋转来显示秒,中间四只,LED,数码管用于显示时间,中下方的七只,LED,灯顺时旋转,供装饰用。,其主要功能有:,整点报时;,四只,LED,数码管显示当前时分;,每隔一秒钟周边的,60,只,LED,发光管旋转一格;, 当发生停电事件时,由后备电池供电,系统进入低功耗状态,所,有显示部件停止显示,这样即延长了电池的寿命,同时又保证了,CPU,继续计数,不至于因停电而时钟停止运行。,当恢复供电后,系统自动恢复工作状态,不影响计时。,5,2,系统的硬件构成及功能,电子钟的原理框图如图,2,所示。它由以下几个部件组成:单片机,89C2051,、电源、时分显示部件、,60,秒旋转译码驱动电路。,时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示模块、,60,秒旋转译码驱动电路以及显示驱动都通过,89C2051,的,I/O,口控制。,电源:电源部分有二部分组成。一部分是由,220V,的市电通过变压、整流稳压来得到,+5V,电压,维持系统的正常工作;另一部分是由,3V,的电池供电,以保证停电时正常计时。正常情况下电池是不提供电能的,以保证电池的寿命。具体电路参见“新颖的,60,秒旋转电子钟参考电路原理图”。,6,图,2,电子钟系统原理框图,7,2,1 AT89C2051,单片机及其引脚说明,AT89C2051,单片机是,51,系列单片机的一个成员,是,8051,单片机的简化版。内部自带,2K,字节可编程,FLASH,存储器的低电压、高性能,COMS,八位微处理器,与,Intel MCS-51,系列单片机的指令和输出管脚相兼容。由于将多功能八位,CPU,和闪速存储器结合在单个芯片中,因此,,AT89C2051,构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的,RAM,、,ROM,和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。,AT89C2051,是一个有,20,个引脚的芯片,引脚配置如图,3,所示。与,8051,相比,,AT89C2051,减少了两个对外端口(即,P0,、,P2,口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。,AT89C2051,芯片的,20,个引脚功能为:,8,图,3 AT89C2051,引脚配置,VCC,电源电压;,GND,接地;,RST,复位输入。当,RST,变为高电平并保持,2,个机器周期时,所有,I/O,引脚复位至“,1”,;,XTAL1,反向振荡放大器的输入及内部时钟工作电路的输入;,XTAL2,来自反向振荡放大器的输出。,9,P1,口,8,位双向,I/O,口。引脚,P1.2,P1.7,提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。,P1.0,和,P1.1,需要外部上拉,可用作片内精确模拟比较器的正向输入(,AIN0,)和反向输入(,AIN1,),,P1,口输出缓冲器能接收,20mA,的灌电流,并能直接驱动,LED,显示器;,P1,口引脚写入“,1”,后,可用作输入。在闪速编程与编程校验期间,,P1,口也可接收编码数据。,P3,口引脚,P3.0,P3.5,与,P3.7,为,7,个带内部上拉的双向,I/0,引脚。,P3.6,在内部已与片内比较器输出相连,不能作为通用,I/O,引脚访问。,P3,口的输出缓冲器能接收,20mA,的灌电流;,P3,口写入“,1”,后,内部上拉,可用作输入。,P3,口也可用作特殊功能口,其功能见表,1,。,P3,口同时也可为闪速存储器编程和编程校验接收控制信号。,10,P3,口引脚,特殊功能,P3.0,RXD,(串行输入口),P3.1,TXD,(串行输出口),P3.2,(外部中断,0,),P3.3,(外部中断,1,),P3.4,T0,(定时器,0,外部输入),P3.5,T1,(定时器,1,外部输入),表,1 P3,口特殊功能,11,2.2 60,秒旋转译码驱动原理,按常规传统设计,需,60,进制译码驱动电路才能实现,60,秒旋转译码驱动,若用六片十进制计数译码器构成六十进制计数译码电路,则电路连线多(需要,120,根连线),硬件电路庞大,开销大。为此,我们巧妙地采用了两片,CD4017,进行六十进制计数译码,实现,60,秒旋转译码驱动。既减少了电路的复杂程度又可降低了成本。图,4,为,CD4017,功能引脚图,图,5,为其时序图。,12,图,5 CD4017,时序图,图,4 CD4017,引脚图,13,CD4017,集成电路是十进制计数,/,时序译码器,共有,10,个译码输出,Q0,Q9,;每个译码输出通常处于低电平,且在时钟脉冲由低到高的上升沿输出高电平;每个高电平输出维持,1,个时钟周期;每输入,10,个时钟脉冲,输出一个进位脉冲,因此进位输出信号可作为下一级计数器的时钟信号。在清零输入端(,R,)加高电平或正脉冲时,只有输出端,Q0,为高电平,其余各输出端均为低电平“,0”,。,为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二极管串联限流电阻后接地。当译码端口,Q0,Q9,中任一端口为高电平,则对应的发光二极管点亮,如图,6,所示。,14,仔细考查,CD4017,的功能,可发现其,10,个输出的高电平是相互排斥的,即任一时刻只有一只发光二极管点亮,因此可将图,6,电路进一步简化为如图,7,所示,从而简化电路设计。,图,6 CD4017,控制,LED,原理图,图,7,优化后控制,LED,原理图,15,在本电子钟设计中,每秒点亮一个发光二极管,循环点亮一周共需,60,个发光二极管,若用上述的,6,片,CD4017,实现驱动,显然电路复杂。为此我们选用两片,CD4017,和一片,6,反相器,采用“纵横双译码”技术,巧妙地实现,60,秒旋转译码驱动,其中一片接成,10,进制,一片接成,6,进制,实现,610=60,的功能,具体连接方法如图,8,所示。,16,图,8,发光二极管“纵横双译码”循环点亮,LED,原理图,17,将周期为,1,秒的输入脉冲作为其中一片,CD4017,的时钟脉冲,而此片的级联进位输出端(,QC,)作为另一片的时钟输入,并将,Q6,与复位端相连。在两片译码输出端交叉点上接入发光二极管,构成,610,矩阵。根据,CD4017,时序特点,在初始状态,作为高位(纵)的,CD4017,译码器输出端口,Q0,处于高平,经反相器反相后为低电平。当作为低位(横)的,CD4017,译码器输出端口,Q0,Q9,依次输出高电平后,则对应的二极管,LD1,LD10,依次点亮;此后由于,QC,端的进位,高位,CD4017,译码输出端口,Q1,输出高电平,反相后输出低电平,当低位的,CD4017,译码输出端口,Q0,Q9,依次输出高电平后,二极管,LD11,LD20,依次点亮。如此往复,直至高位,Q6,向复位端输入高电平,,CD4017,复位,,60,秒循环点亮重新开始。,18,2.3,时分显示部件,由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。,LED,有共阴极和共阳极两种。如图,8,所示。,二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入,+5V,的电压。一位显示器由,8,个发光二极管组成,其中,7,个发光二极管构成字型“,8”,的各个笔划(段),a,g,,另一个小数点为,dp,发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段,LED,不被损坏,需外加限流电阻。,19,图,9 LED,数码管结构原理图,20,众所周知,,LED,显示数码管通常由硬件,7,段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从,LED,数码管结构原理可知,为了显示字符,要为,LED,显示数码管提供显示段码,组成一个“,8”,字形字符的,7,段,再加上,1,个小数点位,共计,8,段,因此提供给,LED,数码管的显示段码为,1,个字节。各段码位与显示段的对应关系如表,2,。,段码位,D7,D6,D5,D4,D3,D2,D1,D0,显示段,dp,g,f,e,d,c,b,a,表,2,各段码位的对应关系,21,字型,共阳段码,共阴段码,字型,共阳段码,共阴段码,0,C0H,3FH,9,90H,6FH,1,F9H,06H,A,88H,77H,2,A4H,5BH,B,83H,7CH,3,BOH,4FH,C,C6H,39H,4,99H,66H,D,A1H,5EH,5,92H,6DH,E,86H,79H,6,82H,7DH,F,84H,71H,7,F8H,07H,空白,FFH,00H,8,80H,7FH,P,8CH,73H,表,3 LED,显示段码,本表所列各字符的显示段码均为小数点不亮的情况。,22,根据,AT89C2051,单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将,AT89C2051,的,P1.0,P1.7,分别与共阳数码管的,a,g,及,dp,相连,高电平的位对应的,LED,数码管的段暗,低电平的位对应的,LED,数码管的段亮,这样,当,P0,口输出不同的段码,就可以控制数码管显示不同的字符。例如:当,P0,口输出的段码为,1100 0000,,数码管显示的字符为,0,。,数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位,LED,数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过,P0,口实现;而每一位的公共端,即,LED,数码管的“位控”,则由,P3,口控制。,23,这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过,PNP,三极管的导通与截止来控制,即三极管处于“开关”状态。,系统的时分显示部件由,4,只,7,段共阳,LED,数码管构成,前两只用于时的显示,后两只用于分的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只,LED,数码管倒置摆放,这样就很巧妙地形成了两个很自然的闪烁点。与此同时,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两个点由,P1.7,单独控制,每隔一秒使,P1.7,发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。,24,3,系统的软件构成及功能,本系统的软件系统主要可分为主程序和定时器中断程序两大模块。在程序过程中,加入了抗干扰措施。下面对部分模块作介绍。,3,1,系统主程序设计,主程序的功能是完成系统的初始化,在显示时间之前,对系统是否停电状态进行检测;若停电,将系统进入低功耗状态,用电池电压维持单片机计时工作,但此时不显示时间,用节省用电;若不停电,则将时分发送显示。程序流程如图,9,所示。,3,2,中断程序设计,中断程序,(,如图,10,所示,),完成时间计数,时间调整,误差消除等功能。中断采用,AT89C2051,内部,T0,中断实现,定时时间为,125ms,,当时间到达,125ms8,即,1,分钟时,分计数缓冲器,MINBUFFER,增加,1,,到达,1,小时,则时计数缓冲器,HOURBUFFER,增加,1,,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达,60min,、,24h,时,则对它们清零,以便从新计数。在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到保证。,25,图,10,系统主程序流程图,26,图,11,定时中断程序,27,4,结束语,上述电子钟,无论在外观上还是功能上都实现了较为完善的设计。特别值得一提的是本系统在精度上的设计,突破传统的方法,对可能产生的积累误差采用“抵消法”,从而有效地降低了时间误差。,由于计数时产生的积累误差所导致的时间误差,是所有的电子计时系统共同存在的问题。但在目前市场上的电子时钟产品,如计算机中的时钟,手机中的时钟等并没有有效的采取消除误差的措施。本系统设计的消除积累误差来减少时间误差的软件方法,并不需要任何的硬件,因此在不增加成本的情况下,可以普遍用于所有的电子时钟产品。,28,名称,型号,数量,单片机,AT89C2051,1,数字集成芯片,CD4017,2,数字集成芯片,CD4069,1,超高亮数码管,共阳 尺寸,0.5inch,4,超高亮发光二极管,直径,3,红、透明,13,超高亮发光二极管,直径,3,绿、透明,50,普通二极管,IN4001,4,普通二极管,IN4148,2,稳压二极管,C4V7( 4.7V),1,三极管,9012,5,三极管,9013,1,新颖,60,秒旋转电子钟器件,清单,29,新颖,60,秒旋转电子钟器件清单,名称,型号,数量,轻触按键,小(尺寸,6,6mm,5.5,),3,蜂鸣器,5 V,1,晶振,6M,(小体积),1,底座,14,脚,1,底座,16,脚,2,底座,20,脚,1,底座,40,脚,1,电阻,220,欧姆,,1/8,瓦,8,电阻,4.7K,,,1/8,瓦,5,30,名 称,型号,数量,电阻,100,欧姆,,1/8,瓦,1,电阻,270,欧姆,,1/8,瓦,2,电容,100,微法,/25,伏,2,电容,220,微法,/25,伏,1,电容,30P,瓷片,3,电容,104,(,0.1,微法),3,变压器,5 V/100 M A,1,电源线,150cm,1,固定脚,铜,3,套,PCB,线路板,直径,11,5,1,热缩管,直径,2,0.2,米,新颖,60,秒旋转电子钟器件清单,31,32,电子钟电源,33,新颖,60,秒,LED,旋转,电 子 钟,正 面 图,34,新颖,60,秒,LED,旋转,电 子 钟,反 面 图,35,新颖,60,秒,LED,旋转,电 子 钟,显示温度,36,新颖,60,秒,LED,旋转,电 子 钟,夜间靓姿,37,新颖,60,秒旋转,电子钟实物,2,38,60,秒旋转电子钟部分参考程序清单,ALARMHBUFF2 EQU 77H ;,闹铃时间的时十位计时绶冲,ALARMHBUFF1 EQU 76H ;,闹铃时间的时个位计时绶冲,ALARMMBUFF2 EQU 75H ;,闹铃时间的分十位计时绶冲,ALARMMBUFF1 EQU 74H ;,闹铃时间的分个位计时绶冲,HBUFF2 EQU 73H ;,时十位计时绶冲,HBUFF1 EQU 72H ;,时个位计时绶冲,MBUFF2 EQU 71H ;,分十位计时绶冲,MBUFF1 EQU 70H ;,分个位计时绶冲,DP EQU 6FH ;,控制数码管点的亮暗,NUM EQU 78H ;,前四秒还是后四秒计数,SBUFF EQU 79H ;,秒十进制计时绶冲,(,低四位对应个位,,高四位对应十位,),39,MBUFF EQU 7AH ;,分十进制计时绶冲,HBUFF EQU 7BH ;,时十进制计时绶冲,ALARMMBUFF EQU 7CH ;,闹铃时间的分十进制计时绶冲,ALARMHBUFF EQU 7DH ;,闹铃时间的时十进制计时绶冲,NUMT1 EQU 67H ;,用于控制时间调整时按键,p3.2,一次按 下时,计数器,T1,中断的次数,NUMT2 EQU 68H ;,用于控制时间调整时按键,p3.3,一次按下时,计数器,T1,中断的次数,KEYNUMT1 EQU 69H ;,用于存储,NUMT1,已经计数到第几个半秒,KEYNUMT2 EQU 6AH ;,用于存储,NUMT1,已经计数到第几个半秒,STOREKEYNUMT2 EQU 6BH ;,用于存储当前,KEYNUMT1,的值,以 和下次做比较,看是否有变化,STOREKEYNUMT1 EQU 6CH ;,用于存储当前,KEYNUMT2,的值,以和下次做比较,看是否有变化,40,ORG 0000H,AJMP START,ORG 000BH,MOV TH0 , #0BH ;,设置计数初值,R4,用来存储低位的初值,MOV TL0 , R4,AJMP INTERT0,ORG 001BH,AJMP INTERT1,ORG 0040H,START: MOV NUMT1 , #00H,MOV NUMT2 , #00H,MOV KEYNUMT1 , #00H,MOV KEYNUMT2 , #00H,MOV STOREKEYNUMT2 , #00H,MOV STOREKEYNUMT1 , #00H,MOV NUM , #8,MOV DPTR , #TAB,41,MOV ALARMHBUFF , #18H ;,置闹铃时间初始值为,18:55,MOV ALARMMBUFF , #55H,MOV ALARMHBUFF2, #01H,MOV ALARMHBUFF1, #08H,MOV ALARMMBUFF2 , #05H,MOV ALARMMBUFF1 , #05H,MOV HBUFF2, #01H ;,置闹钟时间为,18:53,MOV HBUFF1, #08H,MOV MBUFF2 , #05H,MOV MBUFF1 , #03H,MOV HBUFF , #18H,MOV MBUFF , #53H,MOV SBUFF , #3CH ;,置初始秒为,60,计时时减,MOV TCON , #05H ;,下降沿触发,MOV TMOD , #11H ;,初始化定时器,T0 ,T1 16,位计时,MOV TH0 , #0BH ;,设置计数初值,,125ms,计时,42,MOV TL0 , #0DBH,MOV TH1 , #3CH ;T1,置初值,进行,100ms,计时,用于调整时间,MOV TL1 , #0B0H,MOV IE , #82H ;,开,T0,中断,SETB PT0 ;T0,中断优先级最高,SETB TR0 ;,允许,T0,计数,SETB P3.2,SETB P3.3,START1: MOV A , HBUFF ;,显示时,,7,点以前及,21,点以后亮度调暗,SUBB A , #7H,JC START2,MOV A , HBUFF,SUBB A , #21H,JNC START2,ACALL DISPLAY,ACALL ZDBS,AJMP START3,43,START2: ACALL NIGHTDISPLAY,START3: MOV A ,ALARMHBUFF ;,检测是否是定闹时间,CJNE A , HBUFF , START4,MOV A , ALARMMBUFF,CJNE A , MBUFF ,START4,MOV C, DP ;,若是定闹时间,则利用,dp,的值来决定蜂鸣,MOV P3.2, C,MOV A , SBUFF,JNZ START1 ;,若还没到,1,分钟,则继续蜂鸣,SETB P3.2,START4: JNB P3.2,ADJUSTTIME1 ;,循环等待中断,并检测是否,键按下,若是,则进入相应程序,JNB P3.3,ADJUSTTIME2,AJMP START1,44,INT0,中断子程序,ADJUSTTIME1: NOP,MOV KEYNUMT1 ,#00H,MOV TH1 , #3CH,;,T1,置初值,进行,100ms,计时,,用于调整时间,MOV TL1 , #0B0H,SETB ET1 ;,开,T1,中断,SETB PT1 ;,设,T1,中断优先级最高,SETB TR1 ;,允许,T1,计时,MOV STOREKEYNUMT1 , KEYNUMT1 ;,存储当前,次,KEYNUMT1,的值,TIME1_1:ACALL DISPLAY,MOV A , KEYNUMT1,CJNE A , STOREKEYNUMT1,TIME1_2 ;,若当前,KEYNUMT1,的值与上一次的值不等,则时间加,1,分,否则,继续循环,等等至半分钟,AJMP TIME1_3,45,TIME1_2: MOV STOREKEYNUMT1 , KEYNUMT1 ;,加,1,后存储,当前的,KEYNUMT1,的值,ACALL ADDBUFF0 ;,分加,1,TIME1_3: JNB P3.2,TIME1_1 ;,若,p3.2,已关,则退出增时,,否则继续循环,CLR ET1,CLR PT1,CLR TR1,AJMP START1,46,时间增,1,分,ADDBUFF0: MOV A , MBUFF ;,若按键小于,1s,,则分增,1,ADD A , #1,DA A,MOV MBUFF , A,ANL A , #0FH,MOV MBUFF1 , A,MOV A , MBUFF,SWAP A,ANL A , #0FH,MOV MBUFF2 , A,MOV A , MBUFF,CJNE A , #60H , ADDBUFF1,MOV MBUFF , #00H,MOV MBUFF2 , #00H,MOV MBUFF1 , #00H,MOV A , HBUFF ;,时增,1,47,ADD A , #1,DA A,MOV HBUFF , A,ANL A , #0FH,MOV HBUFF1 , A,MOV A , HBUFF,SWAP A,ANL A , #0FH,MOV HBUFF2 , A,MOV A , HBUFF,CJNE A , #24H , ADDBUFF1 ;,若没到,24,小时,则不必初值置,0,MOV HBUFF , #00H,MOV HBUFF2 , #00H,MOV HBUFF1 , #00H,ADDBUFF1: RET,48,INT1,中断子程序,ADJUSTTIME2: NOP,ACALL DL100MS,MOV C , P3.3,JC TIME2_6 ;,如果,(P3.3,按键,100ms,以上,),则不做处理,MOV KEYNUMT2 , #00H ;,否则进入定闹设置,MOV STOREKEYNUMT2 , KEYNUMT2 ;,记录当前,NUMT2,的,数据,以看下次有没改变,TIME2_1: NOP,MOV TH1 , #3CH ;T1,置初值,进行,100ms,计时,,用于调整时间,MOV TL1 , #0B0H,SETB ET1 ;,开,T1,中断,SETB PT1 ;,设,T1,中断优先级最高,SETB TR1 ;,允许,T1,计时,TIME2_2: ACALL ALARMDISPLAY,MOV A , KEYNUMT2,CJNE A , STOREKEYNUMT2 ,TIME2_3,AJMP TIME2_4,49,TIME2_3: MOV STOREKEYNUMT2 , KEYNUMT2,MOV A , ALARMMBUFF ;,若按键小于,1s,,则分增,1,ADD A , #1,DA A,MOV ALARMMBUFF , A,ANL A , #0FH,MOV ALARMMBUFF1 , A,MOV A , ALARMMBUFF,SWAP A,ANL A , #0FH,MOV ALARMMBUFF2 , A,MOV A , ALARMMBUFF,CJNE A , #60H , TIME2_4,MOV ALARMMBUFF , #00H,MOV ALARMMBUFF2 , #00H,MOV ALARMMBUFF1 , #00H,MOV A , ALARMHBUFF ;,时增,1,ADD A , #1,DA A,50,MOV ALARMHBUFF , A,ANL A , #0FH,MOV ALARMHBUFF1 , A,MOV A , ALARMHBUFF,SWAP A,ANL A , #0FH,MOV ALARMHBUFF2 , A,MOV A , ALARMHBUFF,CJNE A , #24H , TIME2_4 ;,若没到,24,小时,则初值不必置,0,MOV ALARMHBUFF , #00H,MOV ALARMHBUFF2 , #00H,MOV ALARMHBUFF1 , #00H,TIME2_4: NOP,JNB P3.3,TIME2_2 ;,若按键已经未按,则退出循环,CLR ET1,CLR TR1,MOV KEYNUMT2 , #00H,MOV NUMT2 , #00H,51,MOV R2 , #10 ;,直到,p3.3 20s,钟内都是未按,,此时复原数据,即退出设置,TIME2_7: MOV R1 , #200,TIME2_5: ACALL ALARMDISPLAY,ACALL DL1MS,JNB P3.3 , TIME2_1,DJNZ R1 , TIME2_5,DJNZ R2 , TIME2_7,TIME2_6: CLR ET1,CLR PT1,CLR TR1,LJMP START1,52,T1,中断子程序,INTERT1: NOP,MOV TH1 , #3CH ;T1,置初值,进行,100ms,计时,,用于调整时间,MOV TL1 , #0B0H,PUSH ACC,PUSH PSW,CLR ET0,CLR ET1 ;,关,T1,中断,MOV A , NUMT1,INC A,MOV NUMT1 , A ;,中断一次则相应的增加,NUMT1,CJNE A , #5 , INTERT1NEXT ;,每中断五次,即半秒,,都增加,KEYNUMT1,MOV A ,KEYNUMT1,INC A,MOV KEYNUMT1 , A,MOV NUMT1 , #00H ;NUMT1,已经是,5,了,则处理,过,KEYNUMT1,后,重置,NUMT1,53,INTERT1NEXT: NOP,MOV A , NUMT2 ;,中断一次则相应的增加,NUMT1,INC A,MOV NUMT2 , A,CJNE A, #5,ENDINTERT1 ;,每中断五次,即半秒,,都增加,KEYNUMT1,MOV A , KEYNUMT2,INC A,MOV KEYNUMT2 , A,MOV NUMT2 , #00H ;NUMT1,已经是,5,了,则处,理过,KEYNUMT1,后,重置,NUMT1,ENDINTERT1: SETB ET1,SETB ET0,POP ACC,POP PSW,RETI,54,显示子程序,DISPLAY: MOV P1 ,#0FFH,MOV A , HBUFF2,MOVC A , A+DPTR,SETB ACC.7,MOV P1 , A,CLR P3.0,ACALL DL1MS,SETB P3.0,MOV A , HBUFF1,MOVC A , A+DPTR,MOV C , DP,MOV ACC.7 , C,MOV P1 , A,CLR P3.1,ACALL DL1MS,SETB P3.1,55,MOV A ,MBUFF2,MOVC A , A+DPTR,MOV C , DP,MOV ACC.7 , C,MOV P1 , A,CLR P3.4,ACALL DL1MS,SETB P3.4,MOV A , MBUFF1,MOVC A , A+DPTR,SETB ACC.7,MOV P1,A,CLR P3.5,ACALL DL1MS,SETB P3.5,RET,TAB: DB 88H,0BBH,94H,91H,0A3H ; 0 1 2 3 4,DB 0C1H,0C0H,9BH,80H,81H ; 5 6 7 8 9,56,T0,中断子程序,INTERT0: PUSH ACC,PUSH PSW,CLR ET0 ;,关,T0,中断,MOV A , SBUFF,CJNE A ,#028H, SET1,MOV R4 , #0DCH ;,后四十秒的初值,SET1: DJNZ NUM , ENDINTT0 ;,若还没到,1s,,则退出该次中断,MOV NUM , #8 ;,设置,NUM,初值,CPL DP,DJNZ SBUFF , ENDINTT0 ;,若还没到,60s,,,则退出该次中断,57,MOV SBUFF , #03CH,MOV R4 , #0DBH ;,前,20,秒的初值,ACALL ADDBUFF0,ENDINTT0: MOV A , NUM,CJNE A , #04H , ENDT0OUT ;0.5,秒的时候,dp,取反,CPL DP,ENDT0OUT: POP PSW,POP ACC,SETB ET0,RETI,END,58,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!