单片机秒表0.01s

更新时间:2024-04-09 22:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机接口设计》

课程设计报告

专 业: 电气工程及其自动化 班 级: 电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-1硬件电路

80C51 单片机 电源电路 键盘电路

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流程图

设定时间 启动前显示 开始开始

是 检测是否启动 不是 开始计时 开始计时后显示 是 检测计时是否到时间 数码管闪烁并报警 不是

不是 是否复位 是否复位是 R0=33H 是 不是 R0=30 R0加一 RETI 4.2.外部中断程序流程图

@R0是否为09H 不是 是 把@R0赋值00H 是 RETI @R0加一 4.3外部中断1的程序流程图

注:图2,3中的R0为存放计时数值地址的寄存器,@R0为以该寄存器中数据为地址的数据

检测是否继续 是 不是 检测是否正计时 不是 是 不是 检测是否到设定时间 检测是否计时到0000 不是 是 停止计时,并报警 加一计时 是 停止计时 减一计时 跳出中断程序 4.4定时中断程序流程图

五、程序设计如下:

LSEC EQU 80H SEC1 EQU 81H SEC2 EQU 82H SEC3 EQU 83H SEC4 EQU 84H SEC5 EQU 85H SEC6 EQU 86H SEC7 EQU 87H CISHU EQU 88H ORG 0000H AJMP MAIN ORG 0003H LJMP INT0 ORG 000BH AJMP TIME0 ORG 0013H LJMP INT1 ORG 001BH LJMP TIME1

MAIN: CLR P1.7

CLR P1.6 CLR P1.5

MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#00H MOV TL1,#00H

CLR 00H CLR 01H CLR TR1 CLR 02H CLR 03H CLR 04H

MOV TMOD,#09H MOV IE,#8FH SETB IT0 SETB IT1

MOV R0,#80H MOV R1,#05H MOV R0,85H MOV @R0,#0BH MOV R0,#86H MOV @R0,#0BH MOV R0,#87H MOV @R0,#0BH MOV R0,#80H

ZFUZHI: MOV @R0,#00H

INC R0

DJNZ R1,ZFUZHI MOV R0,#81H MOV @R0,#0AH MOV R7,#00H MOV R0,#70H MOV R1,#05H

显示第四位 显示第一位 显示第二位 显示第三位 图4.5显示程序流程图

CHUZHI: MOV @R0,#00H

INC R0

DJNZ R1,CHUZHI MOV R4,#00h

S1: ACALL SAOMIAO

LCALL BIJIAO ACALL FT ACALL DISP JMP S1

KEYSCAN: JB P1.0,AA

MOV R0,#60H MOV A,#00H MOV @R0,A SETB EX0

SJMP KEYOUT

WAIT1: JNB P1.3,WAIT1

MOV R0,#60H MOV A,@R0 CJNE A,#01H,KSCAN11 MOV R0,#80H RET

DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2

DJNZ R6,DL1 RET

SAOMIAO: CLR EA

CLR TR1

JB 00H,KEYOUT JNB P1.2,KEYSCAN0 JNB P1.3,KEYSCAN1 KEYOUT: SETB EA

RET

WAIT0: JNB P1.2,WAIT0 MOV R0,#60H MOV A,@R0 INC A

MOV @R0,A CLR ET0 CLR TR0 CLR P1.7 CJNE A,#05H,KEYOUT JNB 01H,ZHENG MOV A,#00H MOV @R0,A SETB ET0 SETB P1.7 SJMP KEYOUT

ZHENG: MOV R0,#80H

MOV R2,#05H YY: MOV @R0,#00H INC R0

DJNZ R2,YY SETB P1.7 SETB ET0 KSCAN11: KEYO: KEYSCAN3: MOV R1,#70H MOV A,@R0 INC A

MOV @R0,A MOV @R1,A CJNE A,#0AH,KEYOUT MOV A,#00H

MOV @R0,A MOV @R1,A SJMP KEYOUT

