OLED屏显示滚动字符

wuchangjian2021-11-20 11:05:48编程学习

目录

  • 一、SPI和OLED简介
    • 1.1 SPI介绍
    • 1.2 OLED介绍
  • 二、汉字编码原理
  • 三、OLED实验
    • 3.1 实验任务
  • 四、提取字模
  • 五、主要代码
  • 六、效果展示
  • 七、总结
  • 八、参考链接

一、SPI和OLED简介

1.1 SPI介绍

市面上的开发板很少接有SPI设备,但是SPI协议在工作中经常用到。开发SPI模块,上面有SPI Flash和SPI OLED。OLED就是一块显示器。
裸板程序会涉及两部分:

  • 用GPIO模拟SPI
  • 用S3C2440的SPI控制器在这里插入图片描述
    在这里插入图片描述

1.2 OLED介绍

OLED(OrganicLight-Emitting Diode),又称为有机电激光显示、有机发光半导体(OrganicElectroluminesence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。

7针OLED
在这里插入图片描述

4针OLED
在这里插入图片描述

二、汉字编码原理

所有的汉字或者英文都是下面的原理,

由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列。

生成的字库说明:(以12×12例子)
在这里插入图片描述

一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节。

编码排序A0A0→A0FE A1A0→A2FE依次排列。

以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。

其他的类推即可。

英文点阵也是如此推理。

三、OLED实验

3.1 实验任务

1、理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:

  1. 显示自己的学号和姓名;
  2. 显示AHT20的温度和湿度;
  3. 上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者一段歌词或诗词(最好使用硬件刷屏模式)。

四、提取字模

字模提取软件建百度网盘:
链接
提取码:a7vp

  • 在文字输入区输入你想要的一个汉字
    在这里插入图片描述
  • 按下ctrl+enter键
  • 取模方式选择C51格式
  • 即可生成字模

在这里插入图片描述

五、主要代码

主函数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) 
	{
		
	}
}
  • 在oledfont.h里面添加字模代码:
    在这里插入图片描述
    在TEST_MainPage函数里面添加文字内容,具体如下:
void TEST_MainPage(void)
{	
	GUI_ShowCHinese(10,20,16,"马睿睿",1);
	GUI_ShowString(4,48,"631907030219",16,1);
	delay_ms(1500);		
	delay_ms(1500);
}
  • 硬件连接如下:
    在这里插入图片描述

六、效果展示

在这里插入图片描述

七、总结

我们这次试验用到的是七针的OLED,其协议是SPI协议,如果是四针的OLED用到的是I2C协议。学有余力的同学可以试试用四针的OLED协议,其中的代码函数可能需要做相应的改动。

八、参考链接

点阵字库原理
SPI协议
OLED显示屏软硬件模拟SPI
基于SPI通信方式的OLED显示

相关文章

(91)FPGA模块例化(module)

(91)FPGA模块例化(module) 1.1 目录 1)目录 2)FPGA简介...

【Golang】——利用time.Ticker做定时任务

一、前言       golang 的time.Ticker一般用来作为时间周期执行任...

高端知识点:折叠表达式(我也是第一次知道)

高端知识点:折叠表达式(我也是第一次知道)

不知道大家以前了解折叠表达式不,这里介绍一下! 我也是最近...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。