0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

移位寄存器74HC164在现实中的应用,或许比你想象的还要多

jf_35136247 来源:jf_35136247 作者:jf_35136247 2023-05-08 10:56 次阅读

在现有的电子产品中,74HC164(下简称164)扮演着重要的角色。它在以下三个方面有着典型的应用:

1) 八段数码管显示

2) LED灯;

3) 按键扫描。

在其它的一些方面上也有应用,比如显示模块。但应用的原理是一样的。

164是八位并行输出移位寄存器。有两个数据输入端,一个时钟输入端,八个输出端。我们一般将两个输入端连在一起当一个输入端来用。当时钟脉冲由“0”到“1”的跳变时,触发移位,即上升沿触发。当触发时,八位并行输出的最低位Q0得到数据端的信号(DATA),原Q0的数据上移一位,即Q1,依次类推,Q6上移到Q7,Q7的数据遗失。

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

在八段数码管上的应用:

现在一般使用两个八位数码管,组成一个可以显示两位数的显示模块。数码管有8个信号引脚,一个片选引脚。当片选被选中,加在段码管脚上的电平有效。我们使用单片机的四个I/O口来控制这两个数码管,两个片选,一个DATA,一个CLK。

在LED显示上的应用:

还是利用串入并出的原理,只不过是希望哪一个灯亮,就对哪个灯相应的位置0(使之点亮的电平)。同时接I/O口到三极管上,实现片选。如果灯的数量小于8个则不必。这样相比将LED直接接到I/O上,需要多消耗MCU几倍甚至十几倍的执行时间,换来的是MCU口线的充分利用。

当然,如果希望有若干个灯同时亮,就由单片机的DATA发出相应位为0的串行数据,经过移位以后,使相应LED点亮。这里也存在着片选先后的问题。

和上面一样,如果先开片选再移位的话,移位速度快,几个灯等于以同样的亮度点亮;如果移位速度慢,则使小灯依次点亮。当移位完成,开片选之后,同样需要使并行数据保持一段时间,再关片选。

在按键扫描上的应用:

同样使为了节约口线,使用164进行按键扫描。一般的显示板上的按键不会超过8个,所以不用加片选信号。仅仅由单片机的一个I/O口来读按键公共端即可。原理是这样的:按键公共端经过两个电阻接VCC,两个电阻之间抽头到MCU。按键的另一段接164的Q0~Q7。

综合应用:

产品中,大部分情况是164同时肩负着数码管,LED显示和按键扫描的任务。这些任务的协调也很重要。硬件上需要对每个应用电路都加上片选,以保证在一个器件(如数码管)使用164的时候不会干扰到其它器件;

同时按键需要加二极管以保证在显示任务的时候不会出现按键的误判(比如按键一端上是高电平,正好按键被按下,但是单片机读的是高电平,仍然按没有按下处理)。

在软件上要尽量使各个任务的时间分散,避免出现局部闪烁,或者灵敏度不高的情况。对模拟串口的程序需要尽量优化使之效率最高。在开一个片选之前需要关闭其它的片选,以防器件间的干扰,良好的习惯是使用完一个器件之后就关掉它,使用的时候再开。还有一个需要注意的问题是模拟串口程序是否可重入的问题。

虽然现在很多任务没有使用中断来调用此程序,但是不避免“意外”的情况,两个任务同时调用模拟串口程序,使寄存器数据错乱,产生错误。比较好的方法是尽量利用堆栈,而不是对同一个寄存器赋值(但同时也加大了RAM的使用量)。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43990

    浏览量

    620972
  • 寄存器
    +关注

    关注

    30

    文章

    5042

    浏览量

    117769
  • 移位寄存器
    +关注

    关注

    2

    文章

    184

    浏览量

    22023
