基于STM32的OLED的SPI接口数据显示

基于STM32的OLED的SPI接口数据显示

  • 使用OLED显示数据
    • 一、显示学号和姓名
    • 二、显示温湿度
    • 三、上下或左右的滑动显示长字符

使用OLED显示数据

  • 接线说明
    基于STM32的OLED的SPI接口数据显示_第1张图片
    此时的OLED的CS接口不用连接,只需要六根线进行STM32与OLED的连接。
  • 从网站下载所需资料
    下载地址
    基于STM32的OLED的SPI接口数据显示_第2张图片
  • 实验所需工程文件位置
    基于STM32的OLED的SPI接口数据显示_第3张图片
  • 打开工程文件,编译无误
    基于STM32的OLED的SPI接口数据显示_第4张图片
  • 连接开发板,烧录
    基于STM32的OLED的SPI接口数据显示_第5张图片
  • 显示如下
    基于STM32的OLED的SPI接口数据显示_第6张图片

一、显示学号和姓名

  • 使用字模提取软件生成汉字的代码数组
    基于STM32的OLED的SPI接口数据显示_第7张图片
    基于STM32的OLED的SPI接口数据显示_第8张图片
  • 将生成的代码数组,复制到以下文件中
    基于STM32的OLED的SPI接口数据显示_第9张图片
  • 修改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);			
}

  • 修改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的OLED的SPI接口数据显示_第10张图片

二、显示温湿度

  • 将上次温湿度工程中的myiic.c和temhum.c移入HARDWARE文件中

基于STM32的OLED的SPI接口数据显示_第11张图片

  • 修改main.c
#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);       //???CRC??,????AHT20???????? 

        hum = CT_data[0]*100*10/1024/1024;  //???????(???10?)
        tem = CT_data[1]*200*10/1024/1024-500;//???????(???10?)
	      GUI_ShowNum(50,36,hum/10,10,8,1);
		  GUI_ShowNum(50,54,tem/10,10,8,1);
     
		delay_ms(3000);
	}

  • 温度湿度的代码数组同上生成并加入到相同位置
  • 编译,烧录,显示如下

基于STM32的OLED的SPI接口数据显示_第12张图片

三、上下或左右的滑动显示长字符

  • 同上在字模提取软件中生成字符的代码数组,加入指定位置
  • 在HARDWARE文件oled.c中添加以下函数
void roll(void)
{
     
        OLED_WR_Byte(0x2e,OLED_CMD); //关滚动      
        OLED_WR_Byte(0x29,OLED_CMD); //29向右     
        OLED_WR_Byte(0x00,OLED_CMD); //A:空字节
        OLED_WR_Byte(0x00,OLED_CMD); // B:水平起始页      
        OLED_WR_Byte(0x07,OLED_CMD); //C:水平滚动速度       
        OLED_WR_Byte(0x07,OLED_CMD); //D:水平结束页       
	      OLED_WR_Byte(0x01,OLED_CMD); //E:每次垂直滚动位移      
        OLED_WR_Byte(0x2F,OLED_CMD); //开滚动
}   

  • 修改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) 
	{
     	
			GUI_ShowCHinese(20,25,16,"信息科学与工程学院",1);
			delay_ms(50);
		  roll();
	}
}

  • 编译,烧录,显示如下

基于STM32的OLED的SPI接口数据显示_第13张图片

你可能感兴趣的:(基于STM32的OLED的SPI接口数据显示)