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

OLED显示原理

OLED(Organic Light Emitting Display,中文名有机发光显示器)是指有机半导体材料和发光材料在电场驱动下,通过载流子注入和复合导致发光的现象。其原理是用ITO透明电极和金属电极分别作为器件的阳极和阴极,在一定电压驱动下,电子和空穴分别从阴极和阳极注入到电子和空穴传输层,电子和空穴分别经过电子和空穴传输层迁移到发光层,并在发光层中相遇,形成激子并使发光分子激发,后者经过辐射弛豫而发出可见光。
上文是单个像素点发光的原理,此次使用的0.96寸OLED屏幕分辨率为128*64。
供电兼容3.3v 和5v

一、实验工具

1、芯片: STM32F103C8T6系统最小板
2、0.96寸OLED显示屏
3、IDE: MDK-Keil软件
4、烧录软件:FlyMcu
5、温湿度传感器

此次使用的0.96寸OLED显示屏商家介绍界面:
http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module

可以在以上链接中下载stm32示例程序。
OLED实物图:
Alt
Alt
引脚详情:
Alt

二、OLED显示固定数据

1、显示数据相关函数

依据商家提供的STM32示例程序,看懂下面的几个函数后,再根据自己的需求修改内容。
主要函数如下:
需要理解函数中几个参数所代表的含义。
这里给出GUI_ShowCHinese函数的参数解释内容。

x:the bebinning x coordinate of the Chinese strings
y:the bebinning y coordinate of the Chinese strings
size:the size of Chinese strings
str:the start address of the Chinese strings
mode:0-white background and black character
1-black background and white character

void OLED_Init(void);//初始化OLED
void OLED_ON(void);//唤醒OLED
void OLED_OFF(void);//OLED休眠
void OLED_Refresh_Gram(void);//更新显存到OLED
void OLED_Clear(void);//清屏
void OLED_DrawPoint(u8 x,u8 y,u8 t);//画点
void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);//填充
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode);//显示字符
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size);//显示字符串
void GUI_ShowCHinese(u8 x,u8 y,u8 hsize,u8 *str,u8 mode);//显示汉字

2、main函数

main.c

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

3、总显示函数

void TEST_MainPage(void)// 显示的内容函数,在此次修改
{
   
   	
	//GUI_ShowString(28,0,"Vers",16,1);
	GUI_ShowCHinese(28,20,16,"陈渝",1);
	//GUI_ShowString(40,32,"64X128",16,1);
	GUI_ShowString(4,48,"632007060534",16,1);
	//GUI_ShowString(4,48,"www.lcdwiki.com",16,1);
	delay_ms(1500);		
	delay_ms(1500);
}

4、取字模

OLED屏幕是以像素点的形式输出数据的,所谓字模也就是此数据在像素点上的表现形式(显示此字符的具体像素点形式)。
显示字符和字母数字,此程序中自带了常用符号的字模,但是想要显示汉字,就需要去自己在代码中添加相应汉字的字模。
这里给一个取字模的网站:
https://www.zhetao.com/fontarray.html
字模放在文件夹USER的gui.c->oledfont.h,结构体typFNT_GB16中。
Alt
编译后无错误的话,烧录到STM32芯片上。

5、实现效果如下:

Alt

