菜鸟入门11,通过SPI总线实现OLED屏幕显示


前言

想必诸位在儿时一定好奇过字母和数字是如何出现在诺基亚的小显示屏上的,今天本菜鸟的任务是带领大家一探究竟,一起理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI接口实现以下功能:

  1. 显示自己的ID和喜欢的数字;

  2. 显示AHT20的温度和湿度;

  3. 显示左右的滑动显示长字符(歌词、诗词)

一.显示自己的ID和喜欢的数字

首先打开野火指南者自带的OLED 配套资料,
用里面自带的生成字模软件生成自己的字模
设置如下
在这里插入图片描述
生成自己需要的字模
在这里插入图片描述
PS:一点要设置字模选项,不然会出现乱码。

保存字模

接着去所配备的OLED 屏幕官网找到资料包下载下来
下载之后,打开资料包中的例程进行修改
在这里插入图片描述
由于我在本次实验中用的是野火指南者,所以点击STM32的例程,
在这里插入图片描述

并按照以下路径打开
在这里插入图片描述
打开工程主函数,按照主函数中的说明连线在这里插入图片描述
在这里插入图片描述
连完线后先打开工程中的gui.c文件,观察各个函数的作用与参数的意义
如:在这里插入图片描述
之后修改主函数,调用需要的函数

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"

int main(void)
{	
	OLED_Init();			         //³õʼ»¯OLED  
	OLED_Clear(0);             //ÇåÆÁ£¨È«ºÚ£©
	while(1) 
	{	
		
		GUI_ShowCHinese(16,1,16,"小马不识途",1);
		delay_ms(1500);
	  OLED_Clear(0);
		GUI_ShowString(16,18,"631807030612",8,1);
		delay_ms(1500);
	  OLED_Clear(0);
	}

修改完主函数后,打开HARDWARE\OLED目录下的oledfont.h文件,打开后加入自己需要的字模
在这里插入图片描述
编译运行,烧录到芯片中,效果如下
在这里插入图片描述

二.显示AHT20的温度和湿度

将之前温湿度模块中的myiic.c和hemtem.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,1,16,"小马不识途",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);
	}

PS:别忘了添加“温度”“湿度”的字模进oledfont.c文件中。
编译运行,无错误
在这里插入图片描述
在这里插入图片描述

OLED显示屏显示温湿度,用手捂着,温度发生改变

三.显示左右的滑动显示长字符(歌词、诗词)

在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"
void roll(void);
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();
	}

生成字模,并添加到oledfont.c中
在这里插入图片描述
编译运行并烧录在板子上,效果如下
在这里插入图片描述


总结

以上就是如何通过SPI总线实现OLED屏幕显示,本文简单介绍了在OLED 屏幕显示自己的ID和喜欢的数字; AHT20的温度和湿度;左右的滑动显示长字符(歌词、诗词)。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值