文章目錄
- 任務要求
- SPI協議介面
- 例程改寫
- 總結
任務要求
練習通過SPI總線實作OLED螢屏顯示,顯示自己的學號和姓名,
本人所用開發板:野火STM32F103指南者;
代碼撰寫燒錄:KEIL5
所用協議:SPI;
所用例程來源:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
SPI協議介面
SPI協議(SerialPeripheralInterface),即串行外圍設備介面,是一種高速全雙工的通信總線,
基本通信程序:

SPI介面位置:
SPI引腳:
MISO:主設備輸入/從設備輸出引腳,該引腳在從模式下發送資料,在主模式下接收資料;
MOSI:主設備輸出/從設備輸入引腳,該引腳在主模式下發送資料,在從模式下接收資料;
SCK:串口時鐘,作為主設備的輸入,從設備的輸入;
NSS:從設備選擇,這是一個可選的引腳,用來選擇主/從設備,它的功能是用來作為“片選引腳”,讓主設備可以單獨地與特定從設備通訊,避免資料線上的沖突,
SPI下的STM32與OLED連接
例程改寫
1.在OLED官網下載例程:
http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
下載完成解壓后再用KEIL打開SPI對應的OLED顯示例程“0.96inch_OLED_Demo_STM32F103ZET6_Hardware_4-wire_SPI”,如下:

2.STM32與OLED的連接依據main.c程式里的注釋提示進行連接即可,如下:

注意:此時的OLED的CS介面不用連接,只需要六根線進行STM32與OLED的連接,
完成后,模塊顯示如下:
此時直接編譯燒錄例程,不用改動,顯示如下:

此時如果OLED屏不顯示,可能是接線有問題,檢查即可,
3.改寫程式:
在oledfont.h頭檔案里添加個人需要顯示的漢字字模,此時需要利用PCtoLCD軟體,打開界面如下:

該軟體為野火資料包里的開發軟體自帶,
關于字模軟體的使用詳見野火自帶教程,
此時選取字模,添加進陣列,如下:
const typFNT_GB16 cfont16[] =
{
"馬",0x00,0x00,0x7F,0xE0,0x00,0x20,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1F,0xFC,
0x00,0x04,0x00,0x04,0x00,0x04,0xFF,0xE4,0x00,0x04,0x00,0x04,0x00,0x28,0x00,0x10,/*"媽",0*/
"舒",0x10,0x00,0x11,0xF8,0x28,0x08,0x44,0x50,0x82,0x20,0x7C,0x10,0x13,0xFE,0x10,0x22,
0xFE,0x24,0x10,0x20,0x10,0x20,0x7C,0x20,0x44,0x20,0x44,0x20,0x7C,0xA0,0x44,0x40,/*"舒",0*/
"婭",0x20,0x00,0x23,0xFC,0x20,0x90,0x20,0x90,0xF8,0x90,0x48,0x92,0x4C,0x92,0x4A,0x94,
0x8A,0x94,0x4A,0x98,0x30,0x90,0x10,0x90,0x28,0x90,0x48,0x90,0x87,0xFE,0x00,0x00,/*"婭",0*/
注意:此時我選擇的是1616的OLED漢字顯示,因此在添加字模時,也是添加進1616漢字顯示對應的陣列,添加后注意保存,
再進入test.c進行修改,將void TEST_MainPage(void)函式修改,如下:
void TEST_MainPage(void)
{
GUI_ShowString(20,0,"631807030324",8,1);
GUI_ShowCHinese(16,20,16,"馬舒婭",1);
delay_ms(1500);
}
修改完成,再進入main.c檔案進行修改,如下:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{
delay_init(); //延時函式初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設定NVIc中斷分組2:2位搶占優先級,2位回應優先級
OLED_Init(); //初始化OLED
OLED_Clear(0); //清屏,全黑
while(1)
{
TEST_MainPage(); //主頁面顯示姓名與學號
OLED_Clear(0);
}
}
此時全部程式已修改完畢,現在進行編譯燒錄,即可成功運行,
燒錄完成,顯示如下:

總結
本次STM32 SPI協議介面下的OLED屏顯示主要任務已完成,對于STM32的SPI介面協議的學習還需更加深入,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/239038.html
標籤:其他
