目录
一.OLED和SPI
1.SPI简介
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola公司推出的一种同步串行接口技能,是一种高速的,全双工,同步的通信总线。
2.OLED
OLED的界说和优势
OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技能。
OLED显示技能具有自发光的特性,接纳非常薄的有机质料涂层和玻璃基板,当有电流通过期,这些有机质料就会发光,而且OLED显示屏幕可视角度大,而且可以或许节省电能,从2003年开始这种显示设备在MP3播放器上得到了应用。
LCD都需要背光,而OLED不需要,因为它是自发光的。这样同样的显示,OLED效果要来得好一些。以现在的技能,OLED的尺寸还难以大型化,但是分辨率确可以做到很高。
OLED模块工作模式选择
4种模式通过模块的BS1/BS2设置(通过硬件来设置),BS1/BS2的设置与模块接口模式的关系如表所示:
二.OLED数据显示实验要求及准备
1.实验要求
- 显示自己的学号和姓名;
- 显示AHT20的温度和湿度;
- 上下或左右的滑动显示长字符,好比“Hello,接待来到重庆交通大学物联网205实训室!”大概歌词、诗词。(最好使用硬件刷屏模式)
2.实验情况
设备:野火STM32F103指南者
软件:KEIL5 和PCtoLCD2002
3.实验准备
(1)硬件接线
见下图(代码中)
(2)字体取模
将字模选项中的一些规格选项举行修改
宋体,16×16
比方:
汪(0) 培(1) 豪(2)
{0x08,0x06,0x40,0x31,0x00,0x40,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x00,0x00},{0x20,0x20,0x7E,0x80,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x00},/“汪”,0/
{0x04,0x04,0x04,0xFF,0x04,0x04,0x01,0x29,0x25,0xA1,0x61,0x25,0x29,0x21,0x01,0x00},
{0x08,0x0C,0x08,0xF0,0x10,0x10,0x00,0x3F,0x22,0x22,0x22,0x22,0x22,0x3F,0x00,0x00},/“培”,1/
{0x00,0x41,0x41,0x5D,0x55,0x55,0x55,0xD5,0x55,0x55,0x55,0x5D,0x41,0x41,0x01,0x00},
{0x40,0x80,0x05,0x55,0x55,0x6A,0x6A,0x55,0x4F,0x48,0x54,0x44,0x02,0x42,0x80,0x00},/“豪”,2/
字模数据生成完成后,将数据添加进 const typFNT_GB16 cfont16[] =
三.OLED数据显示结果展示
四.字符滚动显示
1.根本知识
本OLED屏的芯片范例为:SSD1306
详细下令请参考链接
1)设置水平左右移步调:
OLED_WR_Byte(0x2E,OLED_CMD); //关闭滚动
OLED_WR_Byte(0x26,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); //虚拟字节
OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动
(2)设置垂直和水平滚动的(没有可用连续垂直滚动)步调:
OLED_WR_Byte(0x2e,OLED_CMD); //关闭滚动
OLED_WR_Byte(0x29,OLED_CMD); //水平垂直和水平滚动左右 29/2a
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); //终止页 1
OLED_WR_Byte(0x01,OLED_CMD); //垂直滚动偏移量
OLED_WR_Byte(0x2F,OLED_CMD); //开启滚动
2.代码
main函数
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(0x26,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); //开启滚动 }
复制代码 五.字符滚动显示结果展示
参考资料:
《0.96寸SPI_OLED模块用户手册》
《中文点阵字库的使用方法(安富莱电子)》
《汉字点阵字库原理》
【常用模块】OLED显示模块(原理讲授、STM32实例操作)
来源:https://blog.csdn.net/qq_44249640/article/details/111669925
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |