74HC138译码器使用方法

单片机编程中经常遇到IO不够用的情况,于是使用138译码器,将3个IO拓展为8个。

138译码器一共有16个引脚,功能如下:

引脚符号功能
15,14,13,12,11,10,9,7Y0-Y7输出(低电平有效)
1,2,3A0-A2输入
4,5E1,E2使能(低电平有效)
6E3使能(高电平有效)
8GND
16VCC电源(5V)

输出真值表如下:

L为0,H为1。

简单理解为对A0-A2进行加权:

A2——4

A1——2

A0——1

例如A2、A1、A0的值为1、1、0时,对应输出为4X1+2X1+1X0=6,因此Y6输出0,其它口输出1。

那最后如何接线呢:如果只用一个138译码器,E1、E2接地,E3接5V,A0、A1、A2接单片机IO,分别输入1/0即可,附32参考程序。

void W74HC138_WriteByte(u8 h)
{
	u8 a,b,c;
	switch(h)
	{
		case 0: a=1; b=1; c=1; break;
		case 1: a=0; b=1; c=1; break;
		case 2: a=1; b=0; c=1; break;
		case 3: a=0; b=0; c=1; break;
		case 4: a=1; b=1; c=0; break;
		case 5: a=0; b=1; c=0; break;
		case 6: a=1; b=0; c=0; break;
		case 7: a=0; b=0; c=0; break;
	}
	GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(a));
	GPIO_WriteBit(GPIOA, GPIO_Pin_5, (BitAction)(b));
	GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)(c));//分别写入数据
}
74HC138是一款常用的3 - 8线译码器,其接线方法如下: ### 电源引脚接线 - 74HC138有两个电源引脚,VCC接电源正极,通常接 +5V 电源;GND接电源负极,也就是接地。 ### 使能引脚接线 - 74HC138有3个使能引脚,分别是E1、E2和E3。只有当E1和E2接低电平(GND),E3接高电平(VCC)时,译码器才会正常工作。若不满足此条件,所有的输出引脚都会被强制置为高电平。 ### 地址输入引脚接线 - 74HC138有3个地址输入引脚,分别是A0、A1和A2。这3个引脚用于选择8个输出通道中的一个。根据这3个引脚的不同电平组合(二进制编码),可以选中对应的输出通道。 | A2 | A1 | A0 | 选中输出通道 | | --- | --- | --- | --- | | 0 | 0 | 0 | Y0 | | 0 | 0 | 1 | Y1 | | 0 | 1 | 0 | Y2 | | 0 | 1 | 1 | Y3 | | 1 | 0 | 0 | Y4 | | 1 | 0 | 1 | Y5 | | 1 | 1 | 0 | Y6 | | 1 | 1 | 1 | Y7 | ### 输出引脚接线 - 74HC138有8个输出引脚,分别是Y0 - Y7。当译码器正常工作且根据地址输入选中某个通道时,对应的输出引脚会输出低电平,其余输出引脚则为高电平。输出引脚可以连接到需要控制的负载,如LED、继电器等。 以下是一个简单的接线示例代码(以Arduino控制为例): ```cpp // 定义74HC138的引脚连接 const int A0 = 2; const int A1 = 3; const int A2 = 4; const int E1 = 5; const int E2 = 6; const int E3 = 7; void setup() { // 设置引脚为输出模式 pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(E1, OUTPUT); pinMode(E2, OUTPUT); pinMode(E3, OUTPUT); // 使能译码器 digitalWrite(E1, LOW); digitalWrite(E2, LOW); digitalWrite(E3, HIGH); } void loop() { // 循环选择不同的输出通道 for (int i = 0; i < 8; i++) { // 设置地址输入 digitalWrite(A0, i & 0x01); digitalWrite(A1, (i >> 1) & 0x01); digitalWrite(A2, (i >> 2) & 0x01); delay(1000); // 延时1秒 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值