首页/文章/ 详情

数字电路-芯片-74HC165

2年前浏览3843
一、74HC165的基本使用步骤
74HC165是个并行输入串行输出的逻辑芯片,了解一款芯片都是从它的datasheet开始,下面以NXP公司74HC165为例进行介绍。
先看下该芯片datasheet的总体描述:
74HC165/74HCT165是一个8位串行或并行输入,串行输出的移位寄存器。具有一个串行输入(DS引脚),8个并行数据输入(D0到D7)和两个互补串行输出的功能。当PL引脚为低时,D0-D7端的数据进入移位寄存器。当PL引脚为高时,数据从DS引脚串行进入寄存器。当CE引脚为低时,使能时钟,数据在时钟CP上升时数据进行移位。当CE引脚为高时,失能时钟,时钟输入无效。

我们再结合芯片的功能框图来理解工作过程:
从上图可以看出,PL引脚控制并行数据的获取,低电平有效,数据进入8位移位寄存器,再由CP和CE两个引脚配合控制移位寄存器里的数据从Q7引脚串行输出。
再看看芯片真值表:
第一个红色框是并行加载数据的,只要PL为低电平即可;
第二个蓝色框是串行移位,此时要求PL为高电平,CE为低电平,Q0~Q6在CP每来一个上升沿时依次往Q7移位;
第三个紫色框是保持当前状态输出。
芯片时序图:
还有一个重要的信息,就是芯片的引脚定义:
从芯片的描述,我们可能还不是很清楚具体的工作原理以及过程,下面图文并茂为大家详细讲述下。
最后对如何驱动74HC165总结几个步骤:
1、引脚1(PL)为低电平,获取并行数据输入,数据移入移位寄存器;
2、将引脚1置为高电平,停止并行数据输入;
3、引脚15(OE)为低电平,使能时钟输入;
4、时钟CP每产生一个上升沿,移位寄存器中的数据从高位(Q6)到低位(Q0)依次移出到Q7。
二、74HC165的级联
74HC165其实和74HC595一样,也有级联功能,74HC595相关知识在之前文章中有整理过,详见(数字电路-芯片-74HC595)这里说下74HC165的级联。
前面基础篇也讲到74HC165是个并行输入转串行输出的逻辑芯片,该芯片除了串行输出外还有一个串行输入引脚,74HC165的级联功能就使用到这个串行输入引脚,也就是引脚10(DS):

下面就讲下74HC165级联的原理:

从前面的两篇74HC165文章知道,74HC165并行转串行是通过移位寄存器实现的,当PL为低电平时,并行数据(8bit)进入移位寄存器,当PL为高时,进入移位寄存器的数据就从DS引脚进入寄存器,然后在每个时钟的上升沿往输出引脚Q7移一位。根据这个原理,只要把输出Q7(引脚9)连到下一级74HC165的DS引脚(引脚10)即可实现级联功能,如下图:
最后再以图文并茂的方式总结下74HC165级联后的工作过程,如下图:
三、74HC165级联编程
前面的文章已详细讲述了74HC165级联的原理和工作过程,下面以两片74HC165级联来检测16个轻触按键的状态为例,当按键被按下时点亮对应的LED。
级联电路如下:

        

直接贴出代码,相应的语句已做好注释:

image.png

/*** 74hc165.c ***/#include "74hc165.h"//初始化74hc165void _74hc165_init(void){  HC165_CE = 0; //初始化使能时钟,后面就不需再使能  HC165_PL = 1; //PL拉高,不读取按键状态  HC165_CLK = 1; //时钟拉高,便于产生上升沿}//读取两个74HC165级联void _74hc165_read_2byte(uchar date[2]){  uchar i;  uint temp = 0;  HC165_PL = 0; //PL拉低,读取按键状态  HC165_PL = 1; //PL拉高,停止按键读取if(HC165_OUT == 1)        //等于1即并行输入D7引脚的按键被按下      temp |= 0x01;         //最低位置1表示按键被按下,反之则没按键被按下for(i = 0; i < 15; i   )  //因为最高位不用移位即可读取,故循环(16-1)次,依次把次高位移到最高位,第一级74HC165优先读取  {    temp = temp << 1;    HC165_CLK = 0; //HC165_CLK = 0 ——> HC165_CLK = 1 产生上升沿,次高位D(n-1)移到高位D(n)    _nop_();    _nop_();    HC165_CLK = 1;if(HC165_OUT == 1)      temp |= 0x01;  }//将16位数据分离为两个8位数据  date[0] = (uchar)(temp & 0x00ff);//第二级74HC165的数据  date[1] = (uchar)((temp >> 8) & 0x00ff);//第一级74HC165的数据}


四、74HC165、74HC164、74HC595简单对比
74HC164、74HC595这两款芯片都具有串行输入,并行输出的功能,最大的不同点在于74HC164没有锁存功能。因此,在做数码管的输出显示的时候74HC164会出现拖影的想象,在设计此电路时要注意考虑此情况。另外74HC165与74HC164型号上十分相似,但是两者功能相反,74HC165主要是并行输入,串行输出的功能。
本文主要内容参考CSDN(作者壹二叁)
整理:8号线攻城狮
来源:8号线攻城狮
科普代码&命令电路芯片控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-08-03
最近编辑:2年前
8号线攻城狮
本科 干一行,爱一行
获赞 57粉丝 85文章 1057课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