LED指示灯的基本控制

LED原理图(CT107D开发板)

硬件实现原理

1.三八译码器

实现通过LED点亮首先要驱动74H138译码器(三八译码器)输出,根据P2^5,P2^6,P2^7输入不同的电平,可以不同的输出口

备注:(H—高电平 L—低电平 X—任意电平  E3、E2、E1 为输入使能端  

    A2(C)、A1(B)、A0(A)为二进制数据输入端  字母上面的“—”号说明该输入/输出为低电平有效)

 2.锁存器

74HC573锁存器是八路3态输出的非反转透明锁存器,当锁存使能端LE为高时,数据就会同步输出,当锁存使能变低是,数据就会被锁存。

 

扫描二维码关注公众号,回复: 11207123 查看本文章

3.LED电路原理

当74HC573锁存器导通时候需要Y4C电平有效,Y4C有Y4和WR端通过或门输出,WR接地为低电平0,,那么就需要Y4输出低电平,Y4由74H138译码器控制输出。只要通过对CBA三端对应输出100即可。 

代码实现

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;

void delay(u16 i)
{
    while(i--);
}

void LED()
{
    u16 i;
    HC138_A = 0;
    HC138_B = 0;
    HC138_C = 1;
    
    for(i =0;i <3;i++)
    {
        P0 = 0x00;
        delay(60000);
        P0 = 0xff;
        delay(60000);
    }
    
    for(i=0;i<=7;i++)
    {
        P0=0xff<<i;
        delay(60000);
    }
    
    for(i=0;i<=7;i++)
    {
        P0=~(0xff<<i);
        delay(60000);
    }
    /*
    #include "intrins.h"
    for(i=0;i<7;i++)
   {
        led=_crol_(led,1);
     delay(50000);
   }
   for(i=0;i<7;i++)
   {
       led=_cror_(led,1);
    delay(50000);
   }//左移右移函数,也是可以跑马灯的。
    */
}

void main()
{
    while(1)
    {
        LED();
    }
}

猜你喜欢

转载自www.cnblogs.com/kevinkala/p/12901955.html