请问原子哥一下,关于OLED问题。。。

2019-07-21 07:05发布

我看画点程序写字符程序,关于坐标系有点问题关于OLED的,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;       

这个x=0y=0的原点在左下方还是左上方?
如果在左上方pos=7-y/8;页地址不就跑到7了么?页地址为7不是表示在最后8行也就是最底下吗?
难道页地址为7反而表示上面8个行?那就是说显存的坐标和我们使用的x、y的坐标正好相反?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
正点原子
1楼-- · 2019-07-21 23:25
有OLED实物的,可以直接写个函数,慢慢观察,就知道正确还是错误了。
Stm32_Init
2楼-- · 2019-07-22 01:57
<这完全手册>166:
       OLED_GRAM[128][8]中的 128 代表列数,也就是 x 坐标,而 8 代表的是页,每个代表 8个列,从高到底对应列数从小到大。

有勘错表不?类似的地方还有不少,影响理解。
正点原子
3楼-- · 2019-07-22 06:16
回复【9楼】Stm32_Init:
---------------------------------
在这里指出.http://www.openedv.com/posts/list/1069.htm?fromAll=0
stm32菜之鸟
4楼-- · 2019-07-22 12:02
 精彩回答 2  元偷偷看……
jianhanpiaoying
5楼-- · 2019-07-22 15:51
同样感觉例程坐标是反的,但是没有实物,所以没法验证
andyf6
6楼-- · 2019-07-22 17:59
我的理解是这样的,屏幕的最左下角定义为(0,0)和我们初中时的坐标原点定义一样,而数组中的OLED_GRAM[0][0]对应于显示器的最左上角,见图中箭头所示。
对于“我们要在 x=100y=29 这个点写入1,则可以用这个句子实现 OLED_GRAM[x][7-y/8]|=1<<(7-y%8)”中对于7-y/8的这句就能理解了。在对于(7-y%8)的理解,就是将其中一位值1,
看图也不难理解。




一周热门 更多>