单片机课设数字式秒表.docx
《单片机课设数字式秒表.docx》由会员分享,可在线阅读,更多相关《单片机课设数字式秒表.docx(35页珍藏版)》请在冰点文库上搜索。
单片机课设数字式秒表
《单片机技术》课程设计说明书
数字式秒表
学院:
电气与信息工程学院
*******
指导教师:
王诚梅职称工程师
专业:
自动化
班级:
自动化1404班
学号:
**********
完成时间:
2016年12月30日
湖南工学院《单片机技术》课程设计课题任务书
学院:
电气与信息工程学院专业:
自动化
指导教师
王诚梅
学生姓名
夏志勇
课题名称
数字式秒表
内容及任务
一、设计任务
设计一个具有特定功能的数字式秒表。
二、设计内容
1、秒表的硬件系统
(1)、单片机最小系统模块
(2)、供电模块
(3)、显示模块
(4)、键盘模块
2、秒表的软件系统
(1)、系统监控程序模块
(2)、显示程序模块
(3)、键盘程序模块
三、设计要求
该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能。
主要参考资料
[1]李广弟.单片机基础[M].第3版.北京:
北京航空航天大学出版社,2003.6.
[2]李全利.单片机原理及应用(C51编程)[M].北京:
高等教育出版社,2012.12.
[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:
北京航空航天大学出版社,2003.6.
[4]李光飞.单片机C程序设计指导[M].北京:
北京航空航天大学出版社,2003.01.
[5]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社,2004.9.
[6]张志良.单片机原理与控制技术[M].第2版.北京:
机械工业出版社,2005.3.
[7]屈杨.数字秒表的设计[J].科技信息,2013.2
教研室
意见
教研室主任:
(签字)
年月日
摘要
单片机技术作为计算机技术的一个重要的分支,广泛应用于工业控制、智能化仪器,家用电器,甚至电子玩具等各个领域,单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。
文档中阐述了基于单片机的数字式秒表设计。
设计主要特点是计时精度达到0.01s,解决了传统的由于计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。
设计的数字电子秒表系统采用89S52单片机为中心器件,使用12MHz晶振与单片机AT89S52相连接,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管设计计时器。
其中软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,键扫程序,延时程序等,电路选用2个共阳型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的按键系统组成;按键处理和数据计算主要由单片机执行。
硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。
统中的应用软件是根据系统的功能要求而设计的,可靠地实现了系统的各种功能要求。
关键词:
秒表;单片机;程序
1绪论
1.1课题设计的任务及目的
设计一个具有特定功能的数字式秒表。
随着现代体育的发展,比赛对精确计时的秒表需求也越来越高,因此,设计一款数字式用来解决一些小型比赛的计时问题。
数字式秒表适用于一些小区或者学校级别的对计时精度要求不是非常高的比赛。
其要求可以进行跑步所需的精确短时间计时,并将其结果显示出来。
1.2实现功能
使用单片机AT89S52作为主要控制芯片,以四位一体共阳极数码显示管通过三极管驱动作为显示部分,显示格式为XX(分):
XX(秒).XX,精确到0.01s的整数倍。
计时器工作时由蜂鸣器发出报警。
设计的数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态,具有开始、暂停、连续、清零和停止功能。
也可以加入蜂鸣器作为声音提示。
1.3总体方案及工作原理介绍
使用AT89S52单片机作为核心控制部件,采用12M晶体振荡器及微小电容构成振荡电路;用两个四位一体共阳极数码显示管作为显示部分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的复位、计时、连续、清零、停止各项功能。
对于时钟,它有两方面的意义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。
LED数码显示器有两种连接方法:
共阳极接法,把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。
共阴极接法,把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。
每个发光二极管的阳极通过电阻与输入端相连。
蜂鸣器是一种一体化结构的电子通讯响应器,采用直流电压供电,在单片机应用的设计上,大部分都是使用蜂鸣器来做提示或报警。
键盘部分方案:
键盘控制采用独立式按键,每个按键的一端均接地,另一端直接和P1口相连,在按键和P1口之间通过10K电阻与+5V电源相连。
键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,操作速度高而且软件结构很简单,比较适合按键较少或者操作速度较高的场合,应用很普遍。
显示部分方案:
显示部分采用动态显示。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔画“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字型码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所有只要将需要显示数码管的选通控制打开,就显示出字形,没有选通的数码管就不会亮。
通过分的时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,就是动态驱动。
动态显示是利用人眼视觉暂留特性来实现显示的。
事实上,显示器上任何时刻只有一个数码管有显示。
由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。
为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。
本设计可采用P0口直接驱动八段数码管显示。
方案成本低,而且单片机的I/O口占用较少,可以节约单片机接口资源,而且功耗更低。
电路采用单片机的P0口作为数码显示管的段控,采用P2口作为数码管的位控。
8个独立式键盘分别接在单片机的P1口上,以及其他部分构成数字式秒表的硬件电路。
通过编写程序使用单片机的定时计数器,以及软件延时,中断资源来实现秒计时和相关控制。
2硬件系统设计
2.1硬件系统的结构
硬件系统结构图如图1所示。
图1硬件系统结构图
2.1AT89S52单片机简介
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52的主要性能:
与MCS-51单片机产品兼容
8K字节在系统可编程Flash存储器
1000次擦写周期
全静态操作:
0Hz~33Hz
三级加密程序存储器
32个可编程I/O口线
三个16位定时器/计数器
八个中断源
全双工UART串行通道
低功耗空闲和掉电模式
掉电后中断可唤醒
看门狗定时器
双数据指针
掉电标识符
其引脚图如图2所示。
图2AT89S52引脚图
2.1.1晶振电路
晶振电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在AT89S52芯片内部有一个高增益反相放大器,晶振电路输入端为芯片引脚XTAL1,输出端为引脚TXAL2,在芯片的外部通过这两个引角跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
电路采用晶振频率为12MHz。
晶振电路如图3所示。
图3晶振电路
2.1.2独立键盘电路
设计使用独立式键盘接在单片机的P1口上但通过软件赋予其中三个按键能,其中S1是开始键和停止键,S2是暂停键和继续键,S3是清零键,。
注意使用时只有在暂停状态下才能继续计时,在停止时不能继续计时。
独立键盘电路如图4所示。
图4键盘电路图
2.1.3复位电路
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。
RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,使用频率为12MHz的晶振,则复位信号持续时间应超过2us才能完成复位操作。
复位操作上有电自动复位和按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。
在设计中采用了按键电平复位方式,复位电路如图5所示。
图5复位电路图
2.1.4数码管显示电路
数码管实际上是由二极管构成发光二极管正常工作时,其两端正向压降约为1.6V,正向电流约为10mA,为了使数码管达到一定的亮度而又不至于由于电流过大而损坏,使用三极管S8550作为数码管的驱动,同时在P0口和P2口上串上470Ω的电阻。
使用四位一体共阴极数码管,由于驱动电路决定了此处共阴极数码管和共阳极数码管均可采用而且均采用共阳极代码来编写显示程序。
数码管显示电路如图6所示。
图6数码管显示电路
2.1.5下载口电路
下载口主要是一个十芯的底座,可以通过使用USB下载线对单片机进行程序下载。
下载口电路如图7所示。
图7下载口电路
2.2硬件系统设计图
2.2.1电路图原理
电路原理图以及PCB原理图的绘制均使用AD制图软件完成,AD制图软件提供一个集成的设计环境,包括原理图设计和PCB布线工具。
根据硬件接线要求设计绘制电路原理图及PCB。
具体电路原理图见附录A。
2.2.2PCB图设计
PCB图设计时,首先要使元器件尽量少,这样既可以节约材料,又可以使布线更加短,减少干扰,同时还应该注意尽量减少线路之间的寄生电容和电感,布线时需要将线宽设置得比较宽这样可以提高腐蚀电路板时的成功率,焊盘大小也要设置的比较大,在腐蚀环节和焊接环节比较容易成功,不易出现短线的现象和焊盘剥离的现象。
双面布线时芯片和针脚多的元件需将焊接点置于底层,才能比较方便焊接。
所用元器件清单见附录C。
3软件系统的设计
3.1使用单片机资源情况
设计除了使用单片机工作所必须的硬件资源(如连接晶振的引脚XTAL1和XTAL2,复位引脚RESET)外,对单片机的硬件资源还做了具体的安排。
(1)P0口:
P0.0-P0.7作为数码管显示器的段控。
(2)P1口:
P1.0-P1.3作为独立式键盘的输入端。
(3)P2口:
P2.0-P2.7分别控制数码管LED0-LED7的位控码驱动。
(4)使用通用寄存器RO、R1来延时,R2-R7作为数据的保护和处理。
(5)P3.4作为开始和停止的分开运行的标志,P3.5作为暂停和继续的分开运行标志
3.2软件系统各模块功能简要介绍
显P程序(主程序,显示P,也判断有无键按下,若有,则跳转相应标志地方执行相应程序)
数码管显示程序(显示当前的各位的数据情况)
中断程序
KS(键扫描子程序)
延时程序
3.3软件系统程序流程框图
3.3.1显P程序
显P程序流程框图如图8所示。
图8显P程序
3.3.2数码管显示程序
数码管显示程序流程框图如图9所示。
图9数码管显示程序
3.3.3中断程序
中断程序流程框图如图10所示。
图10中断程序
3.3.4键扫程序
键扫程序流程框图如图11所示。
图11键扫程序
3.3.5延时程序
延时程序流程框图如图12所示。
图12延时程序
3.4软件系统程序清单
按照流程图应用软件keil汇编语言编程实现秒表功能。
程序清单见附录D。
4设计总结
4.1设计结论及使用说明
通过设计和调试,数字式秒表能顺利完成各项功能。
上电或复位后显示“P.”提示符,此时按1键便可开始计时,计时同时伴有LED灯光闪烁和蜂鸣器提示,规律为亮一秒,暗一秒,蜂鸣器为响一秒,停一秒。
在计数状态下,按下2键即可实现暂停,再次按下2键即可实现继续计数,在计数状态下按下1键,实现计数停止,在停止状态下按下3键,便可实现计数清零。
计数状态下按下3键,清零后继续计数。
4.2实物测试过程
(1)实物图
课程设计实物图见附录B。
(2)“P.”显示图
图13“P.”显示图
(3)秒表准备计时状态
图14秒表准备计时状态
(4)秒表正常计时状态
图15秒表正常计时状态
4.3误差分析及解决方法
经过对板子和仿真的测试,发现数字式秒表计数一段时间和标准时间相比有误差,所设计的数字式秒表比我们的标准时间要快或者慢,而且相比较的时间越长他的时差越大。
经过分其主要原因与硬件和软件都有关。
软件原因:
从外部中断请求有效到转向中断区入口地址所需的机器周期数来计算中断时间,51系列单片机最短响应时间为3个机器周期。
在一般情况下中断响应时间通常无需考虑,但在精确定时的应用场合需知道中断响应时间,以保证定时的精确控制。
硬件原因:
单片机的时钟信号是由外部的振荡电路所提供,在芯片的外部通过XATL1、XATL2这两个引角跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
因为电子原件不可可能有我们所设计的那么理想(电容的容量,振晶的输出频率)所以会造成时间不准确。
针对这样的问题就只能从上述两个方面入手去解决。
减小误差:
软件方面可以通过计算设计子程序去减少响应的时差。
硬件部分可以采用一些稳定,精确度比较高的电子元件去完善,但是在最后调试出的还是有误差但尽可能的减少差误差。
结束语
课程设计的过程是艰辛的,不过收获却是很大的,设计中遇到了很多大大小小的问题,在解决这些问题的过程中,不仅加强了动手能力,而且加强了将书本上的知识转化成实际应用的能力,得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼,在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。
因为使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在设计和调试的过程中,也发现了一些问题,譬如秒表反应不够灵敏,显示出现乱码等。
当然,通过课程设计,发现了很多不足之处,在以后的学习中,会不断的完善自身。
参考文献
[1]李广弟.单片机基础[M].第3版.北京:
北京航空航天大学出版社,2003.6.
[2]李全利.单片机原理及应用(C51编程)[M].北京:
高等教育出版社,2012.12.
[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:
北京航空航天大学出版社,2003.6.
[4]李光飞.单片机C程序设计指导[M].北京:
北京航空航天大学出版社,2003.1.
[5]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社,2004.9.
[6]张志良.单片机原理与控制技术[M].第2版.北京:
机械工业出版社,2005.3.
[7]屈杨.数字秒表的设计[J].科技信息,2013.2
致谢
经过几个星期的努力,课程设计终于顺利完成了,这离不开指导老师的教导和同学们的帮助,特别是指导老师,他严谨的治学态度、对问题的专研程度、对事业执着追求的精神以及对学生在学习和生活等方面无微不至的关怀和帮助,值得学习。
感谢我的指导老师,面对同学们的问题,从来都是细心教导,让学生们能够顺利完成课程设计并从课程设计中学到很多知识。
附录
附录A电路原理图
电源电路原理图
电路原理图
附录B实物图
电源实物图
单片机实物图
附录C元器件清单
元器件及材料名称
规格
数目
备注
AT89S52加底座
40P
1
四位一体共阳数码管加底座
40P
2
晶振
12MHz
1
发光二极管
9
单排插
40脚
1
三极管
9012
9
蜂鸣器
1
小按键
9
下载口座子
十芯
1
六脚按键开关
1
Usb电源线加接口
1
电阻
200
1
电阻
1K
3
电阻
470
24
电解电容
22uf
1
瓷片电容
33pf
2
排阻
10k
2
短路冒
2
杜邦线8P
1
PCB板子
1
附录D程序清单
*******************************************
/*功能:
数字式秒表程序***/
/*作者:
夏志勇***/
/*日期:
2016年12月***/
/*指导老师:
王诚梅***/
/*其它说明:
设计一个具有特定功能的数字式秒表。
该数字式秒表上电或按键
复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数
字式秒表应具有开始暂停、连续、清零和停止功能。
;***************************************************************;
;伪指令定义
MSECLEQU30H
MSECHEQU31H
SECLEQU32H
SECHEQU33H
MINUTELEQU34H
MINUTEHEQU35H
S2FLAGBIT2FH.0
S3FLAGBIT2FH.1
S4FLAGBIT2FH.2
;*******************************************************************;
;系统起始程序区
ORG0000H
START:
LJMPMAIN
ORG000BH
LJMPTC0
;******************************************************;
;系统监控程序区
ORG0030H
MAIN:
MOVSP,#7FH;;确立堆栈区
MOVPSW,#00H;;RAM区首地址
MOVR0,#20H;;RAM区单元个数
MOVR2,#96;
CL:
MOV@R0,#00H;
INCR0;
DJNZR2,CL;
SETBEA
SETBET0
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVMINUTEH,#00H
MOVMINUTEL,#00H
MOVSECH,#00H
MOVSECL,#00H
MOVMSECH,#00H
MOVMSECL,#00H
TCC:
MOVDPTR,#DISBH;
MOVR0,#78H;
MOVR5,#8H;
CLRA
DISPTSF:
PUSHACC;
MOVCA,@A+DPTR;
MOV@R0,A;
POPACC;
INCA
INCR0
DJNZR5,DISPTSF
XIAN:
LCALLDISP
LCALLKEY
KEY0:
JB20H.0,S2
JB20H.1,S3
JB20H.2,S4
LJMPXIAN
;****************************************************************;
;键功能程序区
S2:
JNBEA,EX;
JBS3FLAG,EX;
CPLS2FLAG;
JBS2FLAG,STARTTIME
CLRTR0
CLREA;
LJMPUP
STARTTIME:
SETBTR0;
UP:
LCALLUPDATE
LCALLDISP
EX:
LJMPXIAN
S3:
JNBS2FLAG,EX11;
CPLS3FLAG;
JNBS3FLAG,CONTINUE
CLRET0
LJMPUP1
CONTINUE:
SETBET0
UP1:
LCALLUPDATE
LCALLDISP
EX11:
LJMPXIAN
JNBEA,S4
LJMPEXITS4
S4:
CPLS4FLAG
MOVMSECH,#00H
MOVMSECL,#00H
MOVSECH,#00H
MOVSECL,#00H
MOVMINUTEH,#00H
MOVMINUTEL,#00H
SETBEA
LCALLUPDATE
EXITS4:
LCALLDISP
LJMPXIAN
;***********************************;
;中断服务程序;
TC0:
PUSHACC
PUSHPSW
SETBRS1
SETBRS0;
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVA,#00H
MOVA,MSECH
SWAPA
ORLA,MSECL
XRLA,#01100110B;
CJNEA,#0FFH,PLUS1;
LJMPCLEARMSEC;
PLUS1:
MOVR0,#31H
LCALLDADD1
LJMPEXITTC0
CLEARMSEC:
MOVMSECL,#00H
MOVMSECH,#00H;毫秒清零
MOVR0,#SECH
LCALLDADD1
CPLP3.0
CPLP3.1
CPLP3.2
CPLP3.3
CPLP3.4
CPLP3.5
CPLP3.6
CPLP3.7
MOVA,SECH
CJNEA,#06H,EXITTC0;
LJMPCLEARSEC
CLEARSEC:
MOVSECH,#00H
MOVSECH,#00H;
MOVR