MOV R0,#60H

MOV A,@R0

CJNE A,#02H,KEYSCAN3 MOV R0,#82H MOV R1,#72H MOV A,@R0 INC A MOV @R0,A MOV @R1,A CJNE A,#0AH,KEYOUT MOV A,#00H MOV @R0,A MOV @R1,A SJMP KEYOUT

SJMP KEYOUT MOV R0,#60H

MOV A,@R0

CJNE A,#03H,KEYSCAN4 MOV R0,#83H MOV R1,#73H MOV A,@R0 INC A MOV @R0,A MOV @R1,A CJNE A,#0AH,KEYOUT MOV A,#00H

MOV @R0,A MOV @R1,A SJMP KEYOUT

KEYSCAN4: MOV R0,#60H

MOV A,@R0

CJNE A,#04H,KEYO MOV R0,#84H MOV R1,#74H MOV A,@R0 INC A INC R0

MOV A,@R0

CJNE A,74H,BJFH ACALL BAOJING SETB P1.6 JMP BJFH

BAOJING: CLR TR0

MOV @R0,A MOV @R1,A CJNE A,#0AH,KEYO MOV A,#00H MOV @R0,A MOV @R1,A LJMP KEYOUT

BIJIAO: JNB 01H,ZHBJ

JNB 03H,BJFH CLR 03H

MOV R0,#80H MOV A,@R0

CJNE A,#00H,BJFH MOV R0,#82H MOV A,@R0

CJNE A,#00H,BJFH MOV R0,#83H MOV A,@R0

CJNE A,#00H,BJFH MOV R0,#84H MOV A,@R0

CJNE A,#00H,BJFH ACALL BAOJING SETB P1.6 JMP BJFH

ZHBJ: JNB 06H,BJFH

CLR 06H

MOV R0,#80H MOV A,@R0

CJNE A,70H,BJFH MOV R0,#82H MOV A,@R0

CJNE A,72H,BJFH INC R0

MOV A,@R0

CJNE A,73H,BJFH CLR ET0 SETB TR1 MOV R0,#89H MOV A,@R0 CJNE A,#01H,AN MOV R0,#87H MOV @R0,#0CH DEC R0

MOV @R0,#0CH DEC R0

MOV @R0,#0CH JMP BAJIFAHU AN: MOV R0,#87H MOV R0,#87H MOV @R0,#0BH DEC R0

MOV @R0,#0BH DEC R0

MOV @R0,#0BH

BAJIFAHU: SETB P1.5

RET

FT: MOV R0,#80H MOV R2,#08H MOV R1,#90H MOV DPTR,#TAB FT1: MOV A,@R0

MOVC A,@A+DPTR MOV @R1,A INC R1 INC R0

DJNZ R2,FT1 RET TAB: DB

3FH,06H,5BH,4FH, 66H,6DH,7DH,07H, 7FH, 6FH,80H,00H,40H

DISP:

MOV R0,#81H MOV @R0,#0CH MOV R0,#90H MOV R1,#08H

MOV R2,#0FEH DISP1: MOV A,R2

MOV P2,A SETB 05H CLR P1.5

MOV R0,#80H MOV R2,#05H BB: MOV @R0,#00H INC R0

DJNZ R2,BB

OUT1: MOV TH0,#3CH

MOV A,@R0 MOV P0,A MOV A,R2

ACALL DL1MS ACALL DL1MS ACALL DL1MS ACALL DL1MS INC R0 RL A

MOV R2,A

DJNZ R1,DISP1 MOV P0,#0FFH MOV P2,#0FFH

RET

INT0: JNB P1.0,DUAN1

JNB P1.1,DUAN2

DUAN1: JB 00H,TING

SETB TR0 SETB 00H RETI

TING: CLR 00H

CLR TR0 RETI

DUAN2: JB 01H,ZHJSHU

SETB 01H SETB P1.5 CLR TR0

MOV R0,#80H MOV R1,#70H MOV R3,#05H

