基于单片机的数字秒表系统研究设计.docx

上传人:b****0 文档编号:9894690 上传时间:2023-05-21 格式:DOCX 页数:20 大小:310.52KB
下载 相关 举报
基于单片机的数字秒表系统研究设计.docx_第1页
第1页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第2页
第2页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第3页
第3页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第4页
第4页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第5页
第5页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第6页
第6页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第7页
第7页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第8页
第8页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第9页
第9页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第10页
第10页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第11页
第11页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第12页
第12页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第13页
第13页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第14页
第14页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第15页
第15页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第16页
第16页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第17页
第17页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第18页
第18页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第19页
第19页 / 共20页
基于单片机的数字秒表系统研究设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的数字秒表系统研究设计.docx

《基于单片机的数字秒表系统研究设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字秒表系统研究设计.docx(20页珍藏版)》请在冰点文库上搜索。

基于单片机的数字秒表系统研究设计.docx

基于单片机的数字秒表系统研究设计

 

《单片机数字秒表系统设计》

课程设计

 

学生姓名:

三毛

学号:

6100308299

专业班级:

自动化084班

指导教师:

大毛

 

二○○六年七月七日

 

1.课程设计目的………………………………………………………1

2.课程设计题目描述和要求…………………………………………1

3.课程设计报告内容…………………………………………………1

4.结论…………………………………………………………………10

参考书目………………………………………………………………10

基于单片机的数字秒表系统

专业:

自动化学号:

6100308223学生姓名:

凌益斌指导老师:

王俐

1.课程设计目的

1.1用AT80C51单片机作为主控制器设计数字秒表系统。

1.2熟悉AT80C51,74LS164,RX8以及LED数码管的结构和用法。

2.课程设计题目描述和要求

2.1问题描述

设计一个秒表,按“开始”按键,开始计数,数码管显示从00每秒自动加一;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当前的计数;按“快加”按键,系统每10ms快速加一,即数码管显示在原先的计数上快速加一。

2.2设计要求

1)使用两位数码管显示,显示时间00-99秒;

2)正常计数时,每秒自动加一;

3)一个开始按键,一个复位按键,一个暂停按键和一个快加按键;

4)实现计数、复位、清零和快加功能;

5)单片机通电后,首先初始化,然后进行对按键扫描。

开始键用来控制秒表工作的开始;暂停键用来暂停程序的运行;快加键控制快速计数的开始,利用暂停键停止;复位键是用来对程序复位用的,当程序出现死循环或想从00开始重新计时,按下复位键可返回程序开始,重新执行。

3.课程设计报告内容

该实验要求进行计时并在数码管上显示时间,则可利用MCS系列单片机微机仿真实验系统中的芯片8051中的P3.2管脚作为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3作为外部中断1的入口地址,并实现“清零”按键的功能;使用P0口作为段码数据输出控制口,74LS164用作驱动输出控制,P1.1、P1.2口分别实现暂停、快加的功能。

显示电路由两位共阴极数码管组成。

使用定时器T0实现10ms的定时,进行快加延时;当想实现正常计数时的1s延时,只需要实现40次25ms的定时器T1控制延时就可以实现。

其中“开始”按键当开关由1拨向0时开始计时;“清零”按键当开关由1拨向0时数码管清零,此时若再拨“开始”按键则又可重新开始计时。

初始状态下计时器显示00,当按下开始键时,外部中断INT0向CPU发出中断请求,CPU转去执行外部中断0服务程序,即开启定时器T0,并且进行100次计数,当到100次时,即延时1s时,产生一个中断信号,向CPU发出请求,执行计数器加一且送往数码管显示。

在计时过程中,只要按下暂停键,即根据P1.0口电平变化去执行控制程序,关断定时器T0和T1,调用显示子程序,实现暂停功能。

在按下暂停键时,将此时的计时时间存入中间缓存区,当再次按下开始键时,则讲中间缓存区的数据转入最终缓存区。

计时采用定时器T1中断完成,定时溢出中断周期为25ms,并同时进行40次计数,当有溢出时,会产生中断信号,向CPU发出中断请求,每发出一次中断请求就对计数单元低位进行加一,达到10次就对高位进行加一,送数码管显示,依此类推,直到99秒后再加一后返回00,重新开始。

数码管显示电路采用动态扫描的方式,由于数码管采用共阴极的接法,当位选信号为高电平时,该位选通,P0口中的数据送到该段上显示,节省接口资源,又能实时动态的性能。

再看按键的处理。

这四个键可以采用中断的方法,也可以采用扫描的方法来识别。

