找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2|回复: 0
打印 上一主题 下一主题
收起左侧

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

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

         图3-11  74HC138应用原理图
从名字来分析,三八译码器就是把3种输入状态翻译成8种输出状态。从图3-11能看出,74HC13816一共是6个输入引脚,但是其中456这三个引脚是使能引脚。这三个引脚如果不符合芯片规定的输入要求,不管输入的123引脚是什么电平状态,715引脚总是输出高电平。所以根据器件使用手册说明,要想让74HC138正常工作,ENLED接的4脚和5必须输入低电平,ADDR3接的6必须输入高电平,这两个位置都是使能控制端口。不知道是否记得前边点亮LED程序有这么两条控制74HC138使能的语句:
ENLED = 0ADDR3 = 1
这类逻辑芯片,大多都是有使能引脚的,使能符合要求的前提下,就可以研究控制逻辑了。对于数字器件的引脚,如果一个引脚输入的时候,有01两种状态;对于两个引脚输入的时候,就会有00011011这四种状态了,那么对于3个输入的时候,就会出现8种状态了,大家可以看下边的这个真值表——图3-12,其中输入是A2A1A0的顺序,输出是从Y7Y6……Y0的顺序。

         图3-12  74HC138真值表
从图3-12可以看出,任一输入状态下,只有一个输出引脚是低电平,其他的引脚都是高电平。在前面的电路中已经看到,8LED小灯的总开关三极管Q16基极的控制端是LEDS6,也就是Y6输出一个低电平的时候,可以开通三极管Q16,从右侧的希望LEDS5输出低电平这样的结果,可以推导出左侧输入端A2A1A0的输入状态应该是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,那么这样在这一排共8LED小灯当中,只有最右侧的小灯和5V之间有压差,有压差就会有电流通过,LED2就会发光了。
从原理图左上角P0口总线可以看出,74HC138ADDR0 ADDR1ADDR2 ADDR3ENLED接在P1.0P1.3引脚上,如图3-14所示。

             图3-14  单片机引脚图
3.5  LED闪烁程序
点亮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;   //U3U4两片74HC138总使能
    ADDR3 = 1;   //使能U3使之正常输出
    ADDR2 = 1;   //U3Y6输出开启三极管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、完全背过三极管的导通原理,并且可以熟练掌握NPNPNP这两种三极管在开关特性下的应用方法。
3、学习并且掌握74HC138的应用原理,能够在设计电路中正确应用。
4、能够独立实现点亮开发板上的每一个小灯,并且可以实现小灯点亮和灭以及闪烁功能。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表