void LCD_Position(unsigned int X, unsigned int Y) { int Pos; if (X==1) X=0x80; else if (X==2) X=0x90; else if (X==3) X=0x88; else if (X==4) X=0x98; Pos = X+Y ; lcdPosition=Pos; write_cmd(Pos); //显示地址 }如何通过这个函数判断出在LCD12864显示哪行那列再通过4*4矩阵按键按任意的数通过公式来显示出来的例子
时间: 2023-09-06 14:09:51 浏览: 86
要通过 `LCD_Position` 函数判断 LCD12864 显示的行和列,再通过一个 4x4 矩阵按键按下的数值来显示,可以使用以下的公式:
行号 = (按键值 - 1) / 4 + 1
列号 = (按键值 - 1) % 4 + 1
以下是一个示例代码,演示如何使用 `LCD_Position` 函数和一个 4x4 矩阵按键来显示任意的数值:
```c
#include <stdio.h>
unsigned char key_Map[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void LCD_Position(unsigned int X, unsigned int Y)
{
int Pos;
if (X == 1)
X = 0x80;
else if (X == 2)
X = 0x90;
else if (X == 3)
X = 0x88;
else if (X == 4)
X = 0x98;
Pos = X + Y;
lcdPosition = Pos;
write_cmd(Pos);
}
void DisplayNumber(unsigned char key_val)
{
unsigned int row, col;
// 根据按键值计算行号和列号
row = (key_val - 1) / 4 + 1;
col = (key_val - 1) % 4 + 1;
// 将行号和列号作为参数传递给 LCD_Position 函数
LCD_Position(row, col);
// 显示按键值
write_dat(key_val);
}
int main()
{
unsigned int row, col;
unsigned char key_val;
// 假设用户按下第2行第3列的按键
row = 2;
col = 3;
// 根据按键的行列值获取对应的键值
key_val = key_Map[row - 1][col - 1];
// 将键值显示在 LCD 上的对应位置
DisplayNumber(key_val);
return 0;
}
```
通过以上示例代码,你可以根据用户按下的按键的行列值,将相应的键值显示在 LCD 上的对应位置。
希望这能帮助到你。如果你还有其他问题,请随时提问。
阅读全文