基于STM32的OLED的SPI接口数据显示
- 使用OLED显示数据
-
- 一、显示学号和姓名
- 二、显示温湿度
- 三、上下或左右的滑动显示长字符
使用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();
}
}