收藏 人收藏

    评论

    相关推荐

    具有三态输出寄存器的 SNx4HC595 8位移位寄存器数据表

    电子发烧友网站提供《具有三态输出寄存器的 SNx4HC595 8位移位寄存器数据表.pdf》资料免费下载
    发表于 04-30 10:22 0次下载
    具有三态输出<b class='flag-5'>寄存器</b>的 SNx4<b class='flag-5'>HC</b>595 8位<b class='flag-5'>移位寄存器</b>数据表

    带输出寄存器的汽车类8位移位寄存器SN74LV8T594-Q1数据表

    电子发烧友网站提供《带输出寄存器的汽车类8位移位寄存器SN74LV8T594-Q1数据表.pdf》资料免费下载
    发表于 04-29 10:07 0次下载
    带输出<b class='flag-5'>寄存器</b>的汽车类8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74</b>LV8T594-Q1数据表

    8 位并行输出串行移位寄存器SN74LV164A数据表

    电子发烧友网站提供《8 位并行输出串行移位寄存器SN74LV164A数据表.pdf》资料免费下载
    发表于 04-28 11:15 0次下载
    8 位并行输出串行<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74LV164</b>A数据表

    具有三态输出寄存器的汽车类8位移位寄存器SN74AC595-Q1数据表

    电子发烧友网站提供《具有三态输出寄存器的汽车类8位移位寄存器SN74AC595-Q1数据表.pdf》资料免费下载
    发表于 04-28 09:52 0次下载
    具有三态输出<b class='flag-5'>寄存器</b>的汽车类8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74</b>AC595-Q1数据表

    带输出寄存器的8位移位寄存器74LVC594A产品数据表

    电子发烧友网站提供《带输出寄存器的8位移位寄存器74LVC594A产品数据表.pdf》资料免费下载
    发表于 02-25 09:37 0次下载
    带输出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>74</b>LVC594A产品数据表

    8位串行输入/并行输出移位寄存器74LV164-Q100数据手册

    电子发烧友网站提供《8位串行输入/并行输出移位寄存器74LV164-Q100数据手册.pdf》资料免费下载
    发表于 02-02 09:50 0次下载
    8位串行输入/并行输出<b class='flag-5'>移位寄存器</b><b class='flag-5'>74LV164</b>-Q100数据手册

    8位串行输入/并行输出移位寄存器74LV164数据手册

    电子发烧友网站提供《8位串行输入/并行输出移位寄存器74LV164数据手册.pdf》资料免费下载
    发表于 02-02 09:48 0次下载
    8位串行输入/并行输出<b class='flag-5'>移位寄存器</b><b class='flag-5'>74LV164</b>数据手册

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发器以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行移位寄存器和并行
    的头像 发表于 01-18 10:52 1694次阅读

    labview移位寄存器如何清零

    LabVIEW中的移位寄存器(Shift Register)是一种用于存储和移动数据的功能性块。它类似于传统计算机中的寄存器,可以用于在循环中保留变量的状态。但与传统寄存器不同的是,移位寄存器
    的头像 发表于 01-05 13:49 814次阅读

    74AHC164-Q100/74AHCT164-Q100 8位串行输入/并行输出移位寄存器手册

    电子发烧友网站提供《74AHC164-Q100/74AHCT164-Q100 8位串行输入/并行输出移位寄存器手册.pdf》资料免费下载
    发表于 09-27 10:55 0次下载
    <b class='flag-5'>74AHC164</b>-Q100/<b class='flag-5'>74AHCT164</b>-Q100 8位串行输入/并行输出<b class='flag-5'>移位寄存器</b>手册

    74AHC164/74AHCT164 8位串行输入/并行输出移位寄存器手册

    电子发烧友网站提供《74AHC164/74AHCT164 8位串行输入/并行输出移位寄存器手册.pdf》资料免费下载
    发表于 09-27 10:54 5次下载
    <b class='flag-5'>74AHC164</b>/<b class='flag-5'>74AHCT164</b> 8位串行输入/并行输出<b class='flag-5'>移位寄存器</b>手册

    分享一个74HC165D补充型输出 并行或串行至串行移位寄存器

    74HCT165是符合JEDEC标准7A的高速Si栅极CMOS器件。它们与低功率肖特基TTL(LSTL)引脚兼容。 74HCT165是8位并行加载或串行移位寄存器,具有可从最后一级获得的互补串行输出
    发表于 08-04 17:39

    移位寄存器连接方法及类型

    移位寄存器在一条线上接收传输的4位和8位信号,并一一发送出去。反之亦然,它的作用是将海量的数据分拣到每一位,进行转换和传输数据,移位寄存器允许高速传输大量信号而无需大量布线。在本文中将解释此类移位寄存器
    的头像 发表于 07-07 10:50 1693次阅读

    什么是移位寄存器移位寄存器的用途是什么?

    移位寄存器是数字电子学中的常见构建模块,用于存储和移动位,例如,从串行数据转换为并行数据,反之亦然。
    的头像 发表于 06-29 11:21 4914次阅读
    什么是<b class='flag-5'>移位寄存器</b>?<b class='flag-5'>移位寄存器</b>的用途是什么?

    Arduino 74hc595移位寄存器

    电子发烧友网站提供《Arduino 74hc595移位寄存器.zip》资料免费下载
    发表于 06-14 10:03 3次下载
    Arduino <b class='flag-5'>74hc</b>595<b class='flag-5'>移位寄存器</b>