摘要:本文簡(jiǎn)單介紹如何操作I2C去顯示oled屏幕,并且實(shí)現(xiàn)動(dòng)畫播放、中文英文顯示、繪圖等功能
適合群體:適用于潤(rùn)和Hi3861開發(fā)板,L0輕量系統(tǒng)驅(qū)動(dòng)開發(fā)
7.1 實(shí)驗(yàn)效果
Hispark WiFi開發(fā)套件又提供一個(gè)oLED屏幕,但是鴻蒙源碼中沒有這個(gè)屏幕的驅(qū)動(dòng),我們需要自己去移植。
以下是移植效果:


接口:I2C
使用引腳:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14
7.2 代碼
這里我直接用許思維老師之前移植好的代碼,不過由于鴻蒙版本更新過快,許思維老師之前的代碼是基于1.0版本,直接拿到3.0以上版本編譯會(huì)出錯(cuò),這里我修改了編譯錯(cuò)誤。放在我的倉庫中。
整個(gè)代碼目錄如下:
主要是3個(gè)文件夾:
(1)examples
測(cè)試代碼,里面有一個(gè)ssd1306_demo.c文件,是我們的入口函數(shù)。
(2)libm_port
從musl libc中抽取的`sin`和`cos`的實(shí)現(xiàn)。
(3)ssd1306
相關(guān)驅(qū)動(dòng)代碼部分。
接下來我們來重點(diǎn)看下代碼部分:
(1)初始化入口函數(shù)
入口函數(shù)是 Ssd1306TestDemo ,它創(chuàng)建了Ssd1306TestTask線程,所以我們重點(diǎn)看 Ssd1306TestTask線程。
void Ssd1306TestTask(void* arg){(void) arg;//先初始化引腳IoTGpioInit(HI_IO_NAME_GPIO_13);IoTGpioInit(HI_IO_NAME_GPIO_14);//將引腳功能設(shè)置為I2C引腳hi_io_set_func(HI_IO_NAME_GPIO_13, HI_IO_FUNC_GPIO_13_I2C0_SDA);hi_io_set_func(HI_IO_NAME_GPIO_14, HI_IO_FUNC_GPIO_14_I2C0_SCL);//初始化I2C0Ioti2cInit(0, OLED_I2C_BAUDRATE);//WatchDogDisable();usleep(20*1000);//初始化SSD1306ssd1306_Init();//全部清空ssd1306_Fill(Black);ssd1306_SetCursor(0, 0);//顯示 Hello HarmonyOS!ssd1306_DrawString("Hello HarmonyOS!", Font_7x10, White);uint32_t start = HAL_GetTick();ssd1306_UpdateScreen();uint32_t end = HAL_GetTick();printf("ssd1306_UpdateScreen time cost: %d ms. ", end - start);TestDrawChinese1();TestDrawChinese2();TestGetTick();while (1) {//進(jìn)行所有用例測(cè)試ssd1306_TestAll();usleep(10000);}}
(2)I2C發(fā)送函數(shù)
我們要操作OLED屏幕,就需要使用I2C發(fā)送數(shù)據(jù)給OLED屏幕,代碼使用
ssd1306_SendData函數(shù)發(fā)送I2C數(shù)據(jù),該函數(shù)原型如下,直接調(diào)用的hi3861的i2c接口函數(shù):
static uint32_t ssd1306_SendData(uint8_t* data, size_t size){int id = SSD1306_I2C_IDX;return IoTI2cWrite(id, SSD1306_I2C_ADDR, data, size);}
(3)修改 usr_config.mk文件
注意,默認(rèn)代碼是沒有打開i2c功能的,直接編譯會(huì)提示相關(guān)的i2c函數(shù)沒有定義,我們需要打開i2c的功能,具體是修改usr_config.mk文件 ,目前版本(3.1)的路徑是:
devicesochisiliconhi3861v100sdk_liteosuildconfigusr_config.mk
但是代碼結(jié)構(gòu)可能會(huì)調(diào)整,路徑可能會(huì)變。
增加 CONFIG_I2C_SUPPORT=y

原文標(biāo)題:OpenHarmony輕量系統(tǒng)開發(fā)【7】驅(qū)動(dòng)之I2C顯示OLED屏幕
文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
OLED
+關(guān)注
關(guān)注
121文章
6313瀏覽量
231823 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1925瀏覽量
88000 -
屏幕
+關(guān)注
關(guān)注
7文章
1230瀏覽量
56962
原文標(biāo)題:OpenHarmony輕量系統(tǒng)開發(fā)【7】驅(qū)動(dòng)之I2C顯示OLED屏幕
文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用MicroPython的I2C總線通訊編程和OLED顯示屏的使用
【RA4M2-SENSOR】2、I2C驅(qū)動(dòng)OLED屏幕
【HarmonyOS HiSpark Wi-Fi IoT套件】I2C驅(qū)動(dòng) Hi3861 驅(qū)動(dòng)OLED屏幕顯示
OpenHarmony輕量系統(tǒng)開發(fā)【7】驅(qū)動(dòng)之I2C顯示OLED屏幕
I2C OLED顯示屏的51單片機(jī)/STM32/Arduino驅(qū)動(dòng)程序
連接100英尺以外的OLED屏幕和I2C傳感器
如何獲取I2C OLED的例程,并搭建OLED仿真電路圖
帶有idiotware shield的I2C OLED顯示器中的動(dòng)畫
帶有Arduino Nano和I2C OLED顯示屏的Arduboy Clone
如何在I2C 128X32 OLED顯示器上滾動(dòng)文本
使用I2C協(xié)議點(diǎn)亮OLED

如何操作I2C去顯示oled屏幕
評(píng)論