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为高时,数据就会同步输出,当锁存使能变低是,数据就会被锁存。
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();
}
}
每一天的分享时刻