基于STM32的OLED显示屏显示数据

要求:理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:显示自己的学号和姓名

一、SPI简介

1、SPI的定义

SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(数据输入),MOSI(数据输出),SCLK(时钟),CS(片选)。

  • MOSI --主设备数据输出,从设备数据输入
  • MISO --主设备数据输入,从设备数据输出
  • SCLK --时钟信号,由主设备产生
  • CS --从设备使能信号,由主设备控制
    在这里插入图片描述

2、SPI的工作过程

在这里插入图片描述
这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。

二、使用OLED显示屏显示数据

1、OLED显示屏

在这次的实验中需要使用OLED显示屏
关于OLED显示屏的介绍,见以下链接:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module

2、下载程序

使用厂家给的Demo程序,见以下链接:
http://www.lcdwiki.com/res/Program/OLED/0.96inch/SPI_SSD1306_MSP096X_V1.0/0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0.zip
下载完成之后,打开如图路径
在这里插入图片描述
找到自己与自己平台相同的实例,由于这里没有STM32103C8,所以使用同系列的STM32F103RC
在这里插入图片描述
打开PROJECT文件,使用keil打开工程文件
在这里插入图片描述

3、字模提取

这里的要求是显示自己的姓名和学号,所以涉及到中文点阵的有关知识。
并不需要显示所有的中文,只要将需要显示的文字添加到程序中。
需要使用到字模提取软件PCtoLCD2002完美版,软件的具体配置信息也在下载文件中,可以在如下链接下载:https://pan.baidu.com/s/1B4Cfi5Ji8ifcJ4g7DKTbog
提取码:1121
字模提取的结果如下,复制这个结果
在这里插入图片描述

4、修改代码

需要修改的代码有三处,分别是:

  • 字模的存储代码
  • 显示代码
  • 主函数

(1)字模的存储代码

在如下路径找到,需要添加字模的文件oledfont,在keil中打开该文件
在这里插入图片描述
将前文中复制的信息,添加到如下的位置
在这里插入图片描述
(2)显示代码
test.c文件中,将此位置的代码更改为如下的代码,注意显示出的内容根据自己的需要进行替换

void TEST_MainPage(void)
{	
	GUI_ShowString(28,0,"Lucien",16,1);	//显示英文字符串
	GUI_ShowCHinese(28,20,16,"卢西安",1);	//显示中文汉字
	GUI_ShowString(4,48,"631907030210",16,1);	//显示数字
	delay_ms(1500);		
	delay_ms(1500);
}

在这里插入图片描述
(3)主函数

在main.c文件中,修改主函数的代码

int main(void)
{	
	delay_init();	    	       //延时函数初始化	  
	OLED_Init();			         //初始化OLED  
	OLED_Clear(0);             //清屏(全黑)
	while(1) 
	{	
		TEST_MainPage();         //界面显示
	}
}

在这里插入图片描述

5、编译运行

编译运行,没有错误,并且生成了hex文件
在这里插入图片描述

6、烧录文件

打开mcuisp软件,按如下步骤进行

  • 搜索串口
  • 选择上一节中生成的hex文件
  • 开始编程
    出现如下字样说明烧录成功
    在这里插入图片描述

7、接线

按照下图的对应关系接线
在这里插入图片描述

8、实验结果

在OLED显示屏中效果如下
在这里插入图片描述

三、总结

在这次实验中,我学习了并且理解了OLED显屏和汉字点阵编码原理,并且使用STM32F103的SPI接口实现了在OLED显示屏上显示自己的学号和姓名。整体的操作步骤并不难,因为都是在已有的代码上稍微修改的。但是在完成实验之余,理解原理也是十分重要的。

参考文献

https://blog.csdn.net/qq_43279579/article/details/111414037
https://blog.csdn.net/lly_3485390095/article/details/83474658

版权声明:本文为CSDN博主「卢西安」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chelseafall/article/details/121449456

生成海报
点赞 0

卢西安

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

Lin总线通信在STM32作为主机代码以及从机程序

距离上次做资料准备已经过去六天了。最近在学车,上周末就没有开电脑。这周开始进行了Lin通信的代码整理,目前是可以正常通信的了,采用的是增强型校验方式。后期再进一步跟进研究。。。更新一博,留

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔

HAL库串口中断

一,配置串口初始化 void MX_USART1_UART_Init(void) {huart1.Instance USART1;huart1.Init.BaudRate 115200;huart1.Init.WordLen