zoukankan      html  css  js  c++  java
  • stm32 oled学习(2)

    在学习正点原子的oled时,画点函数和清屏函数以及OLED_GRAM[128][8]这个定义让我一直想不通,128X64的分辨率。分为八页,所以是128X8,但为什么二维数组定义为[128][8]这里让我有点想不通。

    偶然间看到了这个帖子:http://openedv.com/thread-84722-1-1.html

    才明白是这么回事,下面进入正题

    为例使初学者易于理解OLED的显示过程,我将原子哥的代码稍作了修改,如图所示,这使得OLED_GRAM不再反着定义大小,而保持与显存的存放格式一致:

     

     

     在原子哥探索板的OLED例程中,许多初学者对画点函数不太理解。
    事实上,初学者尽管阅读了SSD1306的芯片手册和M00750用户手册,但是由于SSD1306中的re-mapping指令,给不少初学者带来了困惑,re-mapping是造成初学者困惑的原因所在。
    在原例程中,正对OLED显示屏时,PAGE0位于屏幕的最底部,而PAGE7位于屏幕的最高部,这可以通过下面的代码试验:
    int main(void)

            delay_init(168);   
            uart_init(115200);        
            LED_Init();                                
            OLED_Init();                        
            OLED_ShowString(0,0,"TEST",16);  
            OLED_Refresh_Gram(); 
            OLED_WR_Byte(0x26,OLED_CMD);//向右平移
            OLED_WR_Byte(0x00,OLED_CMD);
            OLED_WR_Byte(0x07,OLED_CMD);//起始页,这里为第7页
            OLED_WR_Byte(0x00,OLED_CMD);//平移速率设置
            OLED_WR_Byte(0x07,OLED_CMD);//结束页,这里也为第7页
            OLED_WR_Byte(0x00,OLED_CMD);//起始列
            OLED_WR_Byte(0x7f,OLED_CMD);//结束列
            OLED_WR_Byte(0x2f,OLED_CMD);//启动平移
    }


    经过试验,可以将画点函数改成比较容易理解的方式,在用户正对着OLED模块的显示屏幕时,这种显示方式与SSD1306中显存存放格式(no-mapping)相一致,如图所示:

    并且OLED_GRAM[][]写到OLED显存里时,也与OLED显存里低位在上,高位在下的图示说明一致,如图所示:


    注意:需要修改OLED初始化函数中的一个配置指令,如图所示:

    补充:OLED屏的坐标方向如图所示:

    void OLED_DrawPoint(u8 x,u8 y,u8 t)
    {
            u8 pos,bx,temp=0;
            if(x>127||y>63)return;
            pos=y/8;
            bx=y%8;
            temp=1<<bx;
            if(t)OLED_GRAM[x][pos]|=temp;
            else OLED_GRAM[x][pos]&=~temp;            
    }

  • 相关阅读:
    JDBC_JDBCUtils2.0
    《Fast Approximate Anti-Aliasing (FXAA) (GLSL)》
    《为什么在多核处理器下需要内存屏障(MenmoryBarrier)?》
    《LINUX KERNEL MEMORY BARRIERS》
    《内存对齐与回调函数参数》
    《Anti-aliasing》
    《Deferred Shading》
    《Bloom》
    《Gamma校正》
    《HDR》
  • 原文地址:https://www.cnblogs.com/roscangjie/p/11700820.html
Copyright © 2011-2022 走看看