LED与锁存器

点亮一个LED

# include <reg52.h>
sbit led1=P1^0;
void main()
{
led1=0;
}
  • 以上代码中的第二行sbit led1=P1^0;是将P1的第一引脚重新命名,然后led1=0;代表是能低电平,点亮对应的LED灯。

  • 如需要点亮其他灯,只需要改动名称为P1^2、P1^3 、P1^7,即可点亮。

点亮多个LED灯

  • 在之前我们使用寄存器的位操作,将我们看到的P1的某一位重新命名,在使用输出高低电平来控制对应的LED亮灭,现在我们还可以对整个P1寄存器进行操作。

  • 之前总结过,在点亮LED灯实验中P1寄存器对应每一位输出与锁存器的DB口和Q相同高低电平,现在使用一个16进制的数控制这个寄存器。

  • 例如现在我们需要点亮2468灯,则Q1、Q3、Q5、Q7对应的为单片机P1.1~P1.7,将这几脚对应低位,按照数字来看的话就是10101010,其中的D2在低位中,所以这串数字按照二进制的话从后往前读就是01010101(高位互换),就变成16进制为(用计算机算得)为55,程序表示0x55,所以程序中只需要进行P1=0x55操作就可以点亮2468LED灯。

 

  • 代码如下

#include <reg52.h>
void main()
{
P1=0X55;
}
  • 同理想要点亮1357就是反着来。0xaa。

  • 代码如下

#include <reg52.h>
void main()
{
P1=0xaa;
}
  • 这里拓展一点知识,当我们进行AD实验时,一般开发板LED旁边连接的有AD,因为要使用单片机的P1,此时为了防止LED灯乱跑,我们将LE设置低电平,此时无论P1的各个引脚输出为高电平还是低电平,锁存器都始终为Q0这个定值大于使LED导通的临界电平值,这样LED左右两边都是高电平,LED灯不通,此时就相当于LED被锁了起来。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向明月和赵沟渠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值