設計要求
1.設計一套基于51單片機的溫濕度Proteus仿真監控系統; 2.采用SHT11、DHT11或DS18B20傳感器模塊; 3.LCD液晶實時顯示當前環境溫濕度值; 4.設計報警單元,實現系統對超限溫濕度監控報警; 5.設計輸入單元,可對系統正常溫濕度范圍進行調節; 6.仿真系統能夠可靠、穩定地運行;
概述
系統通過SHT11溫濕度傳感器感應周圍的環境的溫度和濕度,通過單片機對采集到的數據進行讀取處理,經過LCD1602顯示模塊實時顯示溫濕度數據,同時可以通過按鍵模塊對溫濕度報警上、下限值進行設定。當SHT11讀取的溫濕度值不再設定范圍內時,報警模塊LED燈指示故障信息,同時蜂鳴器報警;當溫濕度讀取數據正常后,LED燈熄滅,蜂鳴器關閉。
系統運行
資料截圖5.jpg (82.99 KB, 下載次數: 96)
下載附件
2019-8-18 21:20 上傳
仿真總電路圖
模糊化.jpg (195.21 KB, 下載次數: 102)
下載附件
2019-8-18 21:20 上傳
部分程序:
/*********************************************************/
// 往SHT11寫入一個字節
/*********************************************************/
char ShtWriteByte(unsigned char value)
{
unsigned char i,error=0;
for(i=128;i>0;i>>=1) // 高位為1,循環右移
{
if (i&value)
Data_P=1; // 和要發送的數相與,結果為發送的位
else
Data_P=0;
Sck_P=1;
_nop_(); // 延時3us
_nop_();
_nop_();
Sck_P=0;
}
Data_P=1; // 釋放數據線
Sck_P=1;
error=Data_P; // 檢查應答信號,確認通訊正常
_nop_();
_nop_();
_nop_();
Sck_P=0;
Data_P=1;
return error; // error=1 通訊錯誤
}
/*********************************************************/
// 從SHT11讀出一個字節
/*********************************************************/
char ShtReadByte(unsigned char ack)
{
unsigned char i,val=0;
Data_P=1; // 釋放數據線
for(i=0x80;i>0;i>>=1) // 高位為1,循環右移
{
Sck_P=1;
if(Data_P)
val=(val|i); // 讀一位數據線的值
Sck_P=0;
}
Data_P=!ack; // 如果是校驗,讀取完后結束通訊
Sck_P=1;
_nop_(); // 延時3us
_nop_();
_nop_();
Sck_P=0;
_nop_();
_nop_();
_nop_();
Data_P=1; // 釋放數據線
return val;
}
/*********************************************************/
// SHT11啟動傳輸
/*********************************************************/
void ShtTransStart(void)
{
Data_P=1;
Sck_P=0;
_nop_();
Sck_P=1;
_nop_();
Data_P=0;
_nop_();
Sck_P=0;
_nop_();
_nop_();
_nop_();
Sck_P=1;
_nop_();
Data_P=1;
_nop_();
Sck_P=0;
}
|