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

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

如果你只想理解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 输出有效电平(低电平)。
记得要从高位开始读哦,意味着代码中的二进制要从后面往前面读。

/**************************************************************************************
实验现象:下载程序后"动态数码管模块"从左至右显示0-7
接线说明: 单片机-->动态数码管模块注意事项:
***************************************************************************************/#include "reg52.h"             //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;      //对数据类型进行声明定义
typedef unsigned char u8;sbit LSA=P2^2;        //38译码器端口
sbit LSB=P2^3;
sbit LSC=P2^4;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值/*******************************************************************************
* 函 数 名         : delay
* 函数功能         : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{while(i--);
}/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能         : 数码管动态扫描函数,循环扫描8个数码管显示
*******************************************************************************/
void DigDisplay()
{u8 i;for(i=0;i<8;i++){switch(i)   //位选,选择点亮的数码管,{          //对照真值表看case(0):LSA=1;LSB=1;LSC=1; break;//显示第0位case(1):LSA=0;LSB=1;LSC=1; break;//显示第1位case(2):LSA=1;LSB=0;LSC=1; break;//显示第2位case(3):   LSA=0;LSB=0;LSC=1; break;//显示第3位case(4):LSA=1;LSB=1;LSC=0; break;//显示第4位case(5):LSA=0;LSB=1;LSC=0; break;//显示第5位case(6):LSA=1;LSB=0;LSC=0; break;//显示第6位case(7):LSA=0;LSB=0;LSC=0; break;//显示第7位 }P0=smgduan[i];//发送段码delay(100); //间隔一段时间扫描    P0=0x00;//消隐}
}/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   while(1){   DigDisplay();  //数码管显示函数    }
}

74HC245 芯片在这里就是处理段码的,将二进制指令传输给74HC245 芯片,再由他把数码管里面对应的二极管点亮,这里没有讲段码,如果不了解段码可以看看我的这篇博客清晰易懂数码管显示1314520

热爱知识,传播学习。

74HC138 芯片(38译码器)和74HC245 芯片(处理段码)相关推荐

  1. 查看38译码器的芯片手册

    学习51单片机,38译码器(D74LS138) 是我除了MCU之后接触到的第一个芯片,学习一个芯片的第一步就是查看它的芯片手册(是这样吧?)然后我就去看了一下它的芯片手册. 一. 三通道输入就是有三个 ...

  2. c语言控制单片机38译码器,单片机中 74HC138 三八译码器的应用

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片, ...

  3. 38译码器数码管c语言代码,38译码器驱动数码管电路图

    使用38译码器来驱动数码管来节省IO端口 (1)什么是38译码器? 38译码器有3个输入端口A.B.C和8个输出端口Y0-Y7.由输入端口控制输出端口的值 (2)为什么要使用38译码器 回想之前的驱动 ...

  4. 3-8 译码器设计实验--VHDL

    一.实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习使用原理图方法进行逻辑设计输入,并初步了解可编程器件设计的全过程 (3)熟悉ALTERA公司EDA设计工具软件Quartusll ...

  5. (147)Verilog编程:使用3-8译码器实现全减器

    (147)Verilog编程:使用3-8译码器实现全减器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog编程:使用3-8译码器实现全减器: 5)结束语. ...

  6. 计算机组成原理画出CPU与主存及3-8译码器之间信号线的连接问题

    [前驱知识–主存储器扩展]      主存储器表达方法:字线(地址线) × 位线(数据线)      *CS片选信号线.WE读写控制信号线.A地址线.D数据线. 位扩展(数据线扩充) 例如:两片16K ...

  7. 【AI芯片】2019年AI芯片产业深度研究报告

    程序员的日常 转发文章最多的朋友可以免费进入价值99元的<湾区AI精英会>海归圈子 一. 人工智能芯片发展现状及趋势 1.深度学习算法对芯片要求更为苛刻,通用 CPU 性价比相对较差 经历 ...

  8. GTC2018八大热点:发布多项黑科技,联合芯片巨头ARM打造AI芯片专用IP

    来源:人工智能和大数据丨公众号 一年一度的GTC至今已经迎来了第十个年头,虽然它每年或多或少的给网友一些"失望",但它也终究是代表着GPU行业的高水平技术大会.那么,今年的GTC大 ...

  9. 记录使用Spartan-6 FPGA进行一次3-8译码器实验

    之前仔细的记录过一次PWM蜂鸣器的实验,见博文:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制,这里就不再仔细的写下全过程了,因为都是一样的过程,只记录一下做这个小实验的思路即可. 3-8译码器 ...

  10. linux bios芯片型号,如何准确判断主板BIOS类型 - 怎么看bios芯片型号_查看bios芯片型号...

    但有些AMI BIOS的CMOS设置界面与PHOENIX的界面相似,如下图,此时,就需要根据开机自检测或BIOS芯片上的激光标签做判断了. 通过主板BIOS芯片激光标签判断 AWARD BIOS芯片表 ...

最新文章

  1. Python:numpy生成正态分布的平均数
  2. Online Learning场景下实时新闻热点机器学习训练实践
  3. Cosmos VS Palodat
  4. php发送邮件smtp源码,php下使用SMTP发邮件的代码
  5. [Java基础]Calendar类基础
  6. 从零开始学Axure原型设计(高级篇)
  7. C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放
  8. SQL Server安装问题程序被挂起的错误解决办法
  9. 典型的异步客户端套接字构建
  10. On my way,Python
  11. axure不显示元件库
  12. 读书:Jenkins权威指南[2016京东畅销书]
  13. 如何在excel中挑选出奇数行和偶数行
  14. hp 服务器可以安装win7系统安装,惠普HP预装Win10改Win7系统BIOS设置及安装教程
  15. android控件覆盖方法
  16. win10启动虚拟机蓝屏的一种解决方法
  17. 【操作系统】第一章 概论 冲鸭!!
  18. 深度学习入门-基于python的理论与实现(五)误差反向传播法
  19. JAVA 相关 官方网站
  20. Python 求10000以内的完全数

热门文章

  1. STM32CubeIDE更新ST LINK驱动失败解决方法
  2. qnap威联通作文件服务器,NAS私有云老司机折腾体验记 篇二:QNAP 威联通 QTS系统简介及主要套件使用经验分享...
  3. libcrypto.so.1.0.0编译
  4. HTML页面 引用js文件中文乱码
  5. 西门子atch指令详解_西门子plc指令中文详解
  6. linux 查看网卡名字
  7. ZedGraph的一些属性
  8. junos pulse_IT怪胎:如何使用DHCP中继(JUNOS)
  9. html常用字体代码大全,HTML常用字体代码(HTML is a common font code).doc
  10. 书单:《人人都是产品经理》附录书单