當(dāng)前位置:首頁 > 公眾號精選 > 程序員小哈
[導(dǎo)讀]目錄 序言 OLED簡介 模塊介紹 引腳定義 SSD1306控制芯片驅(qū)動 時(shí)序圖講解 SSD1306常用命令 命令設(shè)置SSD1306 如何顯示字符 測試結(jié)果 資料下載 ?? 序言 液晶屏通常作為嵌入式設(shè)備的顯示終端,用于顯示一些關(guān)鍵信息,將信息直接顯示在一塊小的液晶屏幕上。 液晶屏

目錄

  • 序言

  • OLED簡介

  • 模塊介紹

  • 引腳定義

  • SSD1306控制芯片驅(qū)動

    • 時(shí)序圖講解

    • SSD1306常用命令

    • 命令設(shè)置SSD1306

  • 如何顯示字符

  • 測試結(jié)果

  • 資料下載

  

序言

液晶屏通常作為嵌入式設(shè)備的顯示終端,用于顯示一些關(guān)鍵信息,將信息直接顯示在一塊小的液晶屏幕上。


液晶屏除了可以作為顯示終端外,還可以作為調(diào)試信息輸出的一個終端。


在調(diào)試硬件程序的時(shí)候,通常會對程序進(jìn)行調(diào)試,想輸出一些狀態(tài)或者信息來體現(xiàn)程序當(dāng)前的運(yùn)行狀態(tài),一般我們會選擇串口打印輸出內(nèi)容,或者LED的不同閃爍頻率代表不同狀態(tài),當(dāng)然我們也可以使用一個液晶屏來顯示不同內(nèi)容,這種方式也是十分的方便快捷的。


OLED簡介

OLED,即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode),又稱為有機(jī)電激光顯示(Organic Electroluminesence Display, OELD)。OLED由于同時(shí)具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。
 
LCD都需要背光,而OLED不需要,因?yàn)樗亲园l(fā)光的。這樣同樣的顯示,OLED效果要來得好一些。OLED的尺寸難以大型化,但是分辨率確可以做到很高。


模塊介紹

  • 尺寸:0.96寸

  • 控制芯片:SSD1306

  • 管腳數(shù)量:7

  • 引腳間距:2.54mm

  • 分辨率:128*64,可以顯示漢字、ASCII、圖案,對比度高

  • 可視角度:>160度

  • 無需背光(OLED屏的特點(diǎn))

  • 供電:3V-5V

有的模塊是不跟5V接口兼容的,使用前一定要確認(rèn)好。


引腳定義

  • GND:電源地

  • VCC:2.2V~5.5V

  • D0:SCL,CLK時(shí)鐘

  • D1:SDA,MOSI數(shù)據(jù)

  • RES:RST復(fù)位

  • D/C:數(shù)據(jù)/命令選擇

  • CS:片選,接地

此模塊可以采用SPI或IIC通信方式,最多只需要4個IO口既可驅(qū)動。


SPI電路連接:
GND---地
VCC---3.3V或5V
D0---接單片機(jī)IO,作為SPI總線的CLK時(shí)鐘引腳,時(shí)鐘
D1---接單片機(jī)IO,作為SPI總線的MOSI數(shù)據(jù)引腳,數(shù)據(jù)輸入
RES---接單片機(jī)IO
D/C---接單片機(jī)IO,高電平為寫數(shù)據(jù),低電平為寫命令
CS---片選,接地(可不連接單片機(jī)IO),選中SSD1306


IIC電路連接:
GND---地
VCC---3.3V或5V
D0---接單片機(jī)IO,作為IIC的SCL引腳
D1---接單片機(jī)IO,作為IIC的SDA引腳
CS---接地


SSD1306控制芯片驅(qū)動

時(shí)序圖講解

我們以STM32單片機(jī)為例,使用5個GPIO模擬SPI總線與SSD1306總線進(jìn)行通訊。


因?yàn)镾TM32與OLED屏的通訊只是單向數(shù)據(jù)傳輸,即只存在STM32向OLED屏發(fā)送數(shù)據(jù),不涉及到讀取返回?cái)?shù)據(jù),所以我們要實(shí)現(xiàn)顯示功能之前,需要根據(jù)SPI寫操作時(shí)序圖,先實(shí)現(xiàn)一個向SSD1306寫入一個字節(jié)的函數(shù)實(shí)現(xiàn)。


SSD1306使用4Wire SPI寫操作的時(shí)序圖


封裝一個向SSD1306寫入一個字節(jié)的函數(shù),
函數(shù)原型為:
void OLED_WR_Byte(uint8_t dat,uint8_t cmd);
其中:
dat為待寫入的數(shù)據(jù)或者命令;
cmd為數(shù)據(jù)或命令標(biāo)志,0表示命令;1表示數(shù)據(jù)。


由上面SPI操作的時(shí)序圖可知,IO引腳的時(shí)序如下所示:

  1. 首選看發(fā)送的字節(jié)是命令還是數(shù)據(jù),如果是命令,OLED_DC(D/C)引腳置0,即低電平;如果是數(shù)據(jù),OLED_DC(D/C)引腳置1,即高電平。

if(cmd) OLED_DC_Set();else  OLED_DC_Clr();
    

  1. 片選OLED_CS(CS)引腳置0,即拉低(硬件電路中CS引腳也可以直接與GND相連,這樣就不用操作CS引腳了)。

