大家在玩单片机的过程中,可能都曾经看到有资料说单片机的IO输出负载能力有限,如果负载电流过大,会造成单片机永久损坏。
我查看了一些单片机的Datasheet,目前大部分单片机的IO口都支持推挽输出模式,在此模式下,单个IO口最高可以输出20mA的电流,这个电流足以驱动普通的LED,但单片机整体的电流还是有限制的,一般在100mA左右。有些IO口还不支持大电流输出,这是也必须加缓冲器才能驱动大电流的外设。
下图摘自STM8S103系列MCU的数据手册,可以看到GPIO口的电流限制:
当我们的电路设计中有较大功率的负载时,就需要缓冲器了。单路的缓冲器可以使用晶体三极管来实现,多路的缓冲器, 使用集成电路就比较方便了。74HC245就是一种八路缓冲器的集成电路。
引脚原理图如下:
根据Function Table的说明,我们将OE和DIR都置为低电平,就可以实现从B到A方向的数据传输,如果DIR置为高电平,则可以实现从A到B方向的数据传输。
我做了一个简单的试验,使用Arduino+74HC245来驱动8个LED,在此试验中,还应用了另外一个比较有意思的器件,叫做排阻,大家都知道,在驱动LED时,必须加限流电阻,如果驱动8个LED,就需要加8个电阻,排阻就是集成了多个同样阻值的电阻的集成器件,使用比较方便。
下面是我使用的8X1K欧的排阻:
整体连接效果如下:
关于74HC245的更多资料,可以参考Datasheet: