完善以下代码 void LCD_SetCursorPos(uint8_t x,uint8_t * p) { switch(x) { case 1: LCD_ShowString(0,1,10,16,24,p);break; case 2: LCD_ShowString(40,1,10,16,24,p);break; case 3: LCD_ShowString(80,1,10,16,24,p);break; case 4: LCD_ShowString(120,1,10,16,24,p);break; case 5: LCD_ShowString(160,1,10,16,24,p);break; case 6: LCD_ShowString(200,1,10,16,24,p);break; case 7: LCD_ShowString(240,1,10,16,24,p);break; case 8: LCD_ShowString(280,1,10,16,24,p);break; case 9: LCD_ShowString(320,1,10,16,24,p);break; case 10:LCD_ShowString(360,1,10,16,24,p);break; } }
时间: 2023-08-23 19:03:36 浏览: 79
这段代码的作用是设置LCD显示器的光标位置。根据不同的光标位置x,调用LCD_ShowString函数在相应的位置显示字符串。
这段代码的问题在于,虽然根据不同的x值传递了不同的参数,确保了LCD显示器上显示的位置是正确的,但是这样写的话不够灵活,如果需要改变每个位置的偏移量,就需要修改代码中的数字。
以下是更加灵活的完善后的代码:
```c
void LCD_SetCursorPos(uint8_t x, uint8_t *p, uint8_t offset) {
uint8_t col = (x - 1) * offset;
LCD_ShowString(col, 1, 10, 16, 24, p);
}
```
在完善后的代码中,新增了一个offset参数,用于指定每个光标位置之间的偏移量。在函数内部,通过计算得到当前位置的列数col,然后传递给LCD_ShowString函数。
这样写的好处是,如果需要改变每个位置的偏移量,只需要修改调用LCD_SetCursorPos函数时传递的offset参数即可,不需要修改代码中的数字,更加灵活。
相关问题
完善以下代码 void LCD_SetCursorPos(x,*p) { LCD_ShowString(30,40,210,24,24,*p); }
这段代码中缺少了函数参数 x 的类型和名称,应该补充上。同时,函数名也应该符合命名规范,建议修改为 lcd_set_cursor_pos。
修改后的代码如下:
```
void lcd_set_cursor_pos(int x, char* p) {
LCD_ShowString(30, 40, 210, 24, 24, p);
}
```
这个函数的作用是设置 LCD 显示屏上字符的位置,并显示字符。其中,x 表示字符的横向位置,p 是要显示的字符指针。通过调用这个函数,可以在指定位置显示指定字符。
完善以下代码 void LCD_SetCursorPos(uint8_t x,uint8_t * p) { switch(x) { case 1: LCD_ShowString(0,1,10,16,24,p);break; case 2: LCD_ShowString(0,1,10,16,24,p);break; case 3: LCD_ShowString(0,1,10,16,24,p);break; case 4: LCD_ShowString(0,1,10,16,24,p);break; case 5: LCD_ShowString(0,1,10,16,24,p);break; case 6: LCD_ShowString(0,1,10,16,24,p);break; case 7: LCD_ShowString(0,1,10,16,24,p);break; case 8: LCD_ShowString(0,1,10,16,24,p);break; case 9: LCD_ShowString(0,1,10,16,24,p);break; case 10:LCD_ShowString(0,1,10,16,24,p);break; } }
根据代码逻辑,这段代码的作用是设置LCD显示器的光标位置。根据不同的光标位置x,调用LCD_ShowString函数在相应的位置显示字符串。
这段代码的问题在于,无论x的值是多少,都会调用LCD_ShowString函数,并且传递的参数都是相同的。这显然是不正确的,应该根据不同的x值传递不同的参数。
以下是完善后的代码:
```c
void LCD_SetCursorPos(uint8_t x, uint8_t *p) {
switch(x) {
case 1: LCD_ShowString(0, 1, 10, 16, 24, p); break;
case 2: LCD_ShowString(0, 17, 10, 16, 24, p); break;
case 3: LCD_ShowString(0, 33, 10, 16, 24, p); break;
case 4: LCD_ShowString(0, 49, 10, 16, 24, p); break;
case 5: LCD_ShowString(0, 65, 10, 16, 24, p); break;
case 6: LCD_ShowString(0, 81, 10, 16, 24, p); break;
case 7: LCD_ShowString(0, 97, 10, 16, 24, p); break;
case 8: LCD_ShowString(0, 113, 10, 16, 24, p); break;
case 9: LCD_ShowString(0, 129, 10, 16, 24, p); break;
case 10: LCD_ShowString(0, 145, 10, 16, 24, p); break;
}
}
```
在完善后的代码中,根据不同的x值,传递了不同的参数,确保了LCD显示器上显示的位置是正确的。