sh1106(OLED)
概述
OLED,即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode)。OLED 由于同時(shí)具備自發(fā)光,不需背光源、對(duì)比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡(jiǎn)單等優(yōu)異之特性。 與LCD相比,LCD需要背光,同樣的顯示,OLED 效果要來(lái)得好一些,OLED分辨率可以做到很高。 本組件是為1.3寸OLED屏驅(qū)動(dòng)IC-SSD1106(與0.96寸OLED稍有不同,SSD1306),SSD1106點(diǎn)陣13264,SSD1306點(diǎn)陣12864,都是8頁(yè)的顯存,SSD1106每頁(yè)132字節(jié),SSD1306每頁(yè)128字節(jié)。 下面看一下其對(duì)應(yīng)關(guān)系(SSD1106 1.3寸OLED為例)
與HaaS100的硬件連接
版權(quán)信息
Apache license v2.0
目錄結(jié)構(gòu)
├── src
│ └── sh1106.c # 基于sh1106 OLED組件服務(wù)
├── include
│ ├── front.h # 字模庫(kù)文件。
│ ├── icon.h
│ ├── sh1106.h # 基于sh1106 OLED組件服務(wù)API。
│ └── sh1106_hdconfig.h # sh1106硬件相關(guān)配置
├── package.yaml # 編譯配置文件
└── example
└── sh1106_example.c # 顯示測(cè)試代碼
依賴組件
base
gpio
spi
常用配置
系統(tǒng)中相關(guān)配置已有默認(rèn)值,如需修改配置,統(tǒng)一在 sh1106_hdconfig.h 修改,具體如下:
選擇訪問(wèn)sh1106芯片的模式,設(shè)置為1,支持軟件模擬SPI;設(shè)置為0,支持硬件SPI訪問(wèn):
#define USE_SOFT_SPI 1
選擇是否支持錄屏功能,設(shè)置為0,錄屏功能關(guān)閉;設(shè)置為1,錄屏功能打開:
#define RECORD_SCREEN 0
是否支持fb框架,設(shè)置為0,不支持fb框架,支持輸出顯示;設(shè)置為1,支持fb框架:
#define FB_FRAME_EN 0
API說(shuō)明
sh1106 初始化
uint8_t sh1106_init(void);
sh1106 繪制字符串
void sh1106_show_string(uint8_t x, uint8_t y, const uint8_t *p, uint8_t size, uint8_t mode);
args | description |
x, y | 字符串左上角相對(duì)屏幕坐標(biāo) |
p | 字符串指針 |
size | 字符點(diǎn)集大小支持 12/16/24 |
mode | 0-反顯 1-正顯 |
使用示例
組件使用示例相關(guān)的代碼下載、編譯和固件燒錄均依賴AliOS Things配套的開發(fā)工具,所以首先需要參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之搭建開發(fā)環(huán)境》,下載安裝。 待開發(fā)環(huán)境搭建完成后,可以按照以下步驟進(jìn)行示例的測(cè)試。
步驟1 創(chuàng)建或打開工程
打開已有工程
如果用于測(cè)試的案例工程已存在,可參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之打開工程》打開已有工程。
創(chuàng)建新的工程
組件的示例代碼可以通過(guò)編譯鏈接到AliOS Things的任意案例(solution)來(lái)運(yùn)行,這里選擇helloworld_demo案例。helloworld_demo案例相關(guān)的源代碼下載可參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之創(chuàng)建工程》。
步驟2 app中添加sh1106組件
helloworld_demo組件的package.yaml中添加
depends:
- sh1106: dev_aos # helloworld_demo中引入sh1106組件
步驟3 下載組件
在已安裝了的開發(fā)環(huán)境工具欄中,選擇Terminal -> New Terminal啟動(dòng)終端,并且默認(rèn)工作路徑為當(dāng)前工程的workspace,此時(shí)在終端命令行中輸入:
aos install sh1106
上述命令執(zhí)行成功后,組件源碼則被下載到了./components/drivers/external_device路徑中。
步驟4 添加示例代碼
sh1106組件的package.yaml中添加example示例代碼
source_file:
- src/sh1106.c
- example/sh1106_example.c
步驟5 編譯固件
在示例代碼已經(jīng)添加至組件的配置文件,并且helloworld_demo已添加了對(duì)該組件的依賴后,就可以編譯helloworld_demo案例來(lái)生成固件了,具體編譯方法可參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之編譯固件》。
步驟6 燒錄固件
helloworld_demo案例的固件生成后,可參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之燒錄固件》來(lái)燒錄固件。
步驟7 打開串口
固件燒錄完成后,可以通過(guò)串口查看示例的運(yùn)行結(jié)果,打開串口的具體方法可參考《AliOS Things集成開發(fā)環(huán)境使用說(shuō)明之查看日志》。
當(dāng)串口終端打開成功后,可在串口中輸入help來(lái)查看已添加的測(cè)試命令。
步驟8 SH1106示例測(cè)試
CLI命令行輸入:
sh1106_init # 默認(rèn)初始化sh1106
CLI關(guān)鍵日志:
sh1106 init test begin ...
open gpio success, fd:513
sh1106 init test end !!!
CLI命令行輸入:
sh1106_display # 在oled信息屏上顯示測(cè)試
CLI關(guān)鍵日志:
sh1106 display test begin ...
sh1106 display test end !!!
FAQ
Q1: 本組件只適合sh1106芯片嗎?
答:是的,由于不同的硬件環(huán)境,不同的OLED驅(qū)動(dòng),配置的寄存器是不一樣的,所以本組件是根據(jù)sh1106驅(qū)動(dòng)芯片特性打造出的組件,所以只適合sh1106芯片。如果有其他的oled驅(qū)動(dòng)芯片,建議參考sh1106_init()的實(shí)現(xiàn)。