STM32 SPI协议接口下的OLED屏显示

   日期:2020-12-23     浏览:102    评论:0    
核心提示:文章目录任务要求SPI协议接口例程改写任务要求练习通过SPI总线实现OLED屏幕显示。显示自己的学号和姓名。本人所用开发板:野火STM32F103指南者;代码编写烧录:KEIL5所用协议:SPI;所用例程来源:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_ModuleSPI协议接口SPI协议(SerialPeripheralInterface),即串行外围设备接口,是一种高速全双工的通信总线。基本通信过程:SPI接口位置:SPI引脚:MI

文章目录

  • 任务要求
    • SPI协议接口
    • 例程改写
  • 总结

任务要求

练习通过SPI总线实现OLED屏幕显示。显示自己的学号和姓名。
本人所用开发板:野火STM32F103指南者;
代码编写烧录:KEIL5
所用协议:SPI;
所用例程来源:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module

SPI协议接口

SPI协议(SerialPeripheralInterface),即串行外围设备接口,是一种高速全双工的通信总线。
基本通信过程:


SPI接口位置:

SPI引脚:
MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据;
MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据;
SCK:串口时钟,作为主设备的输入,从设备的输入;
NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

SPI下的STM32与OLED连接

例程改写

1.在OLED官网下载例程:
http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
下载完成解压后再用KEIL打开SPI对应的OLED显示例程“0.96inch_OLED_Demo_STM32F103ZET6_Hardware_4-wire_SPI”,如下:

2.STM32与OLED的连接依据main.c程序里的注释提示进行连接即可,如下:

注意:此时的OLED的CS接口不用连接,只需要六根线进行STM32与OLED的连接。

完成后,模块显示如下:
此时直接编译烧录例程,不用改动,显示如下:

此时如果OLED屏不显示,可能是接线有问题,检查即可。

3.改写程序:
在oledfont.h头文件里添加个人需要显示的汉字字模,此时需要利用PCtoLCD软件,打开界面如下:

该软件为野火资料包里的开发软件自带。
关于字模软件的使用详见野火自带教程。

此时选取字模,添加进数组。如下:

const typFNT_GB16 cfont16[] = 
{ 
	"马",0x00,0x00,0x7F,0xE0,0x00,0x20,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1F,0xFC,
   0x00,0x04,0x00,0x04,0x00,0x04,0xFF,0xE4,0x00,0x04,0x00,0x04,0x00,0x28,0x00,0x10,
  "舒",0x10,0x00,0x11,0xF8,0x28,0x08,0x44,0x50,0x82,0x20,0x7C,0x10,0x13,0xFE,0x10,0x22,
   0xFE,0x24,0x10,0x20,0x10,0x20,0x7C,0x20,0x44,0x20,0x44,0x20,0x7C,0xA0,0x44,0x40,
  "娅",0x20,0x00,0x23,0xFC,0x20,0x90,0x20,0x90,0xF8,0x90,0x48,0x92,0x4C,0x92,0x4A,0x94,
   0x8A,0x94,0x4A,0x98,0x30,0x90,0x10,0x90,0x28,0x90,0x48,0x90,0x87,0xFE,0x00,0x00,

注意:此时我选择的是1616的OLED汉字显示,因此在添加字模时,也是添加进1616汉字显示对应的数组。添加后注意保存。

再进入test.c进行修改,将void TEST_MainPage(void)函数修改。如下:

void TEST_MainPage(void)
{ 	
	
	GUI_ShowString(20,0,"631807030324",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 SPI协议接口下的OLED屏显示主要任务已完成,对于STM32的SPI接口协议的学习还需更加深入。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服