11.23 键盘检测之74hc165

对于多个按键的检测,一般多采用矩阵键盘来进行检测,但也会占用单片机多个IO口。那么,对于单片机IO端口有限的键盘检测电路该如何解决呢?答案就是74HC165芯片。

键盘检测之74hc165

74HC165是一款高速MOS集成芯片,它的功能主要是并行输入,串行输出。在实际键盘检测电路中,单片机只需要三个引脚(连接至缓冲使能脚PL、时钟脚CLK、串行输出引脚Q7或者Q\\7\\)便可实现单个74HC165下8个键盘的检测。同时,由于74HC165支持级联,则通过级联方式单片机只需要三个引脚便可检测8个以上的按键动作。

键盘检测之74hc165

74HC165脚位配置

键盘检测之74hc165

74HC引脚功能描述

常规电路如下图:

键盘检测之74hc165

74HC165按键检测电路

由电路图可知,串口输出使用的为反相口,因此按键未触发是状态为低电平,按键按下时,输出状态为高电平。需要注意的是串行输出的顺序-最先读出H,最后读出A。

简单的写一下,读取程序:

 unsigned char KEY_GetVal(void) //返回值为char型,8位
{
unsigned char i;
unsigned char data;
CLK_PIN = 1;
PL_PIN = 0; //HC165读按键
PL_PIN = 1; //暂停HC165读按键
data = 0;
if(1==DATA_PIN)
{
data |= 0x01; //此时DATA_PIN为data的最高位。
}
for(i = 0;i < 7;i++) //需要移位7次,才能读完
{
CLK_PIN = 0;
CLK_PIN = 1; //时钟上升沿,HC165移位
data <<= 1; //data左移一位,为新来的数据空出最后一位
if(1==DATA_PIN) //读入新来的数据到最后一位
{
data |= 0x01;
}
}
CLK_PIN = 0;
return(data); //经过7次循环后,D6,D5,D4,D3,D2,D1,D0被依次读入data的7个位中

}


分享到:


相關文章: