一种三端轻触开关的制作方法

文档序号:11278887阅读:330来源:国知局
一种三端轻触开关的制造方法与工艺

本发明涉及到一种电路轻触开关,用这种轻触开关构成的矩阵键盘的检测变得非常简单,另外,单片机只需要通过一个中断源和若干个普通io口与矩阵键盘相连就可以以中断的方式完成矩阵键盘检测。



背景技术:

键盘是微型计算机系统最基本最常见的输入设备,一般键盘由多个轻触开关构成。根据轻触开关的排列方式,键盘可以分为线性键盘和矩阵键盘。在按键多的场合,我们常采用矩阵键盘,矩阵键盘将轻触开关排成n行m列,每个按键占据行列的一个交点,这样需要连线的数目就是n+m,这样便可检测n*m个轻触开关。而传统的轻触开关为两端式,当我们摁住开关时,这两端导通,自然状态下两端为开路,不导通。这种两端轻触开关构成的矩阵键盘的译键方法常有行扫描法和线反转法,以行扫描法来说,行扫描法需要依次置低矩阵键盘行线上的电平,再读取端口的值以得到被按下按键的编码,这种检测方法在程序上较为繁琐,不够简单,需要经过几个步骤才能识别出被按下的轻触开关。另外,这些方法需要处理器以查询的方式对按键扫描检测,这就要求处理器不断读取io的电平状态,这种按键检测的方式在实时系统中往往是不适宜的,而且以查询的工作方式检测按键就导致cpu无法工作在低功耗模式,会提高整个系统的功耗。如果要用中断的方式检测矩阵键盘,则需要将行(列)线连接到具有中断能力的io口,而对于某些低端的处理器外部中断资源是很少的,无法提供足够的具有中断能力的io口。由传统两端轻触开关构成的矩阵键盘有这两大缺点:检测不够简单和无法工作以中断的工作方式完成检测。而这两大缺点是由传统两端轻触开关的特性所决定的,为了解决克服这些缺点,本发明从轻触开关的结构上提出了一种新的思路。



技术实现要素:

为了简化矩阵键盘的检测,并使单片机只需要通过一个中断源和若干个普通io口与矩阵键盘相连就可以以中断的方式完成矩阵键盘检测。

本发明采用的技术方案是:一种三端轻触开关,其特征是:由三个接触端构成,自然状态下,这三个端两两开路,摁住开关时,这三个端两两短路。

键盘连接方式:三端轻触开关的三个端是相同的,为便于表述,将三端轻触开关的三个端分别编号为0、1、2,对于m*n个轻触开关,将其排列成m行n列,每一行n个三端轻触开关的1端由行线相连,各行分别记为row_1~row_m,每一列的m个三端轻触开关的0端由列线相连,各列分别记为line_1~line_n,所有m*n个轻触开关的2端连接到一起记为com端,所有三端轻触开关构成了m行n列的矩阵键盘。

查询工作方式:行线row_1~row_m分别与单片机io口相连相连,列线line_1~line_n分别与单片机io口相连,com端接地;单片机通过读取矩阵键盘相连的io口的值得到行线和列线上的电平状态,每一个按键被按下都对应唯一的行线和列线上的一个电平状态,所以就可以通过单片机读取行线和列线上的电平状态来识别出被按下的按键,这就实现了单片机以查询的工作方式检测整个矩阵键盘。

中断工作方式1:行线row_1~row_m分别与单片机io口相连相连,列线line_1~line_n分别与单片机io口相连,将com端接到单片机的外部中断引脚,接下来以中断的方式检测整个矩阵键盘,将外部中断设置为下降沿触发,与行线列线相连的io口设置为推挽输出模式并全部输出低电平,这样,只要有任意一个按键被按下,com端电平便会被拉低,中断触发,进入中断服务程序,在中断服务程序中,首先将中断引脚设置为输出模式并输出低电平,再将与行线列线相连的io口设置为上拉输入模式,单片机再读取行线列线的值,通过读取行线列线的电平状态便可以识别出被按下的按键,等待按键释放,识别完成后再将外部中断设置为下降沿触发,与行线列线相连的io口设置为推挽输出模式并全部输出低电平,单片机继续等待中断的来临,这就实现了单片机以中断的工作方式检测整个矩阵键盘。

中断工作方式2:行线row_1~row_m分别与单片机io口相连相连,列线line_1~line_n分别与单片机io口相连,每根行线和每根列线都分别连接一个电阻,所有电阻的另一端连接到高电平;所有行线或者所有列线或者所有行线和列线连接到一个与门电路的输入端,与门电路的输出端连接到单片机的外部中断引脚,将外部中断设置为下降沿触发;将com端接到低电平;任意一个按键被按下,其中一根行线和一根列线的电平被拉低,与门电路输出端输出一个低电平,中断触发,进入中断服务程序,在中断服务程序中,利用中断服务程序读取输入的键的位置。

本发明的有益效果是:这种结构的轻触开关构成的矩阵键盘的检测变得和线性键盘一样简单,并单片机只需要通过一个中断源和若干个普通io口与矩阵键盘相连就可以以中断的方式完成矩阵键盘检测。用中断的方式检测矩阵键盘不仅提高了整个单片机系统的实时性,提高了效率,还允许系统在休眠模式下工作,有按键按下时才触发中断唤醒cpu,这样做也降低了系统的功耗,节约能源,同时能够键盘的使用寿命。

附图说明

原理图1是三端轻触开关的基本结构,有0,1,2三个端,每个端引出引脚;

原理图2给出了一种由传统两端轻触开关构成的4*4矩阵键盘的连接方法;

