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矩阵按键按任意的数通过公式来显示出来的例子
时间: 2024-02-15 20:21:11 浏览: 68
LCD.rar_Unsigned_tms320f2812 lcd_void wr_lcd
要使用 `LCD_Position` 函数判断在 LCD12864 显示的行和列,你可以根据行号和列号的范围来确定 LCD 的位置。
以下是一个示例代码,展示如何使用 `LCD_Position` 函数和一个 4x4 矩阵按键来显示任意的数值:
```c
#include <stdio.h>
#define ROWS 4
#define COLS 4
unsigned char key_Map[ROWS][COLS] = {
{'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 int X, unsigned int Y, unsigned long number, unsigned int length)
{
unsigned char array[length + 1];
unsigned char i;
array[length] = 0;
for (i = length; i > 0; i--)
{
array[i - 1] = number % 10 + '0';
number /= 10;
}
for (i = length; i >= 0; i--)
{
if (array[i] == '0')
{
array[i] = ' ';
}
else
{
break;
}
}
LCD_Position(X, Y);
LCD_displaychar(X, Y, array);
}
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 上的第1行第1列
DisplayNumber(1, 1, key_val, 1);
return 0;
}
```
通过以上示例代码,你可以根据用户按下的按键的行列值,将相应的键值显示在 LCD 上的任意位置。
希望这能帮助到你。如果你还有其他问题,请随时提问。
阅读全文