请选择 进入手机版 | 继续访问电脑版

基于SPI/IIC接口的OLED数据显示和字符滚动

[复制链接]
丶禁飞 发表于 2021-1-1 10:30:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
目录



一.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)
  1. {                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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )