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

一、了解SPI(串行外设接口)

  1. SPI的定义
    SPI(Serial Peripheral Interface)就是串行外围设备接口。
    SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
    上升沿发送、下降沿接收、高位先发送。
    上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
    下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。
  2. SPI的连接方式
    在这里插入图片描述
    SS( Slave Select):从设备选择信号线,常称为片选信号线。
    SCK (Serial Clock):时钟信号线,用于通讯数据同步。
    MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。
    MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。
  3. SPI的通讯过程
    在这里插入图片描述
    MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。

更多内容请参考《【野火®】零死角玩转STM32—F103-MINI》

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

  1. 实验工具与材料
    软件:keil
    硬件:PC机,STM32开发板(本过程采用的是野火stm32mini开发板),0.96寸OLED显示屏,下载器(本过程采用ST_Link)
  2. 0.96寸OLED显示屏相关介绍
    参考下面链接:
    http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
  3. 运行厂家给出的Demo程序
    ①下载程序
    程序下载链接:
    0.96寸SPI_OLED模块配套资料包
    ②打开资料包,选择与自己平台相同的实例,打开Demo的工程,使用keil编译
    ③将程序烧录到开发板
    ④连接显示屏和开发板
    在这里插入图片描述
    ⑤运行结果
    在这里插入图片描述

三、自行修改程序实现显示

显示要求:
显示姓名
显示一串数字

1.姓名中文的点阵(16*16)

由于程序并不需要显示所有的中文,所以将对应需要的文字添加到程序就可以了。

本过程显示的中文内容是哈莉特,需要从中文点阵字库中找到对应的点阵表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.程序代码
哈莉特的存储代码

"哈",0x00,0x40,0x00,0x40,0x00,0xA0,0x78,0xA0,0x49,0x10,0x49,0x08,0x4A,0x0E,0x4D,0xF4,
0x48,0x00,0x48,0x00,0x7B,0xF8,0x4A,0x08,0x02,0x08,0x02,0x08,0x03,0xF8,0x02,0x08,
"莉",0x04,0x40,0x04,0x44,0xFF,0xFE,0x04,0x40,0x06,0x08,0x78,0x08,0x08,0x48,0x08,0x48,
0xFF,0x48,0x08,0x48,0x1C,0x48,0x1A,0x48,0x2A,0x48,0x48,0x08,0x88,0x28,0x08,0x10,
"特",0x10,0x40,0x10,0x40,0x50,0x48,0x53,0xFC,0x7C,0x40,0x50,0x44,0x97,0xFE,0x18,0x10,
0x30,0x10,0xD7,0xFE,0x11,0x10,0x10,0x90,0x10,0x90,0x10,0x10,0x10,0x50,0x10,0x20,

实现显示代码

void TEST_MainPage(void)
{
    
    	
	GUI_ShowString(28,0,"Harriet",16,1);//英文姓名
	GUI_ShowCHinese(28,20,16,"哈莉特",1);//中文姓名
	GUI_ShowString(4,48,"631807060517",16,1);//数字详细
	delay_ms(1500);		
	delay_ms(1500);
}

main函数

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

3.编译烧录结果
在这里插入图片描述

四、总结

本过程主要是对应字库的一个了解,以及怎么实现将点阵格式转换成十六进制格式。出来了给出的几个中文的点阵之外,其他的显示也都是依据点阵进行的存储。其实,整个显示屏也是一个点阵,显示过程就是将显示屏整个点阵中的每个小点进行改变,从而实现显示。

五、参考资料

  1. 通用点阵字库生成工具
  2. 显示屏相关资料

程序完整代码
百度网盘分享链接
https://pan.baidu.com/s/1gMCljDEFuVtfhPN38MX9dA
提取码:bphx

猜你喜欢

转载自blog.csdn.net/qq_43279579/article/details/111414037