基于单片机的按键模拟

更新时间:2024-05-29 11:01:01 阅读量: 综合文库 文档下载

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

目录

1.引言 .................................................. 1

1.1作品简介 ............................................................................................................................ 1

1.2作品设计思路及方案 ........................................................................................................ 1

1.2.1总述 .......................................................................................................................... 1 1.2.2主程序流程图 .......................................................................................................... 2 1.2.3中断子程序流程图 .................................................................................................. 3 1.3知识点应用 ........................................................................................................................ 3

2.硬件应用 .............................................. 4

2.1AT89C51单片机 ................................................................................................................ 4 2.2独立式键盘 ........................................................................................................................ 5 2.3数码管 ................................................................................................................................ 6 2.4串口通信 ............................................................................................................................ 6 2.5外部中断 ............................................................................................................................ 7

3.软件应用 .............................................. 7

3.1程序初始化 ........................................................................................................................ 7 3.2主程序及其说明 ................................................................................................................ 8 3.3中断程序及子程序 .......................................................................................................... 10

4.调试 ..................................................11

4.1问题1 ............................................................................................................................... 11

4.2问题2 ............................................................................................................................... 11

5.结语 ..................................................11 6.参考文献 ..............................................12 7.附录程序 ..............................................13

1.引言

1.1作品简介

电视、空调等现代的电器产品都需要一个小小的遥控器来控制,而许多如手机的电子产品都能进行改装而达到控制其他电器的目的,可见,遥控器已经在我们的生活中占了很重要的地位。由此我产生了基于51单片机的基础上设计一个按键显示输出装置的想法。该作品具有按下一个键后,在数码管上显示相应数字并发送数字到pc机上的功能。如果能够继续加深单片机的其他应用,该作品会更完美,有效。

1.2作品设计思路及方案

1.2.1总述

本作品的大致思路是:按下按键,数码管显示数字,同时pc机输出相应数字,并还有一个中断功能,如图1.2.1所示。

1

1.2.2主程序流程图

本作品主程序:判断按键是否按下,如果按下,执行相应的程序,之后返回。如果没按下,则判断下一个按键是否按下,如此反复。如图1.2.2

图1.2.2

2

1.2.3中断子程序流程图

本作品使用了外部中断0,当中断按下时,当前数码管上显示入栈保护,数码管上全部显示“A”,按键弹起后,数码管恢复原来状态。如图1.2.3

1.3知识点应用

本作品运用了51单片机的独立式键盘(I/o口)、数码管显示、串口同信、外部中断四个知识点。

3

2.硬件应用

本作品使用了单片机上的一些硬件:独立式键盘、数码管、中断0开关、串口助手等。

2.1AT89C51单片机

本作品是基于51单片机基础上扩展的应用,选用AT89C51芯片,如图2.1.1所示:

图2.1.1

4

2.2独立式键盘

在P1口上接按钮,作为独立式键盘,如图2.2.1所示:

图2.2.1

由于只用到了四个键,所以只安装了四个开关,从上往下依次为S1、S2、S3、S4

5

2.3数码管

数码管作为显示输出,装有两片74HC573芯片作为P3.6与P3.7开关来控制段码与位码的输入,如图2.3.1

图2.3.1

2.4串口通信

串口通信应用串口中断,在PC机上输出信号,这里只放出仿真用的端口,如图2.4.1

图2.4.1

6

2.5外部中断

外部中断使用的是外部中断0,按钮为P2.7,如图2.5.1所示:

图2.5.1

另外,本作品使用的是实验室中的试验箱,在此不再给出实物图。

3.软件应用

本作品功能简单,按键按下,数码管上显示相应数字并输出到PC机上,可同时按下多个按键并同时显示,但只输出到PC上一次,外部中断时有保留当前数字的功能并使得数码管全部显示“A”,当外部中断结束,数字会恢复原来的样子。

3.1程序初始化

设置外部中断,串口通信等初始参数。 ORG

0000H

7

LJMP ORG LJMP

MAIN

0003H ;外部中断0入口 EINT0

ORG 0030H

SCON,#50H ;设置串口工作方式

MAIN: MOV

MOV MOV MOV MOV SETB SETB SETB

PCON,#80H ;波特率加倍 TMOD,#20H ;设置计数器工作方式 TH1,#0FAH ;设置波特率 TL1,#0FAH

EX0 ;打开中断0 EA ;中断总开关打开 TR1 ;计数器工作

TI

;TI清零

CLR

CLR

IT0 ;中断0为跳沿触发方式

3.2主程序及其说明

主程序运行时查验是否有按键按下,如果按下,则接通相应子程序向数码管发送数据并向PC机发送数值。

LP:

JB P1.0,L2 ;如果按键1没有按下,则跳转到L2

LCALL DM ;载入子程序DM

MOV P0,#06H ;送段码 LCALL WM ;载入子程序WM MOV P0,#0FEH ;送位码 LCALL DELAY ;延时 MOV MOV JNB CLR

A,#31H ;送31H到A SBUF,A ;发送数据 TI,$ TI

8

L2: JB P1.1,L3 LCALL DM

MOV P0,#5BH

LCALL WM MOV P0,#0FDH LCALL DELAY MOV A,#32H MOV SBUF,A JNB TI,$ CLR

TI

L3: JB P1.2,L4 LCALL DM MOV P0,#4FH

LCALL WM

MOV P0,#0FBH LCALL DELAY MOV A,#33H MOV SBUF,A JNB TI,$ CLR

