精品
基于单片机的数字秒表系统设计
1.引言
如今,随着科学技术的高度发展,集成电路和计算机应用得到了快速发展。特别是随着计算机应用的发展,它在人们的日常生活中脱颖而出。大机、MP3等。而且将来的不久它们的身影将会更频繁的出现在我们身边,各种家用电器多会实现微电脑技术。计算机的所有部分在工作时都是基于时间的。本文是基于计算机电路的时钟脉冲信号和状态控制原理设计的数字秒表。秒表在许多领域起着非常重要的作用。在各种比赛中,秒表的精度要求更高,特别是一些科学实验,它们满足了几纳秒的时间精度要求。
本设计采用8051作为单片机控制的数字电子秒表的中心设备,结合显示电路、电源电路,采用定时器/计数器定时记数的原理LED设计时器的数字管和外部中断电路。将软硬件有机结合,使系统实现两位LED显示时间为00~99秒,每秒自动加1,能正确计时,并具有快加功能。其软件系统采用汇编语言编写程序,包括显示程序、定期中断服务、快加程序、外部中断服务程序、延迟程序等keil通过下调试,通过硬件电路proteus模拟连接,结合软件,调试修改,达到预期目的。
2.设计方案和原则
2.数字秒表的功能。
设计秒表,按开始按钮,开始计数,数字管显示从00秒自动加1;按复位按钮,系统清零,数字管显示00;按暂停按钮,系统暂停计数,数字管显示当前计数;按快加按钮ms快速加一,即数码管显示在原计数上快速加一。
(1) 显示时间为00~99秒;
(2)正常计数时,每秒自动加一次;
(3) 一个开始按钮,一个复位按钮,一个暂停按钮
(4) 实现计数、复位、清零、快加功能;
(5) 单片机通电后,先初始化,然后扫描按钮。开始按钮用于控制秒表工作的开始;暂停按钮用于暂停程序的运行;快速添加按钮控制快速计数的开始,并使用暂停按钮停止;复位按钮用于复位程序。当程序出现死循环或想从00开始重新计时,按下复位按钮返回程序并重新执行。
2.2设计需要计时,并在数字管上显示时间。
(1)引脚应用说明。
1)利用MCS8051系列单片机微机仿真实验系统芯片P3.2管脚作为外部中断0的入口地址,实现开始按钮的功能(如图2所示.1);
2)将P3.3作为外部中断1的入口地址,实现清零按钮的功能;
3)使用P0口作为段码数据输出控制口,74LS164用作驱动输出控制,P1.1、P1.两口分别实现暂停和快加。
图2.1 MCS—51单片机引脚图
(2)显示电路。
1)显示电路由两个共阴极数字管组成。使用定时器T0实现10ms定时,快速延迟;当您想实现正常计数时的1s延迟只需要40次25次ms的定时器T1.可以实现控制延迟。其中,当开关从1拨到0时,开始按钮开始计时;当开关从1拨到0时,数字管将清除按钮清除。此时,如果您再次拨打开始按钮,您可以重新启动计时。
2)计时器在初始状态下显示00,按下开始键时外部中断INT0向CPU发出中断请求,CPU转到执行外部中断0服务程序,即打开定时器T0,计数100次,100次,即延迟1s当产生中断信号时,向CPU发出请求,执行计数器加一且送往数码管显示。在计时过程中,只需按下暂停键,即根据P1.0口电平变化执行控制程序,关闭定时器T0和T1.调用显示子程序实现暂停功能。按下暂停键时,将此时的时间存储在中间缓存区,当再次按下开始键时,将中间缓存区的数据转移到最终缓存区。
3)定时器用于计时T1中断完成,定时溢出中断周期为25ms,同时计数40次。当有溢出时,会产生中断信号和方向CPU发出中断请求,每次发出中断请求,将计数单元的低位加一个,达到10次后再加一个高位,发送数字管显示,等等,直到99秒后再加一个,然后返回00,重新开始。
数码管显示电路采用动态扫描的方式,由于数码管采用共阴极连接法,当位选信号为高电时,该位选通,P0口中的数据发送到该段显示,节省接口资源,实时动态性能。
4)按键处理。这四个键可以采用中断的方法,也可以采用扫描的方法来识别。复位键和开始键的功能是从零开始执行程序,对时间的要求是单片机初始化的00;停止键用于锁定时间,需要更准确的控制;对于快速键,当检测到快速信号时,启动定时器T0, 定期产生溢出中断请求,完成一个周期CPU每次发送请求时,计数单元的低位都会加一个操作,当达到10次时,添加一个高操作,发送数字管显示,依次循环;检测是否有暂停信号,跳出快速添加程序,执行显示子程序。因此,可以扫描暂停和快加按钮,而外部中断开始和复位按钮。
3.硬件设计
3.数字秒表硬件设计的基本要求
(1)数字电子秒表具有显示直观、读取方便、精度高的优点,在计时中应用广泛。本设计采用单片机组成数字电子秒表,目标是结构简单,精度高。
(2)设计包括硬件电路的设计和系统程序的设计。其硬件电路主要包括主控制器、计时和显示电路以及零、启动和快速加载电路。主控制器采用单片机8051,显示电路采用两个共阴极LED数字管显示计时时间。
(3)本设计采用8051单片机定时器/计数器定时记数的原理,使其精确计时。利用中断系统实现开始和复位功能。P0口输出段码数据,74LS164用作驱动输出,P1.1、P1.2、P3.2、P3.三口连接四个按钮开关,实现暂停、快速添加、开始和复位功能。电路原理图设计最基本的要求是正确性,其次是合理的布局,最后在正确性和合理布局的前提下努力美观。硬件电路图按照图3.1进行设计。主电路见附录。
图3.1 数字秒表硬件电路基本原理图
秒表设计的主要功能是计时和显示。数字管显示的数据存储在内存单元11中H和12H中。其中12H存储低数据,11H存储高位数据,每个地址单元为十进制BCD码。数据显示功能由软件动态扫描实现,显示采用十进制BCD存储在代码数据对应的段码中ROM表中。显示器分别取出11H、12H地址中的数据,然后从P0口输出,P选择相应的数字管供电,可显示地址单元的数据值。汇编语言是用来编写的。由于汇编语言使用助记符号来编写程序,它比机器语言的二进制代码编程更方便,在一定程度上简化了编程过程。汇编语言的特点是用符号代替机器指令代码,助记符对应指令代码,基本保留了机器语言的灵活性。
3.2 电源电路
电源电路是系统最基本的部分,任何部分都与电源部分不可分割,单片机系统也不例外,我们应该高度重视电源部分,不能因为电源部分电路简单和疏忽,实际上有一半的故障或生产故障与电源有关,电源部分确保电路的正常运行。
3.3 单片机晶振电路
MCS-51单片机内的振荡电路是增益反相放大器,引线XYAL1和XTAL2分别是反相放大器的输入、内部时钟电路的输入和反相放大器的输出,可配置为片内振荡器。虽然单片机内部有冲击电路,但为了形成时钟,外部还需要额外的电路石晶体振荡和陶瓷振荡可以使用,多余输入内部时钟信号通过二分频触发器,因此对外部时钟信号的脉冲宽度没有要求,只需确保脉冲高低电平要求的宽度。晶振电路如图3所示.2、图3.3所示。
图3.内部晶振电路 图3.三外晶振电路
产生单片机时钟的方法有两种:内部时钟和外部时钟。利用其内部的震荡电路XTAL1和XTAL2外部连接定时元件,内部冲击电路产生自激冲击,可用示波器观察XTAL输出时钟信号。在MCS-内部时钟通常用于52,即XTAL1和XTAL晶体振荡器与电容器连接,形成稳定的自激振荡器。
晶体和电容决定了单片机的工作精度为1微秒,晶体为1微秒.2-12MHZ之间选择。MCS-一般情况下,51单片机使用冲击频率为6MHZ石英晶体,12MHZ频率主要用于高速串行通信。我们在这里使用12MHZ石英晶体。对电容没有严格的要求,但其值对冲击频率输出的稳定性、大小和冲击电路的冲击速度有一定的影响。C1和C2可在10-100pF之间取值,一般取30pF。外部时钟的方式是直接访问外部震荡信号源XTAL1或XTAL2。由于XTAL2的逻辑电平不是TTL,因此要连接拉电阻。
3.4 单片机复位电路
(1)单片机系统采用上电自动复位和手动按键复位两种方式实现系统复位操作。上电复位要求电源接通后自动实现复位操作。手动复位要求在电源连接的情况下,在单片机运行过程中,用按钮开关复位单片机。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。电容通过电容自动复位C充电实现和限流电阻R2。手动按键复位电阻R1与VCC实现接通。R1作为上拉电阻,当按下复位键时,产生触发脉冲进行复位操作。
(2)在MCS-51中,复位电路的外部逻辑电路由二极管的单向导通性和施密特触发器组成.4)最常见的复位电路如图(图3).5、3.6、3.7)能有效实现上电复位和手动复位。RST引脚是复位信号输入端,复位信号高电平有效,复位操作应持续24个振荡周期以上。如果使用6MHz晶振需要持续4μs以上可完成复位操作。如图所示,在通电瞬间,因为RC充电过程,在 RST只要正脉冲保持10,端部就有一定宽度的正脉冲ms以上可使单片机自动复位,6MHz时钟,通常CR取22μF,R1取200Ω,R2取1KΩ,此时可靠的上电复位和手动复位。
图3.4内部复位电路逻辑图 图3.上拉复位电路
图3.6 按键电平复位电路 图3.7 按键脉冲复位电路
4.软件设计
4.1设计思想
本设计采用汇编语言编写。汇编语言比机器语言的二进制代码编程更方便,在一定程度上简化了编程过程在一定程度上简化了编程过程。汇编语言的特点是用符号代替机器指令代码,助记符与指令代码一一对应,基本保留了机器语言的灵活性。汇编语言的使用可以面向机器,充分发挥机器的特性,获得高质量的程序。
模块化结构程序的设计可以方便系统软件的调试和优化,也可以让其他人更好地理解和阅读系统的程序设计。
4.2主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图4.1所示,部分子程序流程图由图4.2、4.3、4.4、4.5、4.6、4.7给出。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。
图4.1 主程序流程图 图4.2 加一子程序流程图
图4.3 INT0中断子程序 图4.4 INT1中断子程序
图4.5 定时器T0子程序 图4.6 数码显示流程图
图4.7 定时器T1子程序
5. 仿真结果
仿真结果如图5.1和附录2所示。
图5.1 仿真结果图
6.总结
在本次的数字秒表设计过程中,我获益很多,使我对Proteus软件的使用更加熟悉,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。
在设计的过程中我遇到了很多的问题,如在调试程序的过程中,无法找到程序中的六个错误;在电路的仿真中,由于芯片的错误选择致使仿真一直得不到结果;在流程图的绘制中对于文本框的插入遇到困难等等。诸多问题都是在老师和同学的帮助下得到解决,在此向他们表示感谢。本次设计使我知道了在学习中应该具有一丝不苟的精神和严谨的品质。
本系统也存在许多不足和可以改进的地方,如缺少对多次计时时间进行记录的功能、其存储空间小、显示位数少、不能对更高位的数字进行计数等等。其应在单片机的内部存储区多设置一些存储空间,用来存储多次计时时间,并且增加数码管的数量,使其具有更高位的显示功能,并在程序中编入对多次计时时间的调用显示。虽然存在不足,但本设计的数字电子秒表仍具有它的实用性,它可以实现多数场合的应用,其精度高、设计简单、原理清楚、使用方便、体型小巧、易于实现工厂生产、显示直观、读取方便、在计时中得到了广泛的使用。
7.参考文献
[1] 李华,王思明,张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001.5.
[2] 吴蓉,梁龙学,崔用明.数字电子技术[M].兰州:兰州大学出版社,2006.7.
[3] 顾滨,李勋.单片微计算机原理开发与应用[M].北京:高等教育出版社,2002
[4] 丁向荣,贾萍.单片机应用系统与开发技术[M].北京:清华大学出版社 2009.9
[5] 文献单片机课程设计论文 .
附录
附录1:
ORG 0000H
AJMP MAIN ;主程序入口地址
ORG 0003H
AJMP ZHONGDUAN0 ;中断0入口地址
ORG 000BH
AJMP YANSHI ;定时器T0入口地址
ORG 0013H
AJMP ZHONGDUAN1 ;中断1入口地址
ORG 001BH
AJMP DINGSHI ;中断1入口地址
ORG 0030H ;主程序入口地址
主程序
MAIN:MOV TCON,#05H ;主程序开始,外部中断跳变模式
MOV TMOD,#11H ;定时器0、1工作模式1下
MOV IE,#8FH ;中断允许
MOV DPTR,#TAB ;指向数据表首地址
MOV 12H,#00H ;初始化设置
MOV 11H,#00H
MOV R1,#00H
MOV R2,#00H
MOV R3,#40 ;循环40次
MOV TL0,#58H ;定时25ms
MOV TH0,#9EH
MOV TL1,#0F0H ;定时10ms
MOV TH1,#0D8H
CLR TR0 ;关断定时器
CLR TR1
暂停和快加程序
HERE:JB P1.0,HERE ;位扫描,为0顺序执行
SHOW:CLR TR1
CLR TR0
ACALL XIANSHI
KUAIJIA:JB P1.2,KUAIJIA ;等待快加信号,为0时快加
CLR TR0
SETB TR1
HERE1:JNB P1.2,HERE1
AJMP HERE
外部中断0子程序,计时按键K1子程序
ZHONGDUAN0:SETB TR0 ;正常计时 1s延时
RETI
外部中断1子程序,复位键K2子程序
ZHONGDUAN1:CLR TR0 ;复位
CLR TR1
MOV 12H,#00H
MOV 11H,#00H
ACALL XIANSHI ;调用显示子程序
MOV R1,#00H
MOV R2,#00h
RETI
加一子程序
JIA1: INC R1 ;加一子程序
CJNE R1,#0AH,LOOP ;判断低位是否有溢出
MOV R1,#00H
INC R2
CJNE R2,#0AH,LOOP
MOV R2,#00H
LOOP:MOV 12H, R1 ;重新加载计数值
MOV 11H,R2
RET
显示子程序
XIANSHI:MOV R7,#02H ;2个数码管显示子程序
MOV R0,#12H
LOOP1:MOV R6,#08H ;8位2进制数
MOV A,@R0
MOVC A,@A+DPTR
LOOP2:RLC A ;循环左移,带进位
CLR P3.1
MOV P3.0,C
SETB P3.1
DJNZ R6,LOOP2 ;判断数据是否扫描完成
DEC R0
DJNZ R7,LOOP1 ;判断2位是否扫描完成
RET
定时器T0子程序
YANSHI:MOV TL0,#58H ;定时器T0赋初值
MOV TH0,#9EH
DJNZ R3,LOOP7 ;实现1s延时
ACALL JIA1 ;调用加一子程序
ACALL XIANSHI ;调用显示子程序
MOV R3,#40 ;循环次数重加载
LOOP7: RETI
定时器T1子程序
DINGSHI:MOV TL1,#0F0H ;定时器T1子程序
MOV TH1,#0D8H
CLR TR0
SETB TR1 ;实现10ms延时
MOV 12H,R1
MOV 11H,R2
JNB P1.0,SHOW ;实现快加功能
ACALL JIA1 ;子程序调用
ACALL XIANSHI
RETI
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴接法数码管 END 地址表
附录2:
感谢下载!
欢迎您的下载,资料仅供参考
感谢下载载
展开阅读全文