当前位置: 首页 > news >正文

第三章 硬件基础知识学习3.4 3.5 3.6

3.474HC138三八译码器的应用

在设计单片机电路的时候,单片机的I/O口数量是有限的,有时满足不了产品需求,比如STC89C52一共有32个I/O口,但是为了控制更多的器件,就可以使用一些外围的数字芯片,这类数字芯片由简单的输入逻辑来控制输出逻辑,比如74HC138这个三八译码器,图3-11是74HC138在Kingst51开发板上的一个应用。

图3-11 74HC138应用原理图

从名字来分析,三八译码器就是把3种输入状态翻译成8种输出状态。从图3-11能看出,74HC138的1~6一共是6个输入引脚,但是其中4、5、6这三个引脚是使能引脚。这三个引脚如果不符合芯片规定的输入要求,不管输入的1、2、3引脚是什么电平状态,7到15引脚总是输出高电平。所以根据器件使用手册说明,要想让74HC138正常工作,ENLED接的4脚和5脚必须输入低电平,ADDR3接的6脚必须输入高电平,这两个位置都是使能控制端口。不知道是否记得前边点亮LED程序有这么两条控制74HC138使能的语句:

ENLED = 0;ADDR3 = 1;

这类逻辑芯片,大多都是有使能引脚的,使能符合要求的前提下,就可以研究控制逻辑了。对于数字器件的引脚,如果一个引脚输入的时候,有0和1两种状态;对于两个引脚输入的时候,就会有00、01、10、11这四种状态了,那么对于3个输入的时候,就会出现8种状态了,大家可以看下边的这个真值表——图3-12,其中输入是A2、A1、A0的顺序,输出是从Y7、Y6……Y0的顺序。

图3-12 74HC138真值表

从图3-12可以看出,任一输入状态下,只有一个输出引脚是低电平,其他的引脚都是高电平。在前面的电路中已经看到,8个LED小灯的总开关三极管Q16基极的控制端是LEDS6,也就是Y6输出一个低电平的时候,可以开通三极管Q16,从右侧的希望LEDS5输出低电平这样的结果,可以推导出左侧输入端A2、A1、A0的输入状态应该是110,如图3-13。

图3-13 LED小灯整体电路图

那么再整体捋一遍点亮LED小灯的过程,首先看74HC138,要让LEDS6为低电平才能导通三极管Q16,所以

ENLED = 0;ADDR3 = 1; 保证74HC138使能。

ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; 保证了三极管Q16这个开关开通,5V电源加到LED上。

通过P0口控制,让P0.0引脚等于0,就是DB0等于0,那么这样在这一排共8个LED小灯当中,只有最右侧的小灯和5V之间有压差,有压差就会有电流通过,LED2就会发光了。

从原理图左上角P0口总线可以看出,74HC138的ADDR0 、ADDR1、ADDR2、 ADDR3和ENLED接在P1.0到P1.3引脚上,如图3-14所示。

图3-14 单片机引脚图

3.5LED闪烁程序

点亮LED小灯的程序就是LED = 0。熄灭小灯的程序是LED = 1。点亮和熄灭都会了,那么如果在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。

首先复习一下Keil写程序的过程,建立工程-->保存工程-->建立文件-->添加文件到工程-->编写程序-->编译-->下载程序。

LED闪烁程序如下所示。

#include<reg52.h>

sbit LED = P0^0;

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main() //void即函数类型

{

//以下为声明语句部分

unsigned int i = 0; //定义一个无符号整型变量i,并赋初值0

//以下为执行语句部分

ENLED = 0; //U3、U4两片74HC138总使能

ADDR3 = 1; //使能U3使之正常输出

ADDR2 = 1; //经U3的Y6输出开启三极管Q16

ADDR1 = 1;

ADDR0 = 0;

while (1)

{

LED = 0; //点亮小灯

for (i=0; i<30000; i++); //延时一段时间

LED = 1; //熄灭小灯

for (i=0; i<30000; i++); //延时一段时间

}

}

把这个程序编译一下,下载到单片机里,就会发现LED2这个小灯会闪烁了。

3.6练习题

1、深刻理解电容的意义,并且在今后的学习电路过程中要多多注意并且参考别人电路中所用到的去耦电路,积累经验。

2、完全背过三极管的导通原理,并且可以熟练掌握NPN和PNP这两种三极管在开关特性下的应用方法。

3、学习并且掌握74HC138的应用原理,能够在设计电路中正确应用。

4、能够独立实现点亮开发板上的每一个小灯,并且可以实现小灯点亮和灭以及闪烁功能。

http://www.jsqmd.com/news/500753/

相关文章:

  • 文献分享--空间转录组学高分辨率绘制宿主-肠道微生物组生物地理分布图
  • mPLUG实战案例:用AI分析产品设计图,自动生成英文描述
  • 485总线通信老丢数据?手把手教你终端电阻的选型与焊接避坑指南
  • 基于自然语言处理的智能客服系统研发:从架构设计到生产环境避坑指南
  • MCP 2026国产化部署权威认证路径全拆解:从等保2.0三级到商用密码应用安全性评估(GM/T 0054)一次过审要点
  • Linux用户与组管理
  • 删除语句delete
  • 造相-Z-Image-Turbo 控制网络应用:使用ControlNet精准控制人物姿态与构图
  • 收藏!小白程序员必看:用软件工程思维轻松玩转AI Agent,企业数字化转型新风口!
  • FLUX.1-dev多GPU部署:分布式推理性能优化
  • PTC Mathcad Prime 7.0实战:5步搞定电源谐振Q值曲线绘制(附常见报错解决方案)
  • 第8节:多维网格——如何处理二维三维数据
  • 带辅助轨道扩展的 MP4 (MP4-AT) 文件格式 0.9
  • GLM-4.7-Flash效果实测:代码生成、多轮对话,30B模型实力如何?
  • 山东微程科技:告诉你什么是 养 “龙虾” ?
  • 毕业设计实战:基于SpringBoot的停车场管理系统设计与实现全攻略
  • 别再手动写EasyExcel枚举转换了!复用@EnumView注解,一套代码搞定前后端导出
  • 丹青幻境效果展示:青衣倚楼听雨——Z-Image生成的12组惊艳水墨风作品
  • 计算机行业含金量超高的八大证书❗️❗️
  • 高端电流检测芯片FP135,增益可通过外部电阻自由调整,输出电压与负载检测电流成线性变化
  • 从修改源码到插件生成:STM32CubeIDE代码自动补全全流程解析
  • 实现链式存储结构的队列
  • JVM配置参数小记
  • 计算机毕业设计springboot社团活动管理系统 基于SpringBoot的高校社团数字化运营平台 SpringBoot框架下的学生社团协同管理系统
  • 电力电子新手必看:电压型与电流型逆变电路的区别与选型指南
  • 从管道工到网络专家:用生活案例讲透烽火ANM2000的SVLAN/CVLAN配置
  • Ostrakon-VL-8B效果展示:低照度夜市摊位图像中招牌文字92%还原准确率
  • QGIS搭配QuickOSM:免费获取全球矢量地理数据的实战指南(道路、水域、行政边界)
  • HDR图像处理中的‘遮蔽与燃烧‘技术:从150年摄影史到现代算法实现
  • 2026年期货量化软件代码可读性排名_维护成本对比