TI

L4:

JB P1.3,LP

LCALL DM MOV P0,#66H LCALL WM MOV P0,#0F7H LCALL DELAY MOV A,#34H MOV SBUF,A

JNB

TI,$

9

CLR LJMP RET

TI LP

3.3中断程序及子程序

外部中断0开启时,保护当前数码管数值入栈,并使数码管全部显示“A”,之后外部中断0断开,数值出栈,数码管恢复原先数值。

EINT0: PUSH 80H ;入栈保护

LCALL DM ;调用DM MOV

P0,#77H ;送段码

LCALL WM ;调用WM MOV

P0,#00H ;送位码

LCALL DELAY ;延时 POP RETI

80H ;出栈

DM: SETB P3.6 ;P3.6开

CLR P3.7 ;P3.7关 RET

WM: SETB P3.7 ;P3.7开 CLR P3.6 ;P3.6关

RET

DELAY: MOV R7,#10 ;延时40ms DE1: MOV R6,#100 DE2: MOV R5,#20 DJNZ R5,$ DJNZ R6,DE2 DJNZ R7,DE1 RET

10

4.调试

本作品经过仿真和实物调试,发现一些问题。

4.1问题1

仿真与实物有一些差距,延时过大的话,当按键超过两个一直按下时,实物与仿真上的数码管显示数值时都是轮流闪动,无法达到同时亮起的效果,而当延时过小时,实物显示无问题,但仿真显示都是乱码或者无法显示。

4.2问题2

实物运用时,按下一个键经常显示几个相同数字,并且显示的数字个数并不相同,毫无规律。

5.结语

经过了一番努力,在老师和同学的帮助下,我顺利结束了此次的作品设计,在这个过程中,我了解了许多,感悟了许多。

实践是检验真理的唯一标准,经过这次作品设计,我深深理解了这句话,在经过了仿真与实物的运用后,单片机各个部分的功能显得明确而具体。这在作品设计之前只知道概念的我看来简直不可思议,所以说,只有将理论与实际结合起来,才能让人映像深刻并真正理解。

通过这次设计,我深刻理解到要做好一件事情,必须有系统的思维方式和方法,要有耐心和恒心去钻研努力,要善于运用资源丰富充实自己,要有整体的目光来看待事物,再从局部到整体慢慢实现,这样才会有效率。

11

6.参考文献

【1】张毅刚、彭喜元、彭宇. 单片机原理及应用【M】.第二版. 北京:高等教育出版社,2010.5,119-133

【2】bzxy_lyz.基于AT89C51的串口通信程序设计【ol】.

http://wenku.http://www.wodefanwen.com//view/45d19623482fb4daa58d4b8e.html, 010.5.23

【3】G.Edward Suh, Charles W.O’Donnell, Srinivas Devadas, Aegis:a single-chip

secure processor, IEEE Design and Test of Computers.2008,24(6)570-580. 【4】彭为.《单片机典型系统设计实例精讲》,北京:电子工业出版社,2006 【5】潘永雄.《新编单片机原理与应用》,西安:西安电子科技大学出版社,2003

12

7.附录程序

ORG 0000H LJMP MAIN ORG 0003H LJMP

EINT0

ORG 0030H

MAIN: MOV

SCON,#50H

MOV PCON,#80H MOV TMOD,#20H MOV TH1,#0FAH MOV TL1,#0FAH SETB EX0 SETB ES SETB EA

SETB TR1 CLR

TI

CLR IT0

CLR PS

SETB

PX0

LP: JB P1.0,L2 LCALL DM MOV P0,#06H LCALL WM MOV P0,#0FEH LCALL DELAY MOV A,#31H MOV SBUF,A

JNB

TI,$

13

CLR TI

L2: JB P1.1,L3 LCALL DM

MOV P0,#5BH

LCALL WM MOV P0,#0FDH LCALL DELAY MOV A,#32H MOV SBUF,A JNB TI,$

CLR

TI

L3: JB P1.2,L4 LCALL DM MOV P0,#4FH

LCALL WM

MOV P0,#0FBH LCALL DELAY MOV A,#33H MOV SBUF,A JNB TI,$

CLR

TI

L4: JB P1.3,LP LCALL DM MOV P0,#66H LCALL WM MOV P0,#0F7H LCALL DELAY MOV A,#34H

MOV

SBUF,A

14

JNB CLR LJMP RET

TI,$ TI LP

EINT0: PUSH 80H LCALL MOV

LCALL MOV

LCALL POP RETI

DM: SETB P3.6 CLR P3.7

RET

WM: SETB P3.7 CLR P3.6

RET

DELAY:MOV R7,#10 DE1:MOV R6,#100 DE2:MOV R5,#10 DJNZ R5,$ DJNZ R6,DE2 DJNZ R7,DE1 RET

END

DM P0,#77H

WM P0,#00H

DELAY 80H

15

JNB CLR LJMP RET

TI,$ TI LP

EINT0: PUSH 80H LCALL MOV

LCALL MOV

LCALL POP RETI

DM: SETB P3.6 CLR P3.7

RET

WM: SETB P3.7 CLR P3.6

RET

DELAY:MOV R7,#10 DE1:MOV R6,#100 DE2:MOV R5,#10 DJNZ R5,$ DJNZ R6,DE2 DJNZ R7,DE1 RET

END

DM P0,#77H

WM P0,#00H

DELAY 80H

15

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

Top