仿真圖proteus 8.9
程序編譯器:keil 5
編程語言:C語言
設(shè)計編號:C0076
演示視頻
基于STM32的DHT11溫濕度控制系統(tǒng)仿真設(shè)計(仿真+程序+報告+講解)
1.主要功能
結(jié)合實際情況,基于STM32F103單片機設(shè)計一個溫濕度采集控制系統(tǒng)。該系統(tǒng)應(yīng)滿足的功能要求為:
1、以STM32為最小系統(tǒng)電路進行連接,用液晶顯示屏顯示溫度、濕度、溫度閾值,濕度閾值。
2、用DHT11溫濕度傳感器進行溫濕度的測量。
3、可以通過按鍵可以設(shè)置溫室度閾值。
4、當溫度達到設(shè)置的閾值時,風扇進行轉(zhuǎn)動,由此來達到散熱降溫的目的。當濕度不足設(shè)定的閾值時,加濕器開始工作。
主要硬件設(shè)備:STM32F103單片機、DHT11溫濕度模塊、按鍵、LCD1602液晶屏幕。
以下為本設(shè)計資料展示:
2.仿真
整體設(shè)計方案
該系統(tǒng)為溫濕度采集控制系統(tǒng),其主要的功能有:以stm32為最小系統(tǒng)電路進行連接,用液晶顯示屏顯示溫度、濕度數(shù)據(jù)。同時用溫濕度傳感器進行溫濕度的采集與測量。溫濕度采集器可以通過按鈕進行溫濕度測量的轉(zhuǎn)化。通過按鍵可以設(shè)置閾值。當溫度達到報警的閾值時散熱繼電器開始工作,帶動發(fā)動機進行轉(zhuǎn)動,由此來達到散熱的目的。當濕度達到一定的閾值時,加濕繼電器開始工作,這里以LED燈亮代表工作。該系統(tǒng)就是采集室內(nèi)溫濕度,當不滿足要求時自動進行室內(nèi)溫度、濕度的調(diào)整。
測試如下所示:
開始仿真后LCD1602第一行T顯示檢測的溫度值,H顯示濕度值。第二行的表示閾值。濕度低于閾值,加濕器開始工作。溫度高于閾值,風扇啟動,用于降溫,可以通過按鍵調(diào)整閾值。
3. 程序
main函數(shù)
#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;//設(shè)置溫度變量
uint16_t set_hum_dat=50;//設(shè)置濕度變量
uint8_t setnum;//設(shè)置變量
/**********函數(shù)申明****************************************/
void ADC1_Init(void);
uint16_t Read_Adc1(uint8_t ch);//通道采樣1次
uint16_t light_intensity(uint32_t dat);//光強函數(shù);
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函數(shù)
*****************************************/
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)
{
//傳感器數(shù)據(jù)采集
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);//轉(zhuǎn)換溫度,濕度
LCD_prints(0,0,lcd_dat1);//液晶顯示第一行
if(setnum==0)
{
sprintf(lcd_dat2," %d %d n",set_temp_dat,set_hum_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_prints(0,1,lcd_dat2);//液晶顯示第二行
}
if(setnum == 1)
{
sprintf(lcd_dat2," %d^ %d n",set_temp_dat,set_hum_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_prints(0,1,lcd_dat2);//液晶顯示第二行
}
if(setnum == 2)
{
sprintf(lcd_dat2," %d %d^ n",set_temp_dat,set_hum_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
LCD_prints(0,1,lcd_dat2);//液晶顯示第二行
}
if(setnum == 3)
{
sprintf(lcd_dat2," %d %d ^n",set_temp_dat,set_hum_dat);///轉(zhuǎn)換設(shè)置溫度,設(shè)置濕度
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;
}
}
4. 設(shè)計報告
部分內(nèi)容:
該系統(tǒng)主要由stm32f103r6作為單片機最小系統(tǒng)、由DHTT1溫濕度傳感器、LM016L液晶顯示屏、繼電器、電機、LED燈、按鍵等硬件組成。
1主控制器選擇
主控芯片采用STM32F103C6單片機,其管腳圖下圖所示。
圖3.1 STM32F103C6引腳圖
STM32F103C6是STM32系列單片機的典型產(chǎn)品,STM32單片機有很多個系列,其中包括基本型、USB基本型、增強型以及互聯(lián)型幾大系列,這寫系列的STM32單片機都是具有性能高、功耗低、成本低等特點。其內(nèi)部結(jié)構(gòu)圖如圖 3.2所示:
圖 3.2 STM32內(nèi)部結(jié)構(gòu)圖
本課題采用的是STM32F103C6單片機芯片,這是是一款A(yù)RM M3內(nèi)核的增強型微控制器,這款內(nèi)核的工作頻率是能夠達到72MHz的,它擁有著128K字節(jié)的閃存和極其豐富的外設(shè),如GPIO口,串口,定時器,中斷,數(shù)模轉(zhuǎn)換,實時時鐘,看門狗,SPI,IIC,CAN總線等部分組成。STM32F103系列單片機的性能在同一個類別的產(chǎn)品中是最高的,它能夠在-40°C -85°C溫度下正常地進行工作,工作的電壓范圍為2V-3.6V,具有低功耗的節(jié)能工作模式,閃存存儲器的容量為64K字節(jié)。
復(fù)位電路:按鍵SW1接入高電平到STM32內(nèi)部NRST引腳,NRST上脈沖只要持續(xù)大于300ns的即可觸發(fā)單片機復(fù)位。
晶振電路:外接8M晶振,通過倍頻產(chǎn)生最高72MHz工作頻率。
下載電路:本課題選用SWD下載電路,只需要引出SWDIO、SWCLK、VCC3.3V、GND,在MDK下載選項中選擇SWD即可下載程序到單片機上。
5.設(shè)計內(nèi)容 百度云網(wǎng)盤下載鏈接
下載鏈接見視頻