基于单片机的秒表系统设计(共8页).doc
精选优质文档-倾情为你奉上基于单片机的秒表系统设计 组员: 一设计内容:1.设计精度为0.1s的秒表系统2.设置启动、暂停、清零按钮3.秒表的最长计时长度为9:59:9,超过此长度,则报警二方案设计1. 总体方案本设计是基于AT89C51单片机设计的,我们是分为几个模块来设计的。首先对秒表的硬件进行了设计,它包括时钟电路设计、控制电路设计以及外部显示电路。利用89C51单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。计时精度为0.1s。其次是软件进行了设计,软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等。这次的试验要求进行计时并且在数码管上显示时间,先要基本了解硬件内在结构,确定用p2并行端口进行数码管控制输入,使用P1.6,P1.5,P1.4 ,P1.3进行选择0.1秒位,秒位,十位秒位,分钟位,以P3.0为开始控制,P3.1为停止控制,以P3.为清零控制。本次实验设计的基本思路是要求借助AT89C51单片机做出一个0-9.59.9s的秒表从十位秒到0.1位秒数这些计时的位数是存在一个内嵌的结构,就是0.1秒位满足条件然后进行跳位使秒位加一的过程,当0.1s到0.9s时该位自动清零并且秒位加一,秒位达到9时也自动清零并向十秒位加一。当计数超过范围是所有数码管全部清零重新计数。其次开始控制,停止控制,清零控制等功能,我们采用蜂鸣器进行提示,该信号由P1.0输出由7406非门与外加电源驱动,通过一个延时子程序加以控制。最后就是根据硬件的条件进行编程,要求软硬件相互兼容。2. 硬件设计本系统中,硬件电路主要有晶振电路,复位电路,显示电路以及一些按键控制电路。(1) 晶体振荡电路利用12分频的晶振的一个机器周期为一微妙,通过循环延时产生0.1秒的延时,通过XTAL1和XTAL2外接晶体振荡器构成内部振荡方式。 由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1和XTAL2分别为 反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。 振荡电路(2) 复位电路采用上电加按键复位电路,也就是手动复位,上电后,由于电容充电,使RET持续一段高电平时间,当单片机运行时,按下复位键也能使RET持续一段时间的高电平,从而实现上电加开关复位的操作。上电加复位电路(3) 按键控制电路我们只需要实现秒表的启动、暂停、清零、复位功能。用四个按键可以实现,因此采用按键电路。利用部分P3口进行控制,用P3.0、P3.1、P3.2分别作为S1、S2、S3的电路接口。按下S1时启动,按下S2时暂停,按下S3清零.(4) LED显示电路我们用LED数码管显示结果,用4个共阳极LED显示,用P2并行端口进行数码管的控制输入,使用 P1.6、P1.5、P1.4、P1.3进行选择0.1秒位、秒位、十秒位、分钟位。电路原理图(网上参考图)3. 软件设计开 始有进位吗?初始化有暂停指令吗?Y有清零指令吗?0.1秒位加一NNNY有进位吗?NY秒位加一十秒位加一Y有进位吗?NY声音提示主程序流程图三计划书第一周(9月10日-16日):选好课题,熟悉任务要求。第二周(9月17日-23日):总体方案设计第三周(9月24日-30日):硬件设计,即画出电路原理图,软件设计,做好流程图就可以,列出实验所需清单。第四周(10月1日-7日):国庆放假第五周(10月8日-14日):完成软件编程,用C语言或汇编都可以第六周(10月15日-21日):完成系统的硬件组装,焊接实体电路第七周(10月22日-28日):系统调试,改进、完善电路,整理实验设计报告第八周(10月29日):课堂考核四器材清单 AT89C51单片机(双列直插)×74LS244 芯片 (双列直插)×7406芯片(双列直插)×5晶振 12MHz ×1电容(30pF) ×2,22pF ×1电阻 470 ×1 8.2k ×1 10 k ×5按键开关 ×5LED数码管 ×5蜂鸣器 ×1导线 若干五源程序HAOMIAO EQU 34HMIAO EQU 35HSHIMIAO EQU 36HORG 0000HAJMP STARTORG 0030HSTART: CLR C SETB P1.6 SETB P1.5 SETB P1.4 MOV HAOMIAO,#0 MOV MIAO,#0 MOV SHIMIAO,#0 MOV DPTR,#TABLE MOV A,#00H MOVC A,A+DPTR CLR P1.6 MOV P2,A MOV A,#00H MOVC A,A+DPTR CLR P1.4 MOV P2,A MOV DPTR,#TABLE1 MOV A,#00H MOVC A,A+DPTR CLR P1.5 MOV P2,A LCALL KAISHI LCALL MAIN SHIWEI : SETB P1.5 MOV DPTR,#TABLE ;十秒位显示 MOV MIAO,#0 ;使秒位从零位重新循环 INC SHIMIAO MOV A,SHIMIAO CLR C SUBB A,#6 JZ START AJMP MAIN RET TINGZHI: MOV A,#00H ;判断是否有清零指 MOV A,P3 ANL A,#04H JZ START MOV A,#00H ;判断是否有停止指令 MOV A,P3 CLR C ANL A,#02H LCALL YANSHI JZ MAIN LJMP TINGZHI START1 : LJMP START SHIWEI1: LJMP SHIWEI MAIN : SETB P1.5 SETB P1.4 SETB P1.6 MOV A,#00H ; 判断是否有清零指令 MOV A,P3 ANL A,#04H JZ START1 MOV A,#00H ; 判断是否有停止指令 MOV A,P3 CLR C ANL A,#02H JZ TINGZHI MOV DPTR,#TABLE ; 0.1位秒显示 I NC HAOMIAO ;加一,可查下一位数据 MOV A, HAOMIAO ; 判断是否进位 CLR C SUBB A,#10 JZ MIAOZHEN LCALL YANSHI ;延时0.1秒 AJMP MAIN RET ;继续计时MIAOZHEN: SETB P1.4 MOV DPTR,#TABLE1 ;秒位显示 MOV HAOMIAO,#0 ;使0.1秒从零重新循环 INC MIAO ;加一,可查下一位数据 MOV A,MIAO ;判断是否进位 CLR C SUBB A,#10 JZ SHIWEI1 LCALL SND AJMP MAIN ;返回0.1秒计YANSHI: MOV R6,#30 DL2: MOV A,#00H ;判断是否有清零指令 MOV A,P3 ANL A,#04H JZ START1 MOV DPTR,#TABLE MOV A,SHIMIAO MOVC A,A+DPTR CLR P1.6 MOV P2,A ACALL YIHAOMIAO SETB P1.6 MOV A,HAOMIAO MOVC A,A+DPTR CLR P1.4 MOV P2,A ACALL YIHAOMIAO SETB P1.4 MOV DPTR,#TABLE1 MOV A,MIAO MOVC A,A+DPTR CLR P1.5 MOV P2,A ACALL YIHAOMIAO SETB P1.5 DJNZ R6,DL2 RET YIHAOMIAO: MOV R7,#250 CV:NOP NOP DJNZ R7,CV RET KAISHI: MOV A,#0 MOV A,P3 ANL A,#01H JNZ KAISHI RETSND: SETB P1.0 MOV R1,#1EHDL: MOV R0,#0F9HDL1: DJNZ R0,DL1 DJNZ R1,DL CLR P1.0 RET TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FH;0,1,2,3,4,5,6,7,8,9TABLE1:DB0BFH,086H,0DBH,0CFH,0E6H,0EDH,0FDH, 087H,0FFH,0EFH END 专心-专注-专业