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