STM32F103OLED屏显

一、题目要求

(1))显示自己的学号和姓名;

(2) 显示AHT20的温度和湿度;

(3) 上下或左右的滑动显示长字符。

二、STM32+OLED显示个人学号姓名

1、文字取模
使用取字模软件PCtoLCD2002,打开软件之后按下图进行设置
在这里插入图片描述
在这里插入图片描述
2、撰写代码
1、存储文字
在这里插入图片描述
2、main.c主函数

#include "stm32f10x.h"      
#include "Delay.h"
#include "OLED.h"
#include "AHT20-21_DEMO_V1_3.h"
#include <stdio.h>

int main(void)
{
	
		Init_I2C_Sensor_Port();//初始化SDA,SCL的IO口的函数
		uint32_t CT_data[2];
		volatile int  c1,t1;
		Delay_1ms(500);
		OLED_Init();//初始化OLED
		if((AHT20_Read_Status()&0x18)!=0x18)
		{
			AHT20_Start_Init(); //重新初始化寄存器
			Delay_1ms(10);
		}
		OLED_ShowCN(2,1,0);//第2行第1列调用字模库第0个字 
		OLED_ShowCN(2,2,1); //第2行第2列调用字模库第1个字
		OLED_ShowCN(2,3,2);//第2行第3列调用字模库第2个字
		OLED_ShowString(3,1,"111111111111"); //第3行第1列显示字符串,学号
		while(1)
		{
	}
}

3、效果展示
在这里插入图片描述

三、STM32+OLED显示AHT20温湿度

1、点阵字模
在这里插入图片描述
2、温湿度可以用上次的AHT20的工程,并将串口发送改为OLED显示即可。
3、主函数main.c代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AHT20-21_DEMO_V1_3.h"
#include <stdio.h>

int main(void)
{
	
		Init_I2C_Sensor_Port();//初始化SDA,SCL的IO口的函数
		uint32_t CT_data[2];
		volatile int  c1,t1;
		Delay_1ms(500);
		OLED_Init();//初始化OLED
		if((AHT20_Read_Status()&0x18)!=0x18)
		{
			AHT20_Start_Init(); //重新初始化寄存器
			Delay_1ms(10);
		}
		OLED_ShowCN(2,1,4);
		OLED_ShowCN(2,2,5);
		OLED_ShowString(2,6,":"); 
		OLED_ShowCN(3,1,3);
		OLED_ShowCN(3,2,5);
		OLED_ShowString(3,6,":");
		while(1)
		
		{				AHT20_Read_CTdata(CT_data);       
				AHT20_Read_CTdata_crc(CT_data);   
		
				while(CT_data[0]==0x00&&CT_data[1]==0x00) 
				{
					AHT20_Read_CTdata_crc(CT_data);//crc校验后,读取AHT20的温度和湿度数据
				}
				c1 = CT_data[0]*100*10/1024/1024;  
				t1 = CT_data[1]*200*10/1024/1024-500;
				
				下一步客户处理显示数据,我们这里用两个字符串来表示计算得到的值
				char str1[5];
				char str2[5];
				sprintf(str1,"%.1f",c1/10.0);
				sprintf(str2,"%.1f",t1/10.0);
				OLED_ShowString(2,7,str1);
				OLED_ShowString(3,7,str2);
				Delay_1ms(2000);

	}

}

4、效果展示

四、STM32+OLED上下或左右的滑动显示长字符

1、点阵字模
在这里插入图片描述

1、滚动效果代码

				OLED_WriteCommand(0x2E); //关闭滚动
				OLED_WriteCommand(0x26); //向右滚动,27则向左
				OLED_WriteCommand(0x00); //虚拟字节
				OLED_WriteCommand(0x00); //起始页 这里为0
				OLED_WriteCommand(0x07); //滚动速度
				OLED_WriteCommand(0x03); //终止页 这里为3,也就是之后的姓名,学号
				OLED_WriteCommand(0x00); //虚拟字节
				OLED_WriteCommand(0xFF); //虚拟字节
				OLED_WriteCommand(0x2F); //开启滚动

2、主函数main.c文件

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "AHT20-21_DEMO_V1_3.h"
#include <stdio.h>

int main(void)
{
	
		Init_I2C_Sensor_Port();//初始化SDA,SCL的IO口的函数
		uint32_t CT_data[2];
		volatile int  c1,t1;
		Delay_1ms(500);
		OLED_Init();//初始化OLED
		if((AHT20_Read_Status()&0x18)!=0x18)
		{
			AHT20_Start_Init(); //重新初始化寄存器
			Delay_1ms(10);
		}
		OLED_ShowCN(2,1,6);//爱
		OLED_ShowCN(2,2,7);//拼
		OLED_ShowCN(2,3,8);//才
		OLED_ShowCN(2,4,9);//会
		OLED_ShowCN(2,5,10);//赢
		while(1)
		{	
				OLED_WriteCommand(0x2E); 
				OLED_WriteCommand(0x26); 
				OLED_WriteCommand(0x00); 
				OLED_WriteCommand(0x00); 
				OLED_WriteCommand(0x07); 
				OLED_WriteCommand(0x07); 
				OLED_WriteCommand(0x00); 
				OLED_WriteCommand(0xFF); 
				OLED_WriteCommand(0x2F); 
	}

}

3、效果展示

三、总结

通过本次实验,能较为熟练地使用AHT20模块和OLED模块,实现了显示温湿度数据和学号姓名的滚动显示,OLED实验较为有趣,今后使用其他模块实验,可用于显示调试。

四、参考案例

https://blog.csdn.net/cjhz2333/article/details/128005612

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式STM32F103项目实例是通过使用STM32F103C8T6芯片来实现OLED示和汉字点阵编码的原理。可以使用STM32F103的SPI或IIC接口来实现示学号和姓名,示AHT20的温湿度,并实现滑动示长字符的功能。\[2\] 在实际操作中,需要在oledfont.h文件中添加文字字模,并在test.c文件中对函数Test_MainPage进行修改,以实现示梅花香自苦寒来的汉字。\[1\] 在项目实操过程中,可能会遇到一些挑战。例如,姓名与学号的示可能会比较顺利,滚动字幕的实现也不太难,但示AHT20的温度和湿度可能会遇到一些问题。这可能是因为电压需要给予5V,并且可能会出现接触不良导致无法采集数据的情况。通过反复调试代码、查阅资料和细心操作,最终可以成功实现功能。\[2\] 嵌入式开发是一个具有挑战性的过程,但当最终成功时,会感到内心的喜悦。这个过程可能会让人热泪盈眶,但也充满了成长的喜悦。\[2\] 在实现嵌入式STM32F103项目实例时,需要学习和理解STM32F103系列芯片的地址映射和寄存器映射原理,以及GPIO端口的初始化设置步骤,包括时钟配置、输入输出模式设置和最大速率设置。可以参考网上的资料来加深理解。\[3\] 希望这个项目实例能够给你带来启发和帮助,祝你在嵌入式开发的道路上取得更多的成就!\[2\] #### 引用[.reference_title] - *1* *2* [【嵌入式系统开发18】理解OLED和汉字点阵编码原理,STM32F103实现OLED实例](https://blog.csdn.net/qq_52199251/article/details/127658793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【嵌入式】STM32F103寄存器方式点亮LED流水灯](https://blog.csdn.net/qq_57611233/article/details/120923883)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值