课程设计内容(1) - 图文

更新时间:2023-03-09 21:31:01 阅读量: 综合文库 文档下载

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

1 任务及要求

1.1设计任务

用3开关控制的两数码显示倒数计时器的Proteus仿真及汇编程序设计。

1.2 设计要求

利用AT89C51单片机的P0端口连接到电路图左边的数码管上,P2端口连接到电路图右边的数码管上, P3.1、P3.3、P3.5分别接三个开关。启动时,两数码管都显示为零,每按下P3.1开关时,给左边显示十位的数码管加一,每按下P3.3开关时,给右边显示个位的数码管加一。然后当按下P3.5开关时启动倒数计时,当左右数码管显示都为零时,LED红灯开始闪烁。

2 设计思想

2.1 硬件设计思想

硬件包括AT89C51芯片,两个数码管,一个红色LED和3个控制开关,在

51芯片外部接一个震荡时钟频率。用51芯片的控制模块,具有按键等功能,并利

用51芯片的P0、P2口作输出信号,P3.1、P3.3、P3.5做控制输入信号,使得数码管显示在软件的控制下工作。

2.2 软件设计思想

采用汇编语言编写程序,程序由一个主函数,3个按键控制子程序和3个延时子程序构成。由主函数实现等待按键,控制左右数码管数字显示和启动倒数计时。当启动倒数计时程序后,程序按步进行让后当条件满足时调用红灯闪烁程序来结束程序。

3 电路原理与电路图

3.1 电路原理

单片机最小系统。一个AT89C51单片机做为控制电路,运用其P0、P2口来控制两数码管显示,通过P3.1、P3.3两按键控制给左右两数码管加数,通过P3.5按键来控制倒数计时。P1.0接LED显示。

1

3.2 电路原理图

4 流程图与算法描述

4.1 系统流程图

如图4.1所示

开始 P3.5=1? 启动倒数计时子程序 P3.1=1? 调用左数码管置数子程序 P3.3=1? 调用右数码管置数子程序

图4.1主函数流程图

2

4.2 置数子程序流程图

如图4.2所示

把R1移入A中 通过MOV A,@A+DPTR调用表格 将A从表格中取得的数显示在左数码管调用延时子程序 将R1加1 NO 判断R1是否为7 YES 将R1置0 返回

图4.2十位显示数码管置数子程序流程图

3

4.3 启动倒计时子程序流程图

如图4.3所示

取R1,R2的数 将R1,R2分别作为一个两位数存入R0 R0自减1 取R0个位,十位数 R0十位,个位数调用表格显示在左右数码管上 调用延时子程序 NO R0=0? YES 红灯闪烁 END

图4.3 启动倒数计时子程序

4

4.4延时子程序流程图

如图4.4所示

R3置数100 R4置数20 20H置数250 NO 20H-1=0? NO R4-1=0? NOR3-1=0? YES 返回

图4.4 延时子程序

5

4.5 算法描述

1、设计一个延时子程序,延时1s。延时程序的代码段如下:

DELAY2: MOV R3,#100 D4: MOV R4,#20 D5: MOV 20H,#248 D6: DJNZ 20H,D6 DJNZ R4,D5 DJNZ R3,D4 RET

2、十位显示数码管置数子程序代码如下:

S2: MOV A,#00H MOV A,R1

MOVC A,@A+DPTR MOV P0,A LCALL DELAY1 INC R1

MOV 25H,R1 CJNE R1,#07H,S0 MOV 25H,R1 MOV R1,#00H LJMP S0

3、个位显示数码管置数子程序代码如下:

S3: MOV A,#00H

MOV A,R2

MOVC A,@A+DPTR MOV P2,A LCALL DELAY1 INC R2

MOV 26H,R2 CJNE R2,#0AH,S0 MOV 26H,R2 MOV R2,#00H LJMP S0

4、主函数,实现系统初始化和彩灯闪烁。代码段如下:

START: MOV R0,#06H

MOV DPTR,#TABLE MOV P0,#3FH MOV P2,#3FH

6

MOV P3,#00H MOV R1,#01H MOV R2,#01H CLR P1.0

S0: JB P3.5,S1

