基于89C51的电子秒表毕业设计论文.docx
- 文档编号:2037532
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:22
- 大小:3.09MB
基于89C51的电子秒表毕业设计论文.docx
《基于89C51的电子秒表毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于89C51的电子秒表毕业设计论文.docx(22页珍藏版)》请在冰豆网上搜索。
基于89C51的电子秒表毕业设计论文
毕业设计(论文)
题目电子秒表电路
目录
一、设计功能与要求
(1)
(一)、系统功能
(1)
(二)、设计要求
(1)
二、设计构思
(2)
三、软件设计
(2)
(一)、程序设计思想
(2)
(二)、系统资源的分配(3)
(三)、主程序设计(3)
(四)、中断程序设计(5)
四、硬件电路的设计与实现(10)
(一)、AT89C51微处理器介绍(10)
(二)、总线锁存器74HC573功能结构(11)
(三)、译码器74HC138功能结构(13)
(四)、LED数码显示电路的实现(14)
致谢(15)
结束语(16)
参考文献(17)
附录一程序(18)
附录二电路原理图(22)
附录三硬件实物图(23)
电子秒表电路
XXX
摘要:
近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。
本文阐述了基于单片机的数字电子秒表设计。
本设计主要特点是计时精度达到0.001s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。
另外硬件部分设置了查看按键,可以对秒表上一次计时时间进行保存,供使用者查询。
本设计的数字电子秒表系统采用AT89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够实现五位LED显示,显示时间为0~99.999秒,计时精度为0.001秒,能正确地进行计时,同时能记录一次时间,并在下一次计时后对上一次计时时间进行查询。
其中软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
关键词:
单片机数字电子秒表仿真
一、设计功能与要求
(一)、系统功能
数字式电子秒表系统具有毫秒、秒、分的累进显示功能(到59分后自动复零),并可以任意设置时钟初值,即可以在任意时刻开机运行。
作为秒表,系统可通过按键开始记录时间,在某一事件结束时,又通过按键使秒表停止运行,并显示该事件经历的时间,要求精确到0.01s(即10ms)。
(二)、设计要求
1、采用单片机(AT89C51)为核心器件,构成数字式电子秒表系统。
2、用6位LED数码管分别显示分、秒、毫秒(显示格式要求为XX、XX、XX)。
3、通过按键,实现下列人机对话功能:
①按OK键,电子秒表开始计时;②按设置键,设置时钟初值;③按清零键,时钟清零;④按暂停键,电子秒表暂停计时。
4、利用定时器/计数器/作10ms的定时,当定时时间到后,进入中断服务程序,在中断服务程序中实现时钟累进。
5、通过4个按键实现时钟运行,停止等人机对话功能,利用74HC573和74HC138芯片驱动LED数码管,实现时钟的显示。
二、设计构思
首先,以微处理器AT89C51为核心,利用微处理器的P0端口和P2端口实现数据、地址的传送。
由于P0端口无锁存功能,所以P0端在进行地址传送时需加74HC573锁存器。
因微处理器AT89C51芯片内有程序存储器EPROM8K和数据存储器RAM256字节,所以微处理器没有进行外存储器的扩展,直接利用微处理器内部的程序存储器和数据存储器。
其次,利用74HC138芯片,将8个LED数码显示管实现动态显示。
由于是8个LED数码管将扫描线中三根线经74HC138译码器产生8个扫描线分别接到八个数码管共阴极控制端。
再次,系统软件的主程序,它包括三个部分:
第一部分为初始化设置,包括设置定时器/计数器初始化、显示缓冲区初始化、开中断、定时器/计数器启动等。
第二部分是对键盘进行扫描,判断是否键按下,按的是哪一个键,根据不同的按键实现各种人机对话功能;第三部分是实现电子秒表的显示。
最后,中断服务程序,它的主要功能是实现时钟累进,以及如何判断是否已到24小时。
三、软件设计
(一)、程序设计思想
本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。
汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。
使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言的特点:
1、面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
2、保持了机器语言的优点,具有直接和简捷的特点。
3、可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
4、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
5、经常与高级语言配合使用,应用十分广泛。
在程序设计过程中,为了有效地完成任务,把所要完成的任务精心的分割成若干个相互独立但相互又仍可有联系的任务模块,这些任务模块使得任务变得相对单纯,对外的数据交换相对简单,容易编写,容易检测,容易阅读和维护。
这种程序设计思想称为模块化程序设计思想。
模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。
因此,本医院病床呼叫系统在软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。
程序的主要模块有:
主程序、显示程序、定时溢出中断服务程序、外部中断服务程序。
(二)、系统资源的分配
本设计系统所用到的单片机端口数比较多,所以在这里将对数字电子秒表的硬件资源的大概分配加以说明。
片内RAM的分配、各功能键的定义以及各端口的分配安排如表2.1所示。
表2.1端口的分配安排表
名称
功能描述
初始化值
79H-7DH
1ms-10s位显示寄存区
00H
69H-6DH
1ms-10s位中间寄存区
00H
59H-5DH
1ms-10s位最终寄存区
00H
R1-R5
1ms-10s位溢出计数区
定时器T0
控制秒表的最小精度
E018H
外部中断INT0
停止中断信号入口
外部中断INT1
开始中断信号入口
(三)、主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。
其中主程序是整个程序的主体。
可以对各个中断程序进行调用。
协调各个子程序之间的联系。
系统(上电)复位后,进入主程序,主程序流程图如图2.1。
首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。
数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。
显示一次就对P1.1和P2.5进行一次扫描,查询复位键P1.1是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。
当没有按下复位键时,程序则扫描P2.5是否按下,当P2.5没有按下则返回显示程,不断地调用显示缓存区的数据进行显示。
使用户能清楚的看到当前电子秒表所记录的时间。
当查询到P2.5按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此时显示的时间即为上一次计时的时间。
与此同时,在P2.5按下后单片机执行显示程序的同时也在对P2.5进行扫描,当P2.5断开后立即跳转回之前的显示程序显示当前的计时时间。
在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。
当外部中断有请求则去执行外部中断服务程序。
并在执行完后返回主程序。
图2.1主程序流程图
(四)、中断程序设计
现在方案中采用了三个中断,外部中断INT0,INT1和定时中断T0。
CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。
例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。
待服务结束,再继续执行原来较低级的中断服务程序。
而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。
,合理分配中断对本设计的实现是至关重要的。
另外由于数字式电子秒表的最小精度位1ms,属于高精度电子秒表。
定时器T0的定时周期也为1ms,为了使电子秒表暂停键按下后CPU能马上去响应中断程序,必须将暂停的外部中断级别高于定时计数器的中断级别。
避免出现CPU执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。
AT89C52的自然优先级顺序排列如下:
中断源最高
外部中断0
定时/计数器0溢出中断
外部中断1
定时/计数器1溢出中断
串行口中断最低
数字式秒表中的两个按键采用了中断实现功能。
开始采用外部中断INT0,暂停采用外部中断INT1。
另外程序中还用到了定时/计数器0溢出中断进行计时。
依据设计要求,暂停的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。
1、外部中断0服务程序:
外部中断0服务程序结合外部P3.2停止键实现数字电子秒表的停止功能,具体流程图如图2.2。
当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,停止定时器。
另外将当前显示的时间进行一次存储,存进中间寄存区。
最后中断返回。
图2.2外部中断0服务程序流程图
2、外部中断1服务程序
外部中断1服务程序结合外部P3.3停止键实现数字电子秒表的启动功能,具体流程图如图2.2。
当按下P3.3启动键按下向CPU发出外部中断请求,CPU转向外部中断1服务程序执行,启动定时器。
另外进行二次存储,将之前进行一次存储的数码管显示数据存入最终缓存区,避免下次计时暂停时一次存储将数据掩盖,从而起到保护数据的作用。
二次存储后就中断返回。
图2.3外部中断1服务程序流程图
3、定时中断服务程序
当定时/计数器T0器溢出后,向CPU发出中断请求信号。
CPU跳转到定时中断程序执行,具体流程如图2.4。
定时中断程序是一个进位程序,主要负责对1ms的加一。
1ms位没有满十就跳出中断程序,返回显示程序。
当1ms位满十后就对1ms位清零,向10ms位加一,同时检测10ms位是否满十,没有满十就跳出中断程序,返回显示程序。
如果满十就向100ms位加一,依次类推,最终达到99.999秒后归零,从零开始再次计时。
定时/计数器T0工作在方式0下,TH0和TL0组成一个13位的二进制数计数器。
单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0000000000000开始计数到1111111111111,再计数一个脉冲时TH0和TL0组成的13位计数器将会从13个1变成13个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。
显然,T0定时器在方式0下引起一次中断所允许计数的最多脉冲个数为213个。
但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求信号那是毫无意义的。
为了使定时计数器在规定的计数脉冲个数字之后(此时应小于213个脉冲),向CPU发出溢出中断请求,可采取预先向TH0和TL0中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X+1,X+2,……直至计数器计满,从1全变为0。
设需要计数的脉冲个数为Y,则有:
X+Y=213
在定时方式下:
定时时间间隔位t=(213—X)*振荡周期*12
现在本设计要求1m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 89 C51 电子 秒表 毕业设计 论文