ZHUANYI1:MOV A,@R1 MOV @R0,A INC R0 INC R1

DJNZ R3,ZHUANYI1 JMP OUT1

ZHJSHU: CLR TR0

CLR 01H MOV TL0,#0B0H MOV R0,#81H MOV @R0,#0BH CLR 00H RETI

INT1:CLR TR0

MOV TH0,#3CH MOV TL0,#0B0H MOV R0,#80H MOV R1,#05H XX: MOV @R0,#00H INC R0

DJNZ R1,XX RETI

TIME0: SETB 03H

SETB 06H JB 01H,FJI PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 MOV R0,#88H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#02H,OUTTO MOV R0,#88H MOV @R0,#00 MOV R0,#80H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#0AH,OUTTO MOV R0,#80H MOV @R0,#00H

MOV R0,#82H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#0AH,OUTTO MOV R0,#82H MOV @R0,#00 MOV R0,#83H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#0AH,OUTTO MOV R0,#83H MOV @R0,#00H MOV R0,#84H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#0AH,OUTTO MOV R0,#84H MOV @R0,#00H RETI

OUTTO: SETB ET0

POP PSW POP ACC RETI

FJI: PUSH ACC

PUSH PSW CLR ET0 CLR TR0

MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 MOV R0,#88H MOV A,@R0 INC A

MOV @R0,A

CJNE A,#02H,OUTTO1 MOV R0,#88H MOV @R0,#00H MOV R0,#80H MOV A,@R0 DEC A MOV @R0,A

CJNE A,#0FFH,OUTTO1 MOV R0,#80H

MOV @R0,#09H MOV R0,#82H MOV A,@R0 DEC A MOV @R0,A CJNE A,#0FFH,OUTTO1 MOV R0,#82H MOV @R0,#09H MOV R0,#83H MOV A,@R0 DEC A MOV @R0,A CJNE A,#0FFH,OUTTO1

MOV R0,#83H MOV @R0,#09H MOV R0,#84H MOV A,@R0 DEC A

MOV @R0,A

CJNE A,#0FFH,OUTTO1 MOV R0,#84H MOV @R0,#09H RETI

OUTTO1: SETB ET0

POP PSW POP ACC RETI

TIME1: MOV TH1,#00H

MOV TL1,#00H MOV R0,#89H MOV A,@R0 INC A

CJNE A,#02H,ITFH MOV A,#00H ITFH:RETI MOV @R0,A END

六、设计总结:

经过二个星期的课程设计,过程曲折可谓一语难尽。在此期间我也失落过,也曾一度热情高涨。从开始时激情高涨到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。在老师的指导下,我们顺利完成了课程设计。让我学到了以下几点:

1、将学习的理论知识通过实验融会贯通,让我对它的理解更加深刻。对程序的编译过程了解透彻。

2、本次课程设计以自己设计为主,因此培养了学习的积极性,让我能够独立去分析问题、发现问题、解决问题,更增强我与老师同学交流沟通和合作完成任务的能力。

3、由于这次课程设计不仅设计编程方面的知识,还涉及了其它学科的知识,例如PROTEUS等的基本知识。程序是用汇编语言来编写的,这次课程设计让我在编程能力方面得到了提高。

4、由于水平有限,实验程序运行有一定的限制,以后会加强改进。 总之,通过这次课程设计,不仅加深了我对单片机理论方面的理解,将理论更好的运用的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和做事的耐心和细心,认识合作的重要性,虽然程序可能有一定的浪费资源,且较罗嗦,但这需要在实践中慢慢提高,还希望老师能够多多指导,促进我不断的进步。最后再一次感谢邸老师对我的悉心指导和无私帮助。

七、参考文献:

[1] 高峰.单片微型计算机原理与接口技术.科学出版社,2007

[2] 夏继强. 单片机实验与实践教程[M]. 北京:北京航空航天大学出版社, 2001

本文来源:https://www.bwwdw.com/article/dx6r.html

Top