1、前言
本文主要為了手把手教會大家如何用HaaS100打造一款OLED資訊顯示系統,
眼見為實,眼睛能看見的才是最直觀、最真實、最有體感的,
OLED資訊顯示屏案例可以指引開發者通過OLED顯示展現其智能硬體的資訊,像溫濕度傳感器設備、日歷系統等設備都可以通過OLED顯示,
2、OLED介紹
OLED,即有機發光二極管(Organic Light-Emitting Diode),OLED 由于同時具備自發光,不需背光源、對比度高、厚度薄、視角廣、反應速度快、可用于撓曲性面板、使用溫度范圍廣、構造及制程較簡單等優異之特性,
與LCD相比,LCD需要背光,同樣的顯示,OLED 效果要來得好一些,但是,OLED 的尺寸還難以大型化,不過OLED解析度確可以做到很高,
2.1、OLED模塊引腳
OLED模塊引腳
GND:電源地
VDD:電源正3V3-5V
SCK/D0 :SPI時鐘線
SDA/D1 :SPI資料線
RES:OLED在上電的時候需要復位一次
DC:SPI資料/命令選擇腳
CS:SPI片選引腳,低電平有效
2.2、OLED顯存
1.3寸OLED屏驅動IC為SSD1106(與0.96寸OLED稍有不同,SSD1306),SSD1106點陣132*64,SSD1306點陣128*64,都是8頁的顯存,SSD1106每頁132位元組,SSD1306每頁128位元組,
下面看一下其對應關系(SSD1106 1.3寸OLED為例)

3、HaaS OLED資訊屏開發
3.1、HaaS100與OLED模組連接
| HaaS100 | OLED | 說明 |
| GND | GND | 電源地 |
| 3V3 | VDD | 接HaaS電源正3V3 |
| GPIO05 | SCK/D0 | HaaS模擬SPI CLK,上升沿有效 |
| GPIO40 | SDA/D1 | HaaS模擬SPI SDA |
| GPIO41 | RES | 復位引腳,初始化低電平脈沖(1S) |
| GPIO27 | DC | 0-命令 1-資料 |
| GND | CS | CS接地 |
3.2、OLED開發
3.2.1、初始化配置
#define OLED_CLK_PIN HAL_IOMUX_PIN_P0_5
#define OLED_SDA_PIN HAL_IOMUX_PIN_P4_0
#define OLED_RES_PIN HAL_IOMUX_PIN_P4_1
#define OLED_DC_PIN HAL_IOMUX_PIN_P2_7
static gpio_dev_t oled_gpio;
int oled_gpio_init(void)
{
//對各個PIN進行初始化
oled_gpio.port = OLED_CLK_PIN;
oled_gpio.config = OUTPUT_PUSH_PULL;
hal_gpio_init(&oled_gpio);
oled_gpio.port = OLED_SDA_PIN;
oled_gpio.config = OUTPUT_PUSH_PULL;
hal_gpio_init(&oled_gpio);
oled_gpio.port = OLED_RES_PIN;
oled_gpio.config = OUTPUT_PUSH_PULL;
hal_gpio_init(&oled_gpio);
oled_gpio.port = OLED_DC_PIN;
oled_gpio.config = OUTPUT_PUSH_PULL;
hal_gpio_init(&oled_gpio);
}
void OLED_Init(void)
{
//正對OLED驅動IC進行配置
...
}
3.2.2、字庫選擇
SSD1106不帶字庫,本示例給出ASCII顯示字符,需要中文顯示,可以進一步探索,原理都是一樣的,
下面是ASCII字符集點陣的陣列庫,一個字符占用12*6點陣,即高度12位*寬度6位,占用12個位元組,
/*
ASCII字符集-》!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ
KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
*/
const unsigned char asc2_1206[95][12]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
{0x00,0x00,0x00,0x00,0x3F,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/
{0x00,0x00,0x30,0x00,0x40,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/
{0x09,0x00,0x0B,0xC0,0x3D,0x00,0x0B,0xC0,0x3D,0x00,0x09,0x00},/*"#",3*/
...
...
...
};
3.2.3、字串顯示介面
/*
x->點陣列起點
y->點陣行起點
p->顯示字串內容
size->字庫中每個字符的高度,本例為12
mode-> 0-反顯 1-正常顯示
*/
void OLED_Show_String( uint8_t x,
uint8_t y,
const uint8_t *p,
uint8_t size,
uint8_t mode)
{
//
...
}
3.3、示例效果
后續會有用Javascript 以及 小程式開發 嵌入式界面開放出來哦,敬請關注
4、開發者技術支持
如需更多技術支持,可加入釘釘開發者群

更多技術與解決方案介紹,請訪問阿里云AIoT首頁https://iot.aliyun.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231499.html
標籤:其他
上一篇:第十一屆藍橋杯賽后體會和經驗分享
下一篇:萌新配置rip動態路由實驗
