文章目录

  • **一、SPI(串行外设接口)**
  • **二、使用0.96寸OLED显示屏显示学号姓名**
  • **三、0.96寸OLED在STM32f103上实现滚动显示长字符**
  • **四、参考资料**

一、SPI(串行外设接口)

(一)SPI概念
SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI是一种高速、全双工、同步通信的通信总线,被广泛应用在ADC、LCD等与MCU的通信过程中,特点就是快。

(二)SPI协议

NSS:片选设备线,每个从机都有自己的一条单独的总线与主机连接,此总线的作用就是为主机选择对应的从机进行传输数据,每个从机与主机之间的NSS总线互不相干。SPI中规定通信以NSS信号线拉低为开始,拉高为结束。
SCK:时钟信号线,因为SPI是同步通信,所以需要一根时钟信号线来统一主机和从机之间的数据传输,只有在有效的时钟信号下才能正常传输数据,不同设备支持的最高传输频率可能不一样,在传输过程中传输频率受限于低速的一方。
MOSI:(Master Output, Slave Input),顾名思义,MOSI就是主机输出/从机输入,因为SPI是全双工的通信总线,即主机和从机可以同时收发数据,这样的话就需要俩条线同时分别负责:主->从和从->主这俩条传输线路。而MOSI就专门负责主机向从机传输数据。
MISO:(Master Input,, Slave Output),与MOSI恰恰相反,MISO专门负责从机向主机传输数据。
(三)通讯时序图

所有的运作都是基于SCK时钟线的,SCK对于SPI的作用就像心脏对于人体的作用,SCK为低电平就代表心脏停止跳动。

二、使用0.96寸OLED显示屏显示学号姓名

(一)实验工具与材料
软件:keil
硬件:PC机,STM32开发板(本过程采用的是野火stm32mini开发板),0.96寸OLED显示屏,下载器(本过程采用ST_Link)

(二)0.96寸OLED显示屏相关介绍

可参考下面链接:
0.96inch SPI OLED Module


(三)姓名中文的点阵(16*16)
1.由于程序并不需要显示所有的中文,所以将对应需要的文字添加到程序就可以了。


(四)显示姓名学号代码修改
1.显示姓名学号函数

void TEST_MainPage(void)
{   GUI_ShowCHinese(28,24,16,"梅文翔",1);//显示中文名GUI_ShowString(4,48,"631907060116",16,1);//显示学号delay_ms(1500);     delay_ms(1500);
}

2.main函数

int main(void)
{   delay_init();                  //延时函数初始化      OLED_Init();                   //初始化OLED  OLED_Clear(0);             //清屏(全黑)while(1) { TEST_MainPage();         //界面显示}
}

(五)烧录以及结果显示

三、0.96寸OLED在STM32f103上实现滚动显示长字符

(一)OLED屏的滚屏命令
本OLED屏的芯片类型:SSD1306
详细命令的介绍,请查找SSD1306-OLED驱动中文手册或者参考下面链接进行了解
https://wlink.blog.csdn.net/article/details/81329770

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);        //开启滚动

说明:设置前需要先发关闭滚动的指令2E,接着发滚动指令29(向右)或2A(向左)。紧接着发5条参数设置指令,用来设置持续水平滚动参数和决定滚动开始页,结束页,滚动速度和垂直滚动偏移的,最后才发开始滚屏指令2F。
注意:在发送开始滚屏(2F)前要先传输好显示数据,如果在滚屏的时候传输显示数据RAM中的内容可能被损坏,无法正常显示。

(二)对显示文字进行取模
文字的点阵十六进制表示

(三)代码实现
1.mian函数

#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);        //开启滚动}

2.显示数据函数

void TEST_MainPage(void)
{   //GUI_ShowString(28,0,"wwwww",16,1);GUI_ShowCHinese(28,20,16,"为什么还是会寂寞",1);//GUI_ShowString(40,32,"64X128",16,1);//GUI_ShowString(4,48,"631907060116",16,1);//GUI_ShowString(4,48,"www.lcdwiki.com",16,1);delay_ms(1500);     delay_ms(1500);
}

(四)烧录以及结果
结果

四、参考资料

