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矩阵按键按任意的数显示出来之后通过它千位还是百位还是十位1公式来显示出来的例子
时间: 2023-09-06 12:09:51 浏览: 86
LCD的显示函数
5星 · 资源好评率100%
要通过 `LCD_Position` 函数判断在 LCD12864 显示的行和列,并根据一个 4x4 矩阵按键按下的数值来显示出千位、百位或十位的数字,你可以使用以下的公式:
行号 = (按键值 - 1) / 4 + 1
列号 = (按键值 - 1) % 4 + 1
以下是一个示例代码,演示如何使用 `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 DisplayDigit(unsigned long number)
{
unsigned long digit;
// 获取千位数字
digit = (number / 1000) % 10;
// 将千位数字显示在 LCD 上的第1行第1列
LCD_Position(1, 1);
write_dat(digit + '0');
// 获取百位数字
digit = (number / 100) % 10;
// 将百位数字显示在 LCD 上的第1行第2列
LCD_Position(1, 2);
write_dat(digit + '0');
// 获取十位数字
digit = (number / 10) % 10;
// 将十位数字显示在 LCD 上的第1行第3列
LCD_Position(1, 3);
write_dat(digit + '0');
}
int main()
{
unsigned int row, col;
unsigned char key_val;
// 假设用户按下第2行第3列的按键
row = 2;
col = 3;
// 根据按键的行列值获取对应的键值
key_val = key_Map[row - 1][col - 1];
// 假设要显示的数字是 1234
unsigned long number = 1234;
// 将千位、百位、十位数字显示在 LCD 上
DisplayDigit(number);
return 0;
}
```
通过以上示例代码,你可以根据用户按下的按键的行列值,将数字的千位、百位和十位数字显示在 LCD 上。
希望这能帮助到你。如果你还有其他问题,请随时提问。
阅读全文