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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4666|回復: 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于SSD1306驅(qū)動的OLED低四位地址指定的困惑

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:686782 發(fā)表于 2020-5-3 15:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
新手最近剛剛開始學OLED。照著資料給的源碼看的時候在OLED屏幕定位的函數(shù)時遇上了理解問題。如下所示函數(shù),OLED_WR_byte是向SSD1306寫入一個字節(jié)的指令函數(shù)

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的數(shù)據(jù)手冊,前兩句不難理解,y指定頁數(shù),x高四位或上0x10表示指定SSD1306起始列的高四位。
那么請問在取這個低四位的時候,為何要或上0x01呢?
我看SSD1306的手冊上也只對指令高四位要求是0000,并無其他要求。是為了顯示上的方便嗎?
還請大佬不吝解答。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發(fā)
ID:686782 發(fā)表于 2020-5-6 11:43 | 只看該作者
頂一頂,求大佬解惑
回復

使用道具 舉報

板凳
ID:282850 發(fā)表于 2020-5-6 15:54 | 只看該作者

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

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

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

jjq.png
回復

使用道具 舉報

地板
ID:282850 發(fā)表于 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看看。
回復

使用道具 舉報

5#
ID:686782 發(fā)表于 2020-5-7 09:29 | 只看該作者
f556 發(fā)表于 2020-5-6 15:54
手上的程序與你這個完全一樣,4線SPI,由于搞了兩個都用IIC,沒關(guān)注這問題。你看的很仔細。
按上圖,確 ...

多謝指教!
這就去試試
回復

使用道具 舉報

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

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

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

使用道具 舉報

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

從你試驗看出,是原來寫錯了。要不就是不讓寫0列,也有一種可能,0列被外殼窗沿擋住不用。
丟棄|1,放心用吧。
回復

使用道具 舉報

8#
ID:227832 發(fā)表于 2020-6-12 22:29 | 只看該作者
我也遇到這個問題,丟棄|1后正常,謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表