吕永利+赵双勇+鞠建勋 (漯河医学高等专科学校第二附属医院设备科,河南 漯河 462300) 【摘 要】本文主要描述阵列式按键的设计方法,分别从按键的连接方式,阵列式按键的连接方式,不使用驱动芯片和使用驱动芯片控制阵列式按键的方法几个方面进行描述,使读者对按键的设计有系统的了解。 【关键词】按键;阵列;驱动芯片 引言: 按键在仪器仪表及多种设备中都有广泛应用,是人机交互中重要的信息输入设备,可配合显示设备,共同完成对机器设备的控制。在需要输入复杂信息是,就需要多个按键组成按键组才能完成。 对于需要使用多个按键的情况,如果每个按键都连接一条控制芯片的IO脚,会严重浪费控制芯片的IO资源,增加排板时连线的复杂度,而且,其控制程序也会比较分散,集成化程度不高。对于这种情况,通常使用阵列式按键方式处理。 阵列式按键方式是将多个按键排列成最接近方形的矩阵,通过按键在矩阵中的行坐标和列坐标定位按键,通过逐行逐列扫描的方式查询每一个按键,从而查询到每个按键的状态。 假设阵列式按键为M行N列,那么使用M+N条IO口,即可完成对M×N个按键的控制,这大大减少了IO口的使用量,节省了IO资源,而且,可以用比较精炼的代码,写出扫描按键的驱动程序,从而提高了代码的效率和集成化程度。IO口的减少,节省了排板空间,有利于印制板小型化。 针对于阵列式按键方式,一些芯片厂商开发出一系列控制芯片,这些控制芯片可完成对按键阵列的扫描,并将扫描结果通过并行或串行总线上报给CPU。本文分别描述了串行和并行按键控制芯片的使用方法。 一、按键的连接方法 如图1所示,按键一端接地,另一端加上拉电阻后连接到控制芯片IO口。 这种连接方式,在按键未按下时,图中"POWER"位置的电平为高;按键按下时,图中"POWER"位置的电平为低。 控制芯片需要编写的按键处理代码为: (a)IO口初始化 控制芯片将连接此按键的IO口设置为输入。 (b)扫描 编写程序循环扫描此IO口状态。 (1)当读到IO口状态为高时,初步确定有按键按下; (2)按键消抖,如果运行消抖程序,确定读到的IO口状态为高为按键抖动,则跳出此次扫描,如果确定读到的IO口状态为高不是按键抖动,则继续向下运行; (3)按键处理。即按键按下后根据要求,做出相应的处理。 二、阵列式按键的连接方法 图2所示为4行5列按键,控制20个按键。 这种连接方式,图中"Row0"位置、"Row1"位置、"Row2"位置、"Row3"位置、"Column0"位置、"Column1"位置、"Column2"位置、"Column3"位置、"Column4"位置分别连接控制芯片IO口。控制芯片通过IO口扫描按键阵列。 三、无驱动芯片的阵列式按键的控制方法 阵列按键连接到控制芯片的IO口分别命名为R0、R1、R2、R3、C0、C1、C2、C3、C4(R表示行,C表示列,R0表示IO口与阵列按键的第0行连接,其它同理) 阵列式按键扫描方法,以图2的按键为例,方法如下。 (a) IO口初始化。将IO口R0、R1、R2、R3设置为输出,将"IO口C0、C1、C2、C3、C4设置为输入。 (b)IO口R0置高,R1置低,R2置低,R3置低,查询IO口C0、C1、C2、C3、C4状态,若都为低,表明没有按键按下,继续执行下一步,若有高,则判断是哪条IO口为高,从而判断是第0行哪一列按键按下,记下键值后跳出扫描。 (c)IO口R0置低,R1置高,R2置低,R3置低,查询IO口C0、C1、C2、C3、C4状态,若都为低,表明没有按键按下,继续执行下一步,若有高,则判断是哪条IO口为高,从而判断是第1行哪一列按键按下,记下键值后跳出扫描。 (d)IO口R0置低,R1置低,R2置高,R3置低,查询IO口C0、C1、C2、C3、C4状态,若都为低,表明没有按键按下,继续执行下一步,若有高,则判断是哪条IO口为高,从而判断是第2行哪一列按键按下,记下键值后跳出扫描。 (e)IO口R0置低,R1置低,R2置低,R3置高,查询IO口C0、C1、C2、C3、C4状态,若都为低,表明没有按键按下,继续执行下一步,若有高,则判断是哪条IO口为高,从而判断是第3行哪一列按键按下,记下键值后跳出扫描。 (f)若步骤e)判断结果仍为无按键按下,跳出扫描,判定结果为无按键按下,扫描结束。 此扫描操作具有一定的规律性,可用循环语句描述,代码将非常简练。 四、有驱动芯片的阵列式按键的控制方法 按键控制芯片可完成对按键阵列的扫描,并将扫描结果通过并行或串行总线上报给CPU。以下介紹并行方式的按键控制芯片MM74C923WM和串行方式的按键控制芯片TCA8418RTWR。 (一)使用芯片MM74C923WM驱动阵列式按键 按键控制芯片MM74C923WM为3.3V供电的20脚芯片。外围电路简单,最多可控制4行5列的阵列式按键,即最多可控制20个按键。与CPU接口为并行接口,带有中断模式,可在按键按下时产生中断信号。 1.连接方式 MM74C923WM的连接方式有以下说明。 (a)MM74C923WM与阵列式按键接口: (1)MM74C923WM的1脚至5脚与阵列式按键的列控制脚连接,MM74C923WM的1脚至5脚分别连接图2中"Column0"至"Column4"位置。 (2)MM74C923WM的11脚、12脚、9脚、8脚与阵列式按键的行控制脚连接,MM74C923WM的11脚、12脚、9脚、8脚分别连接图2中"Row0"至"Row3"位置。 (b)MM74C923WM与CPU接口: (1)MM74C923WM的15脚至19脚与CPU端连接,为并行数据线,从此并行数据线上可读出被按下的按键的键值。 (2)M74C923WM的14与CPU端连接,此脚为M74C923WM使能引脚,CPU可以通过控制此脚高低来使能和禁止M74C923WM。 (3)M74C923WM的13脚与CPU端连接,此脚为M74C923WM中断引脚,CPU可以通过读取此脚状态来判断是否有按键按下动作发生。 2.CPU控制方法 CPU芯片的外部中断脚与M74C923WM的13脚连接,当按键按下时产生中断信号,CPU接收到中断信号后产生中断,进入中断服务函数,通过并行数据线读取被按下按键的键值,从而根据键值进行按键处理。 (二)使用芯片TCA8418RTWR驱动阵列式按键 按键控制芯片TCA8418RTWR为3.3V供电的24脚芯片。超小封装,外围电路简单,最多可控制8行10列的阵列式按键,即最多可控制80个按键。与CPU接口为串行接口,带有中断模式,可在按键按下时产生中断信号。 五、结束语 使用芯片TCA8418RTWR驱动阵列式按键,这种方式在多按键处理中优势较大,可将芯片芯片TCA8418RTWR排在按键板上,这样,按键板与控制板之间的接口线的数量将缩减至5根,可提升接口的可靠性。 【参考文献】 [1]M74C923数据手册.National Semiconductor。 [2]TCA8418数据手册.TI。