的开关状态:当Kij键闭合,Xi为低电平;反之,Xi为高电平。对于图3(a)所示的键阵列电路,状态机控制产生如图3(b)所示的四列负脉冲顺序扫描信号。每列信号的低电平宽度为一个状态时间,各列信号按列序顺延。每个列信号周期逐个判断同一行中的四个按键Ki0Ki3,所有行判断完毕后周而复始。所以键阵列的扫描周期是列信号周期乘以行数,等于状态机触发时钟周期乘以状态数。阵列扫描周期必须小于按键闭合时间,否则键闭合状态可能会被漏判。按键的闭合时间因人的动作快慢而异,通常为数百毫秒。当阵列为16个键时,状态机的触发频率可为100Hz左右。
第
2
页
共
4
页
f三、参考设计方案
根据按键阵列的判断原理,可采用一个计数器产生按键编码信号,计数器的脉冲周期等于按键的扫描时间,计数器的模M大于等于被扫描的按键数N。本设计要求判断12个按键的阵列,所以可采用12进制计数器Q3Q2Q1Q0产生按键扫描码(4’b00004’b1011)。计数器低两位Q1Q0控制38译码器的de2和de1端,用于产生列扫描信号Y0Y3;高两位Q3Q2控制数据选择器选择行线电平X0X2,输出Y用于控制12进制计数器的使能端。当被扫描的按键闭合时,选择器的输出信号Y0,控制寄存器data保存计数器当前的键码状态,同时控制计数器停止计数,即封锁计数器停止按键扫描,以避免其它按键闭合产生的影响。然后将寄存器中存储的数据送入显示译码器模块中,用于显示按键名。按键名的显示采用七段显示译码器实现,故需先将4位输入数据转换成对应的7个段极信号a、b、c、d、e、f、g。由于七段显示译码器的共阴极端也是由de1、de2、de3控制,可以看出该信号与按键扫描信号共用,导致按键按下后,第一列的信号(1、2、3)显示在C1数码管上,第二列的信号(4、5、6)显示在C2数码管上,第三列的信号(7、8、9)显示在都C3数码管上,第四列的信号(、0、)显示在C4数码管上。当按键松开后,C1C2C3C4四个数码管上都会同时显示。参考设计电路如图4所示。
图4参考设计框图
四、参考设计步骤
1.输入按键阵列扫描电路部分,编写分频器、计数器、数据选择器的代码。调试一:12进制计数器的寄存器data的输出接四个发光二极管。再用一个发光二极管观察数据选择器的输出。编译(Compilatio
)正确后下载。任意按下阵列中的按键,观察:按键闭合时,数据选择器是否输出维持低电平,按键断开后,选择器输出高电平;发光二极管的指示是否与键码相符,键码能否被保存。2.在表1中填写按键名与计数r