二、LED

 

中文名:发光二极管

外文名:Light Emitting Diode

简称:LED

用途:照明、广告灯、指引灯、屏幕

1. 点亮LED灯

LED模块的引脚连接在MCU上的P20~p27引脚上,CPU通过控制寄存器来控制硬件电路,当我们想点亮一个LED灯时,只需要把对应的寄存器置低电平就好。

#include <REGX52.H>
void main()
{
        P2 = 0xFE;//1111 1110
}

单片机由于晶振在工作时不会停止运行程序的,当所有程序执行完后会从头执行该程序,相当于一直在开关该LED灯,但这显然这不是我们想要的,所以需要让他停下来,所以可以加个循环

#include <REGX52.H>

void main()
{
        while(1)
        {
                P2 = 0xFE;//1111 1110
        }
}

2.LED灯闪烁

#include <REGX52.H>
void main()
{
        while(1)
        {
                P2 = 0xFE;
                P2 = 0xFF;      
        }
}

上面,完成了LED的点亮,现在我们需要使LED进行闪烁,理论上我们只需要将LED等打开在关闭就好了,可是发现LED还是常亮,原因在与单片机的运行速度使MHZ,每秒运行100万次,所以肉眼上观察不到LED灯明显的变化,所以此时需要加上延时函数来使得我们能明显观察到LED等的变化。

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 22;
        j = 3;
        k = 227;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void main()
{
        while(1)
        {
                P2 = 0xEF;
                Delay500ms();
                P2 = 0xFF;
                Delay500ms();
                
        }
}

3.LED流水灯

#include <REGX52.H>
#include <INTRINS.H>

void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j, k;
        _nop_();
        _nop_();
        i = 5;
        j = 52;
        k = 195;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void main()
{
        P2 = 0xFF;
        while(1)
        {
                if(P2 == 0)
                {
                        P2 = 0xFF;
                }
                P2 = P2<<1;
                Delay100ms();
        }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值