基于STM32的DHT11温湿度控制系统仿真设计(仿真+程序+报告+讲解)
仿真图proteus 8.9
程序编译器:keil 5
编程语言:C语言
设计编号:C0076
基于STM32的DHT11温湿度控制系统仿真设计(仿真+程序+报告+讲解)
结合实际情况,基于STM32F103单片机设计一个温湿度采集控制系统。该系统应满足的功能要求为:
1、以STM32为最小系统电路进行连接,用液晶显示屏显示温度、湿度、温度阈值,湿度阈值。
2、用DHT11温湿度传感器进行温湿度的测量。
3、可以通过按键可以设置温室度阈值。
4、当温度达到设置的阈值时,风扇进行转动,由此来达到散热降温的目的。当湿度不足设定的阈值时,加湿器开始工作。
主要硬件设备:STM32F103单片机、DHT11温湿度模块、按键、LCD1602液晶屏幕。
以下为本设计资料展示:
整体设计方案
该系统为温湿度采集控制系统,其主要的功能有:以stm32为最小系统电路进行连接,用液晶显示屏显示温度、湿度数据。同时用温湿度传感器进行温湿度的采集与测量。温湿度采集器可以通过按钮进行温湿度测量的转化。通过按键可以设置阈值。当温度达到报警的阈值时散热继电器开始工作,带动发动机进行转动,由此来达到散热的目的。当湿度达到一定的阈值时,加湿继电器开始工作,这里以LED灯亮代表工作。该系统就是采集室内温湿度,当不满足要求时自动进行室内温度、湿度的调整。
测试如下所示:
开始仿真后LCD1602第一行T显示检测的温度值,H显示湿度值。第二行的表示阈值。湿度低于阈值,加湿器开始工作。温度高于阈值,风扇启动,用于降温,可以通过按键调整阈值。


main函数
#include "main.h"
/****全局变量******************************************/
char lcd_dat1[20];//液晶第一行
char lcd_dat2[20];//液晶第二行
uint16_t temp_dat;//温度变量
uint16_t hum_dat;//湿度变量
uint16_t set_temp_dat=27;//设置温度变量
uint16_t set_hum_dat=50;//设置湿度变量
uint8_t setnum;//设置变量
/**********函数申明****************************************/
void ADC1_Init(void);
uint16_t Read_Adc1(uint8_t ch);//通道采样1次
uint16_t light_intensity(uint32_t dat);//光强函数;
void KEY_IO_Init(void);//按键初始化
void EXTIx_Init(void);//外部中断
void Relay_IO_Init(void); //控制继电器引脚io初始化
void EXTI0_IRQHandler(void);
void EXTI1_IRQHandler(void);
void EXTI2_IRQHandler(void);
/*****************************************
main函数
*****************************************/
int main(void){
uint8_t count_i;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断向量分组 2
//按键和继电器引脚初始化
KEY_IO_Init();
Relay_IO_Init();
EXTIx_Init();//外部中断初始化
LCD_init(); //LCD1602初始化
LCD_clr();//LCD清屏幕
DHT11_Init();//温湿度传感器初始化
ADC1_Init();//adc采样初始化 用于ad类型传感器
while(1){
count_i++;
//if(count_i>50)
{
//传感器数据采集
if(DHT11_ReadData())//温湿度采集
{
temp_dat=DHT11_GetTem();
temp_dat=temp_dat/256;
delay_ms(10);
hum_dat=DHT11_GetHum();
hum_dat=hum_dat/256;
}
//液晶显示:T温度 H湿度,
sprintf(lcd_dat1,"T:%d H:%d \n",temp_dat,hum_dat);//转换温度,湿度
LCD_prints(0,0,lcd_dat1);//液晶显示第一行
if(setnum==0)
{
sprintf(lcd_dat2," %d %d \n",set_temp_dat,set_hum_dat);///转换设置温度,设置湿度
LCD_prints(0,1,lcd_dat2);//液晶显示第二行
}
if(setnum == 1)
{
sprintf(lcd_dat2," %d^ %d \n",set_temp_dat,set_hum_dat);///转换设置温度,设置湿度
LCD_prints(0,1,lcd_dat2);//液晶显示第二行
}
if(setnum == 2)
{
sprintf(lcd_dat2," %d %d^ \n",set_temp_dat,set_hum_dat);///转换设置温度,设置湿度
LCD_prints(0,1,lcd_dat2);//液晶显示第二行
}
if(setnum == 3)
{
sprintf(lcd_dat2," %d %d ^\n",set_temp_dat,set_hum_dat);///转换设置温度,设置湿度
LCD_prints(0,1,lcd_dat2);//液晶显示第二行
}
}
if(temp_dat>set_temp_dat)//比较温度
Relay1=1;
else
Relay1=0;
if(hum_dat<set_hum_dat)//比较湿度
Relay2=1;
else
Relay2=0;
}
}
部分内容:
该系统主要由stm32f103r6作为单片机最小系统、由DHTT1温湿度传感器、LM016L液晶显示屏、继电器、电机、LED灯、按键等硬件组成。
主控芯片采用STM32F103C6单片机,其管脚图下图所示。

图3.1 STM32F103C6引脚图
STM32F103C6是STM32系列单片机的典型产品,STM32单片机有很多个系列,其中包括基本型、USB基本型、增强型以及互联型几大系列,这写系列的STM32单片机都是具有性能高、功耗低、成本低等特点。其内部结构图如图 3.2所示:

图 3.2 STM32内部结构图
本课题采用的是STM32F103C6单片机芯片,这是是一款ARM M3内核的增强型微控制器,这款内核的工作频率是能够达到72MHz的,它拥有着128K字节的闪存和极其丰富的外设,如GPIO口,串口,定时器,中断,数模转换,实时时钟,看门狗,SPI,IIC,CAN总线等部分组成。STM32F103系列单片机的性能在同一个类别的产品中是最高的,它能够在-40°C -85°C温度下正常地进行工作,工作的电压范围为2V-3.6V,具有低功耗的节能工作模式,闪存存储器的容量为64K字节。
电源电路:本课题电源由USB接口提供5V直流电。
复位电路:按键SW1接入高电平到STM32内部NRST引脚,NRST上脉冲只要持续大于300ns的即可触发单片机复位。
晶振电路:外接8M晶振,通过倍频产生最高72MHz工作频率。
下载电路:本课题选用SWD下载电路,只需要引出SWDIO、SWCLK、VCC3.3V、GND,在MDK下载选项中选择SWD即可下载程序到单片机上。

下载链接见视频

导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n
我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat
我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题: