void OLED_DrawPoint(u8 x,u8 y,u8 t) { u8 pos,bx,temp=0; if(x>127||y>63)return;//³¬³ö·¶Î§ÁË. pos=7-y/8; bx=y%8; temp=1<<(7-bx); if(t)OLED_GRAM[x][pos]|=temp; else OLED_GRAM[x][pos]&=~temp; }解释代码
时间: 2023-11-25 08:07:58 浏览: 378
这段代码是一个用于在OLED显示屏上绘制一个像素点的函数。函数的参数包括x坐标、y坐标和一个控制像素点是否显示的参数t。
首先,代码会进行边界检查,如果x坐标大于127或者y坐标大于63,就会返回,不进行绘制操作。
然后,根据y坐标计算出在OLED_GRAM数组中的行索引pos。OLED_GRAM是一个二维数组,用于表示整个屏幕上的像素点。
接着,根据y坐标计算出在pos行中的位偏移量bx。这是因为每个字节可以表示8个像素点,所以将y坐标对8取余得到bx。
然后,根据偏移量bx计算出一个用于设置对应像素点的掩码temp。这里使用位运算将数字1左移(7-bx)位,得到temp。
最后,根据参数t决定是将temp与对应位置的像素点进行或操作,还是进行与非操作,从而设置或者清除对应像素点的显示状态。具体操作是通过与OLED_GRAM数组中对应元素进行位操作实现的。
总而言之,这段代码的作用是根据传入的坐标和参数,在OLED显示屏上绘制一个像素点,并更新相应的显示数据。
相关问题
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; } } } }详细解释每句代码的意思
该函数是用来在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; //跳出内层循环,进入下一次外层循环。
}
}
}
}
```
怎么使用 OLED_DrawPoint_tim(uint8_t x,uint8_t y,uint8_t *no, uint8_t size)
我明白您的问题。函数 OLED_DrawPoint_tim(uint8_t x,uint8_t y,uint8_t *no, uint8_t size)是用于在 OLED 屏幕上绘制一个像素点的函数。其中,参数 x 和 y 表示要绘制的像素点的坐标,参数 no 表示要绘制的像素点的颜色,参数 size 表示像素点的大小。具体使用方法需要根据您所使用的开发板和 OLED 屏幕类型来确定。您可以查阅相关的开发文档进行详细了解。
阅读全文