74HC138 芯片(38译码器)和74HC245 芯片(处理段码)

本文详细介绍了如何使用74HC138译码器和74HC245芯片来控制共阴数码管显示,并提供了具体的代码实例。通过学习38译码器的工作原理及其在单片机开发中的应用,帮助读者更好地掌握数码管控制技术。

说实话有些博客写的真的是无语了,不过优快云上大多数还是良心小编。好多天没有搞懂的问题还是找到答案了,希望这个平台以后会更好。进入正题吧!

刚刚开始学单片机的时候就是那代码跑着玩,但实际上这里面的知识多着呢!在这里给大家一个小建议刚开始学习一定要多看资料,一段话要反反复复理解,远比你想象的效果好,还要多看原理图结合书本知识才能更好的理解今天就来说一说在学习数码管的时候遇到的一些问题吧。

如果你只想理解38译码器怎么用直接看下面

要使单片机能控制开发板上 2 位一体的共阴数码管显示,仅靠单片机 IO 口来驱动是不行的,这里就需要增加外部驱动芯片,开发板上使用的是 74HC245 芯片。2 个 4 位一体的共阴数码管的位选线有 8 根,直接让单片机 IO 口控制是没有任何问题的,但考虑到 51 单片机 IO 口资源的限制,通常我们会使用一种 IO 扩展芯片,比如 74HC138、74HC164、74HC595 芯片等,只需要很少的单片机 IO 口就可以扩展出 8 个控制口,通过级联方式甚至可扩展出更多的控制口(这个在后面 LED 点阵实验章节中会有详细介绍)。我们开发板上使用的是 74HC138 译码器芯片,只需单片机 3 个 IO 口就可以实现 8 个位选管脚的控制,大大节省了芯片的 IO 资源。

74HC245 芯片简介

74HC245 是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其
它的消费类电子产品中增加驱动。

(1)主要特性

①采用 CMOS 工艺
②宽电压工作范围:3.0V-5.0V
③双向三态输出
④八线双向收发器
⑤封装形式:SOP20、SOP20-2、TSSOP20、DIP20
(2)管脚功能定义
在这里插入图片描述
在这里插入图片描述从上面的管脚功能定义说明及真值表可以知道该芯片使用方法非常简单,给
OE 使能管脚低电平,DIR 管脚为高电平传输方向是 A->B 输出,为低电平传输方
向是 B->A,至于输出高电平还是输出低电平取决于输入端的状态,如果输入为
低电平,输出即为低;输入为高电平,输出即为高。如果 OE 使能管脚为高电平,
不论 DIR 管脚是高还是低,输出是高组态。
通常我们使用 74HC245 芯片用作驱动只会让其在一个方向输出,即 DIR 管脚
为高电平,传输方向是 A->B。

74HC138 芯片简介

74HC138D 是一种三通道输入、八通道输出译码器,主要应用于消费类电子产
品。

(1)主要特性

①采用 CMOS 工艺
②低功耗
③工作电压:3.0V-5.0V
④封装形式:SOP16
(2)管脚功能定义
在这里插入图片描述
在这里插入图片描述
从上面的管脚功能定义说明及真值表可以知道该芯片使用方法非常简单,给
E1、E2 使能管脚低电平,E3 管脚为高电平,至于哪个管脚输出有效电平(低电
平),要看 A0,A1,A2 输入管脚的电平状态。如果 A0,A1,A2 都为低电平,则
Y0 输出有效电平(低电平),其他管脚均输出高电平。如果 A0 为高电平,A1,
A2 都为低电平,则 Y1 输出有效电平(低电平),其他管脚均输出高电平。其他
几种输出大家可以对照真值表查看。如果 E1、E2 使能管脚任意一个为高电平或
者 E3 为低电平,不论输入是什么,输出都为高电平。

这里给大家总结一个方法:A0、A1、A2 输入就相当于 3 位 2 进制数,A0 是
低位,A1 是次高位,A2 是高位。而 Y0-Y7 具体哪一个输出有效电平,就看输入
二进制对应的十进制数值。比如输入是 101(A2,A1,A0),其对应的十进制数
是 5,所以 Y5 输出有效电平(低电平)