三、OLED实现滑动显示数据

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(0x
<think>嗯,用户需要了解基于STM32温湿度检测毕设任务要求。首先,我得确定用户的具体需求是什么。可能他们正在准备毕业设计,需要知道整个项目的结构和关键点。需要从硬件选型、软件设计、功能模块、任务要求等方面来组织内容。 首先,硬件部分。主控芯片肯定是STM32系列,常见的有F103或者F4系列,需要解释为什么选择这些型号,比如资源丰富、成本低。然后是传感器,DHT11和DHT22是常见选择,要比较它们的精度和成本。显示部分可能用LCD1602或者OLED,通信模块可能需要ESP8266这样的WiFi模块,或者蓝牙、LoRa,根据需求选择。 接下来是软件设计,需要开发环境比如Keil或者STM32CubeIDE,驱动开发包括传感器数据读取、显示驱动、通信协议。数据处理部分可能需要滤波算法,比如滑动平均。通信协议部分,可能需要Modbus或者MQTT,特别是如果涉及物联网的话。 功能模块方面,数据采集要实时,显示要清晰,报警阈值设定,数据存储和传输,还有低功耗设计如果用到电池的话。任务要求分基本和高级,基本包括硬件搭建、驱动开发、实时显示和报警,高级可能有无线传输、上位机、数据分析、低功耗优化。 测试与验证部分,需要分模块测试和整体测试,比如传感器数据准确性,通信稳定性,报警功能是否正常。文档编写也是毕设的重要部分,开题报告、设计文档、测试报告、论文和答辩材料。 可能用户还需要一些扩展方向,比如结合物联网平台,AI预测,或者多节点组网。需要提醒他们注意硬件连接的稳定性,软件时序问题,电磁干扰,还有代码优化。 需要确保回答结构清晰,分点说明,帮助用户一步步理解整个毕设的构成。可能还需要建议他们先确定具体需求,再选型,分阶段开发,多测试。这样他们才能顺利完成项目。</think>好的,我将以清晰的框架为你梳理基于STM32温湿度检测系统的毕设任务要求,包含硬件设计、软件开发及功能实现的关键要点: --- ### 一、核心任务目标 设计并实现一个基于STM32微控制器的温湿度检测系统,要求具备**实时数据采集、显示、存储及报警功能**,可拓展无线通信模块(如WiFi/蓝牙)。 --- ### 二、硬件设计要求 #### 1. 主控芯片选型 - **推荐型号**:STM32F103C8T6(性价比高)或STM32F407(高性能) - **要求**:需说明选型依据(如ADC精度、GPIO数量、通信接口等) #### 2. 传感器模块 - **基础方案**:DHT11(低成本,±5%湿度精度) - **进阶方案**:SHT30(±2%湿度精度,I²C接口)或DS18B20(单总线数字温度传感器) - **电路设计**:需提供传感器接口电路原理图(含上拉电阻等) #### 3. 显示模块 - **可选方案**: - LCD1602(字符型液晶) - OLED 0.96(图形显示,I²C接口) - TFT触摸(人机交互进阶) #### 4. 通信模块(可选) - **无线传输**:ESP8266(WiFi)、HC-05(蓝牙)、LoRa模块 - **有线通信**:RS485(工业场景)、USB转串口 #### 5. 报警模块 - **实现方式**:LED指示灯 + 蜂鸣器,或通过通信模块发送报警信息 --- ### 三、软件设计要求 #### 1. 开发环境 - **必需工具**:Keil MDK/STM32CubeIDE + HAL库/标准库 - **调试工具**:ST-Link调试器 + Serial Wire Viewer(SWD) #### 2. 关键驱动开发 - **传感器驱动**:实现单总线(DHT11)或I²C(SHT30)协议解析 - **显示驱动**:编写LCD/OLED显示程序(支持中文/图形) - **通信协议**:UART/SPI接口配置,MQTT/HTTP协议(物联网方向) #### 3. 数据处理 - **滤波算法**:滑动平均滤波、中值滤波(提升数据稳定性) - **单位转换**:温度(℃/℉切换)、湿度(%RH校准) #### 4. 功能逻辑 ```c // 伪代码示例 while(1) { 读取传感器数据(); if(温度 > 阈值) 触发报警(); 更新显示屏(); 通过WiFi上传云平台(); 进入低功耗模式(); // 电池供电场景 } ``` --- ### 四、功能实现要求 #### 1. 基础功能(必选) - 实时采集温湿度(采样频率≥1Hz) - LCD/OLED本地显示(含时间戳) - 超限声光报警(阈值可配置) #### 2. 进阶功能(加分项) - 数据存储:SD卡记录历史数据(FATFS文件系统) - 无线通信:对接阿里云/ThingsBoard物联网平台 - 低功耗设计:待机电流<10μA(纽扣电池供电) - 上位机开发:Qt/C#编写数据可视化界面 --- ### 五、测试与验证标准 1. **精度测试**:与商用温湿度计对比误差(温度±0.5℃,湿度±3%RH) 2. **稳定性测试**:连续工作24小时无数据丢失 3. **通信测试**:无线传输距离与丢包率(如WiFi在30米内丢包<1%) 4. **压力测试**:高低温环境(-10℃~50℃)下系统正常运行 --- ### 六、文档要求 1. **开题报告**:研究背景、技术方案对比 2. **设计文档**:硬件原理图、软件流程图、PCB设计图 3. **测试报告**:数据表格、曲线对比图 4. **论文撰写**:重点突出创新点(如自研滤波算法、低功耗优化) --- ### 七、扩展方向建议 1. 结合微信小程序实现远程监控 2. 增加AI预测功能(如LSTM预测温湿度趋势) 3. 多节点组网(ZigBee/Modbus总线) --- ### 八、常见问题提醒 1. **硬件层面**:DHT11时序严格,注意延时函数精度 2. **软件层面**:避免阻塞式编程,建议使用RTOS任务调度 3. **干扰处理**:传感器远离MCU高频电路,电源添加滤波电容 建议按照**需求分析→方案设计→模块开发→系统联调**的流程推进,重点关注传感器数据稳定性和系统可靠性。需要具体代码示例或电路图细节可进一步沟通!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值