对于多个按键的检测,一般多采用矩阵键盘来进行检测,但也会占用单片机多个IO口。那么,对于单片机IO端口有限的键盘检测电路该如何解决呢?答案就是74HC165芯片。
74HC165是一款高速MOS集成芯片,它的功能主要是并行输入,串行输出。在实际键盘检测电路中,单片机只需要三个引脚(连接至缓冲使能脚PL、时钟脚CLK、串行输出引脚Q7或者Q\7\)便可实现单个74HC165下8个键盘的检测。同时,由于74HC165支持级联,则通过级联方式单片机只需要三个引脚便可检测8个以上的按键动作。
常规电路如下图:
由电路图可知,串口输出使用的为反相口,因此按键未触发是状态为低电平,按键按下时,输出状态为高电平。需要注意的是串行输出的顺序-最先读出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个位中 }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/70917.html