本文内容:本文主要介绍怎么通过单片机控制7针的oled上实现文字滚动。

一、oled与SPI简介

(一)oled简介

有机发光二极管(OrganicLight-Emitting Diode,OLED),又称为有机电激光显示、有机发光半导体(OrganicElectroluminescence Display,OLED),是指有机半导体材料和发光材料在电场驱动下,通过载流子注入和复合导致发光的现象。

(二)SPI协议

7针oled需要用到SPI协议

SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,
要求通讯速率较高的场合。
SPI物理层
SPI通讯使用 3 条总线及片选线,3条总线分别为 SCK、MOSI、MISO

SPI协议层

与 I2C的类似,SPI协议定义了通讯的起始和停止信号、数据有效性、时钟同步等环节。
SPI通信时序

二、获取自模

下载字模软件PCtoLCD
字模软件PCtoLCD
打开后先进行设置,如下图:

输入想要获取的文字,点击生成字模,下面会出现字码

三、oled主要代码

主函数

#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/27OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔OLED_WR_Byte(0x07,OLED_CMD);        //终止页 7OLED_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,"631904110130",16,1);delay_ms(1500);       delay_ms(1500);
}

添加的字模代码

字模在oledfont.c文件中

"小",0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x11,0x10,0x11,0x08,0x11,0x04,0x21,0x04,0x21,0x02,0x41,0x02,0x81,0x02,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"小",0*/"张",0x01,0x00,0xF9,0x08,0x09,0x08,0x09,0x10,0x09,0x20,0x79,0x40,0x41,0x00,0x47,0xFE,0x41,0x40,0x79,0x20,0x09,0x20,0x09,0x10,0x09,0x08,0x09,0x44,0x51,0x82,0x21,0x00,/*"张",1*/"从",0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x50,0x14,0x50,0x12,0x50,0x12,0x88,0x20,0x88,0x21,0x04,0x42,0x04,0x84,0x02,/*"从",2*/"未",0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x11,0x10,0x21,0x08,0xC1,0x06,0x01,0x00,0x01,0x00,/*"未",3*/"入",0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10,0x10,0x20,0x10,0x40,0x08,0x80,0x06,/*"入",4*/"门",0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x14,0x40,0x08,/*"门",5*/

四、运行效果

连线如下

// 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时钟信号

运行效果如图

五、总结

本文的代码使用的其他大佬的代码改的,主要加了一些自己用到的字模,这次用到的是7针的oled的SPI协议,与4针的oled有所不同,4针为I2C的协议。oled里面的函数需要根据用到的字长和想要的位置进行相应的参数更改,否则可能达不到想要的效果。

六、参考文章

0.96寸OLED在STM32f103上实现滚动显示长字符
基于SPI通信方式的OLED显示
完整代码

