加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機DHT11溫濕度控制系統(tǒng)仿真設(shè)計( proteus仿真+程序+原理圖+報告+講解視頻)

09/13 13:16
3586
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 1.主要功能:
    • 2.仿真
    • 3. 程序代碼
    • 4. 原理圖
    • 元器件清單
    • 5. 設(shè)計報告
    • 6. 設(shè)計資料內(nèi)容清單&下載鏈接
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

51單片機DHT11溫濕度控制系統(tǒng)仿真設(shè)計( proteus仿真+程序+原理圖+報告+講解視頻)

仿真圖proteus8.9及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0044

1.主要功能:

運用所學(xué)知識,制作一個基于51單片機的溫濕度控制器proteus仿真設(shè)計

1、按鍵調(diào)溫濕度上下限數(shù)值的,溫濕度不在上下限范圍內(nèi)時對應(yīng)的電路工作,系統(tǒng)通過繼電器模擬降溫模塊,升溫模塊,除濕模塊,加濕模塊。實現(xiàn)溫濕度自動控制。

2、系統(tǒng)采用DHT11傳感器。

3、使用LCD1602顯示當(dāng)前溫濕度和設(shè)置值

4、 默認(rèn)溫度下限值20℃,溫度上限值30℃。濕度下限值30%,濕度上限值80%。

需注意仿真中51單片機芯片是通用的,AT89C51,AT89C52都是51單片機的具體型號,內(nèi)核是兼容的。原理圖不變情況下,無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。

以下為本設(shè)計資料展示圖:

2.仿真

開始仿真

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602顯示溫度和濕度。

img

仿真中通過按鍵調(diào)整DHT11溫濕度模塊的值改變顯示數(shù)值。

img

img上下箭頭用于改變溫度/濕度的值。下箭頭調(diào)低數(shù)值,上箭頭調(diào)高數(shù)值。img通過這個箭頭改變調(diào)整的值是溫度還是濕度。

img改圖標(biāo)顯示的是濕度和溫度的值,濕度的值在第一行,溫度的值在第二行。

開始仿真后,按下設(shè)置/切換按鍵調(diào)整上下閾值,默認(rèn)溫度下限值20℃,溫度上限值30℃。濕度下限值30%,濕度上限值80%。

img

開始仿真后,調(diào)整濕度超過濕度上限閾值80%后,超過濕度上限的值,除濕模塊開始工作,紅色指示燈亮。

img

開始仿真后,調(diào)整濕度低于濕度下限閾值30%后,加濕模塊開始工作,紅色指示燈亮。

img

開始仿真后,調(diào)整溫度超過溫度上限閾值30℃后,降溫模塊開始工作,紅色指示燈亮。

img

開始仿真后,調(diào)整溫度低于溫度下限閾值20℃后,升模塊開始工作,紅色指示燈亮。

img

3. 程序代碼

使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報告理解代碼含義。

img
主程序代碼

#include "reg51.h"
#include "lcd1602.h"
#include "DHT11.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;//按鈕
sbit k2=P1^1;
sbit k3=P1^2;
sbit out1=P1^3;//輸出控制
sbit out2=P1^4;
sbit out3=P1^5;
sbit out4=P1^6;

uchar time=0,mode=0;//系統(tǒng)變量
uchar disp1[]="00 ";
uchar lim1=20,lim2=30,lim3=30,lim4=80;//閥值

