矩阵按键对显示设备有什么要求?矩阵键盘详细代码解释?
矩阵按键对显示设备有什么要求?
矩阵主要是做画面切换用的,主要针对的是监测的画面多,但是显示画面设备有限,需要进行分组的切换。我举个简单的例子,比如有个商场装了40个摄像机,按正常的话接电视墙要40个监视器,才能全部看的到,但是矩阵的出现就简化多了,把40个画面分成5组,只需要8个监视器就好了,可以随意分组切换画面,既方便又经济。
向现在的110控制中心,监视的画面更多,也是靠矩阵来进行画面切换来完成的
矩阵键盘详细代码解释?
1. 矩阵键盘的代码需要包含两部分,一部分是按键扫描,另一部分则是按键的响应处理。
这两部分对应了矩阵键盘的基本工作原理。
按键扫描是通过按键矩阵中行和列的通断状态,对矩阵键盘的按键进行扫描识别。
按键的响应处理则是将按键对应的字符输出到控制器中。
2. 在代码的实现过程中,可以使用嵌套的循环来处理按键的扫描。
通过循环控制按键扫描的顺序和细节,来实现按键的正确识别。
对于响应处理部分,则需要通过相应的数据映射表,将行和列的状态码与对应的字符进行匹配输出。
在代码实现过程中,还需要考虑到按键之间的互斥性和防抖动处理等细节。
3. 在具体的矩阵键盘代码实现中,应该对按键扫描和响应处理进行分离,提高代码的可读性和可维护性。
同时,为了代码的灵活性和可移植性,应该采用模块化和抽象化的设计思路,将代码尽可能的解耦,并提高其可重用性。
矩阵键盘是一种常见的输入设备,它通过将按键排列成矩阵的形式,利用行列扫描的方式来检测按键的输入。下面是一份简单的矩阵键盘代码解释:
#define KEYOUTPUT (*(volatile INT8U*)0x56000044)
#define KEYINPUT (*(volatile INT8U*)0x56000044)
INT16U ScanKey(){
INT16U key = 0xFFFF;
INT16U i;
INT8U temp = 0xFF, output;
rGPECON = ((rGPECON & 0xFFFFFF00)
0x00000055);
rGPECON = rGPECON & 0xFFFF00FF;
for(i = 1; ((i <= 8) && (i > 0)); i <<= 1){
output
= 0xFF;
output &= (~i);
KEYOUTPUT = output;
temp = KEYINPUT;
if((temp & 0xF0) != 0xF0){
key = (~i);
break;
}
}
return key;
}
代码中,首先定义了两个宏定义,分别表示键盘扫描时的输出地址和读入时的地址。然后定义了一个函数ScanKey(),用于扫描矩阵键盘并返回按键值。
在函数中,首先定义了一些变量,包括key表示按键值,i表示行列扫描的位数,temp表示读入的输入值,output表示输出值。然后对GPE寄存器进行初始化,将GPE0 GPE3设置为输出,GPE4GPE7设置为输入。接着进入循环,按行扫描矩阵键盘,共四行,每次扫描一行。在扫描过程中,先将output初始化为全1,然后将当前行对应的位设置为0,即给低电平。然后将output的值传给KEYOUTPUT,读入输入的值并保存在temp中。如果读入的值不全为1,则说明有按键按下,将按键值保存在key中并跳出循环。最后返回按键值。
需要注意的是,这份代码只是一个简单的示例,实际应用中还需要根据具体情况进行修改和优化。同时,在使用矩阵键盘时也需要注意防止按键冲突和抖动等问题。
留言与评论(共有 0 条评论) |