74HC164的原理及作用


目录

1.特性2.引脚功能3.工作原理4.作用5.真值表6.内部框图7.时序图8.极限参数9.使用步骤

  74HC164是高速硅门CMOS电路,管脚与低功耗肖特基TTL(LSTTL)系列兼容。74hc164是8位的串入并出、边沿触发的移位寄存器,串入数据由DSA、DSB输入,在每个时钟CP的上升沿数据向右移一位,数据由DSA和DSB相与而成,且在上升沿到来之前已满足了建立时间。低电平有效的复位信号将直接把寄存器清零而输出为低。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。

74HC164

  时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。

  主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。

  1.特性

  (1)门控串行数据输入。

  (2)异步中央复位。

  (3)符合JEDEC标准no.7A。

  (4)静电放电(ESD)保护:

  .HBMEIA/JESD22-A114-B超过2000V。

  .MMEIA/JESD22-A115-A超过200V。

  (5)多种封装形式。

  (6)额定从-40°C至+85°C和-40°C至+125°C。

  (7)较宽的工作电压:2~6V

  (8)相与的串行输入,直接的清零信号

  (9)输出能驱动10个LSTTL负载

  2.引脚功能

  (1)74HC164引脚图

引脚图

  (2)74HC164引脚功能

引脚功能表

  3.工作原理

  74HC164工作原理即等同于移位寄存器

原理图

  F0、F1、F2、F3是四个边沿触发的D触发器,每个触发器的输出端Q接到右边一个触发器的输入端D。因为从时钟信号CP的上升沿加到触发器上开始到输出端新状态稳定地建立起来有一段延迟时间,所以当时钟信号同时加到四个触发器上时,每个触发器接收的都是左边一个触发器中原来的数据(F0接收的输入数据D1)。寄存器中的数据依次右移一位。

  4.作用

  (1)逻辑功能:74hc164是8位移位寄存器

  移位寄存器是一种存储器,存在里边的数据可以从低位向高位移动或从高位向低位移动。

  例如一个8位的移位寄存器,存在其中的数据为11001010,如果向左(高位)移动一次,就变成1001010X,原来的最高位的1移出,最低位的X可以是新移入的数据,也可以是0(不同型号的移位寄存器对此有不同的规定)。

  (2)附加功能:74hc164能把输入的串行数据转为并行输出,应用可以驱动数码管,2片164或多片级联可以扩展输出端口驱动多个数码管静态显示,不过多片级联时需输出多字节数据

  5.真值表

真值表

  H=HIGH(高)电平

  h=先于低-至-高时钟跃变一个建立时间(set-upTIme)的HIGH(高)电平

  L=LOW(低)电平

  l=先于低-至-高时钟跃变一个建立时间(set-upTIme)的LOW(低)电平

  q=小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referencedinput)的状态

  ↑=低-至-高时钟跃变

  6.内部框图

内部框图

  7.时序图

时序图

  8.极限参数

  (1)直流电压VDD:l-0.5V——7V

  (2)输入钳位电流:-20MA—20MA

  (3)输出钳位电流:-20MA—20MA

  (4)连续输出电流:-25MA—25MA

  (5)通过VCC或GND的电流:-50MA—50MA

  (6)引脚焊接温度:+265度

  9.使用步骤

  第一步:目的:将要准备输入的位数据移入74HC595数据输入端上。

  方法:送位数据到_595。

  第二步:目的:将位数据逐位移入74HC595,即数据串入

  方法:SCK_595产生一上升沿,将PSI_595上的数据移入74HC595中.从低到高

  第三步:目的:并行输出数据。即数据并出

  方法:P1.1产生一上升沿,将由SI_595上已移入数据寄存器中的数据送入到输出锁存器。

  说明: 从上可分析:从SCK_595产生一上升沿(移入数据)和RCK_595产生一上升沿(输出数据)是二个独立过程,实际应用时互不干扰。即可输出数据的 同时移入数据。

  程序如下,复制就能用。

  sbit SI_595=P2^0;

  sbit RCK_595=P2^2;

  sbit SCK_595=P2^1;

  void HC595SendData(unsigned char SendVal)//发送数据

  {

  unsigned char i;

  for(i=0;i<8;i )

  {

  if((SendVal<

  else SI_595=0;

  SCK_595=0;//从SCK_595产生一上升沿(移入数据)

  _nop_();

  _nop_();

  SCK_595=1;

  }

  }

  void HC595ShowData()//RCK_595产生一上升沿(输出数据)

  {

  RCK_595=0;

  _nop_();

  _nop_();

  RCK_595=1;

  }

热门标签