单片机

  • 格式:doc
  • 大小:120.00 KB
  • 文档页数:12

目录1、实训目的 (3)2、实训准备 (3)3、实训要求 (4)4、实验内容 (4)1.硬件设计 (4)2.软件设计编辑 (4)(1)软件设计基本思想 (4)(2)程序清单如下 (5)5、实训结果 (11)6、实训心得 (11)1、实训目的1.通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。

2.使用AT89C51芯片的串口功能,利用4联LED数码显示器,实现时,分,秒显示。

3.用keil软件进行编程与调试,利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。

2、实训准备1 元件清单2 51系列单片机烧录器3 PC机及所需软件3、实训要求1.单片机发送的信号通过程序控制最终在数码管上显示出来。

2.单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。

3.为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。

4.单片机通过控制闹铃电路来完成定时闹钟的功能。

4、实验内容1.硬件设计电原理图如图4.1所示,单片机采用内部有4KB的Flash ROM与80C51完计算机时钟总流程图如图4.2所示图4.2 计算机时钟总流程图(2)程序清单如下BUF EQU 6EHSBF EQU 6FHMBF EQU 70HHBF EQU 71HMGW EQU 74HFGW EQU 76HFSW EQU 77HSGW EQU 78HSSW EQU 79HB05 BIT 00HSS3 BIT P0.7SS2 BIT P0.6SS1 BIT P0.5;----------------------------------------;初始化;-----------------------------------------LJMP MAINORG 000BHLJMP TOCLOCKORG 0030HMAIN: MOV IE,#00HMOV SP,#30HMOV 20H,#00HCLR AMOV BUF,AMOV SBF,AMOV MBF,AMOV HBF,#0CHMOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB PT0ACALL PUTD_PRGACALL DISP_PRGLCALL YS20MSNOPSETB EASETB ET0SETB TR0NOPNOPLOO_1: ACALL PUTD_PRGACALL DISP_PRGACALL JPCL_PRGSJMP LOO_1;----------------------------------;T0中断子程序;---------------------------------- TOCLOCK: MOV TH0,#3CHMOV TL0,#0B0HPUSH PSWPUSH ACCINC BUFMOV A,BUFCJNE A,#10,CLOCK_1SETB B05CLOCK_1: CJNE A,#20,DK13CLR B05MOV BUF,#00HINC AMOV SBF,ACJNE A,#60,DK13MOV SBF,#00HMOV A,MBFINC AMOV MBF,ACJNE A,#60,DK13MOV MBF,#00HCLR P0.4LCALL YS1SLCALL YS1SSETB P0.4MOV A,HBFINC AMOV HBF,ACJNE A,#24,DK13MOV HBF,#00HSJMP DK13DK13: POP ACCPOP PSWRETI;-------------------------;缓冲区送字;-------------------------PUTD_PRG: PUSH PSWPUSH BPUSH ACC PUTD2: MOV A,MBFACALL CHU10MOV FGW,BMOV FSW,A PUTD5: MOV A,HBFACALL CHU10MOV SSW,A PUTD10: MOV SGW,B PUTD9: POP ACCPOP BPOP PSWRETPUTD3: PUSH PSWPUSH BPUSH ACCMOV A,MBFACALL CHU10MOV MGW,BMOV MSW,APOP ACCPOP BPOP PSWRET;--------------------------------------------- ;显示子函数;-------------------------------------------- DISP_PRG: PUSH PSWSETB RS0CLR RS1PUSH ACCMOV A,P0ORL A,#0F0HMOV P0,AMOV R0,#FGWMOV DPTR,#TABDMOV A,@R0MOVC A,@A+DPTRMOV P1,ACLR P0.0LCALL YS20MSINC R0MOV DPTR,#TABDMOV A,@R0MOVC A,@A+DPTRMOV P1, ASETB P0.0CLR P0.1LCALL YS20MSINC R0MOV DPTR,#TABDMOV A,@R0MOVC A,@A+DPTRJNB B05,DISP_1ANL A,#7FHDISP_1: MOV P1,ASETB P0.1CLR P0.2LCALL YS20MSINC R0MOV DPTR,#TABDMOV A,@R0CJNE A,#00H,DISP_2MOV A,#0AHDISP_2: MOVC A,@A+DPTRMOV P1,ASETB P0.2CLR P0.3LCALL YS20MSSETB P0.3POP ACCPOP PSWRETDISP_3: PUSH PSWSETB RS0CLR RS1PUSH ACCMOV A,P0ORL A,#0F0HMOV P0,AMOV R0,#MGWMOV DPTR,#TABDMOV A,@R0MOVC A,@A+DPTRMOV P1,ACLR P0.0LCALL YS20MSINC R0MOV DPTR,#TABDMOV A,@R0MOVC A,@A+DPTRMOV P1, ASETB P0.0CLR P0.1LCALL YS20MSPOP ACCPOP PSWRETTABD: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;-------------------------------------------------------------;键盘;-------------------------------------------------------------JPCL_PRG: JB SS1,JP_1ACALL DEL Y10JB SS1,JP_1JP_2: ACALL PUTD_PRGACALL DISP_PRGJNB SS1,JP_2MOV A,HBFADD A,#1CJNE A,#24,JP_3CLR AJP_3: MOV HBF,ARETJP_1: JB SS2,JP_4ACALL DEL Y10JB SS2,JP_4JP_5: ACALL PUTD_PRGACALL DISP_PRGJNB SS2,JP_5MOV A,MBFADD A,#1CJNE A,#60,JP_6CLR AJP_6: MOV MBF,AJP_4: JB SS3,JP_7ACALL DEL Y10JB SS3,JP_7JP_8: ACALL PUTD_PRGACALL DISP_PRGJNB SS3,JP_8ACALL PUTD3ACALL DISP_3JP_7: RET;------------------------------------;延时;---------------------------------- DELY10: MOV R6,#20DEL_2: MOV R7,#7DH DEL_1: NOPNOPDJNZ R7, DEL_1DJNZ R6, DEL_2RETYS20MS: MOV R6,#06H DL2: MOV R7,#300DL1: NOPNOPDJNZ R7,DL1DJNZ R6,DL2RETYS1S: MOV R3,#100D1: MOV R1,#20D2: MOV R2,#248DJNZ R2,$DJNZ R1,D2DJNZ R3,D1RET;----------------------;除法子函数;-------------------------CHU10: MOV B,#10DIV ABRETEND5、实训结果1.显示XX:XX时间。

2.时间可调:K1按键可以切换时分和秒的显示;K2按键可以对小时的调整,按一下可以加一,可以加到23后清零;K3按键可以对分钟进行调整,也是按一下可以加一,加到59后清零。

3.单片机时钟显示到整点时,蜂鸣器则开始报时。

6、实训心得经过一月的单片机课程设计,我已基本完成课题要求。

功能上基本达标:时钟的显示,秒表显示,定时功能,调时功能。

时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷;定时功能准确可靠。

硬件设施合乎要求,软件设计可以配合硬件实现要求功能。

但是由于时间比较短,出现部分不足,经讨论只是软件部分还不完善。

不过,我们相信,如果时间充足,将软件改进,我们完全可以很好实现所有功能。

另外,在本次设计的过程中,我们发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。