CN101626247B - 键盘扫描方法 - Google Patents
键盘扫描方法 Download PDFInfo
- Publication number
- CN101626247B CN101626247B CN2008100403276A CN200810040327A CN101626247B CN 101626247 B CN101626247 B CN 101626247B CN 2008100403276 A CN2008100403276 A CN 2008100403276A CN 200810040327 A CN200810040327 A CN 200810040327A CN 101626247 B CN101626247 B CN 101626247B
- Authority
- CN
- China
- Prior art keywords
- row
- pin
- signal pins
- column signal
- low level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种键盘扫描方法,其包括以下步骤:S1、初始化扩展芯片;S2、将中断处理程序注册到中断引脚上;S3、在键盘上进行按键;S4、读出为低电平的列信号引脚并确定按键的列号;S5、重新配置行信号引脚和列信号引脚的输入输出端和电平信号;S6、读出为低电平的行信号引脚并确定按键的行号;S7、恢复扩展芯片的初始化设置,回到步骤S3,等待下一次按键;S8、根据确定的行号和列号,确定具体按键码,并发送给一应用层进行相应的处理。该键盘扫描方法扩展了更多的引脚,扫描过程相对比较简单。
Description
技术领域
本发明涉及一种键盘扫描方法,特别是涉及一种使用扩展芯片实现的键盘扫描方法。
背景技术
当前键盘扫描算法都是采用了行列矩阵方式,这样5*5键盘需要10个引脚,在实际开发中有时引脚数目不够,因此需要扩展以支持更多的引脚。
发明内容
本发明要解决的技术问题是为了克服现有技术中引脚不够的缺陷,提供一种键盘扫描方法,该键盘扫描方法通过一扩展芯片以支持更多的引脚。
本发明是通过下述技术方案来解决上述技术问题的:一种键盘扫描方法,一键盘包括复数个行信号引脚和复数个列信号引脚组成的矩阵,每一行信号引脚和每一列信号引脚分别对应一开关的两端,一主芯片和一扩展芯片通过一总线连接,一中断引脚的一端与该扩展芯片的一中断请求信号输出端连接,另一端与该主芯片的一外部通用输入输出端,这些行信号引脚和列信号引脚与该扩展芯片上对应的控制引脚对应连接,其中该键盘扫描方法包括以下步骤:
S1、初始化扩展芯片;
S2、将一中断处理程序注册到中断引脚上;
S3、在键盘上进行按键;
S4、读出为低电平的列信号引脚并确定按键的列号;
S5、重新配置行信号引脚和列信号引脚的输入输出端和电平信号;
S6、读出为低电平的行信号引脚并确定按键的行号;
S7、恢复扩展芯片的初始化设置,回到步骤S3,等待下一次按键;
S8、根据确定的行号和列号,确定具体按键码,并发送给一应用层进行相应的处理。
其中,该总线包括一串行数据线和一串行时钟线。
其中,该步骤S1包括以下过程:将行信号引脚设置为输出端和低电平,同时将列信号引脚设置为输入端和高电平。
其中,该步骤S3包括以下过程:当该扩展芯片的中断请求信号输出端发生变化时,通过该中断引脚将产生一个中断,进入中断处理程序,同时按键将一对应的开关打开,该开关将对应的列信号引脚与行信号引脚连接并导通。
其中,该步骤S4包括以下过程:对应的一列信号引脚被拉底变为低电平,读出为低电平的列信号引脚,以确定该按键的列号。
其中,该步骤S5包括以下过程:将行信号引脚设置为输入端和高电平,同时将列信号引脚设置为输出端和低电平。
其中,该步骤S6包括以下过程:对应的一行信号引脚被拉底变为低电平,读出为低电平的行信号引脚,以确定该按键的行号。
本发明的积极进步效果在于:
本发明采用一扩展芯片来扩展16个引脚,利用芯片的特性,实现了键盘扫描算法,扫描过程相对比较简单;而且本发明利用输入输出方向的改变,速度较快,简化了检测过程,利用该扩展芯片既节约了引脚,又使得算法简单明了。
附图说明
图1为本发明一实施例使用的键盘示意图。
图2为本发明一实施例使用的电路示意图。
图3为本发明的一实施例的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。如图1所示,本发明使用键盘扫描方法的键盘包括复数个行信号引脚KBR1~KBR5和复数个列信号引脚KBC1~KBC5组成的矩阵,每一行信号引脚和列信号引脚对应一开关的两端,比如第一行信号引脚KBR1和第一列信号引脚KBC1分别对应第一行第一列开关SW11的两端,当开关SW11被打开(对应的按键被按下时),开关SW11将第一行信号引脚KBR1和第一列信号引脚KBC1导通连接。如图2所示,一主芯片MSM6280和一扩展芯片PCA9555通过I2C总线连接,该I2C总线包括串行数据线SDA和串行时钟线SCL。一中断引脚I2C_INT一端与扩展芯片的中断请求信号输出端INT连接,另一端与主芯片的外部通用输入输出端GPIO连接,当扩展芯片的中断请求信号输出端INT有变化时,通过中断引脚I2C_INT产生中断。行信号引脚KBR1~KBR5和扩展芯片上对应的控制引脚P01~P05对应连接,列信号引脚KBC1~KBC5和扩展芯片上对应的控制引脚P12~P15对应连接。其中,扩展芯片PCA9555的第一地址输入端A0连接一第五电阻R5和第六电阻R6,第五电阻R5连接第一电源端VDD1,第六电阻R6接地,类似地,第二地址输入端A1连接一第一电阻R1和第三电阻R3,第三地址输入端A2连接一第二电阻R2和第四电阻R4,第一电阻R1和第二电阻R2连接第二电源端VDD2,第三电阻R3和第四电阻R4接地;在使用时,只要在第五电阻R5和第六电阻R6、第一电阻R1和第三电阻R3、第二电阻R2和第四电阻R4之间选择一电阻即可,比如选择第一电阻R1、第二电阻R2和第五电阻R5,则A0A1A2=111,选通控制芯片PCA9555上对应的引脚。
本发明键盘扫描方法的包括以下步骤:
步骤101、初始化扩展芯片:将行信号引脚KBR1~KBR5设置为输出端和低电平,同时将列信号引脚KBC1~KBC5设置为输入端和高电平;
步骤102、将一中断处理程序注册到中断引脚I2C_INT上;
步骤103、在键盘上进行按键:扩展芯片的中断请求信号输出端INT发生变化,通过中断引脚I2C_INT将产生一个中断,进入中断处理程序,同时按键将一对应的开关打开,该开关将对应的列信号引脚与行信号引脚连接并导通;比如按了“H”键,并设它对应的开关为第一行第一列开关SW11,则此时开关SW11打开并将第一列信号引脚KBC1与第一行信号引脚KBR1连接并导通;
步骤104、读出为低电平的列信号引脚并确定按键的列号:通过上述按键打开对应的开关将对应的列信号引脚和对应的行信号引脚连接并导通,列信号引脚被拉底变为低电平,读出为低电平(其值为“0”)的列信号引脚,就能确定列号;比如上述第一列信号引脚KBC1与第一行信号引脚KBR1连接并导通后,第一列信号引脚KBC1由高电平变为低电平,其它列信号引脚KBC2~KBC5保持不变,都为高电平;因此,读出各个列信号引脚的值,只要有一列信号引脚的电平信号值为“0”,就是被按键的,就能确定该按键的列号了;
步骤105、重新配置行信号引脚和列信号引脚的输入输出端和电平信号:将行信号引脚KBR1~KBR5设置为输入端和高电平,同时将列信号引脚KBC1~KBC5设置为输出端和低电平;
步骤106、读出为低电平的行信号引脚并确定按键的行号:因为上述按键将对应的行信号引脚和对应的列信号引脚连接并选通,对应的行信号引脚被拉底变为低电平,读出为低电平(其值为“0”)的行信号引脚,就能确定行号;比如还是以“H”键为例,当按了“H”键后,则第一行第一列开关SW11导通,第一列信号引脚KBC1与第一行信号引脚KBR1连接并选通,第一行信号引脚KBR1由高电平变为低电平,其它行信号引脚KBR2~KBR5保持不变,都为高电平;因此,读出各个行信号引脚的值,只要有一行信号引脚的电平信号值为“0”,就能确定该按键的行号了;
步骤107、恢复扩展芯片的初始化设置,回到步骤S3,等待下一次按键;
步骤108、根据确定的行号和列号,确定具体按键码,并发送给应用层进行相应的处理;比如通过上述步骤后,“H”键的行号和列号被确定了,就能确定具体按键码,最后手机或电脑键盘就可以完成相应的操作了。
其中,以一种编程语言为例给出步骤101中的初始化扩展芯片的实现方式,该参考代码如下:
Void PCA9555_iic_initialize()
{
/*initializing default settings*/
/*configure Row IO to output*/
result=PCA9555_IICWrite(REG_CONFIG_0,0x00);
if(!result)
{
return;
}
/*configure Column IO to input,for PCA9555,it is default 1
when IO is configured input*/
result=PCA9555_IICWrite(REG_CONFIG_1,0xFF);
if(!result)
{
return;
}
/*configure row to low*/
result=PCA9555_IICWrite(REG_OUTPUT_0,(0x00));
if(!result)
{
return;
}
}
其中,以一种编程语言为例给出步骤102和103中的中断处理程序的实现方式,该实例中由于在处理过程中,检测行号时,会产生一个新的电平转换信号,导致新的中断产生,但该信号完全可以由软件编程屏蔽掉,不产生负作用。该参考代码如下:
void PCA9555_keypad_handler()
{
byte read_input_0,read_input_1;/*byte is unsigned char*/
byte read_row,read_col;
boolean result=false;
read_input_0=read_input_1=0xFF;
read_row=0xff=read_col=0xff;
/*5*5=25 keypad*/
/*read_column*/
result=PCA9555_IICRead(REG_INPUT_1,(byte
*)(&read_input_1));
if(!result)
{
return;
}
if((read_input_1&0xF8)==0x78)
read_col=0;
else if((read_input_1&0xF8)==0xb8)
read_col=1;
else if((read_input_1&0xF8)==0xd8)
read_col=2;
else if((read_input_1&0xF8)==0xe8)
read_col=3;
else if((read_input_1&0xF8)==0xf0)
read_col=4;
/*Colum got,then check row,new keypad scan method*/
result=PCA9555_IICWrite(REG_CONFIG_0,0xFF);
if(!result)
{
return;
}
result=PCA9555_IICWrite(REG_CONFIG_1,0x00);
if(!result)
{
return;
}
result=PCA9555_IICWrite(REG_OUTPUT_1,(0x00));
if(!result)
{
return;
}
/*read row*/
result=PCA9555_IICRead(REG_INPUT_0,(byte
*)(&read_input_0));
if(!result)
{
return;
}
if((read_input_0&0x1f)==0x1e)
read_row=4;
else if((read_input_0&0x1f)==0x1d)
read_row=3;
else if((read_input_0&0x1f)==0x1b)
read_row=2;
else if((read_input_0&0x1f)==0x17)
read_row=1;
else if((read_input_0&0x1f)==0x0f)
read_row=0;
/*row got,then map to the key code and send to application to
further proccess*/
if((read_row<5)&&(read_col<5))
{
/* map to the key code and send to application to handle*/
SendKey2App(iic_key[read_row][read_col]);
}
//recover to default settings
result=PCA9555_IICWrite(REG_CONFIG_0,0x00);if(!result)
{
return;
}
result=PCA9555_IICWrite(REG_CONFIG_1,0xFF);
if(!result)
{
return;
}
result=PCA9555_IICWrite(REG_OUTPUT_0,(0x00));
if(!result)
{
return;
}
}
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,甚至将本发明的扫描算法可以集成到主芯片中。因此,本发明的保护范围由所附权利要求书限定。
Claims (7)
1.一种键盘扫描方法,键盘包括多个行信号引脚和多个列信号引脚组成的矩阵,每一个行信号引脚和每一个列信号引脚分别对应一开关的两端,一主芯片和一扩展芯片通过一总线连接,一中断引脚的一端与该扩展芯片的一中断请求信号输出端连接,该中断引脚的另一端与该主芯片的一外部通用输入输出端,这些行信号引脚和列信号引脚与该扩展芯片上对应的控制引脚对应连接,其特征在于,该键盘扫描方法包括以下步骤:
S1、初始化该扩展芯片;
S2、将一中断处理程序注册到中断引脚上;
S3、在键盘上进行按键;
S4、读出为低电平的列信号引脚并确定按键的列号;
S5、重新配置行信号引脚和列信号引脚的输入输出端和电平信号;
S6、读出为低电平的行信号引脚并确定按键的行号;
S7、恢复扩展芯片的初始化设置,回到步骤S3,等待下一次按键;
S8、根据确定的行号和列号,确定具体按键码,并发送给一应用层进行相应的处理。
2.如权利要求1所述的键盘扫描方法,其特征在于,该总线包括一串行数据线和一串行时钟线。
3.如权利要求1所述的键盘扫描方法,其特征在于,该步骤S1包括以下过程:将行信号引脚设置为输出端和低电平,同时将列信号引脚设置为输入端和高电平。
4.如权利要求1所述的键盘扫描方法,其特征在于,该步骤S3包括以下过程:当该扩展芯片的中断请求信号输出端发生变化时,通过该中断引脚将产生一个中断,进入中断处理程序,同时按键将一对应的开关打开,该开关将对应的列信号引脚与行信号引脚连接并导通。
5.如权利要求1所述的键盘扫描方法,其特征在于,该步骤S4包括以下过程:对应的一列信号引脚被拉底变为低电平,读出为低电平的列信号引脚,以确定该按键的列号。
6.如权利要求1所述的键盘扫描方法,其特征在于,该步骤S5包括以下过程:将行信号引脚设置为输入端和高电平,同时将列信号引脚设置为输出端和低电平。
7.如权利要求1所述的键盘扫描方法,其特征在于,该步骤S6包括以下过程:对应的一行信号引脚被拉底变为低电平,读出为低电平的行信号引脚,以确定该按键的行号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100403276A CN101626247B (zh) | 2008-07-08 | 2008-07-08 | 键盘扫描方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100403276A CN101626247B (zh) | 2008-07-08 | 2008-07-08 | 键盘扫描方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101626247A CN101626247A (zh) | 2010-01-13 |
CN101626247B true CN101626247B (zh) | 2012-11-14 |
Family
ID=41521951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100403276A Expired - Fee Related CN101626247B (zh) | 2008-07-08 | 2008-07-08 | 键盘扫描方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101626247B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142846B (zh) * | 2010-01-28 | 2013-11-06 | 环旭电子股份有限公司 | 键盘扫描装置及其按键矩阵电路与其扫描方法 |
CN101995964A (zh) * | 2010-11-19 | 2011-03-30 | 中兴通讯股份有限公司 | 一种处理键盘指令的方法、装置、键盘及终端设备 |
CN102185614A (zh) * | 2011-05-27 | 2011-09-14 | 惠州Tcl移动通信有限公司 | 一种按键装置及其按键扫描方法 |
CN102364881A (zh) * | 2011-10-18 | 2012-02-29 | 捷开通讯科技(上海)有限公司 | 电子设备的按键扫描方法 |
US8963696B2 (en) * | 2011-12-22 | 2015-02-24 | Mediatek Inc. | Apparatus for performing key control with reduced key matrix pin count |
CN103324101B (zh) * | 2013-05-13 | 2015-04-01 | 胡友前 | 基于Profinet带扩展输入输出的控制面板 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5677687A (en) * | 1996-07-08 | 1997-10-14 | Vlsi Technology, Inc. | Zero DC power keyboard scanner using bidirectional I/O's with repeaters |
CN1787719A (zh) * | 2004-12-06 | 2006-06-14 | 明基电通股份有限公司 | 静电放电防护的按键扫描电路 |
-
2008
- 2008-07-08 CN CN2008100403276A patent/CN101626247B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5677687A (en) * | 1996-07-08 | 1997-10-14 | Vlsi Technology, Inc. | Zero DC power keyboard scanner using bidirectional I/O's with repeaters |
CN1787719A (zh) * | 2004-12-06 | 2006-06-14 | 明基电通股份有限公司 | 静电放电防护的按键扫描电路 |
Also Published As
Publication number | Publication date |
---|---|
CN101626247A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101626247B (zh) | 键盘扫描方法 | |
US6910638B2 (en) | Smart card that can be configured for debugging and software development using secondary communication port | |
CN101127098B (zh) | 识别主机协议的设备和包括该设备的智能卡 | |
CN109901002B (zh) | 连接器的引脚连接测试系统及其方法 | |
US8494586B2 (en) | Wireless communicator jacket with multiple operational stages | |
WO1996027159A1 (en) | Reprogrammable pcmcia card | |
US6766401B2 (en) | Increasing control information from a single general purpose input/output (GPIO) mechanism | |
US7345598B2 (en) | Electronic device with keyboard system and method of detecting key conditions thereof | |
CN101303708A (zh) | 一种芯片引脚复用的代码编码的方法及装置 | |
TWI736721B (zh) | 連接器的腳位連接測試系統及其方法 | |
KR101199312B1 (ko) | 휴대용 단말기에서 확장 키를 사용을 위한 장치 및 방법 | |
US7281246B1 (en) | Method for loading user interface software | |
US6859150B2 (en) | Apparatus for reading keyboard-commands of a portable computer | |
US8700826B2 (en) | Controller, computer system and control method thereof | |
CN1523510A (zh) | 可重复下载数据至现场可编程门阵列的方法及装置 | |
KR20060072260A (ko) | 이동통신 단말기의 키 제어 장치 및 방법 | |
CN1159641C (zh) | 用于笔记型计算机的键盘指令读取装置 | |
CN105718338A (zh) | 信息处理方法及电子设备 | |
CN101635572A (zh) | 笔记本电脑及其键盘控制器 | |
CN202548794U (zh) | 触摸屏设备 | |
US20030156393A1 (en) | Primary functional circuit board suitable for use in verifying chip function by alternative manner | |
US7159104B2 (en) | Simplified memory detection | |
CN100559412C (zh) | 按键模组化的遥控器 | |
CN101676871B (zh) | 嵌入式电子装置及其开机方法 | |
CN100501427C (zh) | 识别系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121114 Termination date: 20180708 |