请问原子哥一下,关于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条回答
Stm32_Init
1楼-- · 2019-07-21 09:29
回复【7楼】正点原子:
有OLED实物的,可以直接写个函数,慢慢观察,就知道正确还是错误了。
---------------------------------
原子哥有空还是结合原理解释清楚点吧,蛋疼了一下午了,也在纠结这个,影响大家的学习热情啊.
正点原子
2楼-- · 2019-07-21 09:51
回复【楼主位】heiselpy:
---------------------------------
0,0,是在左上.
至于页什么的,实际拿个实物写代码操作下,比较明确.
杨遥
3楼-- · 2019-07-21 10:45
楼主,
莫非你的屏common线刚好是相反的呢,这个程序就刚好哦。呵呵。
一般是左上,你这个可能是左下,也可能是common线反的。

分析:
    你这个是128*64的LCD点阵屏,
    按照一般规格:
    x0 x1 x2 ...
    db0
    db1
    db2
    db3
    db4
    db5
    db6
    db7

    db0
    .
    .


    1.如果程序中定义的RAM是从下开始算的,也就是OLED_GRAM[x][0]是指page7,OLED_GRAM[x][7]是指page0,
      则是可以的。但是必须db0->db7跟我标的方向相反
    2.common线刚好贴反.有些LCD出现这样的情况不稀奇,我就碰到过。呵呵。








杨遥
4楼-- · 2019-07-21 13:03
对1再补充一下,一般db0->db7规格是一样的。但是你涉及的原理图上,刚好db0->db7接反了,这个程序也是可以的。
heiselpy
5楼-- · 2019-07-21 16:16
 精彩回答 2  元偷偷看……
wang168003
6楼-- · 2019-07-21 20:45
原子哥,我也觉得应该是反了,初始化的时候A1指令将column127重定义到seg0,LZ说的也对的,软件上将页0改成页7,com34变成com29,左上在右下。
但是我还有不太明白的就是开发指南说字模取字是从上到下为高位到低位,我觉得不太理解,我觉得这样与屏的显示方向有不符,有OLED实物的同学怎么理解的,囊中实在羞涩,买个战舰版还要搬砖、卖血。。。

一周热门 更多>