最近在学习STM32,顺便写一个博客作为学习笔记,这里主要记录一下我在学习过程中遇到的一些不理解的问题。下面是我在学习OLED显示实验遇到的一个不理解的函数——画点函数。代码是这样的,
void OLED_DrawPoint(u8 x,u8 y,u8 t) //画点函数 x,y为起点坐标
{
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;
}
对于这个函数一直不理解的是temp=1<<(7-y/8)这一部分,把(x=100,y=29)这个坐标带入上面的函数,发现自己计算的总是和实际的点差一个数,后来看了x,y的取值范围发现,这两个坐标的最小值都是0,所以y等于29,相当于屏幕的第30个点,x=100,相当于第101个点,所以函数是正确的。通过这个问题,获得的经验是要提前了解坐标的取值范围。