复位键和开始键功能在于使程序从头执行,对于时间的要求即单片机上电初始化时的值00;而停止键则要用于对时间的锁定,需要比较准确的控制;而对于快加键,当检测到有快加信号时,则启动定时器T0,完成一个周期定时时产生一个溢出中断请求,向CPU发送请求,每发一次就对计数单元低位进行加一操作,达到10次就对高位进行加一操作,送数码管显示,依次循环;同时检测是否有暂停信号,有暂停信号时,跳出快加程序,执行显示子程序。

因此可以对暂停和快加按键采取扫描的方式。

而对开始和复位键采用外部中断的方式。

3.1硬件设计

1)数字秒表电路设计

数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。

本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。

设计中包括硬件电路的设计和系统程序的设计。

其硬件电路主要有主控制器,计时与显示电路和回零、启动和快加电路等。

主控制器采用单片机8051,显示电路采用两位共阴极LED数码管显示计时时间。

本设计利用8051单片机的定时器/计数器定时和记数的原理,使其能精确计时。

利用中断系统使其能实现开始和复位的功能。

P0口输出段码数据,74LS164用作驱动输出,P1.1、P1.2、P3.2、P3.3口接四个按钮开关,分别实现暂停、快加、开始和复位功能。

电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。

硬件电路图按照图3进行设计。

主电路见附录。

图3数字秒表硬件电路基本原理图

根据要求知道秒表设计主要实现的功能是计时和显示。

本设计中,数码管显示的数据存放在内存单元11H和12H中。

其中12H存放低位数据,11H存放高位数据,每一地址单元内均为十进制BCD码。

由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。

显示时,分别取出11H、12H地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。

采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。

汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。

2)电源电路

电源电路是系统的最基本部分,任何部分都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所疏忽,其实有一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。

3)单片机晶振电路

MCS-51单片机内部的振荡电路是一个增益反相放大器,引线XYAL1和XTAL2分别为反相放大器的输入和内部时钟电路输入和来自反相放大器的输出,该反相放大器可以配置为片内振荡器。

单片机内部虽然有震荡电路,但要形成时钟,外部还需要附加电路石晶振荡和陶瓷振荡均可采用,有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,单必须保证脉冲的高低电平要求的宽度。

晶振电路如图4、5所示。

图4内部晶振电路图5外部晶振电路

单片机的时钟产生方式有两种,分别为:

内部时钟方式和外部时钟方式。

利用其内部的震荡电路XTAL1和XTAL2外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2的输出时钟信号。

在MCS-52中通常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激震荡器。

晶体和电容决定了单片机的工作精度为1微秒,晶体可在1.2-12MHZ之间选择。

MCS-51单片机在通常情况下,使用震荡频率为6MHZ的石英晶体,而12MHZ频率主要是在高速串行通信情况才使用,在这里我们用的是12MHZ的石英晶体。

对电容无严格要求,但它在取值对震荡频率的输出的稳定性、大小及震荡电路起震荡速度有点影响。

C1和C2可在10-100pF之间取值,一般情况下取30pF。

外部时钟方式是把外部震荡信号源直接接入XTAL1或XTAL2。

由于XTAL2的逻辑电平不是TTL,所以还要接上拉电阻。

4)单片机复位电路

单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。

单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。

上电自动复位通过电容C1充电来实现和限流电阻R2。

手动按键复位是通过按键将电阻R1与VCC接通来实现。

R1作为上拉电阻,当复位键按下是产生一个触发脉冲,进行复位操作。

在MCS-51中,复位电路的外部逻辑电路由通过二极管的单向导通性和施密特触发器组成(图6),最常见的几种方式的复位电路如图(图7、8、9),它能有效的实现上电复位和手动复位。

RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6MHz晶振,则需持续4μs以上才能完成复位操作。

如图中在通电瞬间,由于RC的充电过程,在RST端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位,在6MHz时钟时,通常CR取22μF,R1取200Ω,R2取1KΩ,这时能可靠的上电复位和手动复位。

图6内部复位电路逻辑图图7上拉复位电路

图8按键电平复位电路图9按键脉冲复位电路

3.2软件设计

本设计软件部分包含三大部分:

主程序,紧急情况中断服务子程序,显示子程序。

 

1)设计思想

本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。

汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。

使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。

2)主程序设计

本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。

其中主程序是整个程序的主体。

可以对各个中断程序进行调用。

协调各个子程序之间的联系。

系统(上电)复位后,进入主程序,主程序流程图如图10所示,部分子程序流程图由图11、12、13、14、15、16给出。

首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。

在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。

当外部中断有请求则去执行外部中断服务。

并在执行完后返回主程序。

图10主程序流程图

 

图14定时器T0子程序

图16定时器T1子程序

3.3仿真结果

 

3.4结束语

本设计的数字电子秒表是由8051单片机、共阴数码显示管、控制按键等器件构成的,设有两位计时显示,开始、暂停、复位按键以及一个实现快加功能的按钮。

