51單片機SHT11溫濕度上下限LCD12864顯示報警仿真設(shè)計( proteus仿真+程序+原理圖+報告+講解視頻)
仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計編號:S0043
講解視頻
51單片機SHT11溫濕度上下限LCD12864顯示報警proteus仿真設(shè)計
1.主要功能:
運用所學知識,制作一個 51單片機溫濕度上下限LCD12864顯示報警仿真
1、測量SHT11溫濕度,通過12864顯示;
2、可以通過按鍵設(shè)置溫濕度上下限,溫濕度測量值過限報警;
3、溫濕度偏離正常值越大,蜂鳴器頻率越高。
4、默認的溫度閾值下限是10℃,溫度上限是40.00℃。濕度的下限默認30%,上限模式60%。
需注意仿真中51單片機芯片是通用的,AT89C51,AT89C52都是51單片機的具體型號,內(nèi)核是兼容的。無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。
以下為本設(shè)計資料展示圖:
2.仿真
開始仿真
打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。開始仿真后LCD12864顯示溫度和濕度。
仿真中通過按鍵調(diào)整SHT11溫濕度模塊的值改變顯示數(shù)值。
上下箭頭用于改變溫度/濕度的值。下箭頭調(diào)低數(shù)值,上箭頭調(diào)高數(shù)值。通過這個箭頭改變調(diào)整的值是溫度還是濕度。
改圖標顯示的是濕度和溫度的值,濕度的值在第一行,溫度的值在第二行。
開始仿真后,按下設(shè)置/切換按鍵調(diào)整上下閾值,默認的溫度閾值下限是10℃,溫度上限是40.00℃。濕度的下限默認30%,上限模式60%。
開始仿真后,調(diào)整濕度超過濕度上限閾值60%后,蜂鳴器報警,超過濕度上限的值越大,蜂鳴器報警聲越尖銳,LCD12864顯示過限。
開始仿真后,調(diào)整濕度低于濕度下限閾值30%后,蜂鳴器報警,低于濕度下限的值越大,蜂鳴器報警聲越尖銳,LCD12864顯示過限。
開始仿真后,調(diào)整溫度超過溫度上限閾值40℃后,蜂鳴器報警,超過溫度上限的值越大,蜂鳴器報警聲越尖銳,LCD12864顯示過限。需注意的是,調(diào)整溫度的時候,SHT11的濕度會受溫度補償?shù)挠绊?,?shù)值會發(fā)生改變,實際應用上是修正濕度參數(shù)的,仿真中未能體現(xiàn),所以仿真中的濕度值會出現(xiàn)和SHT11模塊顯示誤差大的情況,這是正常的。
開始仿真后,調(diào)整溫度低于溫度下限閾值10℃后,蜂鳴器報警,低于溫度下限的值越大,蜂鳴器報警聲越尖銳,LCD12864顯示過限。
3. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報告理解代碼含義。
主函數(shù)代碼
void main()
{
uchar i=0;
lcd_init(); // 初始化
lcd_clear(0); // 清屏
lcd_set_line(0); // 設(shè)置起始行為0
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;
while(!k1);
}
if(mode==1)//設(shè)置溫度下限
{
if(!k2)
{
if(wen_set1<wen_set2)
wen_set1+=1;
while(!k2);
}
if(!k4)
{
if(wen_set1<wen_set2)
wen_set1+=0.1;
while(!k4);
}
if(!k3)
{
if(wen_set1>-81.11)
wen_set1-=1;
while(!k3);
}
if(!k5)
{
if(wen_set1>-81.11)
wen_set1-=0.1;
while(!k5);
}
}
if(mode==2)//設(shè)置溫度上限
{
if(!k2)
{
if(wen_set2<81.11)
wen_set2+=1;
while(!k2);
}
if(!k4)
{
if(wen_set2<81.11)
wen_set2+=0.1;
while(!k4);
}
if(!k3)
{
if(wen_set2>wen_set1)
wen_set2-=1;
while(!k3);
}
if(!k5)
{
if(wen_set2>wen_set1)
wen_set2-=0.1;
while(!k5);
}
}
if(mode==3)//設(shè)置濕度下限
{
if(!k2)
{
if(shi_set1<shi_set2)
shi_set1+=1;
while(!k2);
}
if(!k4)
{
if(shi_set1<shi_set2)
shi_set1+=0.1;
while(!k4);
}
if(!k3)
{
if(shi_set1>1.1)
shi_set1-=1;
while(!k3);
}
if(!k5)
{
if(shi_set1>1.1)
shi_set1-=0.1;
while(!k5);
}
}
if(mode==4)//設(shè)置濕度上限
{
if(!k2)
{
if(shi_set2<81)
shi_set2+=1;
while(!k2);
}
if(!k4)
{
if(shi_set2<81)
shi_set2+=0.1;
while(!k4);
}
if(!k3)
{
if(shi_set2>shi_set1)
shi_set2-=1;
while(!k3);
}
if(!k5)
{
if(shi_set2>shi_set1)
shi_set2-=0.1;
while(!k5);
}
}
//蜂鳴器
if(beep_time>0)
{
if(sec<beep_time)
{
sec++;
delay(15);
}
else
{
sec=0;
beep=!beep;
}
}
}
}
4. 原理圖
原理圖使用AD繪制,可供實物鏈接參考,仿真不同于實物,經(jīng)驗不足不要輕易搞實物。新手制作實物會犯很多低級錯誤,耗費大量時間,本設(shè)計不提供實物制作答疑。
Proteus仿真和實物作品的區(qū)別:
1.運行環(huán)境:Proteus仿真是在計算機上運行的,而實物則是在硬件電路板上運行。
2.調(diào)試方式:在Proteus仿真中,可以方便地進行單步調(diào)試和觀察變量值的變化,而在實物中則需要通過調(diào)試器或者串口輸出等方式進行調(diào)試。
電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進行修改。
3.運行速度:Proteus仿真通常比實物運行速度快,因為仿真是基于計算機運行的,而實物則需要考慮電路板上的物理限制和器件的響應時間等因素。
4.功能實現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實現(xiàn)不同的功能,而在實物中則需要根據(jù)電路設(shè)計和器件的性能進行實現(xiàn)。
元器件清單如下:
元件 型號 數(shù)量
單片機 AT89C51 1
電容 10uf 1
電容 30pf 2
晶振 12MHZ 1
電阻 10k 1
按鈕 6
溫濕度傳感器 SHT11 1
電位器 1k 1
電阻 1k 1
三極管 PNP 1
蜂鳴器 無源 1
顯示器 LCD12864 1
排阻 10k 1
5. 設(shè)計報告
7386字設(shè)計報告,內(nèi)容包含設(shè)計框圖,引言,硬件設(shè)計介紹,軟件設(shè)計介紹,仿真調(diào)試,總結(jié)和參考文獻。
6. 設(shè)計資料內(nèi)容清單&下載鏈接
資料設(shè)計資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計報告、軟硬件設(shè)計框圖等。
0、常見使用問題及解決方法–必讀?。。?!
1、仿真圖
2、程序源碼
3、開題報告
4、原理圖
5、元器件清單
6、取模工具及使用
7、軟硬件流程框圖
8、功能要求
9、設(shè)計報告
Altium Designer 軟件資料
KEIL軟件資料
Proteus軟件資料
單片機學習資料
答辯技巧
設(shè)計報告常用描述
鼠標雙擊打開查找更多51 STM32單片機課程畢業(yè)設(shè)計.url