学海荡舟手机网
导航

主页 > 电子设备技术 > 电器电路基础 > > 详细内容

N×N矩阵编码键盘的设计

 矩阵键盘多为扫描键盘或使用专门的键盘显示芯片。

 扫描键盘的程序控制比较复杂,需要占用较多的I/O口;而专门的键盘显示芯片8279编程容易,但价格较贵,且按键的数量受到一定限制。

 本文介绍一种中断键盘,非常适用于或等自动控制系统。

 键盘如附图所示。

 选用74HCl48作为键盘编码器,用和分压控制编码器输入端的值。  

 当无按键按下时,编码器U1的各输入引脚为上拉高电平,无编码输出,编码器U2由于受U1的GS引脚控制也无编码输出,故不会向控制系统发出中断请求;当某键按下时,例如SWl0键按下后,R3、R7接通,在按键两端产生O.8V的(U=5xR3/(R3+R7)=O.8 V),编码器U1确认该电平为低电平,U1的15脚被拉低,编码器开始编码并输出码010,其GS引脚输出低电平,启动编码器U2工作。由于按键端的O.8V电压使三极管9014(Q2)导通,;其集电极C被拉低,将U2的16脚拉低,而其余的引脚都为高电平,U2编码输出二进制码001,并在GS端输出低电平中断信号。两个编码器产生的编码用十六进制表示(如按键SWlO输出十六进制码为0X12),作为按键在键盘矩阵中的矩阵位置值,可以直接供8位I/O口系统使用。

 此编码键盘电路扩展成16x16的矩阵键盘,只需要4块74HCl48编码器,电路简单,编程操作容易。当在I/O口上加上缓冲芯片74IS244时,通过在中断程序中片选74LS244,即可同其他外围电路共用I/O资源,从而极大地节省系统的接口资源。

 单片机读键盘编码值的C语言程序段如下所示:

 uchar keyvalue;/*全局变量*/delay10ms(){……}

 void keyin() interrupt 0{uchar i;EA=0  ;/*关闭中断*/delay10ms{();/*等待按键稳定*/reread:PO=Oxff:

 A=PO;kevvalue=ACC;if(ACC^31ACC^7)/*判断读入值有效与否*/goto reread;/*重新读人键盘输入*/……/*按键值处理*/for{i=3;i>0;i--)delay10ms();/*等待按键松开*/EA=1    ;/*开中断*


相关文章