基于蓝桥杯开发板的模块实现 #LED篇

对原理图的剖析

我们通过74HC573这个编码器进行对LED的控制,那么首先我们先实现一个最简单的led的延迟频闪,L1~L8的200ms 的频闪。

通过原理图我们知道,74HC573编码器的使能端是由Y4C控制的,通过原理图我们看到Y4C的编码器如下 

由图我们可以知道,LED的控制由P25 P26 P27 来控制,假如我想要L1~L8的灯全部都亮,我们就用P2的P25 P26 P27来控制 由于LED对应Y4控制,那么显然P25 P26 P27的值分别为0 0 1,16进制为0x80.到此SM74HC138的控制到此结束了,再来74HC573中对8个小灯泡进行控制,分析可以知道,当P00 ~ P07 都为低电位的时候小灯泡才会都亮,对应值就为零。这里直接上代码进行理解

void main(void)
{
    while(1)
    {
        P2 = ((P2 & 0x1f) | 0x80);
        P0 = 0xff; 
        P2 &= 0x1f;
    }
}

这里对LED进行的是初始化,让P00~P07都为1的时候LED不亮

void main(void)
{
    while(1)
    {
        P2 = ((P2 & 0x1f) | 0x80);
        P0 = 0x00;  
        P2 &= 0x1f;
     }
}

这里通过改变P0使P00~P07的值为低电平也就是0,使所有LED都亮起来

好了我们已经可以用代码实现对LED的控制了,中间在穿插延迟函数就能实现LED的延迟频闪。下面直接放完整代码

void delay()	
{
    unsigned char i, j, k;

    _nop_();
    _nop_();
    i = 9;
    j = 104;
    k = 139;
    do
    {
        do
        {
            while (--k);
        }
        while (--j);
    }
    while (--i);
}


void main(void)
{
    while(1)
    {
        P2 = ((P2 & 0x1f) | 0x80);
        P0 = 0xff; 
        P2 &= 0x1f;
        delay();

        P2 = ((P2 & 0x1f) | 0x80);
        P0 = 0x00;
        P2 &= 0x1f;
        delay();
    }
}

那么来看看实际结果吧

LED频闪

小结:

后续每周至少会带来一篇文章来实现蓝桥杯单片机的模块内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值