JB P3.1,S2 JB P3.3,S3 LJMP S0

5 程序清单与仿真结果

5.1 程序清单

ORG 0000H LJMP START ORG 0030H

START: MOV R0,#06H MOV DPTR,#TABLE MOV P0,#3FH MOV P2,#3FH MOV P3,#00H MOV R1,#01H MOV R2,#01H CLR P1.0 S0: JB P3.5,S1 JB P3.1,S2 JB P3.3,S3 LJMP S0

S1: MOV R0,25H CJNE R0,#00,S10 LJMP S12 S10: DEC 25H S12: MOV A,25H MOV B,#10 MUL AB ADD A,26H MOV R0,A S11: DEC R0 MOV A,R0 MOV B,#10

7

;主函数 启动倒数计时子程序 ; DIV AB

MOVC A,@A+DPTR MOV P0,A MOV A,B

MOVC A,@A+DPTR MOV P2,A

LCALL DELAY2 CJNE R0,#00H,S11 S2: S3: TABLE: DELAY1: D1: D2: D3:

LJMP S4 DEC R0

MOV A,#00H ;左数码管置数子程序 MOV A,R1

MOVC A,@A+DPTR MOV P0,A LCALL DELAY1 INC R1

MOV 25H,R1 CJNE R1,#07H,S0 MOV 25H,R1 MOV R1,#00H LJMP S0

MOV A,#00H ;右数码管置数子程序 MOV A,R2

MOVC A,@A+DPTR MOV P2,A LCALL DELAY1 INC R2

MOV 26H,R2 CJNE R2,#0AH,S0 MOV 26H,R2 MOV R2,#00H LJMP S0

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MOV R5,#5 ;延时子程序1 MOV R6,#250 MOV R7,#0FEH DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1

8

RET

DELAY2: MOV R3,#100 ;1s延时子程序 D4: MOV R4,#20 D5: MOV 20H,#248 D6: DJNZ 20H,D6 DJNZ R4,D5 DJNZ R3,D4 RET

DELAY3: D7: D8: S4:

MOV 21H,#25O MOV 22H,#250 DJNZ 22H,D8 DJNZ 21H,D7 RET

SETB P1.0 LCALL DELAY3 CLR P1.0

LCALL DELAY3 LJMP S4 END 9

延时子程序2 ;红灯闪烁程序 ; 5.2 仿真结果

系统初始化时,两数码管显示0,LED不闪烁仿真如下:

按下P3.1接口开关按钮实现十位显示加数操作,仿真如下:

10

按下P3.3接口开关按钮实现个位显示加数操作,仿真如下:

按下P3.5接口开关按钮启动倒数计时操作,仿真如下:

11

12

13

14

15

16

6 设计总结

6.1 设计体会

经过将近两周时间的努力,我们的课程设计终于做好了。刚开始我们看到题目时,脑中都是空白的,不知如何着手去做。后来,通过上网查找资料和组员的指导,以及同学的帮助和我们所学的课本知识,把这些都结合起来,我们就有了前进的方向。首先,我们把题目的要求流程化,画出流程图,在把流程图能的内容解读出来,利用汇编语言编程实现。接着画出电路图,利用Protues仿真,实现我们的题目要求,完成任务。通过这一次的课程设计,既巩固了我们所学的知识,也提高了我们团队间的合作能力,利用各自所长,发挥出作用,共同完成任务。虽然在这期间,我们很辛苦,但我们收获了很多。因为团队的力量,我们才会更好的完成了这次单片机的课程设计,做得才会更完美。

在此我非常感谢我的指导老师的细心辅导,让我对单片机原理这门课程有了不同的认识,提高了我独立自主的能力,同时我还要感谢我的队友,感谢他们与我一起付出的努力,我们才会更完美的完成了这次课程设计。

17

参考文献

[1] 蔡美琴,张为民,沈新群等.MCS51系列单片机系统及其应用[M].北京:高等教育出版社,1992.

[2]何立民.单片机应用技术选篇(5)[M].北京:北京航空航天大学出版社,1997. [3]杨光友. 单片机微型计算机原理及接口技术[M].北京:中国水利水电出版社,2002 [4]李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994 [5]阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989

18

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

Top