OLED_CS_Clr();

  1. 1個字節(jié)的數(shù)據(jù)有8位,將8位數(shù)據(jù)由高到低的順序發(fā)出,數(shù)據(jù)要在OLED_SCLK(D0)引腳的上升沿之前設(shè)置好,所以要先將OLED_SCLK(D0)置低,然后將一位數(shù)據(jù)送至OLED_SDIN(D1)引腳,然后將OLED_SCLK(D0)置高,這樣一位數(shù)據(jù)就發(fā)送出去了,如此循環(huán)8次,一個字節(jié)的數(shù)據(jù)就發(fā)送出去了。

for(i=0;i<8;i++){  OLED_SCLK_Clr(); if(dat&0x80) OLED_SDIN_Set(); else  OLED_SDIN_Clr(); OLED_SCLK_Set(); dat<<=1; }

  1. 8位數(shù)據(jù)發(fā)送完畢之后,將OLED_CS(CS)引腳拉高,即置1,恢復(fù)至初始狀態(tài)。

OLED_CS_Set();OLED_CS_Set();OLED_DC_Set();

*代碼完整實(shí)現(xiàn)

void OLED_WR_Byte(uint8_t dat,uint8_t cmd){  uint8_t i;  if(cmd) OLED_DC_Set(); else  OLED_DC_Clr();   OLED_CS_Clr();  for(i=0;i<8;i++) {  OLED_SCLK_Clr(); if(dat&0x80) OLED_SDIN_Set(); else  OLED_SDIN_Clr(); OLED_SCLK_Set(); dat<<=1;  }  OLED_CS_Set(); OLED_CS_Set(); OLED_DC_Set(); }

SSD1306常用命令


其他命令,可以詳見SSD1306 datasheet的第28頁。從這頁開始,對SSD1306的指令有詳細(xì)的介紹。(手冊的下載鏈接,見文尾資料下載)


命令設(shè)置SSD1306

有了寫字節(jié)的函數(shù)封裝:
void OLED_WR_Byte(uint8_t dat,uint8_t cmd);


然后查詢手冊中的命令字,我們可以發(fā)送命令初始化SSD1306,比如:

  • 關(guān)閉顯示面板

OLED_WR_Byte(0xAE,OLED_CMD);

  • 設(shè)置頁地址模式

OLED_WR_Byte(0x20,OLED_CMD);

SSD1306有3種內(nèi)存尋址模式,分別是:
頁尋址模式(page addressing mode), 水平尋址模式(horizontal addressing mode)和垂直尋址模式(vertical addressing mode),分別對應(yīng)的命令字節(jié)為:20h、21h、22h,因?yàn)镺LED模塊復(fù)位之后默認(rèn)是 page addressing mode,所以下面只講頁尋址模式;其他兩種模式跟頁尋址模式的差異就是地址指針自增方式不一樣,詳情可以參考一下SSD1306的數(shù)據(jù)手冊。


如何顯示字符

在初始化OLED之后,如何在屏幕上顯示字符呢?


在這之前,先了解一下SSD1306內(nèi)部的RAM;SSD1306內(nèi)部有個SRAM稱為GDDRAM(Graphic Display Data RAM),大小是128 × 64 bits,被分為8個 PAGE,用于單色128×64點(diǎn)陣顯示,當(dāng)我們往這個RAM寫入數(shù)據(jù),就會顯示特定內(nèi)容,如圖:


上面'COL'的含義是GDDRAM列(column)


在頁尋址模式下,每當(dāng)對RAM進(jìn)行讀寫操作之后,列地址指針會自動+1,直到列地址指針指向列結(jié)束地址后,會重新指向列開始地址;而且在該模式下,一定要設(shè)置新的頁面和列地址才能訪問下一個頁面的內(nèi)容,所以設(shè)置顯示字符之前一般都會調(diào)用下面幾句語句來確定顯示位置:

OLED_WR_Byte (0xb0+i,OLED_CMD); //設(shè)置頁地址(0~7)OLED_WR_Byte (0x00,OLED_CMD); //設(shè)置顯示位置—列低地址OLED_WR_Byte (0x10,OLED_CMD); //設(shè)置顯示位置—列高地址

封裝設(shè)置顯示位置的函數(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); }


如如果頁地址設(shè)為B2h,低列地址為03h,而高列地址為00h,那么也就意味著開始列是PAGE2的SEG3,而RAM的獲取指針定位到下圖中。而輸入的數(shù)據(jù)將會被寫入列3的位置。



所以確定好了顯示位置,直接輸出字符對應(yīng)的像素?cái)?shù)據(jù)數(shù)組就好了。


測試結(jié)果

測試電路連接:
GND---地
VCC---3.3V
D0---接PB9,作為SPI總線的CLK時(shí)鐘引腳,時(shí)鐘
D1---接PB8,作為SPI總線的MOSI數(shù)據(jù)引腳,數(shù)據(jù)輸入
RES---接PB7
D/C---接PB6,高電平為寫數(shù)據(jù),低電平為寫命令
CS---片選,接PB5,接地選中SSD1306



資料下載

微信公眾號后臺回復(fù)“OLED”,可以下載工程源碼及ssd1306的數(shù)據(jù)手冊。




推薦閱讀:

STM32單片機(jī)最小系統(tǒng)詳解

基于STM32固件庫的MDK5工程建立

修改Keil工程名稱并添加其他模塊文件

利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈




六月份的“每月一練”活動已經(jīng)開始投票了,六月份做什么,由你們決定。
感興趣的進(jìn)入下面鏈接投票哈。

2020.06 “每月一練”活動開始投票了

 

活動介紹及日程安排,詳見公眾號底部菜單欄“每月活動”。





?

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