目錄
- 一、顯示學號姓名
- 二、左右滾動長字符
實驗目的:
- 顯示自己的學號和姓名,
- 上下或左右的滑動顯示長字符,
- 顯示AHT20的溫度和濕度,
實驗準備:
硬體:
- 野火指南者開發板
- 0.96寸OLED顯示屏模塊( IIC/SPI)
顯示屏介紹及相關資料:0.96inch SPI OLEDModule
商家資料:0.96寸SPI_OLED模塊配套資料包
軟體:
- Keil5 MDK
- 野火串口除錯助手
工程模板:
本次采用的是配套資料包里的工程模板
1-Demo→Demo_STM32→0.96inch_OLED_Demo_STM32F103ZET6_Hardware_4-wire_SPI

這是對應的連線方法
keil5設定:
我使用的是ST-LINK

打開setting

add STM32F10xHigh-density Flash

一、顯示學號姓名
這是本次實驗要顯示的全部字模,
"浮",0x00,0x08,0x20,0x3C,0x13,0xC0,0x10,0x04,0x82,0x44,0x41,0x28,0x48,0x00,0x0B,0xF8,
0x10,0x10,0x10,0x20,0xE7,0xFE,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x00,0x40,/*"浮",0*/
"空",0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x24,0x10,0x10,0x20,0x08,0x00,0x00,
0x1F,0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x00,0x00,/*"空",1*/
"花",0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x20,0x00,0x00,0x08,0x88,0x08,0x90,0x10,0xA0,
0x30,0xC0,0x50,0x80,0x91,0x80,0x12,0x82,0x14,0x82,0x10,0x82,0x10,0x7E,0x10,0x00,/*"花",2*/
"園",0x00,0x00,0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x40,0x04,0x40,0x04,0x5F,0xF4,0x44,0x84,
0x44,0x84,0x44,0x84,0x48,0x94,0x48,0x94,0x50,0x74,0x40,0x04,0x7F,0xFC,0x40,0x04,/*"園",3*/
"重",0x00,0x10,0x00,0xF8,0x3F,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x1F,0xF0,0x11,0x10,
0x1F,0xF0,0x11,0x10,0x1F,0xF0,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x00,/*"重",0*/
"慶",0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x2F,0xFC,
0x20,0x80,0x21,0x40,0x21,0x40,0x22,0x20,0x42,0x20,0x44,0x10,0x88,0x08,0x10,0x06,/*"慶",1*/
"交",0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x10,0x10,0x10,0x08,0x20,0x24,
0x48,0x24,0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x30,0xC0,0x0E,/*"交",2*/
"大",0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,/*"大",3*/
"溫",0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00,/*"溫",0*/
"濕",0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00,/*"濕",1*/
"度",0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E,/*"度",2*/
將字模代碼添加到工程中
user→gui.c→oledfont.h→cfont 16[]

代碼實作
test.c→test.h宣告一個新的函式void TEST_name(void);

然后在test.c中實作
void TEST_name(void)
{
GUI_ShowString(0,16,"631807060512",16,1);
GUI_ShowCHinese(0,32,16,"浮慷訓園",1);
}
main函式
int main(void)
{
delay_init(); //延時函式初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設定NVIC中斷分組2:2位搶占優先級,2位回應優先級
OLED_Init(); //初始化OLED
OLED_Clear(0); //清屏(全黑)
while(1)
{
TEST_name();
delay_ms(1500);
delay_ms(1300);
}
}
函式說明——
GUI_ShowString() 的引數
- 引數一:X 坐標
- 引數二:Y 坐標
- 引數三:字串(ASCLL碼中的)
- 引數四:bit(表示字符顯示格式,這里我用的 16 ,和漢字一樣高)
- 引數五:顯示樣式(1:白字黑底;0:黑字白底)
GUI_ShowChinese() 的引數
- 引數一:X 坐標
- 引數二:Y 坐標
- 引數三:漢字點陣大小(這里使用的是 16×16 的,引數應該是 16)
- 引數四:要顯示的漢字
- 引數五:顯示樣式(1:白字黑底;0:黑字白底)
顯示效果

二、左右滾動長字符
代碼實作
main函式
int main(void)
{
delay_init(); //延時函式初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設定NVIC中斷分組2:2位搶占優先級,2位回應優先級
OLED_Init(); //初始化OLED
OLED_Clear(0); //清屏(全黑)
while(1)
{
OLED_WR_Byte(0x2E,OLED_CMD); //關閉滾動
OLED_WR_Byte(0x27,OLED_CMD); //水平向左或者右滾動 26/27
OLED_WR_Byte(0x00,OLED_CMD); //虛擬位元組
OLED_WR_Byte(0x00,OLED_CMD); //起始頁 0
OLED_WR_Byte(0x07,OLED_CMD); //滾動時間間隔
OLED_WR_Byte(0x01,OLED_CMD); //終止頁 1
OLED_WR_Byte(0x00,OLED_CMD); //虛擬位元組
OLED_WR_Byte(0xFF,OLED_CMD); //虛擬位元組
TEST_name();
OLED_WR_Byte(0x2F,OLED_CMD); //開啟滾動
delay_ms(1500);
delay_ms(1350);
}
}
TEST_name
void TEST_name(void)
{
GUI_ShowCHinese(0,0,16,"重慶交大",1);
GUI_ShowString(0,16,"631807060512",16,1);
GUI_ShowCHinese(0,32,16,"浮慷訓園",1);
}
顯示效果

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