38译码器原理图
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里这个真值表是一个值得注意的问题,我在学38译码器的时候就是不了解这个真值表,一直觉得代码是错的,现在对照这张表来看下面这段位选函数代码是不是一目了然啦

下面这段话一定要仔细结合原理图品读才能理解38译码器传输数据原理

这里给大家总结一个方法:A0、A1、A2 输入就相当于 3 位 2 进制数,A0 是低位,A1 是次高位,A2 是高位。而 Y0-Y7 具体哪一个输出有效电平,就看输入二进制对应的十进制数值。比如输入是 101(A2,A1,A0),其对应的十进制数是 5,所以 Y5 输出有效电平(低电平)。
记得要从高位开始读哦,意味着代码中的二进制要从后面往前面读。
</

### 74HC138译码器控制8位数管的方法 #### 原理概述 74HC138 是一款 3 - 8 线译码器,它有 3 个地址输入端(A0、A1、A2),能根据这 3 个输入信号的不同组合,从 8 个输出端(Y0 - Y7)中选择一个输出低电平,其余输出高电平。在控制 8 位数管时,可利用其输出端来选择要显示的数管。 #### 具体方法 1. **位选控制**:将 74HC138 的 8 个输出端分别连接到 8 位数管的 8 个位选端。通过改变 74HC138 的 3 个地址输入信号,就可以选择要点亮的数管。 2. **选控制**:数管的选端(a - g、dp)需要连接到能提供不同的电路,以显示不同的数字或字符。通常可以使用单片机的 I/O 口来输出。 3. **扫描显示**:由于同一时间只能有一个数管被选中,要实现 8 位数管的动态显示,需要快速依次选通每个数管并显示相应的数字,利用人眼的视觉暂留效应,看起来就像 8 个数管同时显示一样。 ### 电路设计 #### 硬件连接 - **74HC138 连接**: - 地址输入端 A0、A1、A2 连接到单片机的 3 个 I/O 口,用于控制选择哪个数管。 - 使能端(E1、E2、E3)需要正确连接,通常 E1 E2 接地,E3 接高电平,以确保译码器正常工作。 - 输出端 Y0 - Y7 分别连接到 8 位数管的位选端。 - **数管连接**: - 选端(a - g、dp)连接到单片机的另外 8 个 I/O 口,用于输出。 - 公共端(共阴极或共阳极)根据数管类型连接到 74HC138 的输出端。 #### 示例电路图 由于无法直接绘制电路图,以下是一个简单的文字描述: - 电源 VCC 连接到 74HC138 的 VCC 引脚管的公共电源端。 - 地 GND 连接到 74HC138 的 GND 引脚管的公共接地端。 - 单片机的 3 个 I/O 口连接到 74HC138 的 A0、A1、A2 引脚。 - 单片机的另外 8 个 I/O 口连接到数管的选端。 - 74HC138 的输出端 Y0 - Y7 分别连接到数管的位选端。 ### 代示例(以 51 单片机为例) ```c #include <reg51.h> // 定义 74HC138 地址输入端连接的单片机 I/O 口 sbit A0 = P2^0; sbit A1 = P2^1; sbit A2 = P2^2; // 定义数选端口 #define SEG P0 // 共阴极数表 0 - 9 unsigned char code SEG_CODE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 延时函数 void delay(unsigned int time) { unsigned int i, j; for(i = 0; i < time; i++) for(j = 0; j < 123; j++); } // 主函数 void main() { unsigned char i; unsigned char display_num[] = {1, 2, 3, 4, 5, 6, 7, 8}; // 要显示的数字 while(1) { for(i = 0; i < 8; i++) { // 设置 74HC138 地址输入,选择数管 A0 = i & 0x01; A1 = (i >> 1) & 0x01; A2 = (i >> 2) & 0x01; // 输出 SEG = SEG_CODE[display_num[i]]; // 延时,控制显示时间 delay(1); } } } ``` ### 代解释 - `SEG_CODE` 数组存储了共阴极数管显示 0 - 9 的。 - `delay` 函数用于产生一定的延时,控制每个数管的显示时间。 - `main` 函数中,通过循环依次选通 8 个数管,并显示相应的数字。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值