余水宝,张 胜,李 勇
(浙江师范大学数理与信息工程学院,浙江金华 321004)
随着经济和技术的发展,单片机在各个领域的应用突飞猛进。键盘是单片机和ARM应用系统中一个最常规的IO设备,但由于应用领域的多样性,有时对键盘编码占用单片机的IO引脚资源不得不斤斤计较,尤其是应用领域受到空间和功耗等因素的限制时,更是为减少一条单片机IO引脚而绞尽脑汁。本文在研究独立编码和矩阵编码的技术的基础上,提出一项新的混合编码技术,以实现单片机应用系统中键盘编码和IO资源利用率的进一步优化。
独立编码键盘指的是一个按键独立占用单片机的一条IO线[1],如图1所示。设按键数为LAJ1,占用IO线数为LIO,则有关系为

独立编码的优点是软件编程简单,电路简洁,缺点是单片机资源利用率不高,因此只有在单片机IO线较为富裕且按键数较少的场合下使用。
矩阵编码键盘是将单片机的LIO条IO线分为M条行线和N条列线,组成一个M×N的按键矩阵[2],如图2所示。按键数LAJ2与占用IO线数LIO有关系式:


图1 独立编码

图2 矩阵编码
当LIO一定时,联立求解式(2)和式(3)两式,有

实际情况要求式(5)有整数实数解,即要求

当单片机IO线LIO为偶数时,令-=0,有

此时按键数取得最大值,即

当单片机IO线LIO为奇数时,令-=1,有

此时按键数LAJ2与LIO的关系为

矩阵编码的优点很明显,占用单片机较少的IO资源,可获得较多的按键数,因此常用在需要较多按键且单片机IO资源又受限的场合。矩阵编码的缺点是编程要稍微复杂些。……