一种按键检测方法及按键检测电路 [技术领域]
本发明涉及一种按键检测方法及按键检测电路。
[背景技术]
现有市场上有许多家电产品中带有按键输入,其中大多数是采用单片机控制,普通的键盘扫描方法一般采用矩阵方式扫描,需要用到单片机的多个IO口,比如12个键的键盘的按键识别就需要采用7个IO口(3行4列或3列4行)来完成,这种按键检测占用了较多的单片机IO口资源,当单片机的IO口越多时,所需要的单片机成本也就会越高。
[发明内容]
本发明克服了上述技术的不足,提供了一种按键检测方法,通过该方法只需要利用单片机很少的IO口就实现数十个的按键的扫描,使得电路结构很简单,可靠性高,单片机的成本大大降低。
本发明同时提供了一种按键检测电路,通过该按键检测电路只需要利用单片机的很少的IO口就实现数十个的按键的扫描,使得电路结构很简单,可靠性高,单片机的成本大大降低。
为实现上述目的,本发明采用了下列技术方案:
一种按键检测方法,包括如下步骤:
a)、设置按键检测电路:将多个按键的一端接地,将多个按键的另一端分别通过不同阻值的分压电阻后连接在一起形成电压信号检测端,将该电压信号检测端通过电阻后接在电源上,将单片机的中断输入IO口和A/D转换输入IO口与所述该电压信号检测端连接;
b)、检测是否有按键按下:用单片机的中断输入IO口检测所述电压信号检测端的电压,当单片机的中断输入IO口检测的电压等于电源电压时,单片机会判断为高电平,此时无按键按下;当单片机的中断输入IO口检测的电压低于电源电压时,单片机会判断为低电平,单片机产生下降沿中断,此时有按键按下;
c)、电压的A/D转换:在单片机产生下降沿中断过程中,用单片机的A/D转换输入IO口将检测到所述电压信号检测端的电压转换成数字电压;
d)、判断具体是某个按键按下:单片机根据A/D转换输入IO口转换后的数字电压的大小,判断出是某个按键按下;
e)、等待下一次按键按下:按键判断完成后,让中断输入IO口等待下一次按键按下。
将单片机的中断输入IO口和A/D转换输入IO口各使用单片机的一个IO口。
将单片机的中断输入IO口和A/D转换输入IO口共同使用单片机的一个IO口,形成复用IO口。
在执行步骤b时,将单片机的复用IO口设置为中断输入IO口,在执行步骤c和d时,将单片机的复用IO口设置为A/D转换输入IO口,在执行步骤e时,再将单片机的复用IO口设置为中断输入IO口。
所述单片机为PIC16F884单片机。
包括有多个阻值各不相同的分压电阻以及单片机,多个分压电阻的一端与按键的一端分别对应连接,多个按键的另一端接地,多个分压电阻的另一端连接在一起形成电压信号检测端,该电压信号检测端通过另一个电阻后接在电源上;所述单片机的一个作为中断输入IO口使用的IO口和另一个作为A/D转换输入IO口使用的IO口分别连接在所述电压信号检测端上。
所述单片机为PIC16F884单片机。
所述按键检测方法所使用的检测电路,其包括有多个阻值各不相同的分压电阻以及单片机,多个分压电阻的一端与按键的一端分别对应连接,多个按键的另一端接地,多个分压电阻的另一端连接在一起形成电压信号检测端,该电压信号检测端通过另一个电阻后接在电源上;所述单片机的一个兼做中断输入IO口和A/D转换输入IO口使用的复用IO口连接在所述电压信号检测端上。
所述单片机为PIC16F884单片机。
与现有技术相比,本发明的有益效果是:1、只需要利用单片机的一个或两个IO口,就可以实现数十个的按键扫描,使得电路结构变为很简单,可靠性相应得以提高;2、由于比较少占用单片机的IO口,使单片机的成本大大降低。
[附图说明]
下面结合附图与本发明的实施方式作进一步详细的描述:
图1为本发明中检测方法的流程图;
图2为本发明中检测电路的实施例1的电路结构图;
图3为本发明中检测电路的实施例2地电路结构图。
[具体实施方式]
图1为本发明按键检测方法的流程图,本方法包括如下步骤:
a)、设置按键检测电路:将多个按键的一端接地,将多个按键的另一端分别通过不同阻值的分压电阻后连接在一起形成电压信号检测端,将该电压信号检测端通过电阻后接在电源上,将单片机的中断输入IO口和A/D转换输入IO口与所述该电压信号检测端连接;
b)、检测是否有按键按下:将中断输入IO口设置为下降沿触发中断,用单片机的中断输入IO口检测所述电压信号检测端的电压,如果无按键按下,单片机的中断输入IO口检测的电压等于电源电压,单片机会判断为高电平,说明此时无按键按下;如果有按键按下,单片机的中断输入IO口检测的电压低于电源电压,单片机会判断为低电平,单片机产生下降沿中断,说明此时有按键按下;
c)、电压的A/D转换:有按键按下,单片机产生下降沿中断,在单片机产生下降沿中断过程中,用单片机的A/D转换输入IO口将检测到所述电压信号检测端的电压转换成数字电压;
d)、判断具体是某个按键按下:由于每个按键按下时,在电压信号检测端上所产生的电阻分压值是不一样,那么A/D转换输入IO口的转换后的数字电压值也将不同,单片机根据A/D转换输入IO口转换后的数字电压的大小,判断出对应是某个按键按下;
e)、等待下一次按键:按键判断完成后,让中断输入IO口等待下一次按键产生。
上述方法,所使用的单片机为PIC16F884单片机。
在实现上述方法过程中,可以将单片机的中断输入IO口和A/D转换输入IO口各使用单片机的一个IO口。
在实现上述方法过程中,也可以将单片机的中断输入IO口和A/D转换输入IO口共同使用单片机的一个IO口,形成复用IO口,那么在使用复用IO口时就要分时段去使用,在执行步骤b时,将单片机的复用IO口设置为中断输入IO口,在执行步骤c和d时,将单片机的复用IO口设置为A/D转换输入IO口,在执行步骤e时,再将单片机的复用IO口设置为中断输入IO口,并设为下降沿触发中断。
图2为实现上述检测方法所使用的按键检测电路的一个具体实施例,该实施例的按键检测电路包括有5个(当然也可以为其它数目,像10个以上)阻值各不相同的分压电阻以及单片机,5个分压电阻R1-R5的阻值分别为30KΩ、24KΩ、18KΩ、12KΩ、5KΩ,5个分压电阻R1-R5一端与5个按键S1-S5的一端分别对应连接,5个按键S1-S5的另一端接地,5个分压电阻的另一端连接在一起形成电压信号检测端,该电压信号检测端通过另一个阻值为100KΩ的电阻R20后接在电源上;所述单片机的一个作为中断输入IO口使用的IO口和另一个作为A/D转换输入IO口使用的IO口分别连接在所述电压信号检测端上。所述单片机为PIC16F884单片机。
图3为实现上述检测方法所使用的按键检测电路的另一个具体实施例,该实施例的按键检测电路包括有5个(当然也可以为其它数目,像10个以上)阻值各不相同的分压电阻以及单片机,5个分压电阻R1-R5的阻值分别为30KΩ、24KΩ、18KΩ、12KΩ、5KΩ,5个分压电阻R1-R5一端与5个按键S1-S5的一端分别对应连接,5个按键S1-S5的另一端接地,5个分压电阻的另一端连接在一起形成电压信号检测端,该电压信号检测端通过另一个阻值为100KΩ的电阻R20后接在电源上;所述单片机的一个兼做中断输入IO口和A/D转换输入IO口使用的复用IO口连接在所述电压信号检测端上。所述单片机为PIC16F884单片机。