STM32之OLED屏显示数据


一、SPI

SPI(Serial Peripheral Interface)就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。


二、代码编写

1. 显示中文

通过提取子模软件提取对应汉字的点阵,点阵大小为16*16:
在这里插入图片描述

在这里插入图片描述

显示中文:

GUI_ShowCHinese(10,0,16,"重庆交通大学",1);

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

3. 显示温湿度

stm32基于I2C协议用AHT20采集温湿度数据基础上显示温湿度。

  • 读取温湿度
AHT20_Read_CTdata(CT_data);;  //crc校验后,读取AHT20的温度和湿度数据 
c1 = CT_data[0]*1000/1024/1024;  //计算得到湿度值c1(放大了10倍)
t1 = CT_data[1]*2000/1024/1024-500;//计算得到温度值t1(放大了10倍)

//转为字符串易于显示
temp[0]=t1/100+'0';
temp[1]=(t1/10)%10+'0';
temp[2]='.';
temp[3]=t1%10+'0';
temp[4]='\0';
		
hum[0]=c1/100+'0';
hum[1]=(c1/10)%10+'0';
hum[2]='.';
hum[3]=c1%10+'0';
hum[4]=32;
hum[5]='%';
hum[6]='\0';

  • 显示温湿度
//显示温度
GUI_ShowCHinese(15,28,16,"温度",1);
GUI_ShowString(47,28,":",16,1);
GUI_ShowString(62,28,temp,16,1);
GUI_ShowCHinese(96,28,16,"℃",1);

//显示湿度
GUI_ShowCHinese(15,48,16,"湿度",1);
GUI_ShowString(47,48,":",16,1);
GUI_ShowString(62,48,hum,16,1);

4. 连线

在这里插入图片描述

5. 运行结果

请添加图片描述
请添加图片描述


三、总结

使用OLED可视化数据十分方便。


参考

基于STM32的0.96寸OLED显示屏显示数据

STM32F103基于spi实现OLED显示

版权声明:本文为CSDN博主「Baker_Streets」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46628481/article/details/121454829


一、SPI

SPI(Serial Peripheral Interface)就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。


二、代码编写

1. 显示中文

通过提取子模软件提取对应汉字的点阵,点阵大小为16*16:
在这里插入图片描述

在这里插入图片描述

显示中文:

GUI_ShowCHinese(10,0,16,"重庆交通大学",1);

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

3. 显示温湿度

stm32基于I2C协议用AHT20采集温湿度数据基础上显示温湿度。

  • 读取温湿度
AHT20_Read_CTdata(CT_data);;  //crc校验后,读取AHT20的温度和湿度数据 
c1 = CT_data[0]*1000/1024/1024;  //计算得到湿度值c1(放大了10倍)
t1 = CT_data[1]*2000/1024/1024-500;//计算得到温度值t1(放大了10倍)

//转为字符串易于显示
temp[0]=t1/100+'0';
temp[1]=(t1/10)%10+'0';
temp[2]='.';
temp[3]=t1%10+'0';
temp[4]='\0';
		
hum[0]=c1/100+'0';
hum[1]=(c1/10)%10+'0';
hum[2]='.';
hum[3]=c1%10+'0';
hum[4]=32;
hum[5]='%';
hum[6]='\0';

  • 显示温湿度
//显示温度
GUI_ShowCHinese(15,28,16,"温度",1);
GUI_ShowString(47,28,":",16,1);
GUI_ShowString(62,28,temp,16,1);
GUI_ShowCHinese(96,28,16,"℃",1);

//显示湿度
GUI_ShowCHinese(15,48,16,"湿度",1);
GUI_ShowString(47,48,":",16,1);
GUI_ShowString(62,48,hum,16,1);

4. 连线

在这里插入图片描述

5. 运行结果

请添加图片描述
请添加图片描述


三、总结

使用OLED可视化数据十分方便。


参考

基于STM32的0.96寸OLED显示屏显示数据

STM32F103基于spi实现OLED显示

版权声明:本文为CSDN博主「Baker_Streets」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46628481/article/details/121454829

生成海报
点赞 0

Baker_Streets

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于STM32的指纹密码锁

设计简介: 本设计是基于单片机的指纹密码锁,主要实现以下功能: 矩阵按键输入密码,并通过按键显示*号可通过按键或手机开门密码可通过按键进行开门可通过蓝牙模块连接手机进行开门可通过指纹进

定时器触发STM32 ADC的采样转换示例

开发板:STM32F446 Nucleo开发板IDE:  keil MDK初始化配置工具:stm32cubeMx例程内容:通过定时器触发ADC规则通道及注入通道的模数转换工作。下面基于STM32CubeMx进行些必要

STM32串口发送接收数据

1.串口通信 我用的32是stm32f10x最小系统没有UART4和UART5 USART : 通用同步异步收发器 UART : 通用异步收发器 nRTS : 请求发送 nCTS : 请求接收 区别:USART指单片机的一个IO端

TCRT5000循迹模块原理及应用

前言 本文将讲述TCRT5000循迹模块的原理及应用。本文应用于STM32,对于使用循迹模块的你有一定的帮助。 以下是本篇文章的正文内容 一、TCRT5000循迹模块介绍 TCRT5000就是一个红外发射和接收器&#xff0