可预置倒计时时钟.docx

上传人:小飞机 文档编号:5080680 上传时间:2023-06-02 格式:DOCX 页数:7 大小:170.81KB
返回 下载 相关 举报
可预置倒计时时钟.docx_第1页
第1页 / 共7页
可预置倒计时时钟.docx_第2页
第2页 / 共7页
可预置倒计时时钟.docx_第3页
第3页 / 共7页
可预置倒计时时钟.docx_第4页
第4页 / 共7页
可预置倒计时时钟.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《可预置倒计时时钟.docx》由会员分享,可在线阅读,更多相关《可预置倒计时时钟.docx(7页珍藏版)》请在三一办公上搜索。

1、51单片机应用设计【摘要】该时钟功能是:从一个设置值开始倒计时到0,然后回到该设置值重新开始倒计时,如此不 断循环;该设置值可以用键盘来设定。【关键字】可预置倒计时时钟AT89C51【引言】以前有人用51单片机设计过一个059s不断运行的秒表,每过1s,数码管显示的秒数 加1,加到59s,再过1s,又回到0,从0开始加。这种秒表可以计时,可是不能人为控制 计时时间。所以,在此之上做了相应的改进,设计了一个可以预置倒计时的时钟。【设计内容】一、电路原理图XTAL1XTAI2PDHH.EC PD.VAD1 PDih.DZ PDi-HEG PD.ADt PDAh.EiS p .&. FO-TAPT一

2、 1h3ns_d3JPE:EMALEETpzhhePZ.WABFZZfAIJPZaAHPZ.MAIZP2SAt3PZJ9A1*PZ,7/A15P1BP3IYRXDP1.1P3.1fDOP12P32irnrmP13PiaTffTTPi.*Pl.TTP3ST1 叩.的JK Pl.TiTTF器件选用:单片机:AT89C51R1R14:10K八位数码管:7SEG-MPX6-CAPNP 管:MPS3638二、程序设计1、主程序流程图2、程序设计KEYOKBIT00H;有按键按下标志STARTRUNBIT01H;开始运行标志SCOUNTEQU21H;秒计数器SETVALEQU22HTCOUNTEQU24H

3、;分计数器TCOUNTEREQU250;软件计数器的计数值,该值乘以定时器的定时值(4ms),即得1s的定时值KEYVALEQU25HDISPBUFEQU58H;显示器缓冲区COUNTEREQU57HHIDDENEQU10HTMRVAREQU6119;65536-4000*12/11.0592 定时器初值为 5msORG0000HJMPSTARTORG0*8+3;INT0中断入口RETIORG1*8+3;TIMER0中断入口JMPINT_T0ORG2*8+3;INT1中断入口RETIORG3*8+3;TIMER1中断入口RETIORG4*8+3;串行中断入口RETISTART:MOVSP,#5

4、FHMOVSCOUNT,#0MOVSETVAL,#59;启动程序默认值为59MOVSCOUNT,SETVAL;将预置值送到计数器单元MOVDISPBUF,#HIDDENMOVDISPBUF+1,#HIDDENMOVDISPBUF+2,#HIDDENMOVDISPBUF+3,#HIDDENCLRSTARTRUN;开机时不运行CLRKEYOK;清除有键按下标志位CALLINIT_T0;初始化T0SETBEALOOP:CALLKEYJBKEYOK,KEYPROCNEXT:MOVA,SCOUNTMOVB,#10DIVAB;一进制转化为十进制,十位和个位分别;送人显示缓冲区NEXT1:MOVDISPBU

5、F+4,AMOVDISPBUF+5,BJMPLOOPKEYPROC:MOVA,KEYVALJZKEYRUNDECAJZKEYSTOPDECAJZKEYLEFTJMPKEYRIGHTKEYRUN:SETBSTARTRUNJMPLOOPKEYSTOP:CLRSTARTRUNJMPLOOPKEYLEFT:CLRSTARTRUNINCDISPBUF+4MOV A,DISPBUF+4;判断是否等于6;若等于6,则让其等于0;将数10送到B中,准备求出新的预置值;将10与设置的十位数相乘;加上个位数,就是当前设置值CJNEA,#6,LEFT0MOVA,#0LEFT0:MOVB,#10MULABADDA,D

