首页 理论教育 单片机接口技术应用:实现I/O接口输入/输出

单片机接口技术应用:实现I/O接口输入/输出

时间:2023-11-16 理论教育 版权反馈
【摘要】:1 单片机用开关控制LED显示实验采用8位拨动开关作为单片机输入控制元件,LED发光管作为显示元件。将接在P1口的拨动开关输入状态通过单片机输出在P2口上,用LED发光管表示出来。P1.0~P1.7上的8个开关1~8输入对应于输出P2.0~P2.7。开关2负责控制另外4个LED灯。每个开关控制4个LED灯是不能影响另4个LED灯状态的,可以利用逻辑运算指令ANL和ORL来完成。

单片机接口技术应用:实现I/O接口输入/输出

1 单片机用开关控制LED显示实验

采用8位拨动开关作为单片机输入控制元件,LED发光管作为显示元件。将接在P1口的拨动开关输入状态通过单片机输出在P2口上,用LED发光管表示出来。P1.0~P1.7上的8个开关1~8输入对应于输出P2.0~P2.7。若开关1打开,LED0亮;开关2打开,LED1亮;……开关8打开,LED7亮。

程序设计如下:

ORG 0000H

STAR:MOV P1,#0FFH;设置P1口为输入

MOV P2,#0FFH;P2口上的LED全灭

ST1:MOV A,P1;从P1口读入

MOV P2,A;送P2口显示

SJMP ST1;返回ST1,循环

END

根据电路原理图在单片机实验板(或面包板、实验PCB板)上安装好电路。将已固化目标代码的单片机安装到单片机插座上。上电后观察现象:拨动开关时,相应的发光管亮。

2 单个开关控制点亮多个LED灯实验

(1)电路原理图

电路原理图如图6-4所示。开关1(接P1.0引脚)负责控制4个LED灯(D1、D3、D5、D7),当其闭合时,点亮这4个灯;反之,断开时,这4个灯熄灭。开关2(接P1.2引脚)负责控制另外4个LED灯(D2、D4、D6、D8)。

978-7-111-54295-7-Chapter06-5.jpg

图6-4 每个开关分别控制4个LED灯的亮灭

(2)程序设计、汇编和编程(固化)

程序设计如下:

CNTR0:JB P1.0,NEXT

ANL P2,#10101010B

SJMP CNTR1

NEXT:ORL P2,#01010101B

CNTR1:JB P1.2,NEXT1

ANL P2,#01010101B(www.xing528.com)

SJMP FIN

NEXT1:ORL P2,#10101010B

FIN:SJMP CNTR0

(3)电路连接及现象观察

引脚电平信号受外部开关控制,当开关闭合时,引脚外部接地,呈现出低电平“0”信号;当开关断开时,引脚受内部上拉电阻影响,呈现出高电平“1”信号。每个开关控制4个LED灯是不能影响另4个LED灯状态的,可以利用逻辑运算指令ANL和ORL来完成。而点亮LED灯需要低电平“0”信号,与“0”相与即可;熄灭LED灯需要高电平“1”信号,与“1”相或即可。

3 8个LED灯自动交替闪烁实验

在P1引脚上的8个LED灯自动闪烁,实际上就是让LED灯亮一段时间,再灭一段时间,然后再亮,再灭,如此循环。换句话说,就是P1口周期地输出高低电平。但如果直接使用下面的几条指令是不行的,会出现一个问题:计算机执行指令的时间很快,是微秒级的。在极短时间内,LED灯亮了又灭,灭了又亮,LED灯无法闪烁发光,只能看到常亮的实际效果。

START:MOV P1,#01010101B

MOV P1,#10101010B

SJMP START

为了解决这个问题,就必须在第一条MOV指令执行之后,延时一段时间,再执行第二条MOV指令,然后再延时一段时间,重复上述过程即可。

程序设计如下:

START:MOV P1,#01010101B

LCALL DELAY

MOV P1,#10101010B

LCALL DELAY

SJMP START

DELAY:MOV R7,#250

D1:MOV R6,#250

D2:DJNZ R6,D2

DJNZ R7,D1

RET

END

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