1 新型键盘电路
这里以3根I/O线为例,普通接法只能接3个键,即使是采用改进后的组合接法[1],最多也只能接7个链,本文介绍的电路是在组合接法的基础上增加了3个二极管,并采用了新的接法。其软件处理使用了端口访问和扫描检测两种方法,从而使按键数可达到16个,同时由于采用了组合逻辑来直接对端口进行读取,因此极大地简经了程序的处理过程,同时也节省了宝贵的存储器和CPU运算资源。图1是该电路的电路原理图。
2 软件过程和程序
该电路在程序处理时,由处理器首先向I/O1~I/O3写高电平,然后读入。如果非全“1”,说明,K0~K6中有键按下,此时可根据读入的端口状态判断键的状态,如果读入的结果为全“1”,则I/O1~I/O3轮流输出低电平,再读入,这样就可根据另外两根I/O线的状态来判别是K7~K15中的哪一个键被按下。重复调用键盘处理子程序可将读取的键值与上次的值进行比较,甚至两次读数相同为止,这样即可消除按键抖动所造成的误读。该电路选用的单片机为 AT89C2051,用C51语言编写的按键电路处理程序如下:
#include
#define uchar unsigned char
uchar getkey(void);
uchar keyvol;
void main(void)
{
keyvol=getkey(); /*调用键处理函数,返回的数据等于16表示同有键按下,0至15对应k0至K15*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)