原理图3给出了一种由三端轻触开关构成的4*4矩阵键盘以查询方式工作的连接方法;

原理图4给出了一种由三端轻触开关构成的4*4矩阵键盘以中断方式工作的连接方法。

具体实施方式

原理图2给出了一种由传统两端轻触开关构成的4*4矩阵键盘的连接方法和实现键盘检测的方法,根据原理图2,行线row_1~row_4分别与单片机p1^0~p1^3(表示p1端口的0~3位,有的教材或者编程语言表示为p1.0~p1.3,本处的表示方法也是常见的标示符号之一,下同;同时,在单片机中有的端口是双向口,或者称为准双向口,即能够输出信息、也能输入信息,此处的p1具有双向口功能)相连并将p1^0~p1^3设置为推挽输出模式,列线line_1~line_4分别与单片机p1^4~p1^7相连并将p1^4~p1^7设置为上拉输入模式(悬空时引脚为高电平),采用行扫描法检测矩阵键盘,依次将p1^0~p1^3单独置为低电平,每设置一次低电平、都要读取p1^4~p1^7检测各列线的状态,来判断是哪个按键按下(由于单片机的扫描速度远远快于人的输入速度,现在单片机的频率能够达到300mhz,假定扫描需要100个周期,大约在微秒数量级,而人的输入速度在0.1秒的数量级,因此,相对于人的输入速度,扫描所需的时间能够忽略)。具体实现方案:首先将p1^0输出低电平,其余三条行线(p1^1、p1^2、p1^3)置为高电平,此时可以检测第一行按键的状态,若key1被按下则line_4线电平被拉低,其余列线为高电平,若key2被按下则line_3线电平被拉低,其余列线为高电平,依此类推key3、key4,这样通过读取列线的电平的状态就可以得到第一行按键的状态。接着检测第二行的按键,将p1^1输出低电平,其余三条行线(p1^0、p1^2、p1^3)置为高电平,此时可以检测第二行按键的状态,若key5被按下则line_4线电平被拉低,其余列线为高电平,若key6被按下则line_3线电平被拉低,其余列线为高电平,依此类推key7、key8,这样通过读取列线的电平的状态就可以得到第二行按键的状态。同理,再依次置低p1^2和p1^3的电平,其余列线为高电平,便可以分别检测第三行和第四行按键的状态。这样就通过行扫描法检测出了整个矩阵键盘。由于本身有由传统两端轻触开关构成,这种4*4矩阵键盘绝大多少通过查询方式(单片机需要不断读取行线和列线的电平)检测,而且可以看出检测过程也较为复杂繁琐。

接下来再给出了一种由本发明所描述的三端轻触开关构成的4*4矩阵键盘的连接方法和实现键盘检测的方法。

首先给出以查询方式实现键盘检测的方法:根据原理图3,行线row_1~row_4分别与单片机p1^0~p1^3相连,列线line_1~line_4分别与单片机p1^4~p1^7相连,com端接电源地(低电平)。p1^0~p1^7都设置为上拉输入模式。单片机只需不断读取p1^0~p1^7即p1整个端口的值,便可得到整个矩阵键盘的状态。当按键s1被按下时,与s1相连的行线与列线都与com端导通,被拉为低电平即p1^0和p1^7电平都为0,此时读出p1端口的值为0x7e(0x标示16进制,十六进制0x7e表示二进制的01111110),p1^0~p1^7依次对应一个字节的低位到高位,若s16被按下,与s16相连的行线与列线都与com端导通,被拉为低电平即p1^3和p1^4电平都为0,此时读出p1端口的值为0xe7(二进制的11100111),同理按键s1~s16被按下时,依次对应的p1端口的值为{0x7e,0xbe,0xde,0xee,0x7d,0xbd,0xdd,0xed,0x7b,0xbb,0xdb,0xeb,0x77,0xb7,0xd7,0xe7},这样只需要不断读取p1端口的值便可以得到按下按键的编码进而得到被按下按键的编号。相比于前面叙述的传统二段轻触开关构成的矩阵键盘的检测需要依次置低行线再读取p1^4~p1^7的值来扫描检测每一行的按键,这种由三端轻触开关构成的4*4矩阵键盘的检测大大简化,直接通过读取p1端口的值便可以检测整个矩阵键盘。

除了简化了矩阵键盘的检测,这种由三端轻触开关构成的矩阵键盘还可以很容易地以中断的工作方式完成其检测。接下来给出以中断方式实现键盘检测的方法:根据原理图4,行线row_1~row_4分别与单片机p1^0~p1^3相连,列线line_1~line_4分别与单片机p1^4~p1^7相连,将com端接到单片机的外部中断引脚,将外部中断设置为下降沿触发,p1口设置为推挽输出模式并全部输出低电平,这样,只要有任意一个按键被按下,com端电平便会被拉低,中断触发,进入中断服务程序,在中断服务程序中,首先将中断引脚设置为输出模式并输出低电平,p1口设置为上拉输入模式,单片机再读取p1端口的值,通过读取p1端口的值便可以得到被按下按键的编码进而得到被按下按键的编号,按键s1~s16被按下时,依次对应的p1端口的值为{0x7e,0xbe,0xde,0xee,0x7d,0xbd,0xdd,0xed,0x7b,0xbb,

0xdb,0xeb,0x77,0xb7,0xd7,0xe7},得到被按下按键的编号后,再将p1口设置为输出模式并输出低电平,将外部中断设置为输入模式,退出中断,这样,单片机可以工作在低功耗休眠模式,在有按键按下时才将其唤醒。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1