新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机学习之1-锁存器驱动led灯

51单片机学习之1-锁存器驱动led灯

作者: 时间:2016-11-30 来源:网络 收藏

真值表



这表格分成两个部分:INPUTS(输入)、OUTPUT(输出)。
L:表示低电平 在INPUTS表示输入低电平 在OUTPUT表示输出低电平。
H:表示高电平 在INPUTS表示输入高电平在OUTPUT表示输出高电平。
X:表示无所谓是高电平还是低电平。
Q0:表示维持原来的状态不变。
Z:高阻态 (接的是高电平则是高电平,接的是低电平则是低电平)当输出高阻态时,说明芯片没有工作。

INPUTS(输入):
OE:OE上面有一条横杠代表低电平有效。
LE:锁存控制。
D:输入端 即 D0 — D7

OUTPUT(输出):
Q:输出端 即 Q0 — Q7

真值表解释:
第三行:OE=LLE=H D=H Q=H
表示OE为低电平时,LE为高电平即不锁存,那么D是高电平则Q也是高电平。
第四行:OE=LLE=H D=L Q=L
表示OE为低电平时,LE为高电平即不锁存,那么D是低电平则Q也是低电平。
第五行:OE=L LE=L D=X Q=Q0
表示OE为低电平时,LE为低电平即锁存,那么无论D是什么状态,Q仍保持上一次的状态。
第六行:OE=H LE=X D=X Q=Z
表示OE为高电平即停用芯片,LE无论是什么状态,D无论是什么状态,Q保持高阻态即不起作用。

本文引用地址://m.amcfsurvey.com/article/201611/323865.htm


二、电路图



单片机的一组P0口要控制8个Led灯,首先需要将LE引脚置1,让74HC573的Q输出端与D输入端关联起来。这样P0口的电平状态会传递给D输入端进而改变Q的电平状态。

8个Led的正极接在1k的排阻。相当于每个Led串入一个1k的电阻。这里的电阻起限流作用,硅发光二极管的发光压降是0.7V;其发光的电流一般为3—10mA,而单片机(控制芯片)的I/O口有一个灌入电流一般为20mA左右(超过这个电流时,单片机内部PN节会被击穿)。所以加一个1k电阻限流,避免流过Led的电流过大而烧毁Led。

(单片机(控制芯片)的I/O口有一个灌入电流一般为20mA左右;超过这个电流时,单片机内部PN节会被击穿。一般的继电器驱动电流在40、50—120mA;一般常用9012的PNP(9013、NPN)三极管作为开关三极管,该三极管的驱动电流可以达到200mA左右,可以用来驱动继电器。达林顿反向驱动器:ULN2001A—ULN2002A(ST)驱动电流500mA;(给低电平输出高电平,给高电平输出低电平))

电阻的取值:

当Led点亮后,Led会有一个电压。一般情况下红色直插LED应该是1.7V,剩下3.3V的电压会加在电阻上。Led需要的电流是3.3ma(0.0033A)电压除于电流3.3V/0.0033A=1000欧=1K。(不同的厂家生产的LED的电压和电流可能略有差别)

我们要让Led亮,那么首先要明确的是,单片机是TTL电平,高电平为+5V低电平为0V,单片机供电也是5V,所以电源正极VCC应该为+5V负极为0V。Led的正极通过电阻接在VCC,Led的负极接在74HC573的Q输出端。当单片机的IO口给低电平时即0V,并且74HC573LE为高电平,那么电流会从VCC→1K电阻→Led→74HC573Q→74HC573D→单片机的IO口,此时Led灯亮。

按照上面的电路图,程序代码应为:

#include

sbitLed=P0^0;

sbitLE=P1^6;//由于51单片机上电,IO口默认为高电平所以这句可省略。

voidmain()

{

LE=1; //由于51单片机上电,IO口默认为高电平所以这句可省略。

Led=0;//直接操作P0的0端口让第一个Led灯亮

//P0=0xFE;//操作P0一组IO口,0xFE==11111110,P0的0端口置0其余置1 效果和 Led=0 一样。不同的是前者操作了一组端口后者只操作了一个端口
P0=0x00; //P1端口全部置0即让所有的LED灯亮。

while(1); // 程序运行到这里的时候 一直无限循环。因为Keil 编译后期产生的汇编代码中,结尾有一条 LJMP main,就是不同的执行main函数。加上这一条就可以阻止它重复执行上面的代码。


上一页 1 2 下一页

关键词:51单片机锁存器led

评论


相关推荐

技术专区

关闭