https://blog.csdn.net/qq_43279579/article/details/111414037
https://blog.csdn.net/qq_43279579/article/details/111500137
https://blog.csdn.net/qq_43743762/article/details/98946574
https://blog.csdn.net/wowocpp/article/details/80885320

基于STM32的0.96寸OLED屏显示学号姓名和滚动显示相关推荐

  1. 基于STM32的0.96寸OLED显示屏显示数据和滚动显示

    文章目录 一.SPI 二.OLED显示屏显示数据 2.1 代码实现 2.2 结果展示 三.0.96寸OLED滚动显示数据 3.1 滚动方式 3.2 对显示文字进行取模 3.3 代码实现 3.4 结果展 ...

  2. 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)

    简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...

  3. 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)

    概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...

  4. 关于基于stm32的0.96寸oled显示屏的学习理解心得。

    关于基于stm32的0.96寸oled显示屏的学习理解心得. oled粗了解 如何理解OLED分辨率? 这里0.96寸OLED分辨率是12864;即OLED显示是128行64列; 但是由于OLED不能 ...

  5. 基于STM32的0.96寸OLED显示屏显示汉字+数字

    文章目录 一.SPI协议 1.什么是SPI协议 2. SPI 协议的物理层和协议层 二.0.96寸OLED屏 三.使用OLED屏显示数据 1.下载程序 2.打开工程 3.部分代码 4.编译并烧录 5. ...

  6. 基于STM32的0.96寸OLED显示屏显示固定数据、滑动数据、温湿度数据

    目录 OLED显示原理 一.实验工具 二.OLED显示固定数据 1.显示数据相关函数 2.main函数 3.总显示函数 4.取字模 5.实现效果如下: 三.OLED实现滑动显示数据 1.添加滑动命令 ...

  7. 基于STM32F103C8T6的0.96寸OLED显示屏显示数据

    一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...

  8. 【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结

    目录 SPI版 OLED SPI 端口定义 七针OLED引脚定义 六针OLED引脚定义 软件SPI 硬件SPI 启用DMA 帧率测试 I2C 版 软件I2C 硬件I2C DMA STM32F103VE ...

  9. 【STM32】HAL库在7针脚0.96寸OLED屏上的移植---硬件SPI(一)

    目录 SPI背景和接线 1.什么是SPI 2.如何接线 STM32CubeMX部分 1.配置时钟 2.配置SPI 3.工程生成 MDK 5 部分 1.移植OLED文件 2.修改引脚 3.修改main函 ...

最新文章

  1. Java代码块总结(速读版)
  2. 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
  3. Android 开发环境建立
  4. OleDbCommand使用参数应该注意的地方
  5. oracle中的java无法_Java无法连接oracle
  6. 网络:浏览器静态资源缓存机制
  7. 《微机原理及接口技术》第05章在线测试
  8. 关于谨防诈骗的温馨提示
  9. 基于深度学习的语义分割代码库
  10. nodejs的事件循环1
  11. POJ1177矩形面积并(矩形切割+括号匹配)
  12. 安装部署Exchange Server 2010 CAS NLB MailBox DAG
  13. list遍历_Qt 容器类之遍历器和隐式数据共享
  14. R与Python或协同助力机器学习:听Azure ML Studio讲座有感
  15. 共享黑名单是行业潜规则
  16. 哪里有免费的ASP空间?
  17. Google翻译接口调用
  18. 货币信息高于货币价值而存在
  19. 软件工程概论期末复习笔记
  20. 从零开始写项目【总结】

热门文章

  1. matlab灰度图孔洞填充,OpenCV图像内轮廓填-孔洞填充
  2. Unity知识二:显示和隐藏游戏对象
  3. 用html设计网页注意事项,网页设计中Html使用的一些问题
  4. 2021年熔化焊接与热切割复审考试及熔化焊接与热切割证考试
  5. VUE图片添加角标,图片右上角或左上角添加标识
  6. SCHNOKA施努卡:扁线电机定子自动绕线机厂家 全自动电机绕线机生产厂家
  7. nexus 数据备份
  8. 小提琴 只给最喜欢的人
  9. Injective Protocol官方文档翻译(一) -介绍、架构、Injective 链
  10. php过滤提交数据 防止sql注入攻击