单片机秒表001s.docx
- 文档编号:6123055
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:23
- 大小:175.10KB
单片机秒表001s.docx
《单片机秒表001s.docx》由会员分享,可在线阅读,更多相关《单片机秒表001s.docx(23页珍藏版)》请在冰豆网上搜索。
单片机秒表001s
《单片机接口设计》
课程设计报告
专业:
电气工程及其自动化
班级:
电1201-4班
学号:
20123804
姓名:
指导教师:
时间:
2015.7.6—2015.7.17
一、设计目的
(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。
(2)通过LED显示程序的调整,熟悉LED动态显示的控制过程。
(3)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。
(4)以单片机为基础,设计一个可以实现启动,暂停,继续,复位,可选择正负计时并且可以显示十分之一秒的秒表。
锻炼硬件与软件相结合的设计能力。
二、设计要求
1.可启动、暂停、继续和复位。
2.4位显示,精确到0.1(999.9)
3.可正计时、倒计时。
正计时时,从0000开始,最大到999.9秒,倒计时时,从设定时间开始
4.通过键设定时间,可设定正计时的结束时间和倒计时的开始时间,当到达设定时间或倒计时到0时报警,数码管闪烁最后的时间。
5.要求做出实物。
(同时上传本机地址03H。
本机地址为03H,当接到上位机发的03H时,则回发03H当接到上位机发的AAH时,则将当前显示的秒值发给上位机)
3、硬件电路设计
图3-1硬件电路
3.1系统框图
图3-2系统原理图
3.2系统电路图工作原理
打开电源后,数码管显示000.0,有自动计时和设定计时两种工作模式,通过SW2(P1.4)进行控制,当SW2和SW1打开时,按下启动键(P1.0),系统正计时,当SW1和SW2都闭合时,进行倒计时,倒计时的设定时间P1.1和P1.2的按键进行控制,当减到结束时间后需要计时时间的设定,(即从设定的时间逐渐减到0000后结束),同时数码管闪动显示结束时的时间,同时数码管闪动显示结束时的时间,再次打开P1.5键后会更改为正计时,如此循环。
设定时间及正负计时后,按下启动键(P1.0键),程序开始进行计时,计数器/定时器T0开始计时中断,计时结束后,同时数码管闪动显示结束时的时间同时数码管闪动显示结束时的时间。
在计时结束后按下复位键,程序可以回到主程序最开始,可以再次进行设定计时,如此往复循环。
3.3各部分电路设计
1.单片机最小系统
本系统设计采用AT89C51单片机。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容(由于在微机原理中学过C-51的具体知识,这里不再详细说明)。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。
图3-3AT80C51
2.晶体振荡电路
MCS--51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
这里,我们选用51单片机12MHZ的内部振荡方式,电容器C1,C2起稳定振荡频率,快速起振的作用,C1和C2可在20-100PF之间取,这里取30P,接线时要使晶体振荡器X1尽可能接近单片机。
图3-4晶振原理图
3.复位电路
采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。
当单片机已在运行之中时,按下复位键也能使用使RST持续一段时间的高电平,从而实现上电加开关复位的操作。
这不仅能使单片机复位,而且还能使
单片机的外围芯片也同时复位。
当程序出现错误时,可以随时使电路复位。
图3-5复位电路图
4.数码管的显示
显示电路既可以选用液晶显示器,也可以选用数码管显示。
我们采用的是数码管显示电路。
用4个共阳极LED显示,LED是七段式显示器,内部有7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。
在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的I/O口。
在设计中,我们采用LED动态显示,用P0口驱动显示。
由于P0口的输出级是开漏电路,用它驱动时需要外接上拉电阻才能输出高电平。
电路图如下所示:
5.按键扫描电路介绍:
扫描法师在判定有按键按下后逐行逐列的状态出现全非1的状态,这时0状态的行、列焦点的键就是所按下的键位。
确定矩阵式键盘上哪个键位被按下时运用扫描法,进行查询。
判断键盘中有无键位按下,先将全部的焊线Y0~Y3置低电平,然后检测列线的状态。
只要有一列的电平为低电平,则表示键盘中有键位被按下,而且闭合的按键位于低电平线与4根行线交叉的4个按键中,若所有列线均为高电平,则键盘中没有按键按下。
判断闭合键位所在的位置,在确定了有键位按下后,即可进行确定具体闭合键的过程。
其方法是:
一次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平,在确定某根行线位置为低电平后,再逐行检测各列线的电平状态,若某列为低电平,则该列线与置为低电平的行线交叉处的按钮就是闭合的按键.
四、软件设计
4.1设计思路
打开电源后,数码管显示000.0,有自动计时和设定计时两种工作模式,通过SW2(P1.4)进行控制,当SW2和SW1打开时,按下启动键(P1.0),系统正计时,当SW1和SW2都闭合时,进行倒计时,倒计时的设定时间P1.1和P1.2的按键进行控制,当减到结束时间后需要计时时间的设定,(即从设定的时间逐渐减到0000后结束),同时数码管闪动显示结束时的时间,同时数码管闪动显示结束时的时间,再次打开P1.5键后会更改为正计时,如此循环。
设定时间及正负计时后,按下启动键(P1.0键),程序开始进行计时,计数器/定时器T0开始计时中断,计时结束后,同时数码管闪动显示结束时的时间同时数码管闪动显示结束时的时间。
4.2流程图
开始
设定时间
是
不是
是
不是
检测计时是否到时间
是
不是
是否复位
五、程序设计如下:
LSECEQU80H
SEC1EQU81H
SEC2EQU82H
SEC3EQU83H
SEC4EQU84H
SEC5EQU85H
SEC6EQU86H
SEC7EQU87H
CISHUEQU88H
ORG0000H
AJMPMAIN
ORG0003H
LJMPINT0
ORG000BH
AJMPTIME0
ORG0013H
LJMPINT1
ORG001BH
LJMPTIME1
MAIN:
CLRP1.7
CLRP1.6
CLRP1.5
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#00H
MOVTL1,#00H
CLR00H
CLR01H
CLRTR1
CLR02H
CLR03H
CLR04H
MOVTMOD,#09H
MOVIE,#8FH
SETBIT0
SETBIT1
MOVR0,#80H
MOVR1,#05H
MOVR0,85H
MOV@R0,#0BH
MOVR0,#86H
MOV@R0,#0BH
MOVR0,#87H
MOV@R0,#0BH
MOVR0,#80H
ZFUZHI:
MOV@R0,#00H
INCR0
DJNZR1,ZFUZHI
MOVR0,#81H
MOV@R0,#0AH
MOVR7,#00H
MOVR0,#70H
MOVR1,#05H
CHUZHI:
MOV@R0,#00H
INCR0
DJNZR1,CHUZHI
MOVR4,#00h
S1:
ACALLSAOMIAO
LCALLBIJIAO
ACALLFT
ACALLDISP
JMPS1
KEYSCAN:
JBP1.0,AA
RET
DL1MS:
MOVR6,#14H
DL1:
MOVR7,#19H
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
SAOMIAO:
CLREA
CLRTR1
JB00H,KEYOUT
JNBP1.2,KEYSCAN0
JNBP1.3,KEYSCAN1
KEYOUT:
SETBEA
RET
WAIT0:
JNBP1.2,WAIT0
MOVR0,#60H
MOVA,@R0
INCA
MOV@R0,A
CLRET0
CLRTR0
CLRP1.7
CJNEA,#05H,KEYOUT
JNB01H,ZHENG
MOVA,#00H
MOV@R0,A
SETBET0
SETBP1.7
SJMPKEYOUT
ZHENG:
MOVR0,#80H
MOVR2,#05H
YY:
MOV@R0,#00H
INCR0
DJNZR2,YY
SETBP1.7
SETBET0
MOVR0,#60H
MOVA,#00H
MOV@R0,A
SETBEX0
SJMPKEYOUT
WAIT1:
JNBP1.3,WAIT1
MOVR0,#60H
MOVA,@R0
CJNEA,#01H,KSCAN11
MOVR0,#80H
MOVR1,#70H
MOVA,@R0
INCA
MOV@R0,A
MOV@R1,A
CJNEA,#0AH,KEYOUTMOVA,#00H
MOV@R0,A
MOV@R1,A
SJMPKEYOUT
KSCAN11:
MOVR0,#60H
MOVA,@R0
CJNEA,#02H,KEYSCAN3
MOVR0,#82H
MOVR1,#72H
MOVA,@R0
INCA
MOV@R0,A
MOV@R1,A
CJNEA,#0AH,KEYOUT
MOVA,#00H
MOV@R0,A
MOV@R1,A
SJMPKEYOUT
KEYO:
SJMPKEYOUT
KEYSCAN3:
MOVR0,#60H
MOVA,@R0
CJNEA,#03H,KEYSCAN4
MOVR0,#83H
MOVR1,#73H
MOVA,@R0
INCA
MOV@R0,A
MOV@R1,A
CJNEA,#0AH,KEYOUT
MOVA,#00H
MOV@R0,A
MOV@R1,A
SJMPKEYOUT
KEYSCAN4:
MOVR0,#60H
MOVA,@R0
CJNEA,#04H,KEYO
MOVR0,#84H
MOVR1,#74H
MOVA,@R0
INCA
MOV@R0,A
MOV@R1,A
CJNEA,#0AH,KEYO
MOVA,#00H
MOV@R0,A
MOV@R1,A
LJMPKEYOUT
BIJIAO:
JNB01H,ZHBJ
JNB03H,BJFH
CLR03H
MOVR0,#80H
MOVA,@R0
CJNEA,#00H,BJFH
MOVR0,#82H
MOVA,@R0
CJNEA,#00H,BJFH
MOVR0,#83H
MOVA,@R0
CJNEA,#00H,BJFH
MOVR0,#84H
MOVA,@R0
CJNEA,#00H,BJFH
ACALLBAOJING
SETBP1.6
JMPBJFH
ZHBJ:
JNB06H,BJFH
CLR06H
MOVR0,#80H
MOVA,@R0
CJNEA,70H,BJFH
MOVR0,#82H
MOVA,@R0
CJNEA,72H,BJFH
INCR0
MOVA,@R0
CJNEA,73H,BJFH
INCR0
MOVA,@R0
CJNEA,74H,BJFH
ACALLBAOJING
SETBP1.6
JMPBJFH
BAOJING:
CLRTR0
CLRET0
SETBTR1
MOVR0,#89H
MOVA,@R0
CJNEA,#01H,AN
MOVR0,#87H
MOV@R0,#0CH
DECR0
MOV@R0,#0CH
DECR0
MOV@R0,#0CH
JMPBAJIFAHU
AN:
MOVR0,#87H
MOVR0,#87H
MOV@R0,#0BH
DECR0
MOV@R0,#0BH
DECR0
MOV@R0,#0BH
BAJIFAHU:
SETBP1.5
RET
FT:
MOVR0,#80H
MOVR2,#08H
MOVR1,#90H
MOVDPTR,#TAB
FT1:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,FT1
RET
TAB:
DB
3FH,06H,5BH,4FH,
66H,6DH,7DH,07H,
7FH,6FH,80H,00H,40H
DISP:
MOVR0,#81H
MOV@R0,#0CH
MOVR0,#90H
MOVR1,#08H
MOVR2,#0FEH
DISP1:
MOVA,R2
MOVP2,A
MOVA,@R0
MOVP0,A
MOVA,R2
ACALLDL1MS
ACALLDL1MS
ACALLDL1MS
ACALLDL1MS
INCR0
RLA
MOVR2,A
DJNZR1,DISP1
MOVP0,#0FFH
MOVP2,#0FFH
RET
INT0:
JNBP1.0,DUAN1
JNBP1.1,DUAN2
DUAN1:
JB00H,TING
SETBTR0
SETB00H
RETI
TING:
CLR00H
CLRTR0
RETI
DUAN2:
JB01H,ZHJSHU
SETB01H
SETBP1.5
CLRTR0
MOVR0,#80H
MOVR1,#70H
MOVR3,#05H
ZHUANYI1:
MOVA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR3,ZHUANYI1
JMPOUT1
ZHJSHU:
CLRTR0
CLR01H
SETB05H
CLRP1.5
MOVR0,#80H
MOVR2,#05H
BB:
MOV@R0,#00H
INCR0
DJNZR2,BB
OUT1:
MOVTH0,#3CH
MOVTL0,#0B0H
MOVR0,#81H
MOV@R0,#0BH
CLR00H
RETI
INT1:
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B0H
MOVR0,#80H
MOVR1,#05H
XX:
MOV@R0,#00H
INCR0
DJNZR1,XX
RETI
TIME0:
SETB03H
SETB06H
JB01H,FJI
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVTL0,#0B0H
MOVTH0,#03CH
SETBTR0
MOVR0,#88H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#02H,OUTTO
MOVR0,#88H
MOV@R0,#00
MOVR0,#80H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#0AH,OUTTO
MOVR0,#80H
MOV@R0,#00H
MOVR0,#82H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#0AH,OUTTO
MOVR0,#82H
MOV@R0,#00
MOVR0,#83H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#0AH,OUTTO
MOVR0,#83H
MOV@R0,#00H
MOVR0,#84H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#0AH,OUTTO
MOVR0,#84H
MOV@R0,#00H
RETI
OUTTO:
SETBET0
POPPSW
POPACC
RETI
FJI:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVTL0,#0B0H
MOVTH0,#03CH
SETBTR0
MOVR0,#88H
MOVA,@R0
INCA
MOV@R0,A
CJNEA,#02H,OUTTO1
MOVR0,#88H
MOV@R0,#00H
MOVR0,#80H
MOVA,@R0
DECA
MOV@R0,A
CJNEA,#0FFH,OUTTO1
MOVR0,#80H
MOV@R0,#09H
MOVR0,#82H
MOVA,@R0
DECA
MOV@R0,A
CJNEA,#0FFH,OUTTO1
MOVR0,#82H
MOV@R0,#09H
MOVR0,#83H
MOVA,@R0
DECA
MOV@R0,A
CJNEA,#0FFH,OUTTO1
MOVR0,#83H
MOV@R0,#09H
MOVR0,#84H
MOVA,@R0
DECA
MOV@R0,A
CJNEA,#0FFH,OUTTO1
MOVR0,#84H
MOV@R0,#09H
RETI
OUTTO1:
SETBET0
POPPSW
POPACC
RETI
TIME1:
MOVTH1,#00H
MOVTL1,#00H
MOVR0,#89H
MOVA,@R0
INCA
CJNEA,#02H,ITFH
MOVA,#00H
ITFH:
RETI
MOV@R0,A
END
六、设计总结:
经过二个星期的课程设计,过程曲折可谓一语难尽。
在此期间我也失落过,也曾一度热情高涨。
从开始时激情高涨到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
在老师的指导下,我们顺利完成了课程设计。
让我学到了以下几点:
1、将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻。
对程序的编译过程了解透彻。
2、本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。
3、由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS等的基本知识。
程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。
4、由于水平有限,实验程序运行有一定的限制,以后会加强改进。
总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但这需要在实践中慢慢提高,还希望老师能够多多指导,促进我不断的进步。
最后再一次感谢邸老师对我的悉心指导和无私帮助。
七、参考文献:
[1]高峰.单片微型计算机原理与接口技术.科学出版社,2007
[2]夏继强.单片机实验与实践教程[M].北京:
北京航空航天大学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 秒表 001