一、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