基于STM32使用OLED实现文字滚动

一、SPI简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是由 Motorola 公司提出的一种高速的,全双工,同步的通信总线,被广泛地使用在 ADC、LCD 等设备与 MCU 间要求通讯速率较高的场合。SPI总线系统可直接与各个厂家生产的多种标准外围器件连接,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线C/S(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI时序图示
在这里插入图片描述

二、对需要的文字取字模

使用PCtoLCD软件进行取字模
首先如图示设置
在这里插入图片描述输入所需文字,电子生成字模
在这里插入图片描述

三、主要代码

main函数

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{	
	delay_init();	    	       //延时函数初始化	  
	NVIC_Configuration(); 	   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 	
	OLED_Init();			         //初始化OLED  
	OLED_Clear(0);             //清屏(全黑)
	OLED_WR_Byte(0x2E,OLED_CMD);        //关闭滚动
  	OLED_WR_Byte(0x27,OLED_CMD);        //水平向左或者右滚动 26/27
  	OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
	OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
	OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
	OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7
	OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
	OLED_WR_Byte(0xFF,OLED_CMD);        //虚拟字节
	TEST_MainPage();
	OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动
	while(1) 
	{
		
	}
}

修改相应函数

void TEST_MainPage(void)
{	
	GUI_ShowCHinese(10,20,16,"梁梁梁",1);
	GUI_ShowString(4,48,"631907030311",16,1);
	delay_ms(1500);		
	delay_ms(1500);
}

将字模代码添加到oledfont中

"梁",0x00,0x00,0x23,0xF0,0x10,0x90,0x82,0x94,0x52,0x92,0x24,0x92,0xE1,0x10,0x22,0x50,
0x25,0x20,0x01,0x00,0xFF,0xFE,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,/*"梁",0*/
"梁",0x00,0x00,0x23,0xF0,0x10,0x90,0x82,0x94,0x52,0x92,0x24,0x92,0xE1,0x10,0x22,0x50,
0x25,0x20,0x01,0x00,0xFF,0xFE,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,/*"梁",1*/
"梁",0x00,0x00,0x23,0xF0,0x10,0x90,0x82,0x94,0x52,0x92,0x24,0x92,0xE1,0x10,0x22,0x50,
0x25,0x20,0x01,0x00,0xFF,0xFE,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,/*"梁",2*/

在这里插入图片描述

四、硬件连接及实现效果

// OLED模块               STM32单片机
//   VCC         接       DC 5V/3.3V      //OLED屏电源正
//   GND         接          GND          //OLED屏电源地
//=======================================液晶屏数据线接线==========================================//
//本模块默认数据总线类型为4线制SPI
// OLED模块               STM32单片机
//   D1          接          PB15        //OLED屏SPI写信号
//=======================================液晶屏控制线接线==========================================//
// OLED模块               STM32单片机
//   CS          接          PB11        //OLED屏片选控制信号
//   RES         接          PB12        //OLED屏复位控制信号
//   DC          接          PB10        //OLED屏数据/命令选择控制信号
//   D0          接          PB13        //OLED屏SPI时钟信号

实现效果
在这里插入图片描述

五、总结

这次实验需学习了如何取字模和实现在OLED上滚动输出,操作中使用的是现成的代码,通过修改其中需要用到的部分,即可实现想要的效果。

六、参考

https://blog.csdn.net/m0_58414679/article/details/121411882?spm=1001.2014.3001.5501
https://blog.csdn.net/qq_43279579/article/details/111500137
https://blog.csdn.net/qq_45237293/article/details/111712565?spm=1001.2014.3001.5501

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值