void LCD_P8x16Str(unsigned char x, unsigned char y,unsigned char ch[]) { unsigned char c=0,i=0,j=0; while (ch[j]!='\0') { c =ch[j]-32; if(x>120) { x=0; y++; } LCD_Set_Pos(x,y); for(i=0;i<8;i++) { LCD_WrDat(F8X16[c*16+i]); } LCD_Set_Pos(x,y+1); for(i=0;i<8;i++) { LCD_WrDat(F8X16[c*16+i+8]); } x+=8; j++; } }
时间: 2023-07-15 13:14:23 浏览: 317
这段代码是用来在LCD显示屏上显示8x16点阵字体的函数。函数的输入参数包括要显示的字符的位置(x和y坐标)和要显示的字符数组。在函数中,使用while循环逐个字符地显示,对于每个字符,首先将其转换为相应的点阵编码(c=ch[j]-32),然后根据8x16点阵字体的编码表(F8X16)在LCD上显示该字符的点阵。具体来说,该函数通过调用LCD_Set_Pos函数设置显示的位置,然后通过调用LCD_WrDat函数将点阵数据写入LCD屏幕中。最后,将x坐标增加8个像素,以便显示下一个字符。
相关问题
void LCD_TextOut(unsigned char x, unsigned char y, unsigned char* str) { unsigned char len=0; unsigned char i=0,j=0,k=0; unsigned char* addr=0; if(str==0) return; len=strlen(str); for(i=0; i<len; ) { if(IS_CHINESE(str[i])) { LCD_P16x16Ch(x, y, str+i); i+=2; x+=16; } else { LCD_P8x16Str(x,y,str+i); i++; x+=8; } if(x>=X_WIDTH) return; } }
这是一个用于在LCD显示屏上输出文本的函数。它接受三个参数:x和y表示文本在LCD屏幕上的位置,str是要输出的字符串。
该函数首先会计算字符串的长度,然后通过循环逐个输出字符串中的字符。如果该字符为汉字,则调用LCD_P16x16Ch函数输出一个16x16像素的汉字;否则,调用LCD_P8x16Str函数输出一个8x16像素的字符。每输出一个字符,函数就会更新x的值。如果x的值超过了屏幕宽度(X_WIDTH),则退出函数。
void LCD1602_ShowNum(unsigned char x,unsigned char y,unsigned char *str,unsigned char i);
这是一个用于在LCD1602上显示数字的函数,函数原型如下:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i);
```
函数参数说明:
- `x`:数字在LCD上显示的起始列位置,取值范围为0~15。
- `y`:数字在LCD上显示的起始行位置,取值为0或1。
- `str`:要显示的数字的字符数组,数组中每个元素存储一个数字字符。
- `i`:要显示的数字的位数,取值范围为1~4。
函数实现:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i)
{
unsigned char j;
for(j=0; j<i; j++)
{
LCD1602_WriteData(x+j, y, str[j]);
}
}
```
该函数通过调用`LCD1602_WriteData()`函数将数字一个个显示在LCD屏幕上。注意,`LCD1602_ShowNum()`函数中的参数`str`是一个字符数组,因此在调用该函数时需要将数字转换为字符并存储在数组中。例如,要在LCD屏幕上显示数字1234,可以将其转换为字符数组并传递给`LCD1602_ShowNum()`函数:
```c
unsigned char num[4] = {'1', '2', '3', '4'};
LCD1602_ShowNum(0, 0, num, 4);
```
阅读全文