基于stm32f103與IIC的0.96OLED螢屏顯示字符與平滑滾動顯示
- 一、0.96OLED螢屏簡介
- 1、型別區分及接線
- 2、IIC通信原理
- 二、正常顯示與平滑滾動顯示
- 1、顯示字符
- 2、顯示傳感器資料
- 3、平滑滾動顯示
- 4、效果演示
- 5、查看oled的IIC通信協議程式
一、0.96OLED螢屏簡介
1、型別區分及接線
- 模塊有7針和4針兩種,下面的是7針模塊,主要引腳與4針相同



2、IIC通信原理
關于IIC在之前的文章AHT20與stm32中介紹過,這里只做主要的時序介紹,
- IIC總線

開始信號:處理器讓SCL時鐘保持高電平,然后讓SDA資料信號由高變低就表示一個開始信號,同時IIC總線上的設備檢測到這個開始信號它就知道處理器要發送資料了,
停止信號
處理器讓SCL時鐘保持高電平,然后讓SDA資料信號由低變高就表示一個停止信號,同時IIC總線上的設備檢測到這個停止信號它就知道處理器已經結束了資料傳輸,我們就可以各忙各個的了,如休眠等, - IIC資料傳輸程序

1、在資料傳輸時,SDA的資料在SCL為高電平時,必須保持穩定,SCL高電平器件完成資料的傳輸,在SCL低電平器件,可以任意改變SDA的資料,資料寫入程序是從最好為開始,高位在前,低位在后,即MSB,
2、回應信號(ACK):接收器在接收到8位資料后,在第9個時鐘周期,拉低SDA電平,即接收資料的IC在接收到8bit資料后,向發送資料的IC發出特定的低電平脈沖,表示已收到資料,CPU向受控單元發出一個信號后,等待受控單元發出一個應答信號,CPU接收到應答信號后,根據實際情況作出是否繼續傳遞信號的判斷,若未收到應答信號,由判斷為受控單元出現故障, - 資料寫入

首先發送一個開始信號,接著發送從機地址,OLED的從機地址前7位為地址,最后一位表示讀(1)或者寫(0),應答ACK信號表示有這個從設備存在,在接收到應答信號后,發送控制位,來區分之后所發送的資料是控制命令還是顯示相關的資料,在發送控制位后,等待應答信號,然后發送相應的控制命令或者資料,最后發送停止信號,表示資料傳輸完成,
二、正常顯示與平滑滾動顯示
例程及字模工具等相關資料提取碼:vzrh
1、顯示字符
1、本文所用硬體為野火的指南者stmf103開發板,IIC模式的四針0.96,七針也可以,按照上文講述的接線方式接線即可,
2、顯示漢字與字符
- 將下載后的例程打開,可以看到里邊有顯示漢字和字串的函式

- 右鍵查看定義,了解每個引數的含義

顯示漢字,引數分別為,起始點的橫坐標x,縱坐標y,待顯示漢字在字模陣列中的位置,

顯示字串,引數分別為,起始點的橫坐標x,縱坐標y,待顯示字串的首地址,待顯示字符的字模大小(8、16、24、32等,取決于你取得字模格式) - 取模
打開oledfont.h檔案

我們可以看到里面有各種字模陣列,且有不同的大小,如上圖中的漢字即為16×16的列行式字模,在陣列中的行數即為顯示漢字函式的第三個引數,
打開資料中的取模軟體

注意以上幾個選項的選擇,按照自己所需格式進行選擇,然后確定,輸入漢字生成字模,將生成的字模復制到自己的字模陣列即可,
2、顯示傳感器資料
AHT20與stm32中我們介紹了AHT20與stm32f103進行溫度采集,這里直接將AHT20初始化和IIC通信的源檔案和頭檔案bsp_i2c移植到我們這個工程中,將采集到的溫度顯示到OLED屏上

然后在主函式中呼叫溫度采集函式

3、平滑滾動顯示
滾動顯示可以使用軟體的方式,即回圈更新顯示起始點的坐標,但這樣顯示并不流暢平滑,會有卡頓,所以我們采用硬體重繪的方式,通過給oled發送SSD1306的驅動顯示命令,控制螢屏進行平滑滾動顯示,資料中有SSD1306的驅動手冊,可供參考,

4、效果演示

5、查看oled的IIC通信協議程式
打開oled.c,即可看到oled的IIC初始化,以及各時序命令,開始信號,停止信號,讀寫資料等函式,
具體如何撰寫應參照資料手冊的內容進行撰寫,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241418.html
標籤:其他
