使用OLED顯示資料
- 接線說明
此時的OLED的CS介面不用連線,只需要六根線進行STM32與OLED的連線。 - 從網站下載所需資料
下載地址
- 實驗所需工程檔案位置
- 開啟工程檔案,編譯無誤
- 連線開發板,燒錄
- 顯示如下
一、顯示學號和姓名
- 使用字模提取軟體生成漢字的程式碼陣列
- 將生成的程式碼陣列,複製到以下檔案中
- 修改test.c中void TEST_MainPage(void)
void TEST_MainPage(void)
{
GUI_ShowString(20,0,"631807030423",8,1);
GUI_ShowCHinese(16,20,16,"小彭",1);
delay_ms(1500);
}
#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);
OLED_Init();
OLED_Clear(0);
while(1)
{
TEST_MainPage();
OLED_Clear(0);
}
}
二、顯示溫溼度
- 將上次溫溼度工程中的myiic.c和temhum.c移入HARDWARE檔案中
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
#include "temhum.h"
#include "myiic.h"
int main(void)
{ u32 CT_data[2]={0};
volatile float hum=0,tem=0;
temphum_init();
delay_init();
NVIC_Configuration();
OLED_Init();
OLED_Clear(0);
while(1)
{
GUI_ShowCHinese(16,36,16,"溼度",1);
GUI_ShowCHinese(16,54,16,"溫度",1);
delay_ms(1500);
OLED_Clear(0);
GUI_ShowString(16,18,"631807030612",8,1);
delay_ms(1500);
OLED_Clear(0);
AHT20_Read_CTdata(CT_data);
hum = CT_data[0]*100*10/1024/1024;
tem = CT_data[1]*200*10/1024/1024-500;
GUI_ShowNum(50,36,hum/10,10,8,1);
GUI_ShowNum(50,54,tem/10,10,8,1);
delay_ms(3000);
}
- 溫度溼度的程式碼陣列同上生成並加入到相同位置
- 編譯,燒錄,顯示如下
三、上下或左右的滑動顯示長字元
- 同上在字模提取軟體中生成字元的程式碼陣列,加入指定位置
- 在HARDWARE檔案oled.c中新增以下函式
void roll(void)
{
OLED_WR_Byte(0x2e,OLED_CMD);
OLED_WR_Byte(0x29,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x01,OLED_CMD);
OLED_WR_Byte(0x2F,OLED_CMD);
}
#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);
OLED_Init();
OLED_Clear(0);
while(1)
{
GUI_ShowCHinese(20,25,16,"資訊科學與工程學院",1);
delay_ms(50);
roll();
}
}