74HC165功能说明
- 格式:doc
- 大小:152.00 KB
- 文档页数:5
74HC165 概述74HC165是一款高速CMOS器件,74HC165遵循JEDEC标准no.7A。
74HC165引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互斥的串行输出(Q7和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。
而当PL为高时,数据将从DS输入端串行进入寄存器,在每个时钟脉冲的上升沿向右移动一位(Q0 → Q1 → Q2,等等)。
利用这种特性,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。
74HC165的时钟输入是一个“门控或”结构,允许其中一个输入端作为低有效时钟使能(CE)输入。
CP和CE的引脚分配是独立的并且在必要时,为了布线的方便可以互换。
只有在CP为高时,才允许CE由低转高。
在PL上升沿来临之前,不论是CP还是CE,都应当置高,以防止数据在PL的活动状态发生位移。
74HC165 特性异步8位并行读取同步串行输入兼容JEDEC标准no.7AESD保护HBM EIA/JESD22-A114E超过2000 VMM EIA/JESD22-A115-A超过200 V温度范围-40~+85 ℃-40~+125 ℃74HC165 参数74HC165 基本参数电压 2.0~6.0V驱动电流+/-5.2 mA传输延迟16 ns@5V74HC165 其他特性最高频率56 MHz逻辑电平CMOS功耗考量低功耗或电池供电应用74HC165 封装与引脚SO16, SSOP16, DIP16, TSSOP168 位移位寄存器(并行输入,互补串行输出)简要说明当移位/置入控制端(SH/LD)为低电平时,并行数据(A-H)被置入寄存器,而时钟(CLK,CLK INH)及串行数据(SER)均无关。
当SH/LD为高电平时,并行置数功能被禁止。
CLK和CLK INK在功能上是等价的,可以交换使用。
74HC165功能说明
1.并行输入:74HC165具有8个并行输入引脚(A-H),可以同时读取8个输入信号。
这些输入信号可以是数字信号,也可以是模拟信号。
2.串行输出:74HC165具有串行输出引脚(QH),它可以将输入信号转换为串行输出信号。
输出信号的顺序与输入信号的读取顺序相同。
3.移位操作:74HC165可以通过移位操作来读取并且存储输入信号。
移位操作可以由一个时钟信号(SH/LD)和一个时钟使能信号(CLKINH)来控制。
当时钟使能信号为高电平时,移位操作生效;当时钟使能信号为低电平时,移位操作被禁止。
4.并行加载:除了移位操作之外,74HC165还可以通过并行加载操作来读取并存储输入信号。
并行加载操作可以通过时钟使能引脚(CLKINH)和并行加载引脚(PL)来控制。
当时钟使能引脚为高电平时,同时并行加载引脚为高电平,即可进行并行加载操作。
5.级联操作:多个74HC165芯片可以级联在一起,以扩展输入信号的数量。
级联操作可以通过级联引脚(SERA/B)和级联输出引脚(QH)来实现。
级联引脚可以将一个74HC165的输出连接到另一个74HC165的输入,以实现数据的串行传输。
总结起来,74HC165是一种用于将8个并行输入信号转换为串行输出信号的移位寄存器芯片。
它通过移位操作和并行加载操作来读取并存储输入信号,并且可以通过级联操作扩展输入信号的数量。
这种芯片在数字电路控制和数据采集等应用中非常常见,具有广泛的用途。
74hc165 电平标准740HC165是一种8位移位寄存器,它常用于电子设备中的数据输入和输出。
在设计和使用电子电路中,了解和理解其电平标准是非常重要的。
首先,让我们来了解一下何为电平标准。
在电子领域中,电平标准用来定义不同电压值所代表的逻辑状态,例如高电平表示1,低电平表示0。
电平标准是为了保证不同设备和电路之间的互操作性以及通信的可靠性。
740HC165的电平标准和逻辑电平定义如下:1.电源电压:740HC165的工作电压范围通常为2V至6V。
这意味着电路在这个电压范围内工作时,可以正常执行其功能。
2.逻辑高电平:对于输入信号而言,当输入电压高于特定阈值电压(通常称为ViH)时,电路将识别为逻辑高电平。
在740HC165中,典型的ViH电平为0.7VCC,其中VCC是电路的电源电压。
也就是说,如果输入电压高于0.7VCC,电路将被视为处于逻辑高电平。
3.逻辑低电平:对于输入信号而言,当输入电压低于特定阈值电压(通常称为ViL)时,电路将识别为逻辑低电平。
在740HC165中,典型的ViL电平为0.3VCC,其中VCC是电路的电源电压。
也就是说,如果输入电压低于0.3VCC,电路将被视为处于逻辑低电平。
4.输出电平:对于输出信号而言,当输出电压高于特定阈值电压(通常称为VOH)时,电路将输出逻辑高电平。
在740HC165中,典型的VOH电平为0.9VCC,其中VCC是电路的电源电压。
相反,当输出电压低于特定阈值电压(通常称为VOL)时,电路将输出逻辑低电平。
在740HC165中,典型的VOL电平为0.1VCC,其中VCC是电路的电源电压。
总结一下,740HC165的电平标准意味着输入电压高于0.7倍的电源电压将被视为逻辑高电平,低于0.3倍的电源电压将被视为逻辑低电平。
对于输出电平而言,高于0.9倍的电源电压将输出逻辑高电平,低于0.1倍的电源电压将输出逻辑低电平。
了解电平标准对于正确设计和使用电子电路至关重要。
74hc165编程说明接触单片机,嵌入式有好长一段时间了,一直想找个机会把自己总结得东西拿出来晒晒太阳(其实没有什么,高手可能早已经了解),在这里我只想分享给与我一样奋斗在单片机一线得广大童鞋么一点小小得甚至卑微得经验.我们都知道通信从大得方面有两种:串行与并行。
串行得最大优点就是占用总线少,但就是传输速率低;并行恰恰相反,占用总线多,传输速率高.市面上有很多这样得芯片,有串入并出得(通俗讲就就是一个一个进,最后一块出来),有并入串出得(相对前者而言)。
具体用哪种类型要根据我们得实际情况。
比如利用单片机显示数码管单纯得显示一个数码管如果仅仅就是为了显示那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说得数码管就是8段得(如果利用BCD类型16进制数码管那么只需四个即可)就拿51类型得单片机来说,总共32个I/O口,一般如果不就是做太大得工程就是完全够用得,但有些时候您会恨单片机怎么不多长几条“腿",怎么省还就是不够用。
别急集成串行芯片来帮忙哈哈客套话就不多说了言归正传,今天我介绍一下几个在数码管显示或键盘处理中经常用到得移位寄存器芯片,首先登场得就是74HC165:74HC165/74LS165就是典型并入串出芯片,用它来读取外界键盘信息再好不过了,前提我们得了解它,我们先了解其引脚:引出端符号ﻫCLK,CLK INH 时钟输入端(上升沿有效)A-H 并行数据输入端SER 串行数据输入端QH 输出端ﻫQHn 互补输出端SH/LD移位控制/置入控制(低电平有效)真值表时序图其实瞧一个芯片就是如何使用得,不只就是瞧引脚功能,更重要得就是要瞧时序图与真值表,从其中我们可以详细得了解到它就是如何使用得,然后转化成程序代码即可.从上面我们得真值表与时序图中我们要特别注意几个端口得变化,真值表中SH/LD只有在高电平得时候方才有效;CLK,CLK INH只有当其中一个为低电平得时候,另一个时钟才能正确得输入,这就是非常重要得(一般得我们在使用时,可以将其中得一个直接接地,另一个做时钟输入端口使用).但就是我们做事要细心,要一丝不苟,从时序图中我们瞧到SH/LD有一个负脉冲这就是什么缘故呢?在程序设计中如果忽略了此处,那么注定结果就是悲剧得。
(31条消息)74HC165级联电路篇(三)
74HC165其实和74HC595一样,也有级联功能,74HC595级联在前面已经整理过,这里说下74hc165的级联。
前面基础篇也讲到74HC165是个并行输入转串行输出的逻辑芯片,该芯片除了串行输出外还有一个串行输入引脚,74HC165的级联功能就使用到这个串行输入引脚,也就是引脚10(DS):
下面就讲下74HC165级联的原理:
从前面的两篇74HC165文章知道,74HC165并行转串行是通过移位寄存器实现的,当PL为低电平时,并行数据(8bit)进入移位寄存器,当PL为高时,进入移位寄存器的数据就从DS引脚进入寄存器,然后在每个时钟的上升沿往输出引脚Q7移一位。
根据这个原理,只要把输出Q7(引脚9)连到下一级74HC165的DS引脚(引脚10)即可实现级联功能,如下图:
最后再以图文并茂的方式总结下74HC165级联后的工作过程,如下图:
74HC165的级联电路就整理到这里,下一篇是级联的编程,总结下如何读取74HC165级联的数据。
常用元器件使用方法6:并
介绍:
74HC165是并-串转换芯片,单芯片可以将8路并行信号转换为1路串行信号,并可以进行芯片级联,以完成多路并行信号输入单片机的操作。
芯片特性:
1、异步8位并读取;
2、同步串行输入;
3、温度范围-40~85。
芯片引脚:
内部结构图:
引脚功能说明:
使用说明:
SH/LD用于并行装载数据,当其引脚为低时,将外部数据并行装入移位寄存器,当其引脚为高时,阻断外部输入与内部寄存器。
在SH/LD为低的条件下,进行移位操作,需保证CLK INH与CLK引脚一个引脚为底(实际上CLK INH与CLK引脚的功能是相同的),另一个引脚上升沿即进行数据移位。
时序图:
典型电路图:
原创性文章,转载请注明出处CSDN:/qingwufeiyang12346。
1、芯片简介
74HC165/74HCT165是一个8位串行或并行输入,串行输出的移位寄存器。
PL为低电平并行,PL为高时就是串行。
具有一个串行输入(DS引脚),8个并行数据输入(D0到D7)和两个互补串行输出的功能。
芯片框图如下:
2、管脚定义
符号引脚描述
PL 1 异步并联负载输入(低电平)
CP 2 时钟输入(低至高沿触发)
Q7 7 上一阶段的互补输出
GND 8 ground (0 V)
Q7 9 最后阶段的串行输出
DS 10 串行数据输入
D0toD7 11, 12, 13, 14, 3, 4, 5, 6 并行数据输入(也称为Dn)
CE 15 钟使能输入(活动低电平)
VCC 16 3.3V
2、芯片真值表
第一个红框是并行加载数据的,只要PL为低电平即可;
第二个蓝框是串行移位,此时要求PL为高电平,CE为低电平,Q0~Q6在CP每来一个上升沿时依次往Q7移位;
第三个紫框是保持当前状态输出。
芯片时序图
当PL引脚为低时,D0-D7端的数据进入移位寄存器。
当PL引脚为高时,数据从DS引脚串行进入寄存器。
当CE引脚为低时,使能时钟,数据在时钟CP上升时数据进行移位。
当CE引脚为高时,失能时钟,时钟输入无效。
总结几个步骤:
1、引脚1(PL)为低电平,获取并行数据输入,数据移入移位寄存器;
2、将引脚1置为高电平,停止并行数据输入;
3、引脚15(OE)为低电平,使能时钟输入;
4、时钟CP每产生一个上升沿,移位寄存器中的数据从高位(Q6)到低位(Q0)依次移出到Q7。
54/741658位移位寄存器(并行输入,互补串行输出)简要说明54/74165为8位移位寄存器,其主要电特性的典型值如下:型号 fmP D210mW54/74165 26MHz54/74LS165A 35MHz 90mW 当移位/置入控制端(SH/L__D__)为低电平时,并行数据(A-H)被置入寄存器,而时钟(CLK,CLK INH)及串行数据(SER)均无关。
当 SH/L__D__为高电平时,并行置数功能被禁止。
CLK和CLK INK在功能上是等价的,可以交换使用。
当CLK和CLK INK有一个为低电平并且SH/L__D__为高电平时,另一个时钟可以输入。
当CLK和CLK INK 有一个为高电平时,另一个时钟被禁止。
只有在CLK为高电平时CLK INK才可变为高电平。
引出端符号CLK,CLK INH 时钟输入端(上升沿有效)A-H 并行数据输入端SER 串行数据输入端Q H输出端Q__H互补输出端SH/L__D__移位控制/置入控制(低电平有效)逻辑及封装图双列直插封装 PLCC封装极限值电源电压 (7V)输入电压………………………………… 5.5VSH/L__D_与CLK INK间电压…………………… 5.5V工作环境温度54164…………………………………… -55~125℃74164…………………………………… -0~70℃储存温度…………………………………… -65℃~150℃真值表H-高电平L-低电平X-任意电平↑-低到高电平跳变时序图推荐工作条件:54/74165最小额定最大单位54 4.555.5电源电压V CC74 4.7555.25V 输入高电平电压V iH 2 V输入低电平电压V iL0.8V 输出高电平电流I OH-400uA 输出低电平电流I OL8mA 时钟频率fcp 0 25MHzCLK 25 ns 脉冲宽度T WL__D_15 nsCLK INK 30 nsA-H 10 nsSER 20 ns 建立时间tsetSH 45 ns 保持时间t H0 ns静态特性(TA为工作环境温度范围)‘165参数测试条件【1】最小最大单位V IK输入嵌位电压 Vcc=最小,V IK=-12mA -1.5 VV OH输出高电平电压Vcc=最小V IH =2V V IL=0.8V, I OH=-800µA2.4 VV OL 输出低电平电压 Vcc=最小,V IH =2V , V IL =0.8V ,I OL =16mA 0.4 V I I 最大输入电压时输入电流 Vcc =最大 V I =5.5V 1 mA SH/L __D _80 I IH 输入高电平电流 其余输入40 µA SH/L __D _ -3.2 I IL 输入低电平电流其余输入Vcc =最大,V IL =0.4V-1.6mA 54 -20 -55 I OS 输出短路电流 Vcc =最大74 -18 -55mA I CC 电源电流Vcc =最大CLK 和CLK INK 接4.5V ,SH/L __D _加脉冲,D 先接4.5V 后接地63 mA[1]: 测试条件中的“最小”和“最大”用推荐工作条件中的相应值。
一、概述串行通讯是单片机系统中常见的一种通讯方式,通过串行通讯可以实现单片机与外部设备之间的数据交换和控制。
74HC165是一种8位并行-串行转换芯片,可以扩展单片机的输入通道。
本文将介绍如何使用74HC165与单片机进行串行通讯,并给出相应的汇编题目作为示例。
二、单片机串行通讯介绍1. 串行通讯概念与原理2. 单片机串行通讯常用的通讯协议3. 串行通讯输入输出的基本操作指令三、74HC165介绍1. 74HC165的基本特性2. 74HC165的引脚功能与连接方式3. 74HC165与单片机的串行通讯原理四、单片机串行通讯接口设计1. 单片机与74HC165的硬件连接2. 单片机与74HC165的软件通讯流程设计五、汇编题目示例1. 题目一:使用74HC165实现8路数字输入,编写汇编程序读取并显示输入数据。
2. 题目二:使用74HC165实现8路数字输入,编写汇编程序进行数据滤波处理并输出。
六、实验验证与应用案例1. 实验一:基于本文所述的设计,实现单片机与74HC165的串行通讯,并进行数据收发测试。
2. 应用案例一:将本文介绍的串行通讯接口设计应用于智能家居系统,实现对物联网设备的控制与数据采集。
七、总结与展望1. 对本文所述内容进行总结2. 展望单片机串行通讯在未来的发展前景八、参考文献1. [参考文献1]2. [参考文献2]3. [参考文献3]以上是本文的大致内容框架,可以根据实际情况对每个部分进行详细论述,以达到文章长度超过3000字的要求。
该文章着重介绍了单片机串行通讯的基本原理,并给出了使用74HC165与单片机进行串行通讯的具体设计与实现方法,并通过汇编题目以及实验验证进行案例分析,希望对读者有所启发与帮助。
九、单片机串行通讯介绍1. 串行通讯概念与原理串行通讯是指在通讯过程中,数据一位一位地进行传输。
相比并行通讯,串行通讯需要较少的线路和引脚数目,可以降低硬件成本,因此在各种设备中得到广泛应用。
51单⽚机:IO⼝扩展芯⽚⽤法(74HC165,74HC595)IO⼝扩展芯⽚,主要是解决单⽚机IO⼝太少。
74HC165:数据从并转串74HC595:数据从串转并两种芯⽚,都是通过时序电路,加上移位功能,进⾏数据传输74HC165:数据从并转串。
以下实例,实现8个独⽴按键,控制数码管的8段#include <reg52.h>#include <intrins.h>typedef unsigned char u8;typedef unsigned int u16;void delay( u16 i ){while( i-- );}#define GPIO_DIG P0sbit IN_SG = P1^6;sbit IN_DATA = P1^7;sbit IN_CLK = P3^6;u8 read_74HC165(){u8 indata;u8 i;IN_SG = 0; //先置⼊数据_nop_(); //等待⼀个机器周期IN_SG = 1; //芯⽚切⼊移位功能_nop_();indata = 0;for( i = 0; i < 8; i++ ){ //在时序电路作⽤下,移动8次,得到⼀个字节数据indata = indata << 1;IN_CLK = 0;_nop_();indata |= IN_DATA;IN_CLK = 1;}return indata;}void main (){u8 hc165_data;GPIO_DIG = 0x0;while( 1 ) {hc165_data = read_74HC165();if( hc165_data != 0xFF ) {GPIO_DIG = ~hc165_data;}}}74HC595:数据从串转并,以下程序,实现流⽔灯效果#include <reg52.h>#include <intrins.h>typedef unsigned char u8;typedef unsigned int u16;void delay( u16 i ){while( i-- );}#define GPIO_DIG P0sbit SRCLK = P3^6; //移位寄存器时钟sbit STORE_RCLK = P3^5; //存储寄存器时钟sbit SER = P3^4; //串⼝输⼊数据void hc595_send_data( u8 input_data ) {u8 i;SRCLK = 1;STORE_RCLK = 1;for( i = 0 ; i < 8; i++ ){SER = input_data >> 7; //从最⾼位开始传送 input_data <<= 1; //把次⾼位移到最⾼位SRCLK = 0; //时序脉冲_nop_();_nop_();SRCLK = 1;}STORE_RCLK = 0; //时序脉冲_nop_();_nop_();STORE_RCLK = 1; //把寄存器的数据送到输出⼝}void main (){u8 led_num;led_num = 0x01; //先让D11点亮while( 1 ) {hc595_send_data( led_num );led_num = _crol_( led_num, 1 );delay( 50000 );delay( 50000 );}}。
74HC165中文资料数据手册参数一、74HC165简介1. 工作电压范围宽:2.0V至6.0V;2. 工作频率高:最高可达50MHz;3. 低功耗:静态功耗几乎为零;4. 输入输出兼容TTL电平;5. 封装形式多样:DIP、SOIC、TSSOP等。
二、74HC165参数1. 电源电压(VCC):2.0V至6.0V;2. 输入电压(VIN):0V至VCC;3. 输出电压(VOUT):0V至VCC;4. 工作温度范围:40℃至+125℃;5. 最大输入电流(II):±1μA;6. 最大输出电流(IO):±25mA;7. 最大功耗(PD):500mW(TA=25℃);8. 传输延迟时间(tpd):22ns(典型值,VCC=5V);9. 输入上升时间(tr):20ns(典型值,VCC=5V);10. 输入下降时间(tf):20ns(典型值,VCC=5V);11. 输出上升时间(tr):25ns(典型值,VCC=5V);12. 输出下降时间(tf):25ns(典型值,VCC=5V)。
三、74HC165引脚功能1. AH(输入端):8位并行数据输入端;2. SH/LD(移位/装载控制端):高电平时,数据从输入端AH并行装载到寄存器;低电平时,数据从输入端A串行移位进入寄存器;3. CLK(时钟输入端):上升沿触发,用于控制数据的移位和装载;4. SER(串行输入端):串行数据输入端,用于接收外部串行数据;5. QH'(串行输出端):串行数据输出端,输出最高位;6. GND(地):电源地;7. VCC(电源):正电源输入。
四、74HC165应用电路1. 数据串行化:将并行数据转换为串行数据,以便于通过单线或少量线进行传输。
2. 数据扩展:通过级联多个74HC165,实现数据位数的扩展,增加并行数据的宽度。
3. 数据缓冲:作为数据缓冲器,提高系统的驱动能力。
【电路图】将74HC165的AH端连接至并行数据源;SH/LD端接高电平,使能并行数据装载;CLK端接时钟信号,控制数据装载和移位;SER端接下一级74HC165的QH'端,实现级联;QH'端输出串行数据至下一级处理或传输。
74hc165编程说明接触单片机,嵌入式有好长一段时间了,一直想找个机会把自己总结的东西拿出来晒晒太阳(其实没有什么,高手可能早已经了解),在这里我只想分享给和我一样奋斗在单片机一线的广大童鞋么一点小小的甚至卑微的经验。
我们都知道通信从大的方面有两种:串行和并行。
串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。
市面上有很多这样的芯片,有串入并出的(通俗讲就是一个一个进,最后一块出来),有并入串出的(相对前者而言)。
具体用哪种类型要根据我们得实际情况。
比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。
别急集成串行芯片来帮忙哈哈客套话就不多说了言归正传,今天我介绍一下几个在数码管显示或键盘处理中经常用到的移位寄存器芯片,首先登场的是74HC165:74HC165/74LS165是典型并入串出芯片,用它来读取外界键盘信息再好不过了,前提我们得了解它,我们先了解其引脚:引出端符号CLK,CLK INH 时钟输入端(上升沿有效)A-H 并行数据输入端SER 串行数据输入端QH 输出端QHn 互补输出端SH/LD 移位控制/置入控制(低电平有效)真值表时序图其实看一个芯片是如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表,从其中我们可以详细的了解到它是如何使用的,然后转化成程序代码即可。
从上面我们的真值表和时序图中我们要特别注意几个端口的变化,真值表中SH/LD只有在高电平的时候方才有效;CLK,CLK INH只有当其中一个为低电平的时候,另一个时钟才能正确的输入,这是非常重要的(一般的我们在使用时,可以将其中的一个直接接地,另一个做时钟输入端口使用)。
74HC165用法
----CanolaFlower2014.1.23
74HC165级联,如下图
SH/LD为低,并口数据存入8个位寄存器中。
8个位寄存器分别为Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7。
此时Q7里已经有值,可以直接读取了
所以,逻辑可以是这样
读取Q7的数据,然后
IN_CLK_LOW;IN_CLK_HIGH; 制造一次上升沿,执行移位操作,使Q6的值移位到Q7中。
SH/LD为高,允许移位。
一个时钟脉冲,QH向外输出一位数据,同时,从SER 采集一位数据补充8位寄存器。
如上级联情况,右边74HC165的SER悬空,采集数据为0.
左边74HC165,一个脉冲,QH输出一位数据,同时,从SER采集一位数据补充低位。
相当于如下:
开始前
H1-G1-F1-E1-D1-C1-B1-A1 H2-G2-F2-E2-D2-C2-B2-A2
开始传输
1,1G-1F-1E-1D-1C-1B-1A-2H 2G-2F-2E-2D-2C-2B-2A-0
2,1F-1E-1D-1C-1B-1A-2H-2G 2F-2E-2D-2C-2B-2A-0-0
3,1E-1D-1C-1B-1A-2H-2G-2F 2E-2D-2C-2B-2A-0-0-0。
14,B2-A2-0-0-0-0-0-0 0-0-0-0-0-0-0-0
15,A2-0-0-0-0-0-0-0 0-0-0-0-0-0-0-0
16,0-0-0-0-0-0-0-0 0-0-0-0-0-0-0-0
这样,就把2个级联的74HC165的并口数据,全部以串口形式传输给了MCU。
74HC165(74LS165)应用74HC165(74LS165)芯片慨要:74HC165(74LS165)芯片如右图所示,它是8位并入串出移位寄存器(使用移位寄存器芯片可以扩展一个或多个8位并行I/O口).各引脚或能如下:SH/LD(shift/load 移位/置位):移位与置位控制端。
高电平时表示移位,低电平时表示置位。
在开始移位之前,需要先从并行端口读入数据据,这时应将SH/LD置0,并行口的8位数据将被置入其内部的8个触发器,在SH/LD为1时,并行输入被封锁,移位操作开始。
INH(clock inhibit 时钟抑制):时钟禁止端。
当INH为低电平时,充许时钟输入。
CLK(clock):时钟输入端。
D0~D7:并行输入端。
SI(serial input 串行输入):串行输入端。
用于扩展多个47HC(LS)165的首尾连接端。
SO(serial output):串行输出端。
QH(反):也是串行输出端,它与SO是反相的关系,即QH(反)=SO(反)。
VCC(第16引脚)电源端GND(第8引脚) 接地端Demo:可以运用单片机串口的模式0(即移位寄存器输入/输出模式)工作方式来驱动它。
74HC(LS)165串行输出端SO连接单片机RXD引脚,CLK连接单片机TXD引脚,TXD负责发送时钟脉冲。
C程序如下:#include <reg51.h>#include <intrins.h>typedef unsigned char uchar;typedef unsigned int uint;void delay(uint x){uchar i;while(x--);for(i=0;i<120;i++);}sbit SPL=P3^2;V oid main(void){SCON=0x10; // 串行工作在方式0,REN = 1,允许串口接收数据while(1){SPL = 0; // 置数,读入并行输入口的8位数据SPL = 1; // 移位,并口输入被封锁,串行转换开始While(RI ==0); // 等待接收完一个字节数据RI = 1; // 接收完成1个字节数据, RI置0P0 = SBUF;// 把接收到的一个字节数据显示在P0端口,显示的值与拔码开关相对应Delay(20);}}。
74hc165编程说明
接触单片机,嵌入式有好长一段时间了,一直想找个机会把自己总结的东西拿出来晒晒太阳(其实没有什么,高手可能早已经了解),在这里我只想分享给和我一样奋斗在单片机一线的广大童鞋么一点小小的甚至卑微的经验。
我们都知道通信从大的方面有两种:串行和并行。
串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。
市面上有很多这样的芯片,有串入并出的(通俗讲就是一个一个进,最后一块出来),有并入串出的(相对前者而言)。
具体用哪种类型要根据我们得实际情况。
比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。
别急集成串行芯片来帮忙哈哈
客套话就不多说了言归正传,今天我介绍一下几个在数码管显示或键盘处理中经常用到的移位寄存器芯片,首先登场的是74HC165:
74HC165/74LS165是典型并入串出芯片,用它来读取外界键盘信息再好不过了,前提我们得了解它,我们先了解其引脚:
引出端符号
CLK,CLK INH 时钟输入端(上升沿有效)
A-H 并行数据输入端
SER 串行数据输入端
QH 输出端
QHn 互补输出端
SH/LD 移位控制/置入控制(低电平有效)
真值表
时序图
其实看一个芯片是如何使用的,不只是看引脚功能,更重要的是要看时序图和真值表,从其中我们可以详细的了解到它是如何使用的,然后转化成程序代码即可。
从上面我们的真值表和时序图中我们要特别注意几个端口的变化,真值表中SH/LD只有在高电平的时候方才有效;CLK,CLK INH只有当其中一个为低电平的时候,另一个时钟才能正确的输入,这是非常重要的(一般的我们在使用时,可以将其中的一个直接接地,另一个做时钟输入端口使用)。
但是我们做事要细心,要一丝不苟,从时序图中我们看到SH/LD有一个负脉冲这是什么缘故呢?在程序设计中如果忽略了此处,那么注定结果是悲剧的。
从SH/LD的全称是:SHIFT/LOAD 这说明它有两种功能(SHIFT英文意思是移位,LOAD是装载),故美其名曰:移位控制(高电平有效)/置入控制端口(低电平有效)。
在单片机接收数据前,必须将该引脚拉低,目的是为了将并行数据A--H上得数
据装载到内部寄存器中,这里体现的时LOAD功能;接下来在接收数据的过程中必须将该引脚拉高,目的是为了使寄存器中的数据可以移动,从而从QH或QN'中移入单片机。
这里体现的是SHIFT功能。
74hc165中最重要的一个引脚就是该引脚至于说时钟电路就显得逊色多了。
我们只需将单品机的某一个端口拉低或抬高即可,这样数据就一步一步的被接收了。
请务必记得上升沿有效。
分析了74hc165的引脚及其时序我想大家对其使用明白多了,接下来我们用51单品机来编写一段程序代码:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit CLK=P3^6; //时钟位定义
sbit Lock=P3^7; //转载/移位位定义
sbit Data=P3^5; //接收位定义
/************************165接收程序***********************/
//-------------------------------------------------------------
uchar series_165()
{
uchar i;
uchar BYTE=0; //最终接收到得字符
Lock=0; //将165外部端口数据装入内部寄存器
_nop_();
Lock=1; //抬高为移位准备
for(i=0;i<8;i++)
{
BYTE<<=1; // 1
CLK=0; //时钟低
_nop_();
BYTE|=Data; //先接收高位
CLK=1; //时钟高,上升沿下一个数据移出
_nop_();
// 5
}
return BYTE; //返回接收字符
}
void main()
{
CLK=0;
while(1)
P2=series_165(); //显示
}
运行过这个程序没有任何问题,显示如下
但是我们在实验的过程中,出现了一种情况我们将上述程序的1语句换到了5的位置,就出现了下面的显示结果:
注意别被“1”迷惑了那只是165外部数据,是单片机要读的数据,而P2口才是真正要显示接收的数据,为什么差别如此之大呢?其实在编程的过程中这种情况太常见了,今天仔细分析了一下发现问题的所在:单片机接收一个字节的数
据需要移位8次,每次接收前先移位是为了给接下来接收的数据腾开位置,这样每个数据都可以正确接收;但是分析下面的程序你会发现如果接收的数据是0,那么不会有任何问题,但是当接收1时,上次的数据就会被接下来的这个1覆盖掉,这正是问题的所在,试试看。
因此我们在利用单片机引脚模拟有些通信时要特别注意什么时候移位,移动几次。
很有可能有时因为多移一次、少移一次或诸如上面的问题而导致接收不正确。
本打算用一篇日志将74hc165、74hc595、74hc164介绍一下看来篇幅太长了,下次再叙。
如有兴趣请密切关注:
/853652279/infocenter
今后本人写日志将更趋向于专业知识,请见谅。