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

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

基于51單片機(jī)的孵化環(huán)境溫濕度監(jiān)控系統(tǒng)設(shè)計(jì)

09/06 10:57
1210
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

實(shí)現(xiàn)功能:

1、對孵化環(huán)境的溫度、濕度進(jìn)行監(jiān)控
2、可以警報(bào)提示、修改溫度、濕度上下限值
3、led燈指示報(bào)警溫濕度信息、LCD顯示相關(guān)信息

電路原理圖

部分程序:

#include<reg52.h>

#include "intrins.h"

typedef unsigned char uint8;

typedef unsigned int uint16;

sbit rs=P2^6;?? // 數(shù)據(jù)命令選擇

sbit rw=P2^5;? //讀寫選擇

sbit e=P2^7;??? ? //使能

sbit k1=P3^3; //模式

sbit k2=P2^1; //加

sbit k3=P2^2; //減

sbit DHT11_DQ_OUT=P3^2;

sbit led1=P3^6;

sbit led2=P3^7;

sbit dq=P2^0;

uint8 mode=0,xian;

char temph=50,templ=20;

char humih=80,humil=20;

uint8 temp,humi;

uint8 flag;??????? ? //設(shè)定報(bào)警標(biāo)志

uint8 a,c,tempvalue;

uint8 code num[10]="0123456789";

uint8 code str1[]="Temp:";? //溫度

uint8 code str2[]="Humi:";? //濕度

uint8 code str3[]="Error";

uint8 code str4[]="Success??? ";

uint8 code str5[]="%RH";

uint8 code str6[]="TempH:";? ? //設(shè)定溫度上限顯示

uint8 code str7[]="TempL:";? ? //設(shè)定溫度下限顯示

uint8 code str8[]="HumiH:";? ?? //設(shè)定濕度上限顯示

uint8 code str9[]="HumiL:";?? ?? //設(shè)定濕度下限顯示

void wrd(uint8 dat) ? //寫數(shù)據(jù)

{

delay(1000);

rs=1;

rw=0;

e=0;

P0=dat;

e=1;

delay(10);

e=0;

rs=0;

}

void lcd_init()? ?? // LCD1602初始化

{

delay(1000);

wrc(0x38);

wrc(0x38);?????? //功能設(shè)置命令,選擇8位總線,雙行顯示? 5*7點(diǎn)陣字符

wrc(0x38);

wrc(0x06);?????? //光標(biāo)和顯示模式設(shè)置? 光標(biāo)右移? 整屏不移動(dòng)

wrc(0x0c);?????? //顯示開關(guān)控制? 開顯示? 無光標(biāo) 光標(biāo)不閃爍

wrc(0x01);?????? //清零指令? 固定的

}

//復(fù)位DHT11

void DHT11_Rst()

{

DHT11_DQ_OUT=0; ???? //拉低DQ

delay_ms(20);??? ???????? //拉低至少18ms

DHT11_DQ_OUT=1; ???? //DQ=1

delay(3);???? ??????? //主機(jī)拉高20~40us

}

//等待DHT11的回應(yīng)

//返回1:未檢測到DHT11的存在

//返回0:存在

uint8 DHT11_Check()

{

uint8 retry=0;

while (DHT11_DQ_OUT&&retry<100)//DHT11會(huì)拉低40~50us

{

retry++;

_nop_();

};

if(retry>=100)return 1;

else retry=0;

while (!DHT11_DQ_OUT&&retry<100)//DHT11拉低后會(huì)再次拉高40~50us

{

retry++;

_nop_();

};

if(retry>=100)return 1;

return 0;

}

//DHT11初始化

//返回0:初始化成功,1:失敗

uint8 DHT11_Init()

{

DHT11_Rst();

return DHT11_Check();

}

//從DHT11讀取一個(gè)位

//返回值:1/0

uint8 DHT11_Read_Bit(void)

{

uint8 retry=0;

while(DHT11_DQ_OUT&&retry<100)//等待變?yōu)榈?a class="article-link" target="_blank" href="/baike/1465710.html">電平 12-14us 開始

{

retry++;

_nop_();

}

retry=0;

while((!DHT11_DQ_OUT)&&retry<100)//等待變高電平??? 26-28us表示0,116-118us表示1

{

retry++;

_nop_();

}

delay(1);//等待40us

if(DHT11_DQ_OUT)return 1;

else return 0;

}

//從DHT11讀取一個(gè)字節(jié)

//返回值:讀到的數(shù)據(jù)

uint8 DHT11_Read_Byte(void)

{

uint8 i,dat=0;

for (i=0;i<8;i++)

{

dat<<=1;

dat|=DHT11_Read_Bit();

}

return dat;

}

//從DHT11讀取一次數(shù)據(jù)

//temp:溫度值(范圍:0~50°)

//humi:濕度值(范圍:20%~90%)

//返回值:0,正常;1,讀取失敗

uint8 DHT11_Read_Data(uint8 *temp,uint8 *humi)

