传统上,与n乘m键盘连接的微型控制器要求微型控制器的I/O管脚的n+m为键盘扫描。键盘设计保留了微型控制器已经被开发出来的管脚,但是它们要求额外的资源,例如外部的ICs或一个内置的模数转换器(ADC)。本设计这里只利用了一个I/O管脚,并且要求仅将电阻和电容作为外部元件。
I/O是一个开头被配置作为输入的双向管脚(见图)。当没有按键被按下时,电容被放电,并且上拉电阻RH保持I/O为高。微型控制器处于休眠模式,并且只有在I/O状态改变引起中断时才会醒来。当按键被按下,I/O变低,因为下拉网络比上拉作用更强些。微型控制器随后醒来执行以下步骤:
1. 等待联络消除抖动。
2. 把I/O变为输出并设置高。 电容随后开始充电到高状态电压。 充电的时间Ti取决于按键被按下和与其关联的R (1,2,…i)。
3. 等待直到T1到来。
4. 使I/O作为输入。充电到C暂停。
5. 如果I/O为高,按键1被按下。 如果I/O为低,使I/O作为输出并置高来持续充电。
6. 等待直到T2到来。
7. 使I/O作为输入。 充电到C暂停。
8. 如果I/O为高,按键2被按下。 如果I/O为低,使I/O作为输出并置高来持续充电。
9. 通过Ti持续到T3。
应该选择电阻使T1
充电时间可被确定如下:当充电暂停时,在I/O的电压(式1)是VC为电容电压(式2)。式3通过使VI/O与开关门限电压VTH相等解答了充电的时间。这里,VTH是I/O的开关门限电压。
随着Ri增加,Ti最初增加。但随后它达到最大值并开始减少。这就给Ri,并因此给可以连接到电路中的按键数量强加了一个上限。
Ti可能会在Ti,min和Ti,max之间变化,由于在VTH上电阻的容差和变化。所以,应该选择数值使Ti,max
这个设计用三种方式节省功率。首先,每次电容被充电到V并被放电,CV2能量都被消散。在本设计中,只要I/O变高且电容被充电到大约VTH(少于2V),而不是VDD,则充电停止。其次,当每个按键被按下电容只充电(和放电)一次。最后一条,在确定哪个按键被按下后,微型控制器进入休眠模式并保持休眠,直到按键被释放且I/O变回到高。所以既使当某些按键陷入或卡住时,功率消耗是最小的。