按键扫描——74HC164驱动(一)

本文介绍了74HC164作为按键扫描器的原理和实现方法。74HC164是8位移位寄存器,通过串行输入并行输出数据。在按键扫描应用中,8个输出端连接按键,配合定时器进行扫描,根据高电平或低电平判断按键状态。文中还分析了代码结构,强调了扫描顺序和延迟处理的重要性。
摘要由CSDN通过智能技术生成

前言:在做MCU的外部按键扫描时,74HC164是一种不错的选择。笔者在使用它的过程中,遇到了一些问题,在这里整理记录下。

74HC164的特性

  • 如下图所示,74HC164是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出(即串入并出)。数据通过两个输入端(A 或 B)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
  • 时钟 (CLK) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(A 和 B)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
  • 主复位 (CLR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。

在这里插入图片描述

74HC164按键扫描思想

  • 在使用74HC164用作按键扫描时,74HC164的8个输出端QA~QH可以连接8个按键,8个按键则可以同时串联在一个或者多个公共端上,公共端可以直接是MCU的输入引脚。这时就会出现两种情况:

  • 1)公共端接地,74HC164定时扫描出高电平

    这时,如果进行扫描时,公共端出现高电平,那么结合这时74HC164扫描到哪一位,就可以判断出是这个公共端上哪个按键被短路,即被按下。

  • 2)公共端上拉,74HC164定时扫描出低电平

    这时,如果进行扫描时,公共端出现低电平,那么结合这时74HC164扫描到哪一位,就可以判断出是这个公共端上哪个按键被短路,即被按下。

74HC164按键扫描实现

74HC164需要结合定时器来进行按键扫描,这里将定时器的定时时间定为2.5ms,即每2.5ms调用一次该函数,将i++。这里选择的接法是按键公共端上拉,74HC164定时扫描出低电平。

/*74HC164是传入并出的8位寄存器,想要定时扫描出低电平,可以将建立如下的扫描值表*/
const uint8_t Tab_74HC164[8] = {
   0xFE,0xFD,0xFB,0xF7
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值