{

uint8 buf[5];

uint8 i;

DHT11_Rst();

if(DHT11_Check()==0)

{

for(i=0;i<5;i++)//讀取40位數(shù)據(jù)

{

buf[i]=DHT11_Read_Byte();

}

if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])

{

*humi=buf[0];

*temp=buf[2];

}

}else return 1;

return 0;

}

void ds18b20init()??????????? //18b20的初始化

{

dq=1;

delay(1);

dq=0;

delay(80);

dq=1;

delay(5);

dq=0;

delay(20);

dq=1;

delay(35);

}

void ds18b20wr(uint8 dat)???? ? //18b20寫數(shù)據(jù)

{

uint8 i;

for(i=0;i<8;i++)

{

dq=0;

dq=dat&0x01;

dat>>=1;

delay(8);//在時(shí)序上只有這一塊對時(shí)序要求最準(zhǔn)確,他的時(shí)間必須大于15us

dq=1;

delay(1);

}

}

uint8 ds18b20rd()??????????? ? //18b20讀數(shù)據(jù)

{

uint8 value,i;

for(i=0;i<8;i++)

{

dq=0;

value>>=1;

dq=1;

if(dq==1)value|=0x80;

delay(8);//在這一塊也對時(shí)間要求特別準(zhǔn)確,整段程序必須大于60us

}

return value;

}

uint8 readtemp()????????????????????? ? //讀取溫度內(nèi)需要復(fù)位的

{

uint8 b;

ds18b20init();????????? //初始化

ds18b20wr(0xcc);?? //發(fā)送忽略ROM指令

ds18b20wr(0x44);?? //發(fā)送溫度轉(zhuǎn)換指令

delay(100);

ds18b20init();? ?? //初始化

ds18b20wr(0xcc);?? //發(fā)送忽略ROM指令

ds18b20wr(0xbe);?? //發(fā)讀暫存器指令

a=ds18b20rd();??????? //溫度的低八位

b=ds18b20rd();??????? //溫度的高八位

b<<=4;?????????????????????? //ssss s***;s為標(biāo)志位s=0表示溫度值為正數(shù),s=1溫度值為負(fù)數(shù)

c=b&0x80;??????????????? //溫度正負(fù)標(biāo)志位確認(rèn)

b+=(a&0xf0)>>4;

a=a&0x0f;?????? ? //溫度的小數(shù)部分

return b;

}

void key_pros()? //按鍵處理函數(shù)

{

if(k1==0)

{

delay(1000);

if(k1==0)

{

mode++;

if(mode==5)mode=0;

wrc(0x01);

}

while(!k1);

}

if(mode==1)???????????? ? //對溫度上限設(shè)定

{

if(k2==0)????????? ? //加

{

delay(1000);

if(k2==0)

{

temph++;

if(temph>=80)temph=80;

}

while(!k2);

}

if(k3==0)? ?? //減

{

delay(1000);

if(k3==0)

{

temph--;

if(temph<=0)temph=0;

}

while(!k3);

}

}

if(mode==2)???????????? ? //對溫度下限設(shè)定

{

if(k2==0)????????? ? //加

{

delay(1000);

if(k2==0)

{

templ++;

if(templ>=80)templ=80;

}

while(!k2);

}

if(k3==0)? ?? //減

{

delay(1000);

if(k3==0)

{

templ--;

if(templ<=0)templ=0;

}

while(!k3);

}

}

if(mode==3)???????????? ? //對濕度上限設(shè)定

{

if(k2==0)????????? ? //加

{

delay(1000);

if(k2==0)

{

humih++;

if(humih>=80)humih=80;

}

while(!k2);

}

if(k3==0)? ?? //減

{

delay(1000);

if(k3==0)

{

humih--;

if(humih<=0)humih=0;

}

while(!k3);

}

}

if(mode==4)???????????? ? //對濕度下限設(shè)定

{

if(k2==0)????????? ? //加

{

delay(1000);

if(k2==0)

{

humil++;

if(humil>=80)humil=80;

}

while(!k2);

}

if(k3==0)? ?? //減

{

delay(1000);

if(k3==0)

{

humil--;

if(humil<=0)humil=0;

}

while(!k3);

}

}

}

資料包括:

需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。

紛傳點(diǎn)擊用微信打開即可,過程有點(diǎn)繁瑣請見諒。

  • 有需要資料的可了解一下.docx

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
FTLF1319F1HTL 1 Finisar Corporation Transceiver, 1270nm Min, 1355nm Max, 2125Mbps(Tx), 2125Mbps(Rx), LC Connector, Through Hole Mount
$129.68 查看
DP83848IVVX/NOPB 1 Texas Instruments Industrial temperature, 10/100-Mbps Ethernet PHY transceiver with SNI &amp; JTAG support 48-LQFP -40 to 85

ECAD模型

下載ECAD模型
$5.13 查看
FOD4208SD 1 Fairchild Semiconductor Corporation Triac Output Optocoupler, 1-Element, 5000V Isolation, LEAD FREE, SURFACE MOUNT PACKAGE-6
$4.14 查看

相關(guān)推薦

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