<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 瑞薩RA0單片機連載之―面向對象之I2C驅動(dòng)OLED

瑞薩RA0單片機連載之―面向對象之I2C驅動(dòng)OLED

作者:lulugl 時(shí)間:2025-04-18 來(lái)源:EEPW 收藏


本文引用地址:http://dyxdggzs.com/article/202504/469575.htm

1   前言

OLED是非常常用的顯示設備,可以由4線(xiàn)、3線(xiàn)的spi驅動(dòng),也可以使用2線(xiàn)的IIC來(lái)驅動(dòng)。百問(wèn)網(wǎng)提供了spi_OLED的驅動(dòng)例程,這次使用IIC來(lái)驅動(dòng),并且使用基于面向對象的編程來(lái)實(shí)現。

2   實(shí)現步聚

1.配置IIC,打開(kāi)RASC后,在棧中增加rau_master_I2C,并設置channel為0b20即通道2,選擇SCL為P112與SDA為P110。

1744987216768564.png

【注】我原來(lái)設置了為通道0或者通道1,但是都與UART或的外接晶振的IO有沖突,所以只能選擇這個(gè)通道但是他還是與tx、LED有沖突,如果自己的設計的話(huà)還需要考慮到IO的沖突問(wèn)題。

2.生成代碼后,我拷貝drv_oled.h/c 以及driv_spi.h到工程之中。

image.png

1744987256301838.png

3.在原來(lái)的OLED工程之中,是使用spi來(lái)驅動(dòng)的,同時(shí)原來(lái)的RA5他的內存與頻率相比RA0要高很多,需要進(jìn)行很多的更改。首先添加回調函數,回調函數中判斷接收狀態(tài),并更新:

image.png

image.png

4.接著(zhù)修改發(fā)送等待超時(shí)函數,在我們向i2c 總線(xiàn)發(fā)送數據結事后,我們需要用這個(gè)函數來(lái)判斷是否發(fā)送結束的標志位。

image.png

5.修改向ssd1306 寫(xiě)入一個(gè)寄存器的功能函數,在這個(gè)函數中,我們要組裝一個(gè)buff 用于向i2c 總線(xiàn)寫(xiě)入數據的,由于向ssd1306 寫(xiě)入寄存器,第一個(gè)字節為0x00,所以組裝為[0x00, cmd]。

image.png

image.png

6.組裝向ssd1306 發(fā)送一整個(gè)buff 的命令:

image.png

【注】這里原來(lái)使用malloc 進(jìn)行了重新的內存申請,但是由于這個(gè)MCU 的內存有限,我做了申請,好象一直不成功,先寫(xiě)成這樣,其實(shí)buf 中的0 位是被清除掉了的,所以會(huì )有點(diǎn)問(wèn)題,在后面我將重新這個(gè)驅動(dòng),這里先實(shí)現基本功能。

7.編寫(xiě)測試函數如下:

image.png

image.png

image.png

其中第一段是向整個(gè)屏寫(xiě)入了0x00即全屏為黑色,第二段是寫(xiě)入oxFF 即全白。這樣就實(shí)現了清屏-》全亮的效果。

3   總結

在面向對象的編程中,對OLED 進(jìn)行的封裝,在使用的過(guò)程中,可以實(shí)現少量的低層代碼的修改即中實(shí)現模塊化的功能實(shí)現。下一步,我將補全字符、圖片的功能。

(本文來(lái)源于《EEPW》



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>