计时精度能到达10ms,设计精简,使用简单易懂。

系统设计合理,线路简单、功能先进,性能稳定,程序精简。

并给出了详细的电路设计方法。

采用汇编语言来进行软件设计,利用汇编语言面向机器并能较好的发挥机器的特性,且用内存少,执行速度快,能提高秒表的精度。

通过本次设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及应用等课程知识,加深对各门课程及相互关系的理解,并成功使用了keil和Proteus两个软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。

同时,在设计的过程中,我也发现了本系统的许多不足和可以改进的地方。

比如快进的时候无法显示数字,以及本次设计的数字电子秒表缺少对多次计时时间进行记录的功能。

4.结论

本次课程设计实现了用AT80C51单片机模拟数字秒表控制。

设计中把74LS164用作驱动输出控制,输出结果用两个共阴极LED数码管显示。

软件设计时,应用中断子程序和查表的方式。

总之此次设计使我更深刻的了解硬件和软件。

参考文献

[1]李华,王思明,张金敏.单片机原理及应用[M].兰州:

兰州大学出版社,2001.5.

[2]吴蓉,梁龙学,崔用明.数字电子技术[M].兰州:

兰州大学出版社,2006.7.

[3]顾滨,李勋.单片微计算机原理开发与应用[M].北京:

高等教育出版社,2000.2.

附录

实验程序。

ORG0000H

AJMPMAIN。

主程序入口地址

ORG0003H

AJMPZHONGDUAN0。

中断0入口地址

ORG000BH

AJMPYANSHI。

定时器T0入口地址

ORG0013H

AJMPZHONGDUAN1。

中断1入口地址

ORG001BH

AJMPDINGSHI。

中断1入口地址

ORG0030H。

主程序入口地址

主程序

MAIN:

MOVTCON,#05H。

主程序开始,外部中断跳变模式

MOVTMOD,#11H。

定时器0、1工作模式1下

MOVIE,#8FH。

中断允许

MOVDPTR,#TAB。

指向数据表首地址

MOV12H,#00H。

初始化设置

MOV11H,#00H

MOVR1,#00H

MOVR2,#00H

MOVR3,#40。

循环40次

MOVTL0,#58H。

定时25ms

MOVTH0,#9EH

MOVTL1,#0F0H。

定时10ms

MOVTH1,#0D8H

CLRTR0。

关断定时器

CLRTR1

暂停和快加程序

HERE:

JBP1.0,HERE。

位扫描,为0顺序执行

SHOW:

CLRTR1

CLRTR0

ACALLXIANSHI

KUAIJIA:

JBP1.2,KUAIJIA。

等待快加信号,为0时快加

CLRTR0

SETBTR1

HERE1:

JNBP1.2,HERE1

AJMPHERE

外部中断0子程序,计时按键K1子程序

ZHONGDUAN0:

SETBTR0。

正常计时1s延时

RETI

外部中断1子程序,复位键K2子程序

ZHONGDUAN1:

CLRTR0。

复位

CLRTR1

MOV12H,#00H

MOV11H,#00H

ACALLXIANSHI。

调用显示子程序

MOVR1,#00H

MOVR2,#00h

RETI

加一子程序

JIA1:

INCR1。

加一子程序

CJNER1,#0AH,LOOP。

判断低位是否有溢出

MOVR1,#00H

INCR2

CJNER2,#0AH,LOOP

MOVR2,#00H

LOOP:

MOV12H,R1。

重新加载计数值

MOV11H,R2

RET

显示子程序

XIANSHI:

MOVR7,#02H。

2个数码管显示子程序

MOVR0,#12H

LOOP1:

MOVR6,#08H。

8位2进制数

MOVA,@R0

MOVCA,@A+DPTR

LOOP2:

RLCA。

循环左移,带进位

CLRP3.1

MOVP3.0,C

SETBP3.1

DJNZR6,LOOP2。

判断数据是否扫描完成

DECR0

DJNZR7,LOOP1。

判断2位是否扫描完成

RET

定时器T0子程序

YANSHI:

MOVTL0,#58H。

定时器T0赋初值

MOVTH0,#9EH

DJNZR3,LOOP7。

实现1s延时

ACALLJIA1。

调用加一子程序

ACALLXIANSHI。

调用显示子程序

MOVR3,#40。

循环次数重加载

LOOP7:

RETI

定时器T1子程序

DINGSHI:

MOVTL1,#0F0H。

定时器T1子程序

MOVTH1,#0D8H

CLRTR0

SETBTR1。

实现10ms延时

MOV12H,R1

MOV11H,R2

JNBP1.0,SHOW。

实现快加功能

ACALLJIA1。

子程序调用

ACALLXIANSHI

RETI

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。

共阴接法数码管地址表

END

附Proteus软件设计图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2