帮我完善以下代码 void LCD_ShowString(u16 x, u16 y, u16 width, u16 height, u8 size, char *p) { u8 x0 = x; width += x; height += y; while ((*p <= '~') && (*p >= ' ')) //判断是不是非法字符! { if (x >= width) { x = x0; y += size; } if (y >= height)break; //退出 LCD_ShowChar(x, y, *p, size, 0); x += size / 2; p++; } } void LCD_GUI(uint8_t data ,char *P ) { switch(data) { case 1: Pixel_X=32;Pixel_Y=210; break; case 2: Pixel_X=58;Pixel_Y=226; break; case 3: Pixel_X=74;Pixel_Y=252; break; case 4: Pixel_X=90;Pixel_Y=268; break; } LCD_ShowString(Pixel_X,Pixel_Y,200,210,*p); }
时间: 2024-01-19 09:02:33 浏览: 72
StdString类代码,可完善替代CString字符串类
这段代码中的问题在于LCD_ShowString函数的调用中,最后一个参数*p应该是传递字符串指针P的值,而不应该是*p。
以下是完善后的代码:
```
void LCD_ShowString(u16 x, u16 y, u16 width, u16 height, u8 size, char *p) {
u8 x0 = x;
width += x;
height += y;
while ((*p <= '~') && (*p >= ' ')) //判断是不是非法字符!
{
if (x >= width) {
x = x0;
y += size;
}
if (y >= height) break; //退出
LCD_ShowChar(x, y, *p, size, 0);
x += size / 2;
p++;
}
}
void LCD_GUI(uint8_t data ,char *P ) {
switch(data) {
case 1:
Pixel_X = 32;
Pixel_Y = 210;
break;
case 2:
Pixel_X = 58;
Pixel_Y = 226;
break;
case 3:
Pixel_X = 74;
Pixel_Y = 252;
break;
case 4:
Pixel_X = 90;
Pixel_Y = 268;
break;
}
LCD_ShowString(Pixel_X, Pixel_Y, 200, 210, size, P);
}
```
在LCD_ShowString函数的调用中,将最后一个参数*p改为P,即可传递字符串指针P的值。同时,在LCD_GUI函数中,需要将LCD_ShowString函数的最后一个参数改为size,以便正确传递字符大小的值。
阅读全文