STM32实现OLED屏显示字符串
目录
一、题目要求
二、关于SPI
三、关于OLED
四、OLED显示姓名学号
1、显示汉字取模
2、程序代码分析如下
3、实验效果展示
五、总结
六、参考链接
一、题目要求
理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:
1) 显示自己的学号和姓名;
2) 显示AHT20的温度和湿度;
3) 上下或左右的滑动显示长字符,如一段歌词或诗词(最好使用硬件刷屏模式)。
二、关于SPI
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。
SPI内部结构框图如下
通常SPI通过4个引脚与外部器件相连:
● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
● SCK:串口时钟,作为主设备的输出,从设备的输入
● NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片
选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS
引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为
输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接
到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进
入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS
被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式
SPI总线传输过程
· 主机先将
NSS
信号拉低,这样保证开始接收数据;· 当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit);
· 主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;
· 主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送;
具体框图如下
三、关于OLED
OLED(Organic Light-Emitting Diode),又称为有机电激光显示、有机发光半导体(Organic Electroluminescence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。
接口定义
图 2
1、本模块支持IIC、3线制SPI以及4线制SPI接口总线模式切换(如图2红框内所示),具体说明如下:
A、使用4.7K电阻只焊接R3、R4,则选择4线制SPI总线接口(默认);
B、使用4.7K电阻只焊接R2、R3,则选择3线制SPI总线接口;
C、使用4.7K电阻只焊接R1、R4、R6、R7、R8,则选择IIC总线接口;
2、接口总线模式切换后,需要选择相应配套的软件和相应的接线引脚(如图1所示),模块才能正常运行。相应的接线引脚说明如下:
A、选择4线制SPI总线接口,所有的引脚都需要使用;
B、选择3线制SPI总线接口,只有DC引脚不需要使用(可以不接),其他引脚都需要使用;
C、选择IIC总线接口,只需要使用GND、VCC、D0、D1这四个引脚,同时将RES接高电平(可以接VCC),DC和CS接电源地;
模块引脚说明
更多详细资料前往:0.96inch SPI OLED Module
四、OLED显示姓名学号
1、显示汉字取模
通过取模软件将需要OLED显示的汉字或图片转化为16进制
取模软件链接如下:0.96inch SPI OLED Module
汉字取模软件设置如下:
对于字模生成流程如下:
至此汉字取模成功.
2、程序代码分析如下
my_Test(); //学号姓名字符串显示函数
GUI_ShowString(50,0,"JAY",16,1); 字符显示函数
GUI_ShowCHinese(45,24,16,"周杰伦",1); 汉字显示函数
void my_Test(void)
{GUI_ShowString(50,0,"JAY",16,1);GUI_ShowCHinese(45,24,16,"周杰伦",1);//GUI_ShowString(40,32,"64X128",16,1);GUI_ShowString(15,48,"123456789",16,1);//GUI_ShowString(4,48,"www.lcdwiki.com",16,1);delay_ms(1500); delay_ms(1500);
}
汉字字模存储数组
主函数main.c
程序过程文件传送门:工程代码
功能实现:显示姓名学号后刷屏显示一段歌词
int main(void)
{ delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 OLED_Init(); //初始化OLED OLED_Clear(0); //清屏(全黑)while(1) { my_Test(); //学号姓名字符串显示OLED_Clear(0); //刷屏my_Test_v2(); //显示一段歌词OLED_Clear(0); //刷屏}
}
3、实验效果展示
OLED显示
五、总结
通过OLED显示实验基本掌握了SPI通信协议和软件取字模转化为16进制,总体来说,本实验是一个非常有趣的实验,可以通过OLED显示自己喜欢的图片和文字。
取字模的时候,注意字模的格式,前缀后缀不要忘记更改,以及取模走向和自定义格式等。
六、参考链接
【嵌入式16】STM32+OLED屏显应用实例
SPI协议详解(图文并茂+超详细)
基于STM32的0.96寸OLED显示屏显示数据
STM32实现OLED屏显示字符串相关推荐
- 【嵌入式】STM32基于SPI通信协议OLED屏显示
STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...
- 实验 STM32 基于SPI的OLED屏显示
STM32 基于SPI的OLED屏显示 一.任务要求 二.显示自己的学号和姓名 1.例子程序的改写 (1)下载资料 (2)解压后找到文件,并用KEIL打开. (3)改写程序 2.连接硬件 3.运行结果 ...
- esp32 spi 驱动 oled 屏显示来自 PC 的画面
esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...
- esp32使用MicroPython驱动oled屏显示中文和英文
文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...
- 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字
目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...
- 基于STM32实现OLED滚动显示
基于STM32实现OLED滚动显示 滚动方式 水平滚动 水平加垂直滚动 一.文字取模 二.代码修改 三.硬件连接加结果 总结 参考文献 滚动方式 水平滚动 OLED_WR_Byte(0x2E,OLED ...
- 基于STM32F4 的OLED屏显示噪点、花屏问题
现象 在实现OLED屏显示 内容时,屏幕会出现噪点:多点亮一些点位,使要显示的内容不能辨识. 原因 1.可能是因为当前io配置频率过高 2.延时时间太短 解决方法 方法1.更换io管脚为可高频io 例 ...
- ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像
ESP32-CAM拍照输出RGB565数据,wifi传输到stm32控制tft屏显示拍照图像 拍照采用安信可的ESP32-CAM,显示屏采用2.2寸,TFT SPI 240x320屏幕,使用stm32 ...
- msp430f5529——OLED屏显示文字与图片
目录 前言 一.效果展示 二.步骤 1.OLED.C文件 2.OLED.h文件 3.OLEDFONT.h文件 4.type.h文件 5.bmp.h文件 6.main.c 7.关于文字和图片的取模 总结 ...
最新文章
- python微信红包代码_有了这个再也不担心任何微信红包,Python就是好用
- 路由器是如何实现数据包的传送?—Vecloud微云
- Spring Remoting: Hessian--转
- Java11 新特性
- Oracle入门(五)之基本命令操作
- 活跃用户数怎么计算_【数据运营】|如何做好活跃用户的运营?
- TensorFlow 教程 --新手入门--1.5 基本使用
- LAMP 补充----非原创
- python是什么意思中文、好学吗-Python的前景和Python好不好学呢?
- 苹方字体 for linux,苹果苹方字体
- 南信大 计算机与软件学院 校花,美哭了!南京12所高校最美“校花”新鲜出炉!颜值爆表!你的母校上榜了吗?...
- Ubuntu论坛的开通
- 语音验证码与语音验证码APISDK接口
- 如何将word一键导入PPT并对内容格式批量修改
- UnityShader入门精要-屏幕后处理效果 亮度饱和度对比度、边缘检测、高斯模糊、bloom效果、运动模糊
- Linux平台上DPDK入门指南(二)
- 3D激光雷达SLAM算法学习02——3D激光雷达传感器
- 悲观锁与乐观锁的区别 和 Redis中的watch
- Gitlab安装使用及汉化配置
- 基于单片机的环境监测调节系统设计(#0516)