首页>>科技 >>内容

移位寄存器74HC164在现实中的应用可能比你想象的要多在

发布时间:2023-07-22 16:28:35编辑:温柔的背包来源:

移位寄存器74HC164在现实中的应用可能比你想象的要多在

很多朋友对移位寄存器74HC164在现实中的应用可能比你想象的要多在不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

,74HC164(以下简称164)在现有电子产品中占有重要地位。在以下三个方面有典型应用:1)八段数码管显示2) LED灯;3)按键扫描。在其他方面也有应用,比如显示模块。但是应用的原理是一样的。

164是一个8位并行输出移位寄存器。有两个数据输入,一个时钟输入和八个输出。我们通常将两个输入端连接在一起作为一个输入端。当时钟脉冲从“0”跳到“1”时,移位被触发,即上升沿被触发。触发时,八位并行输出的最低位Q0得到数据端的信号(DATA),原Q0的数据上移一位,即Q1,以此类推,Q6上移至Q7,Q7的数据丢失。

因此,我们充分利用这一特性来解决单片机接口紧张的问题。利用单片机的两个I/O口,一个作为时钟(CLK),一个作为数据。通过软件模拟串行输出,经过164次移位后得到并行输出。164要求数据在CLK上升沿之前有25ns的建立时间,在上升沿之后有5ns的保持时间。如果单片机使用4MHz晶振,单字节指令的执行时间为1us,8MHz晶振为0.5us,远远超过164所需的时间。

所以不用考虑164在建立和维护数据方面会不会“太忙”。

在8段数码管中的应用:目前一般用两个8位数码管组成一个显示模块,可以显示两位数。数码管有八个信号引脚和一个芯片选择引脚。选择芯片选择时,添加到段代码引脚的电平有效。我们用单片机的四个I/O口来控制这两个数码管,两个片选,一个数据,一个CLK。在LED显示屏中的应用:

我们还是用串联进并联出的原理,只是想开哪个灯,我们就把对应的位置设为0(让它亮的电平)。同时I/O口接三极管,实现片选。如果灯的数量少于8个,则没有必要。这样相对于直接连接LED到I/O,需要多消耗几倍甚至十几倍的MCU执行时间,来换取MCU接口线的充分利用。

当然,如果想同时有几个灯亮,单片机的数据会发出相应位为0的串行数据,移位后,相应的LED就会亮。还有就是选片顺序的问题。如上,如果先选膜再换挡,换挡速度快,几个灯亮的亮度一样;如果位移速度慢,让小灯依次亮起。当完成移位并开始胶片选择时,也需要在关闭胶片选择之前将并行数据保持一段时间。在按键扫描中的应用;

同样,为了节省线路,164用于键扫描。显示面板一般不超过8个按键,所以不需要加片选信号。只有单片机的一个I/O口可以读取钥匙的公共端。原理是这样的:钥匙的公共端通过两个电阻连接到VCC,两个电阻之间的抽头连接到MCU。键的另一段与164的Q0~Q7相连。综合应用:

在产品上,大多数情况下,164同时肩负着数码管、LED显示屏和按键扫描的任务。这些任务的协调也很重要。在硬件上,需要给每个应用电路增加片选,保证一个器件(比如数码管)在使用164时不会干扰其他器件;

同时按键需要加二极管,保证显示任务时不会出现按键误判的情况(比如按键的一端是高电平,刚按下按键,但微控制器读取的是高电平,还是没按下)。

在软件上,每个任务的时间要尽可能分散,避免局部闪烁或灵敏度低。模拟串口的程序需要尽可能的优化,使其最有效率。在打开芯片选择之前,需要关闭其他芯片选择,以防止器件之间的干扰。一个好的习惯是用完后关掉一个设备,用的时候再打开。另一个需要注意的问题是模拟串口程序是否可以重新进入。

虽然现在很多任务都不用中断来调用这个程序,但是难免会出现“意外”。两个任务同时调用模拟串口程序,会混淆寄存器数据,造成错误。更好的方法是尽可能多地使用堆栈,而不是给同一个寄存器赋值(但这样也会增加RAM的使用)。回顾唐子红

以上知识分享希望能够帮助到大家!