STM32 Proteus仿真OLED温度湿度DHT11控制系统-0006

该文介绍了使用STM32F103R6在Proteus环境中建立的一个OLED显示、DHT11传感器监测、多按键设定和继电器控制的温湿度控制系统。系统能根据设定的目标值自动调节加热、制冷、加湿和干燥功能,并通过OLED显示当前和目标温湿度。在B站有详细功能视频供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32 Proteus仿真OLED温度湿度DHT11控制系统-0006

Proteus仿真小实验:

STM32 Proteus仿真OLED温度湿度DHT11控制系统-0006

功能:

硬件组成:STM32F103R6单片机 +OLED显示器+DHT11温度湿度+多个按键+4个继电器对应(加热、制冷、加湿、干燥)+24c02存储器

1.通过DHT11获取温度和湿度。

2.通过按键设定温度湿度目标值,温度低于目标值加热、高于制冷;湿度低于目标加湿、高于干燥。

3.个继电器对应(加热、制冷、加湿、干燥)。

4.OLED显示温度湿度 温度湿度目标值。通过按键配合显示器设置目标值。

有功能视频哦:

可以哔哩哔哩B站搜索UP主“单片机仿真汇”。在其空间中搜索关键词“OLED温度湿度”即可找到对应详细功能视频和介绍。

电路图:

部分源代码:

//初始化EEPROM

I2C_INIT();

//读取保存的设定值

duqusheding();

//初始化控制

PBout(13)=1;

PBout(13)=1;

PBout(14)=1;

PBout(15)=1;

PCout(8)=1;

PCout(9)=1;

PCout(10)=1;

PCout(11)=0;//一直开启空气循环风扇

PBout(5)=1;

//OLED初始化

UG_OLED_Init();

NVICConfig();

//RCC时钟开启

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

//定时器配置

TimerConfig(TIM3,10);//10mS定时器

TimerSW(TIM3, ENABLE);

while(1)

{

//读取温度和湿度

DHT11_receive(&dangqianshidu,&dangqianwendu);

//显示刷新

xianshishuaxing(dangqianwendu,dangqianshidu,mubiaowendu,mubiaoshidu,mode);

//温度湿度的控制以及报警

//若温度高于设定温度1度以上

if( dangqianwendu>(mubiaowendu+1) )

{

//则驱动温度循环风扇和制冷

PBout(13)=0; //开启温度循环

PBout(15)=0; //开启制冷

PBout(14)=1; //关闭加热

}

### ProteusOLED 仿真的使用教程及相关资料 在 Proteus 软件中仿真 OLED 显示器通常涉及硬件连接设置以及软件驱动程序的编写。以下是关于如何在 Proteus 中完成基于 STM32 的光敏电阻检测并将其结果显示到 OLED 屏幕上的详细说明。 #### 硬件连接 为了实现 STM32OLED SSD1306 的通信,可以采用 I2C 协议进行数据传输。具体连接方式如下: | **信号名称** | **STM32 Pin** | **OLED Pin** | |--------------|---------------------|--------------| | SCL | PB6 (I2C1_SCL) | SCL | | SDA | PB7 (I2C1_SDA) | SDA | | VCC | +3.3V | VCC | | GND | Ground | GND | 上述表格中的引脚分配适用于 STM32F103C8T6 微控制器[^1]。如果需要更改微控制器型号,则可以通过修改设备名称来适配不同的芯片。 #### 软件设计 对于 STM32 平台下的 HAL 库开发环境而言,初始化 I2C 接口之后还需要加载针对 SSD1306 驱动的支持文件。下面给出一段简单的代码片段用于启动 OLED 设备并通过它打印字符串信息。 ```c #include "stm32f1xx_hal.h" #include "ssd1306.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_I2C1_Init(void); int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); ssd1306_Init(); // 初始化SSD1306显示屏 while (1){ ssd1306_Fill(SSD1306_BLACK); // 清屏操作 ssd1306_SetCursor(0, 0); // 设置光标位置 ssd1306_WriteString("Hello World", Font_11x18, SSD1306_WHITE); // 输出文字 ssd1306_UpdateScreen(); // 刷新屏幕内容 HAL_Delay(1000); // 延迟一秒再重复执行循环体内的指令序列 } } ``` 以上 C 语言源码展示了基本框架结构,其中包含了必要的头文件声明、全局函数定义以及主函数逻辑流程控制等内容[^2]。注意实际项目可能还会涉及到更多细节部分比如错误处理机制或者性能优化措施等方面考虑因素未在此处体现出来。 #### 示例电路图 虽然无法直接提供具体的图片形式展示完整的PCB布局方案,但是可以根据前面提到过的电气接口关系绘制简易版原理框图作为参考依据之一: ![proteus_oled](https://example.com/proteus-oled-diagram.png) 该链接指向一张假设存在的在线资源地址,实际上应当由用户自行查阅官方文档获取权威版本号匹配正确的元件封装样式等等重要参数设定指南. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值