欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于SSD1306驅動的OLED低四位地址指定的困惑 [打印本頁]

作者: OHHO    時間: 2020-5-3 15:00
標題: 關于SSD1306驅動的OLED低四位地址指定的困惑
新手最近剛剛開始學OLED。照著資料給的源碼看的時候在OLED屏幕定位的函數時遇上了理解問題。如下所示函數,OLED_WR_byte是向SSD1306寫入一個字節的指令函數

void OLED_set_pos(unsigned char x, unsigned char y)
{
        OLED_WR_byte(0xb0+y,OLED_CMD);
        OLED_WR_byte(((x&0xf0)>>4)|0x10,OLED_CMD);
        OLED_WR_byte((x&0x0f)|0x01,OLED_CMD);
}   


看了一下SSD1306的數據手冊,前兩句不難理解,y指定頁數,x高四位或上0x10表示指定SSD1306起始列的高四位。
那么請問在取這個低四位的時候,為何要或上0x01呢?
我看SSD1306的手冊上也只對指令高四位要求是0000,并無其他要求。是為了顯示上的方便嗎?
還請大佬不吝解答。

作者: OHHO    時間: 2020-5-6 11:43
頂一頂,求大佬解惑
作者: f556    時間: 2020-5-6 15:54

手上的程序與你這個完全一樣,4線SPI,由于搞了兩個都用IIC,沒關注這問題。你看的很仔細。
按上圖,確實不可理解第3句|1,如按圖4行21命令,或1可有道理,即頁址模式,但第2行又有問題。
分析可能的原因:
1、原作者寫錯了。
2、估計SEG接線中0號是空的,列址從1~128,不是0~127.

解決方法:實測寫0、1、2列0xff看看
把|1刪除看看。
上述兩個試驗完就知道原來是否正確。

jjq.png (147.75 KB, 下載次數: 43)

jjq.png

作者: f556    時間: 2020-5-6 16:06
        for(m=0;m<8;m++)
        {
                Write_IIC_Command(0xb0+m);                //page0-page1
                Write_IIC_Command(0x00);                //low column start address
                Write_IIC_Command(0x10);                //high column start address
                for(n=0;n<132;n++)
                        {
                                Write_IIC_Data(fill_Data);
                        }
IIC的程序中,確實是高4位0x10,低4位0x00就OK的。還是測試一下不要|1看看。
作者: OHHO    時間: 2020-5-7 09:29
f556 發表于 2020-5-6 15:54
手上的程序與你這個完全一樣,4線SPI,由于搞了兩個都用IIC,沒關注這問題。你看的很仔細。
按上圖,確 ...

多謝指教!
這就去試試
作者: OHHO    時間: 2020-5-7 12:42
寫了兩版不同的定位函數(主體函數去掉0x01,另一個保留0x01作對比),分別讓其在0xb0和0xb1頁點亮第一列。
效果如圖所示,和代碼理解的差不多,或上0x01的版本保留了第一列不被點亮,而去掉0x01的版本也能正常工作,而且就這樣看或上0x01的版本列有效范圍應該只有1-127,不知是否有其它用意。
現在基本覺得是作者參考了手冊圖的指令21然后誤寫了。實際運行應該是只需要保證高四位為0,就能正常定位列地址低四位吧。
個人理解,若有錯誤還請指出

R%Z07AW)}4S$O53DOJ(H3`Y.png (341.79 KB, 下載次數: 46)

R%Z07AW)}4S$O53DOJ(H3`Y.png

作者: f556    時間: 2020-5-7 16:13
OHHO 發表于 2020-5-7 12:42
寫了兩版不同的定位函數(主體函數去掉0x01,另一個保留0x01作對比),分別讓其在0xb0和0xb1頁點亮第一列。
...

從你試驗看出,是原來寫錯了。要不就是不讓寫0列,也有一種可能,0列被外殼窗沿擋住不用。
丟棄|1,放心用吧。
作者: xiong731    時間: 2020-6-12 22:29
我也遇到這個問題,丟棄|1后正常,謝謝!




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1