单片机秒表001s.docx
- 文档编号:12536206
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:22
- 大小:309.71KB
单片机秒表001s.docx
《单片机秒表001s.docx》由会员分享,可在线阅读,更多相关《单片机秒表001s.docx(22页珍藏版)》请在冰豆网上搜索。
单片机秒表001s
探※※※※※※※※
2009级单片机
课程设计
探※※※※※※※
单片机课程设计报告书
课题名称
秒表
姓名
石光宇
学号
20096593
院、系、部
电气工程系
专业
电气工程及其自动化
指导教师
焦咏梅
2012年6月30日
秒表
一、设计目的
(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。
(2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。
(3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。
(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。
(5)以单片机为基础,设计一个可以实现启动,暂停,继续,复位,可选择正负计时并且可以显示十分之一秒的秒表。
锻炼硬件与软件相结合的设计能力。
二、设计要求
1•可启动、暂停、继续和复位。
2.4位显示,精确到0.1(999.9)
3.可正计时、倒计时。
正计时时,从0000开始,最大到999.9秒,倒计时时,从设定时间开始
4.通过键设定时间,可设定正计时的结束时间和倒计时的开始时间,当到达设定时间或倒计时到0时报警,数码管闪烁最后的时间。
5.要求做出实物。
(同时上传本机地址03耳本机地址为03H,当接到上位机发的03H时,则回发03H当接到上位机发的AAH时,则将当前显示的秒值发给上位机)
三、硬件电路设计
3.1系统框图
3.2系统电路原理图
打开电源后,进行结束时间后需要计时时间的设定,按P3.3键选择给哪一
位进行设置,按P3.2键进行把P3.2设置的位中的值进行加一设置,设定结束后,进行正计时后到计时的选择(P3.5键),开始默认为正计时(即从0000到结束的时间)o按下一次即更改成倒计时(即从设定的时间逐渐减到0000后结束),再
次按下P3.5键后会更改为正计时,如此循环。
设定时间及正负计时后,按下启动键(P3.6键),程序开始进行计时,计数器/定时器T0开始计时中断,计时结束后,置位P0.7进行蜂鸣器报警,同时数码管闪动显示结束时的时间。
在计时结束后按下复位键(P3.0),程序可以回到主程序最开始,可以再次进行设定计时,如此往复循环。
3.4各部分电路设计
1.单片机最小系统
图3.1stc89c52芯片
(1)STC89C5是一种低功耗、高性能CMOS位微控制器,具有8K在系统可编
程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM32位I/O口线,看门狗定时器,内置4KBEEPRO,MMAX81(复位电路,2个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM
定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振
汤器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
取咼运作频率35MHz6T/12T可选。
oE—
1
20
DO_
2
19
_00
0-1—
3
IB
—m
D2—
4
17
—02
D3—
5
1C
^03
&4—
旺
15
7
14
—OS
D€—
a
13
C7_
脅
12
—07
GND—
10
11
pLE
图3.274HC573锁存器
输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出
兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
1脚三态允许控制端低电平有效
1D〜8D为数据输入端
1Q〜8Q为数据输出端
74HC573弓I脚图
LE为锁存控制端;0E为使能端。
74HC57站部原理图
(2)数码管的显示
图3-3数码管显示原理图
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)
的数码管,共阴数码管在应用时应将公共极COM接到地线GNDt,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
LED数码动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,再选通相应的数码管后,即显示字段上得到显示字形码。
这种方式数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的
一种显示方式。
其接口电路是把所有显示器的8个笔画段A-DP同名端并联在一
起,而每个显示器的公共极COM各自独立地接受I/O线控制,CPU向字段输出口送出字段形码是,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪
个显示器亮,则取决于COK端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的COMm,使各个显示器轮流点亮。
再轮流点亮扫描过程中,每位显示器的点
亮时间是极为短暂的(约1m$),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位显示器并非同时点亮,但只要扫描的速度足够快,给人的
影响就是一组稳定的显示数据,不会有闪烁感。
(3)按键扫描电路介绍:
扫描法师在判定有按键按下后逐行逐列的状态出现全非1的状态,这时0状态的行、列焦点的键就是所按下的键位。
确定矩阵式键盘上哪个键位被按下时运用扫描法,进行查询。
判断键盘中有无键位按下,先将全部的焊线Y0~Y3置低电平,然后检测列线的状态。
只要有一列的电平为低电平,则表示键盘中有键位被按下,而且闭合的按键位于低电平线与4根行线交叉的4个按键中,若所有列线均为高电平,则键盘中没有按键按下。
判断闭合键位所在的位置,在确定了有键位按下后,即可进行确定具体闭合键的过程。
其方法是:
一次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平,在确定某根行线位置为低电平后,再逐行检测各列线的电平状态,若某列为低电平,则该列线与置为低电平的行线交叉处的按钮就是闭合的按键•
四、软件设计
1•设计思路
打开电源后,进行结束时间后需要计时时间的设定,按P3.3键选择给哪一
位进行设置,按P3.2键进行把P3.2设置的位中的值进行加一设置,设定结束后,进行正计时后到计时的选择(P3.5键),开始默认为正计时(即从0000到结束的时间)。
按下一次即更改成倒计时(即从设定的时间逐渐减到0000后结束),再
次按下P3.5键后会更改为正计时,如此循环。
设定时间及正负计时后,按下启动键(P3.6键),程序开始进行计时,计数器/定时器T0开始计时中断,计时结束后,置位P0.7进行蜂鸣器报警,同时数码管闪动显示结束时的时间。
在计时结束后按下复位键(P3.0),程序可以回到主程序最开始,可以再次进行设定计时,如此往复循环。
2•流程图
幵始
匚
J
4.3外部中断1的程序流程图
注:
图2,3中的R0为存放计时数值地址的寄存器,@R0为以该寄存器中数据为地址的数据
仃
显小第位
1
显示第二位
理
F
显示第二位
F
显示第四位
图4.5显示程序流程图
五、程序设计如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPIN0
ORG000BH
AJMPT0_INT
ORG0013H
AJMPIN1
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
MAIN:
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOVR0,#30H
MOVR1,#30H
MOVR2,#20
MOVR3,#20
MOVSP,#40H
MOVTMOD,#02H
MOVTL0,#06H
MOVTH0,#06H
CLR00H
SETB01H
CLR02H
SETBTR0
SETBET0
SETBEXO
SETBEX1
SETBEA
MOVPO,#OOH
MOVP3,#0FEH
FH:
XIANSHI1:
;四位数码管显示
L3:
MOVDPTR,#TAB
MOVA,30H
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0EFH
ACALLDELY1
MOVP1,#0
MOVA,31H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0DFH
ACALLDELY1
MOVP1,#0
MOVA,32H
MOVDPTR,#TAB
MOVCA,@A+DPTR
ORLA,#80H
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0BFH
ACALLDELY1
MOVP1,#0
MOVA,33H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#7FH
ACALLDELY1
MOVP1,#0
AJMPL3
JBP3.6,FH
SETB02H;是不是启动,开始计数
CLREX0
CLREX1
MOVR7,33H
MOVA,32H
SWAPA
ADDA,R7
MOVTL1,A
MOVR7,31H
MOVA,30H
SWAPA
ADDA,R7
MOVTH1,A
XIANSHI:
;四位数码管显示
L0:
MOVDPTR,#TAB
MOVA,30H
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0EFH
ACALLDELY1
MOVP1,#0
MOVA,31H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0DFH
ACALLDELY1
MOVP1,#0
MOVA,32H
MOVDPTR,#TAB
MOVCA,@A+DPTR
ORLA,#80H
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0BFH
ACALLDELY1
MOVP1,#0
MOVA,33H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#7FH
ACALLDELY1
MOVP1,#0
JB03H,SHAN
AJMPL0
SHAN:
;四位数码管逐位显示
L1:
MOVDPTR,#TAB
MOVA,30H
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0EFH
ACALLDELY10
MOVP1,#0
MOVA,31H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0DFH
ACALLDELY10
MOVP1,#0
MOVA,32H
MOVDPTR,#TAB
MOVCA,@A+DPTR
ORLA,#80H
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#0BFH
ACALLDELY10
MOVP1,#0
MOVA,33H
MOVDPTR,#TAB
MOVCA,@A+DPTR
SETBP2.0
CLRP2.1
MOVP1,A
CLRP2.0
SETBP2.1
MOVP1,#7FH
ACALLDELY10
MOVP1,#0
MOVC,P3.7
JCFW
CLRTR0
AJMPMAIN
FW:
AJMPL1
IN0:
CJNER0,#33H,L
MOVR0,#30H
L:
INCRO
RETI
IN1:
CJNER0,#30H,XD
MOVR6,30H
CJNER6,#09H,XD1
MOV30H,#00H
RETI
XD1:
INC30H
RETI
XD:
CJNER0,#31H,XD2
MOVR6,31H
CJNER6,#09,XD3
MOV31H,#00H
XD3:
INC31H
RETI
XD2:
CJNER0,#32H,XD4
MOVR6,32H
CJNER6,#09H,XD5
MOV32H,#00H
XD5:
INC32H
RETI
XD4:
MOVR6,33H
CJNER6,#09H,XD6
MOV33H,#00H
XD6:
INC33H
RETI
T0_INT:
PUSHACC
P3,5
JBP3.4,XY1
CPL00H
XY1:
JBP3.5,XY2
CPL01H
JNB00H,HERE
XY2:
DJNZR2,HERE
MOVR2,#20
DJNZR3,HERE
MOVR3,#20
;P3.7用作复位P3.4用暂停或继续
;P3.5用作启动用P3.6用于选择正负计时用
MOVR4,31H
MOVA,30HSWAPA
ADDA,R4
MOVR4,A
MOVR5,33H
MOVA,32HSWAPA
ADDA,R5
MOVR5,A
CON:
JNB01H,NEG
JNB02H,M
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
CPL02H
M:
;判定是正还是负计时
;判定是不是第一次执行
MOVA,R4CJNEA,TH1,LJ
MOVA,R5
CJNEA,TL1,LJ
CLR00H
SETBP0.7
SETB03H
HERE:
POPACC
RETI
;暂停和继续
;03H判断是不是计时结束
;P0.7用作接蜂鸣报警
LJ:
MOVR7,33HCJNER7,#09H,LJ1MOV33H,#00HMOVR7,32HCJNER7,#09H,LJ2MOV32H,#00HMOVR7,31HCJNER7,#09H,LJ3MOVR7,31HMOVR7,#00H
INC30H
POPACC
RETI
LJ3:
INC31H
RETI
LJ2:
INC32H
RETI
LJ1:
INC33H
POPACC
RETI
NEG:
CJNER4,#00H,LX
CJNER5,#00H,LX
SETBP0.7
CLR00H
SETB03H
POPACC
RETI
LX:
CJNER4,#00H,LX1
MOV32H,#09H
MOV33H,#09H
MOVR7,31H
CJNER7,#00H,LX2
DEC30H
MOV31H,#09H
LX2:
DEC31H
POPACC
RETI
LX1:
MOVR7,33H
CJNER7,#00H,LX3
MOV33H,#09H
DEC32H
POPACC
RETI
LX3:
DEC33H
POPACC
RETI
DELY1:
MOVR4,#4
D1:
MOVR5,#248
;接报警器
;1MS子程序
D2:
DJNZR5,D2
DJNZR4,D1
RET
DELY10:
;50ms延时子程序
MOVR4,#200
D3:
MOVR5,#248
D4:
DJNZR5,D4
DJNZR4,D2
RET
END
六、设计总结:
经过一个星期的课程设计,过程曲折可谓一语难尽。
在此期间我也失落过,也曾一度热情高涨。
从开始时激情高涨到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
在老师的指导下,我们顺利完成了课程设计。
让我学到了以下几点:
1、将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻。
对程序的编译过程了解透彻。
2、本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。
3、由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEL等的基本知识。
程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。
4、由于水平有限,实验程序运行有一定的限制,以后会加强改进。
总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但这需要在实践中慢慢提高,还希望老师能够多多指导,促进我不断的进步。
最后再一次感谢焦老师对我的悉心指导和无私帮助。
七、参考文献:
[1]高峰.单片微型计算机原理与接口技术•科学出版社,2007
[2]夏继强.单片机实验与实践教程[M].北京:
北京航空航天大学出版社
2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 秒表 001