void OLED_ShowChinese(u8 x,u8 y,u8 chr,u8 size,u8 mode) { u8 temp,t,t1; u8 y0=y; u8 csize=(size/8+((size%8)?1:0))*(size); for(t=0;t<csize;t++) { if(size==16)temp=Font_Chinese[chr][t]; //µ÷ÓÃ1608×ÖÌå else return; for(t1=0;t1<8;t1++) { if(temp&0x80)OLED_DrawPoint(x,y,mode); else OLED_DrawPoint(x,y,!mode); temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break; } } } }详细解释每句代码的意思
时间: 2024-01-04 09:03:27 浏览: 209
U8数据库开发规范-二次开发参考.pdf
该函数是用来在OLED显示屏上显示汉字的函数,下面是每句代码的解释:
```c++
void OLED_ShowChinese(u8 x,u8 y,u8 chr,u8 size,u8 mode) {
//函数声明,接收参数:x、y表示汉字显示的位置,chr表示汉字的编码,size表示汉字的大小,mode表示显示模式(正常或反色)。
u8 temp,t,t1; //定义临时变量temp、循环变量t和t1。
u8 y0=y; //记录汉字的起始y坐标。
u8 csize=(size/8+((size%8)?1:0))*(size); //计算汉字数组占用的字节数。
for(t=0;t<csize;t++) { //循环遍历汉字数组中的每个字节。
if(size==16) temp=Font_Chinese[chr][t]; //如果汉字大小为16,则从字库数组中取出该字节的数据。
else return; //否则返回。
for(t1=0;t1<8;t1++) { //循环遍历每个字节中的每个位。
if(temp&0x80) OLED_DrawPoint(x,y,mode); //如果该位为1,则在OLED上画点,根据mode参数选择是否反色。
else OLED_DrawPoint(x,y,!mode); //否则在OLED上画空白,根据mode参数选择是否反色。
temp<<=1; //将temp向左移动一位,为下一位的判断做准备。
y++; //y坐标加1,准备画下一个点。
if((y-y0)==size) { //如果y坐标已经达到了汉字的大小,则换行继续画。
y=y0; //将y坐标重置为起始坐标。
x++; //x坐标加1,准备在下一行继续画汉字。
break; //跳出内层循环,进入下一次外层循环。
}
}
}
}
```
阅读全文