《单片机原理及应用课程设计》报告——简易电子时钟的设计专业:电子物联网班级:1121姓名:学号:11321061242014年2月1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。2.课程设计要求2.1.以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。2.2.按按键未超过1s进入省电模式,数码管不亮,内部时钟计时;按键超过1s进入调整模式,要调整的时间会闪动;此时,按下按键超过0.5S进入下位调整;按下按键未超过0.5S,当前位加一。2.3.程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。3.硬件设计3.1设计思想此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路、开关电路、晶振、复位电路。显示电路用6个共阳数码管分别显示,小时、分钟和秒,通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简单。单片机采用AT89C51系列,这种单片机应用简单,适合电子钟设计。单片机的P3.5为调整按钮,P1口为字符输出口,P2口为位选端。3.2主要元器件介绍AT89C51(1片)、晶振(1个)、LED共阳数码管(6个)、开关(2个)、电容(3个)、电阻(10个)、地(3个)、电源(2个)。3.3原理图及功能电路介绍3.3.1.显示模块:本电路的输出信号为8段数码管的位选和段选信号,本实验的数码管是共阳的,为了防止段选信号不能驱动数码管,故在P1口连接上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入,如下图:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R110kR210kR310kR410kR510kR610kR710kR810k3.3.2.晶振:本实验单片机时钟用内部时钟,模块如下:3.3.3.复位电路:复位电路为手动复位构成,模块如下:3.3.4.开关电路:该设计只用了一个键盘,通过P3.5口来控制,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。达到时间调节的目的。所接的开关电路如图:3.3.5.总体原理图:各模块拼接组合,电路总体设计图如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R110kR210kR310kR410kR510kR610kR710kR810kC11nFC21nFC31uFX1CRYSTALR910kR1010k4.软件设计4.1.设计思想我的程序设计分为8个部分,分别是主程序部分、清零程序、加1程序、1s计时程序、调时程序、闪动程序、显示程序、延时程序。通过主程序,可以调用调时程序和显示程序。在调时程序中,又嵌套调用闪动程序,延时程序,加1程序,通过显示程序调用1s计时程序和延时程序等。定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用。4.2.软件流程图4.2.1:总体流程图4.2.2:子程序流程图NYNYT0中断入口通过查表方式显示数据位选值=8数码位选加1位选数值=0秒计数加1秒计数=500秒计数=0秒数加1中断返回开始4.2.3.源程序ORG0000HLJMPSTARTORG0003HRETIORG000BHLJMPT0ZDruORG0013HRETIORG001BHLJMPT1ZDruYYNNN子程序入口秒钟=60秒钟=0,并分钟加1分钟=60分钟=0,并时钟加1显示数据处理中断返回时钟=24YORG0023HRETI;;;;;;;;;;主程序START:MOVR0,#70HMOVR7,#0BHCLEARDISP:MOV@R0,#00HINCR0DJNZR7,CLEARDISPMOV20H,#00HMOV7AH,#0AHMOVTMOD,#11HMOVTL0,#0B0HMOVTH0,#3CHMOVTL1,#0B0HMOVTH1,#3CHSETBEASETBET0SETBTR0MOVR4,#14HSTART1:LCALLxianshiJNBP3.5,tiaoshi1SJMPSTART1tiaoshi1:LJMPtiaoshi;;;;;;;;;;1s计时程序T0ZDru:PUSHACCPUSHPSWCLRET0CLRTR0MOVA,#0B7HADDA,TL0MOVTL0,AMOVA,#3CHADDCA,TH0;MOVTH0,ASETBTR0DJNZR4,T0ZDchujiamiao:MOVR4,#14HMOVR0,#71HACALLjia1MOVA,R3CLRCCJNEA,#60H,jiafen;jiafen:JCT0ZDchuACALLqinglingMOVR0,#77HACALLjia1MOVA,R3CLRCCJNEA,#60H,jiashijiashi:JCT0ZDchuACALLqinglingMOVR0,#79HACALLjia1MOVA,R3CLRCCJNEA,#24H,HOUR;HOUR:JCT0ZDchuACALLqinglingT0ZDchu:MOV72H,76HMOV73H,77HMOV74H,78HMOV75H,79HPOPPSWPOPACCSETBET0RETI;;;;;;;;闪动程序T1ZDru:PUSHACCPUSHPSWMOVTL1,#0B0HMOVTH1,#3CHDJNZR2,T1ZDchuMOVR2,#06HCPL02HJB02H,shanshuo1MOV72H,76HMOV73H,77HMOV74H,78HMOV75H,79HT1ZDchu:POPPSWPOPACCRETIshanshuo1:JB01H,shanshuo2MOV72H,7AHMOV73H,7AHMOV74H,78HMOV75H,79HAJMPT1ZDchushanshuo2:MOV72H,76HMOV73H,77HMOV74H,7AHMOV75H,7AHAJMPT1ZDchu;;;;;;;加1子程序jia1:MOVA,@R0DECR0SWAPAORLA,@R0ADDA,#01HDAAMOVR3,AANLA,#0FHMOV@R0,AMOVA,R3INCR0SWAPAANLA,#0FHMOV@R0,ARET;;;;;;;;清零程序qingling:CLRAMOV@R0,ADECR0MOV@R0,ARET;;;;;;;;时钟调试程序tiaoshi:CLRET0CLRTR0LCALLyanshi1SJBP3.5,shengdianMOVR2,#06HSETBET1SETBTR1SET2:JNBP3.5,SET1SETB00HSET4:JBP3.5,SET3LCALLyanshi05SJNBP3.5,xiaoshiMOVR0,#77HLCALLjia1MOVA,R3CLRCCJNEA,#60H,HHHHHH:JCSET4LCALLqinglingCLRCAJMPSET4shengdian:SETBET0SETBTR0CLOSE:JBP3.5,CLOSELCALLxianshiJBP3.5,CLOSEWAITH:JNBP3.5,WAITHLJMPSTART1xiaoshi:CLR00Hxiaoshi1:JNBP3.5,SET5SETB01HSET6:JBP3.5,SET7LCALLyanshi05SJNBP3.5,tuichuMOVR0,#79HLCALLjia1MOVA,R3CLRCCJNEA,#24H,shizhenshizhen:JCSET6LCALLqinglingAJMPSET6tuichu:JNBP3.5,tuichu1LCALLxianshiJNBP3.5,tuichuCLR01HCLR00HCLR02HCLRTR1CLRET1SETBTR0SETBET0LJMPSTART1SET1:LCALLxianshiAJMPSET2SET3:LCALLxianshiAJMPSET4SET5:LCALLxianshiAJMPtuichu1SET7:LCALLxianshiAJMPSET6tuichu1:LCALLxianshiAJMPtuichu;;;;;;;;;显示程序xianshi:MOVR1,#70HMOVR5,#0FEHsaomiao:MOVA,R5MOVP2,AMOVA,@R1MOVDPTR,#TABMOVCA,@A+DPTRMOVP1,ALCALLyanshi1MSINCR1MOVA,R5JNBACC.6,XSjieshuRLAMOVR5,AAJMPsaomiaoXSjieshu:SETBP2.6MOVP1,#0FFHRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;;;;;;;;;;延时子程序yanshi1MS:MOVR6,#14Hyanshi1:MOVR7,#19Hyanshi2:DJNZR7,yanshi2DJNZR6,yanshi1RETyanshi20MS:ACALLxianshiACALLxianshiACALLxianshiRETyanshi1S:LCALLyanshi05SLCALLyanshi05SRETyanshi05S:MOVR3,#20Hyanshi05S1:LCALLxianshiDJNZR3,yanshi05S1RETEND5.调试运行5.1正常运行图:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A9