STM32之在oled上实现文字滚动相关推荐

  1. 关于qt 实现laber上面的文字滚动

    写代码前.首先我们肯定要新建一个项目. 1.点击文件新建文件或项目 2.选择带界面的.名称自己写.然后继承widget.完成 3.这样,我们就得到了一个空的gui项目了. 新建一个能实现文字滚动的头. ...

  2. STM32小项目之dht11在oled上显示温湿度

    前言: 实现一个简单的功能,最终多个功能合起来,就是一个大项目,也叫模块化编程:本篇文章不在讲述oled的用法和代码,因为代码太多了,粘不过来,需要的可以去看我另一篇文章专门讲解oled的. 本文牵扯 ...

  3. STM32如何在LCD上显示单词、文字、图片等

    本文将介绍STM32F103R6如何在LCD12864上显示文字图片 注:本文中用到的字模软件,我放在了文章末尾,点击链接即可下载,是绿色版软件,解压即可使用! 点击下载LCD12864上显示文字图片 ...

  4. STM32读取DS18B20温度,并在OLED上显示

    部分代码来源于网络,侵权删 本文使用硬件:STM32F103C8T6最小系统板.IIC协议0.96寸OLED屏幕显示.DS18B20传感器 实现功能:在OLED上显示出DS18B20采集到的温度,精确 ...

  5. 在OLED上显示各种各样的数据(文字、字母、图片)

    今天来说一说OLED,也同时记录一下成果. 在学习OLED之前需要知道IIC协议,不了解的可以看(IIC协议相关_dxdlnu的博客-CSDN博客) 什么是OLED? OLED_百度百科 (baidu ...

  6. php页头滚动文字公告,jQuery公告栏文字滚动插件

    jQue作一新求抖直微圈ry插件 关于jQue作一新求抖直微圈ry插件,http://www.cnblogs.com/ajianbeyourself/p/5815689.html 这篇文章写得真心不错 ...

  7. html图片加滚动文字,滚动文字、图片等html代码

    1.代码: 我是nancy 2.各参数详解: a)scrollAmount.它表示速度,值越大速度越快.如果没有它,默认为6,建议设为1-3比较好. b)width和height,表示滚动区域的大小, ...

  8. html marquee css,HTML之marquee(文字滚动)详解_html/css_WEB-ITnose

    语法: 以下是一个最简单的例子: 代码如下: Hello, World 下面这两个事件经常用到: onMouseOut="this.start()" :用来设置鼠标移出该区域时继续 ...

  9. html 滚动字幕如何设置,Html 文字滚动

    滚动字幕会让很多人感到兴奋,特别是第一次使用滚动字幕时,会爱不释手.现在做一个详细的方案,让你更全面地了解一下. 滚动字幕在FrontPage的组件里有,但是FrontPage这个软件只能支持单行文字 ...

最新文章

  1. FPGA之道(77)静态时序分析(三)同步时序逻辑的分析原理
  2. docker ps 列出容器 命令简介
  3. 【小白学习tensorflow教程】四、使用 tfhub中的模型EfficientDet-Lite2 进行对象检测
  4. 前端学习(2703):重读vue电商网站24之配置axios
  5. 深入理解ES6之迭代器与生成器
  6. Flink State 最佳实践
  7. linux环境发送中文失败,linux - 无法从linux命令发送邮件 - SO中文参考 - www.soinside.com...
  8. C语言指针变量--图示易懂
  9. 【白皮书分享】人工智能“新基建”发展白皮书.pdf(附下载链接)
  10. 特斯拉中国工厂2020投产,还可能为完全自动驾驶更新硬件
  11. 如何删掉oracle服务,oracle留下的服务如何删除啊
  12. php是什么币种的外汇英文,外汇币种英文_我要最常用的10个外汇币种和英文简称!_合拍网...
  13. 分布式任务调度相关介绍
  14. 深入分析redis之rax底层原理,前缀树?
  15. pdf文件拆分为单个pdf_如何根据文件内容拆分重命名移动一批PDF文件
  16. CSS总结1-来自freecode
  17. 读书笔记之一平米健身:硬派健身
  18. PLY格式介绍与读取
  19. 为什么说入职国企也能越混越好?局外人不懂,内行人明白这4点
  20. 第一天-网络设备安全操作知识

热门文章

  1. AWS和一级方程式宣布 2020赛季新的赛车表现统计数据
  2. 企业邮箱网易163购买注意事项
  3. 巴旦木树苗移栽方法丨巴旦木苗木种植技巧
  4. android 近场通信,Android NFC近场通信03----读写MifareClassic卡(示例代码)
  5. 使用openpyxl玩转excel数据
  6. uncertain temporal knowledge graph论文解读
  7. 大疆 DJI SDK 开发介绍
  8. 《SaltStack技术入门与实践》—— 实践案例 中小型Web架构3 Memcached配置管理
  9. 视频教程-《2048》-UGUI搞定2D游戏研发-Unity3D
  10. skywalking9.2