在LCD12864中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); // 显示地址 }Pos=0x80和Pos=0x80+1;有啥区别
时间: 2023-08-29 18:06:31 浏览: 107
在这个函数中,`Pos = X + Y` 表示计算得到的结果是根据输入的 `X` 和 `Y` 值计算得到的 LCD 显示地址。如果 `Pos = 0x80`,表示 `X` 值为 1,`Y` 值为 0,即 LCD 的位置在第一行第一列。
而 `Pos = 0x80 + 1`,表示 `X` 值为 1,`Y` 值为 1,即 LCD 的位置在第一行第二列。
所以,两者之间的区别是 `Pos=0x80` 表示显示在第一行第一列,而 `Pos=0x80+1` 表示显示在第一行第二列。
你可以根据具体的需求选择适合的计算方式来确定 LCD 的位置。
相关问题
在LCD12864中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); // 显示地址 }if (lcdPosition == 0x80) { // LCD位置在第1行 }if语句如何能成立
在给定的代码中,如果在调用`LCD_Position`函数后,`lcdPosition`被赋值为`0x80`,那么`if (lcdPosition == 0x80)`条件语句就会成立。
具体来说,`lcdPosition`在`LCD_Position`函数中根据输入的X和Y值计算得到,然后被赋值给全局变量`lcdPosition`。如果计算的结果是`0x80`,则表示LCD的位置在第1行。
因此,当在函数外部进行条件判断时,如果`lcdPosition`的值为`0x80`,那么相应的`if`语句就会成立,执行相应的代码块。
请注意,当调用了`LCD_Position`函数并更新了`lcdPosition`的值之后,才能进行条件判断。否则,`lcdPosition`的值可能是未定义的或者不正确的。
如果你有进一步的问题,请随时提问。
int 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 ; write_cmd(Pos); //显示地址 }和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 ; write_cmd(Pos); //显示地址 }区别
这两个代码片段的区别在于函数的返回类型。
第一个代码片段中的函数定义为`int LCD_Position(unsigned int X, unsigned int Y)`,表示`LCD_Position()`函数返回一个`int`类型的值。然而,在函数的实现中,并没有返回任何值(没有返回语句),因此这个返回类型在实际上是没有意义的。
第二个代码片段中的函数定义为`void LCD_Position(unsigned int X, unsigned int Y)`,表示`LCD_Position()`函数不返回任何值(即void类型)。这也是比较合适的,因为函数内部没有任何地方将返回值赋给任何变量或表达式。
总之,这两个代码片段在函数的返回类型上有所区别,但在函数实现及功能上是相同的,它们都会根据`X`和`Y`的值计算出`Pos`并调用`write_cmd()`函数来显示地址。
阅读全文