void main()//主函數(shù)
{
	init_1602();
	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打開定時器0中斷允許
	EA=1;//打開總中斷
	TR0=1;//打開定時器
	while(1)
	{
		if(!k1)//設(shè)置
		{
			if(mode<4)
				mode++;
			else
				mode=0;
			write_com(1);
			while(!k1);
		} 
		if(!k2)//加
		{
			switch(mode)
			{
				case 1:
					if(lim1<lim2)
						lim1++;
					break;
				case 2:
					if(lim2<99)
						lim2++;
					break;
				case 3:
					if(lim3<lim4)
						lim3++;
					break;
				case 4:
					if(lim4<99)
						lim4++;
			}
			while(!k2);
		}
		if(!k3)//減
		{
			switch(mode)
			{
				case 1:
					if(lim1>0)
						lim1--;
					break;
				case 2:
					if(lim2>lim1)
						lim2--;
					break;
				case 3:
					if(lim3>0)
						lim3--;
					break;
				case 4:
					if(lim4>lim3)
						lim4--;
			}
			while(!k3);
		}
	}
}
//定時器中斷
void Timer0() interrupt 1
{
	if(time<10)//0.5s
		time++;
	else
	{
		time=0;
		dht11_recive();//測量溫濕度
		if(dht11_dat[2]<lim1)//加熱
			out2=0;
		else
			out2=1;
	   	if(dht11_dat[2]>lim2)//散熱
			out1=0;
		else
			out1=1;
		if(dht11_dat[0]<lim3)//加濕
			out4=0;
		else
			out4=1;
	   	if(dht11_dat[0]>lim4)//除濕
			out3=0;
		else
			out3=1;
		//顯示
		write_com(0x0c);
		if(mode==0)//正常模式
		{
			disp1[0]=dht11_dat[2]/10+0x30;
			disp1[1]=dht11_dat[2]%10+0x30;
			disp1[2]='C';
			write_string(1,0,"Temp:");
			write_string(1,5,disp1);
			disp1[0]=dht11_dat[0]/10+0x30;
			disp1[1]=dht11_dat[0]%10+0x30;
			disp1[2]='%';
			write_string(2,0,"Humi:");
			write_string(2,5,disp1);
		}
		else	//設(shè)置模式
		{
			disp1[0]=lim1/10+0x30;
			disp1[1]=lim1%10+0x30;
			disp1[2]='C';
			write_string(1,0,"TL:");
			write_string(1,3,disp1);
			disp1[0]=lim2/10+0x30;
			disp1[1]=lim2%10+0x30;
			disp1[2]='C';
			write_string(1,8,"TH:");
			write_string(1,11,disp1);

			disp1[0]=lim3/10+0x30;
			disp1[1]=lim3%10+0x30;
			disp1[2]='%';
			write_string(2,0,"HL:");
			write_string(2,3,disp1);
			disp1[0]=lim4/10+0x30;
			disp1[1]=lim4%10+0x30;
			disp1[2]='%';
			write_string(2,8,"HH:");
			write_string(2,11,disp1);
			//設(shè)置光標(biāo)
			switch(mode)
			{
				case 1:write_sfm(1,4);break;
				case 2:write_sfm(1,12);break;
				case 3:write_sfm(2,4);break;
				case 4:write_sfm(2,12);
			}
			write_com(0x0e);
		}
	}
	TH0=0X3C;
	TL0=0XB0;
}

4. 原理圖

原理圖使用AD繪制,可供實物鏈接參考,仿真不同于實物,經(jīng)驗不足不要輕易搞實物。新手制作實物會犯很多低級錯誤,耗費大量時間,本設(shè)計不提供實物制作答疑。

Proteus仿真和實物作品的區(qū)別:

1.運行環(huán)境:Proteus仿真是在計算機上運行的,而實物則是在硬件電路板上運行。

2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。

電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進(jìn)行修改。

3.運行速度:Proteus仿真通常比實物運行速度快,因為仿真是基于計算機運行的,而實物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。

4.功能實現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實現(xiàn)不同的功能,而在實物中則需要根據(jù)電路設(shè)計和器件的性能進(jìn)行實現(xiàn)。

在這里插入圖片描述

元器件清單

元件 型號 數(shù)量
單片機 AT89C51 1
電容 10uf 1
電容 30pf 2
晶振 12MHZ 1
電阻 10k 1
按鈕 4
溫濕度傳感器 DHT11 1
電位器 1k 2
LED 紅色 4
電阻 100歐 4
電阻 1k 4
三極管 PNP 4
繼電器 5V 4
顯示器 LCD1602 1
排阻 10k 1

穩(wěn)壓電源部分
排針 2P 1
電容 0.1uf 2
電容 100uf 2
穩(wěn)壓器 7805 1

5. 設(shè)計報告

7386字設(shè)計報告,內(nèi)容包含設(shè)計框圖,引言,硬件設(shè)計介紹,軟件設(shè)計介紹,仿真調(diào)試,總結(jié)和參考文獻(xiàn)。

img

6. 設(shè)計資料內(nèi)容清單&下載鏈接

資料設(shè)計資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計報告、軟硬件設(shè)計框圖等。

0、常見使用問題及解決方法–必讀?。。?!

1、仿真圖

2、程序源碼

3、開題報告

4、原理圖

5、功能要求

6、元器件清單

7、設(shè)計報告

8、軟硬件流程框圖

9、講解視頻

Altium Designer 軟件資料

KEIL軟件資料

Proteus軟件資料

單片機學(xué)習(xí)資料

答辯技巧

設(shè)計報告常用描述

鼠標(biāo)雙擊打開查找更多51 STM32單片機課程畢業(yè)設(shè)計.url

img

資料下載鏈接(可點擊):

  • 設(shè)計資料獲取聯(lián)系方式.doc

相關(guān)推薦

電子產(chǎn)業(yè)圖譜