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));//分别写入数据
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值