6、ISPBUF+5MOVSETVAL,AMOVSCOUNT,SETVALJMPLOOPKEYRIGHT:CLRSTARTRUNINCDISPBUF+5MOV A,DISPBUF+5CJNE A,#10,REFT0MOVDISPBUF+5,#0REFT0:MOVA,DISPBUF+4MOVB,#10MULABADDA,DISPBUF+5MOVSETVAL,AMOVSCOUNT,SETVALJMP LOOP;键盘程序KEY:MOVP3,#0FFHCLRKEYOKMOVA,P3ORLA,#11000011BCPLAJZKEY_RETCALLDELAYMOVA,P3ORLA,#11000011BCPLA

7、JZKEY_RETSETBKEYOKJNBACC.2,KEY_1MOVKEYVAL,#0JMPKEY_RETKEY_1:JNBACC.3,KEY_2MOVKEYVAL,#1JMPKEY_RETKEY_2:JNBACC.4,KEY_3MOVKEYVAL,#2JMPKEY_RETKEY_3:MOVKEYVAL,#3KEY_RET:MOVA,P3ORLA,#11000011BCPLAJNZKEY_RETRETDELAY:PUSHPSWSETBRS0MOVR7,#50D1: MOVR6,#10D2: DJNZR6,D2DJNZR7,D1POPPSWRETINIT_T0:MOVTMOD,#01HMOVT

8、H0,#HIGH(TMRVAR)MOVTL0,#LOW(TMRVAR)SETBET0SETBTR0RET;初始化T0为5ms的定时器INT_T0:PUSH ACCPUSHPSWMOVTH0,#HIGH(TMRVAR)MOVTL0,#LOW(TMRVAR)INCTCOUNTMOVA,TCOUNTCJNEA,#TCOUNTER,INT_N2MOVTCOUNT,#0INT_N1:JNBSTARTRUN,INT_N2DECSCOUNTMOVA,SCOUNTJNZINT_N2MOVSCOUNT,SETVALINT_N2:ORL P2,#11111100B;将P2 口的高6位全部置1,关闭所有显示单元MO

9、VA,Counter;取计数器的值MOVDPTR,#BitTabMOVCA,A+DPTRANLP2,AMOVA,#DISPBUFADDA,CounterMOVR0,AMOVA,R0MOVDPTR,#DISPTABMOVCA,A+DPTRMOV P0,AINCCounterMOVA,CounterCJNE A,#6,DISPEXITMOVCounter,#0DISPEXIT:POPPSWPOPACCRETIDISPTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFHBitTab: DB

10、7FH,0BFH,0DFH,0EFH,0F7H,0FBHEND这个程序的功能是:从一个设置值开始倒计时到0,然后回到该设置值重新开始倒计时, 如此不断循环;该设置值可以用键盘来设定,共有4个按键S1、S2、S3和S4,各个键的功 能分别是:S1 开始运行。52 停止运行53 高位加1,按一次,数码管的十位加1,从05循环变化;54 低位加1,按一次,数码管的个位加1,从09循环变化。图中,P3.2P3.5所接的按键分别是S1S4。从流程图中可以看出,主程序首先调用键盘程序,判断是否有键按下。如果有键按下, 转去处理键值;否则将秒计数值转换为十进制,并分别送显示缓冲区的高位和低位,然后调 用显示

11、程序。三、调试与结果在调试过程中发现,启动后,数码管显示默认值59,每按一次S4,可使低位加1,每 按一次S3,可使高位加1。按下S1,倒计时开始,按下S2,倒计时停止。但是调试发现, 按下S2后,显示停止计时,而内部计时器并没有停止计时。再次按下S1后,在数码管上 会出现不连续计时现象。分析出,程序中减1标志位清0不成功。【参考文献】1李全利.单片机原理及接口技术M.2.北京:高等教育出版社,2009.刘坤.51单片机C语言应用开发技术大全M,2.北京:人民邮电出版社,2012.3 刘娟.单片机C语言与PROTEUS仿真技能实训M,1.北京:中国电力出版社,2010.4 杨晓东.微型计算机原理与接口技术M,1.北京:机械工业出版社,2007.5 高锋.单片微型计算机原理与接口技术M,2.北京:科学出版社,2007.6 刘建清.AVR单片机C语言非常入门与视频演练M,1.北京:电子工业出版社,2012.7 周坚.单片机轻松入门M,2.北京:北京航空航天大学出版社,2007.

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号