OLED屏显示滚动字符

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值