简易数字钟的单片机课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简易数字钟的设计1单片机AT89S51电源复位电路晶振电路声音提示数码管显示按键电路基于AT89S51单片机数字钟系统框图1系统设计1.1框图设计基于AT89S51单片机数字钟由电源电路、单片机主控电路、按键控制电路和蜂鸣器等几部分组成,系统框图如下:1.2知识点本项目需要通过学习和查阅资料,了解和掌握以下知识。1.+5V电源原理及设计。2.单片机复位电路工作原理及设计。3.单片机晶振电路工作原理及设计。4.按键电路的设计。5.驱动电路74LS04的特性及使用。6.蜂鸣器及其驱动电路的设计。7.数码管的特性及其使用。8.AT89S51单片机引脚。9.单片机汇编语言及程序设计。简易数字钟的设计22硬件设计2.1电路原理基于AT89S51单片机数字钟电路原理图如附录所示。按下P1.0口按键,若按下时间小于1S,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。当再按下P1.0口按键时,若按键时间小于0.5S,则时间加1min;若按下时间大于0.5S,则进入小时调整状态。按下P1.1按键时,可进行减1调整。在小时调整状态下,当按键按下的时间大于0.5S时,退出时间调整状态,时钟从0S开始计时。在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表功能的转换,秒表中断计时程序启动,显示地址改为60H,LED将显示秒表计时单元60H-65H中的数据。按下P1.2口的按键开关,可实现秒表清零、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。2.2元件清单基于AT89S51单片机数字钟的元件清单如下表。元件名称型号数量用途元件名称型号数量用途单片机AT89S511控制核心电阻10kΩ4按键电路晶振12MHz1晶振电路按键4电容30pF2数码管8段6位1显示电路电解电容10uF/10V1复位电路电阻500Ω8电阻10kΩ1电阻4.7kΩ1蜂鸣器及其驱动电路按键1蜂鸣器DC5V1电源+5V/0.5A1提供+5V电源三极管90151简易数字钟的设计33软件设计3.1程序流程图1.主程序流程图如图1-1所示。2.秒计时程序。秒计时由定时器T0完成,流程图如图1-2所示。3.秒表、调时指示程序。秒表、调时由定时器T1完成,其流程图如图1-3所示。NY开始初始化显示程序整点到?报时图1-1主程序流程图YNT0中断保护现场改变定时初值1s时间到?加1s恢复现场中断返回图1-2秒计时程序流程图YN中断开始保护现场秒表/闪烁?闪烁恢复现场中断返回叫10ms图1-3秒表、调时指示程序流程图简易数字钟的设计43.2程序清单DISBEGEQU30HCALBEQUP1.7TIMCONEQU2FHORG0000HLJMPMAINORG0003HRETIORG000BHLJMPINTT0ORG0013HRETIORG001BHLJMPINTT1ORG0023HRETITAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHI_TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDLY1M:MOVR6,#14HDL_LOOP:MOVR7,#19HDL_LOOP1:DJNZR7,DL_LOOP1DJNZR6,DL_LOOPRETDLY20M:CLRCALBLCALLD_II_PLAYLCALLD_II_PLAYLCALLD_II_PLAYSETBCALBRETDL_LOOPS:LCALLDL05SLCALLDL05SRETDL05S:MOVR3,#20HDL05S1:LCALLD_II_PLAYDJNZR3,DL05S1RET简易数字钟的设计5CTIME:MOVA,#10H/整点报时MOVB,79HMULABADDA,78HMOVTIMCON,ACLOOP:LCALLDLY20MLCALLDL_LOOPSLCALLDL_LOOPSLCALLDL_LOOPSDJNZTIMCON,CLOOPCLR08HMAIN:MOVR0,#00H/主程序MOVR7,#80HMLOOP:MOV@R0,#00HINCR0DJNZR7,MLOOPMOV20H,#00HMOV7AH,#0AHMOVTMOD,#11HMOVTL0,#0B0HMOVTH0,#3CHMOVTL1,#0B0HMOVTH1,#3CHSETBEASETBET0SETBTR0MOVR4,#14HMOVDISBEG,#70HMLOOP1:LCALLD_II_PLAYJNBP1.0,T_SETSCJNBP1.1,DLY5JNBP1.2,FUNBTJNBP1.3,TSETJB08H,CTIMEAJMPMLOOP1FUNBT:LJMPDLY6简易数字钟的设计6TSET:LCALLDLY20M/闹铃时间设定程序,按P1.3进入设定JBP1.3,MLOOP1TS_LOOP:JNBP1.3,TS_LOOPJB05H,CLRBELLMOVDISBEG,#50HMOV50H,#0CHMOV51H,#0AHMINCHG:SETBEALCALLD_II_PLAYJNBP1.2,DLY1JNBP1.0,DLY3JNBP1.3,DLYAJMPMINCHGCLRBELL:CLR05HCLRCALBAJMPMLOOP1DLY:LCALLDLY20MJBP1.3,MINCHGLJMPDLY8T_SETSC:LJMPR_SETTIMDLY1:LCALLDLY20MJBP1.2,MINCHGDLY2:LCALLD_II_PLAYJNBP1.2,DLY2CLREAMOVR0,#53HLCALLADD_1MOVA,R3CLRCCJNEA,#60H,ADD_MADD_M:JCMINCHGACALLCLR_HAJMPMINCHGDLY3:LCALLDLY20MJBP1.0,MINCHGDLY4:LCALLD_II_PLAYJNBP1.0,DLY4简易数字钟的设计7CLREAMOVR0,#53HLCALLSUB_MLJMPMINCHGDLY5:LCALLDLY20M/秒表功能/时钟转换程序,按P1.1进行功能转换JBP1.1,T_MLOOP1JNBP1.1,$CPL03HJNB03H,DIS_SETMOVDISBEG,#60HMOV60H,#00HMOV61H,#00HMOV62H,#00HMOV63H,#00HMOV64H,#00HMOV65H,#00HMOVTL1,#0F0HMOVTH1,#0D8HSETBTR1SETBET1T_MLOOP1:LJMPMLOOP1DIS_SET:MOVDISBEG,#70HCLRET1CLRTR1T_MLOOP11:LJMPMLOOP1DLY6:LCALLDLY20M/秒表暂停/清零功能程序,按P1.2暂停或清零,JBP1.2,T_MLOOP11P1.1退出秒表,回到时钟计时T_EST11:JNBP1.2,T_EST11CLRET1CLRTR1T_EST22:JNBP1.1,DLY5JBP1.2,T_EST21LCALLDLY20MJBP1.2,T_EST22T_EST55:JNBP1.2,T_EST51MOV60H,#00HMOV61H,#00H简易数字钟的设计8MOV62H,#00HMOV63H,#00HMOV64H,#00HMOV65H,#00HT_EST33:JNBP1.1,DLY5JBP1.2,T_EST31LCALLDLY20MJBP1.2,T_EST33T_EST44:JNBP1.2,T_EST41SETBET1SETBTR1AJMPMLOOP1T_EST411:LCALLD_II_PLAY/以下为键等待释放时显示不会熄灭用AJMPT_EST11T_EST21:LCALLD_II_PLAYAJMPT_EST22T_EST31:LCALLD_II_PLAYAJMPT_EST33T_EST41:LCALLD_II_PLAYAJMPT_EST44T_EST51:LCALLD_II_PLAYAJMPT_EST55INTT0:PUSHACC/1S计时程序;T0中断服务程序PUSHPSWCLRET0CLRTR0MOVA,#0B7HADDA,TL0MOVTL0,AMOVA,#3CHADDCA,TH0MOVTH0,ASETBTR0DJNZR4,I_INT0A_DDS:MOVR4,#14HCPL07HMOVR0,#71H简易数字钟的设计9ACALLADD_1MOVA,R3CLRCCJNEA,#60H,A_DDMA_DDM:JCI_INT0ACALLCLR_HMOVR0,#77HACALLADD_1MOVA,R3CLRCCJNEA,#60H,A_DDHA_DDH:JCI_INT0ACALLCLR_HLCALLDLY20MSETB08HMOVR0,#79HACALLADD_1MOVA,R3CLRCCJNEA,#24H,RSTARTRSTART:JCI_INT0ACALLCLR_HI_INT0:MOV72H,76HMOV73H,77HMOV74H,78HMOV75H,79HLCALLBELLPOPPSWPOPACCSETBET0RETIINTT1:PUSHACC/闪动调试程序/秒表从能程序;T1中断服务程序PUSHPSWJB03H,R_ADDSMOVTL1,#0B0HMOVTH1,#3CHDJNZR2,I_INT1简易数字钟的设计10MOVR2,#06HCPL02HJB02H,FLASH0MOV72H,76HMOV73H,77HMOV74H,78HMOV75H,79HI_INT1:POPPSWPOPACCRETIFLASH0:JB01H,FLASH1MOV72H,7AHMOV73H,7AHMOV74H,78HMOV75H,79HAJMPI_INT1FLASH1:MOV72H,76HMOV73H,77HMOV74H,7AHMOV75H,7AHAJMPI_INT1R_ADDS:CLRTR1MOVA,#0F7HADDA,TL1MOVTL1,AMOVA,#0D8HADDCA,TH1MOVTH1,ASETBTR1MOVR0,#61HACALLADD_1CLRCMOVA,R3JZR_ADDMAJMPI_INT01R_ADDM:ACALLCLR_HMOVR0,#63H简易数字钟的设计11ACALLADD_1MOVA,R3CLRCCJNEA,#60H,R_ADDHR_ADDH:JCI_INT01LCALLCLR_HMOVR0,#65HACALLADD_1I_INT01:POPPSWPOPACCRETIADD_1:MOVA,@R0/加1子程序DECR0SWAPAORLA,@R0ADDA,#01HDAAMOVR3,AANLA,#0FHMOV@R0,AMOVA,R3INCR0SWAPAANLA,#0FHMOV@R0,ARETSUB_M:MOVA,@R0/分减1子程序DECR0SWAPAORLA,@R0JZSUB_M1DECASUB_M11:MOVR3,AANLA,#0FHCLRCSUBBA,#0AHSUB_M111:JCSUB_M110简易数字钟的设计12MOV@R0,#09HSUB_M10:MOVA,R3INCR0SWAPAANLA,#0FHMOV@R0,ARETSUB_M1:MOVA,#59HAJMPSUB_M11SUB_M110:MOVA,R3SUB_H:MOVA,@R0/时减1子程序DECR0SWAPAORLA,@R0JZSUB_H1DECASUB_H11:MOVR3,AANLA,#0FHCLRCSUBBA,#0AHSUB_H111:JCSUB_H110MOV@R0,#09HSUB_H10:MOVA,R3INCR0SWAPAANLA,#0FHMOV@R0,ARETSUB_H1:MOVA,#23HAJMPSUB_H11SUB_H110:MOVA,R3CLR_H:CLRA/清零程序;对即使单元复零用MOV@R0,ADECR0MOV@R0,ARET简易数字钟的设计13R_

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功