基于51單片機(jī)智能魚缸仿真LCD顯示( proteus仿真+程序+設(shè)計(jì)報(bào)告+講解視頻)
仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):S0080
1. 主要功能:
基于51單片機(jī)的智能魚缸檢測(cè)控制系統(tǒng)proteus仿真
1.系統(tǒng)通過(guò)DS18B20檢測(cè)魚缸溫度,通過(guò)DAC0832采集PH傳感器和水位傳感器數(shù)據(jù);
2.溫度低于閾值系統(tǒng)啟動(dòng)加熱功能;默認(rèn)正常范圍是大于25攝氏度;
3.水位過(guò)低系統(tǒng)自動(dòng)啟動(dòng)加水閥,水位過(guò)高系統(tǒng)自動(dòng)啟動(dòng)排水閥;默認(rèn)正常范圍90-100cm;
4.PH值過(guò)高或者過(guò)低,系統(tǒng)亮報(bào)警燈;默認(rèn)正常范圍6-8;
5.可以通過(guò)按鍵調(diào)整魚缸溫度,PH酸堿度和水位閾值;
6.通過(guò)LCD1602顯示溫度,PH酸堿度和水位測(cè)量值和相關(guān)的閾值;
需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號(hào),內(nèi)核是一樣的。相同的原理圖里,無(wú)論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
資料下載鏈接:
【騰訊文檔】S0080 網(wǎng)盤鏈接
https://docs.qq.com/doc/DS0J3RGp0aWFTakhG
以下為本設(shè)計(jì)資料展示圖:
2. 講解視頻:
講解視頻包含仿真運(yùn)行講解和代碼講解
基于51單片機(jī)的智能魚缸LCD1602顯示proteus仿真+程序+設(shè)計(jì)報(bào)告
3. 仿真
打開(kāi)仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開(kāi)始仿真。顯示溫度,PH酸堿度和水位測(cè)量值和相關(guān)的閾值;
通過(guò)調(diào)整PH值滑動(dòng)變阻器模擬傳感器數(shù)值動(dòng)態(tài)變化,當(dāng)PH大于默認(rèn)閾值,警告燈亮。
水位低于閾值,進(jìn)水閥開(kāi)始工作,指示燈點(diǎn)亮。水位大于閾值,出水閥開(kāi)始工作,指示燈點(diǎn)亮。默認(rèn)水位正常范圍90-100cm;
調(diào)整溫度低于閾值,加熱器啟動(dòng)開(kāi)始工作。
4. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合視頻理解代碼含義。
// 引入51單片機(jī)頭文件
完整代碼見(jiàn)文章后面下載鏈接壓縮包
#include "reg51.h"
// 引入LCD1602液晶顯示模塊驅(qū)動(dòng)頭文件
#include "lcd1602.h"
// 引入DS18B20溫度傳感器驅(qū)動(dòng)頭文件
#include "Ds18b20.h"
// 引入ADC0832模數(shù)轉(zhuǎn)換器驅(qū)動(dòng)頭文件
#include "ADC0832.h"
// 引入PID和PWM控制相關(guān)頭文件
#include"pid_pwm.h"
// 定義uchar類型(無(wú)符號(hào)字符型)
#define uchar unsigned char
// 定義uint類型(無(wú)符號(hào)整型)
#define uint unsigned int
// 定義按鈕引腳
sbit k1=P3^2; // 按鈕k1
sbit k2=P3^3; // 按鈕k2
sbit k3=P3^4; // 按鈕k3
sbit k4=P3^5; // 按鈕k4
sbit k5=P3^6; // 按鈕k5
sbit k6=P3^7; // 按鈕k6
// 定義輸出控制引腳
sbit out1=P2^4; // 輸出控制out1
sbit out2=P2^5; // 輸出控制out2
sbit out3=P2^6; // 輸出控制out3
sbit out4=P2^7; // 輸出控制out4
// 定義PH值高低電平檢測(cè)引腳
sbit ph_h=P3^0;
sbit ph_l=P3^1;
// 定義系統(tǒng)變量
uchar time=0, mode=0; // 計(jì)時(shí)變量time,模式變量mode
uchar wendu=0, ph=0, water=0; // 溫度變量wendu,pH值變量ph,水位變量water
uchar lim1=25, lim2=7, lim3=100; // 溫度閾值lim1,pH閾值lim2,水位閾值lim3
uchar disp1[]="T:000 P:00 H:000"; // 顯示緩沖區(qū)1
uchar disp2[]=" 000 00 000"; // 顯示緩沖區(qū)2
uchar pwm=0; // PWM占空比變量
//主函數(shù)
void main()
{
uchar i=0;
init_1602(); // 初始化LCD1602液晶顯示器
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打開(kāi)定時(shí)器0中斷允許
EA=1;//打開(kāi)總中斷
TR0=1;//打開(kāi)定時(shí)器
while(1)
{
//PWM輸出
if(i<99)
i++;
else
i=0;
if(i<pwm)
out4=0;
else
out4=1;
//按鍵檢測(cè)
if(!k1) // 溫度閾值遞增
{
if(lim1<120)
lim1++;
while(!k1); // 等待按鍵釋放
}
if(!k2)
{
if(lim1>0)
lim1--;
while(!k2); // 溫度閾值遞減
}
if(!k3)
{
if(lim2<14)
lim2++; // PH閾值遞增
while(!k3);
}
if(!k4)
{
if(lim2>0)
lim2--; // PH閾值遞減
while(!k4);
}
if(!k5)
{
if(lim3<127)
lim3++; // 水位閾值遞增
while(!k5);
}
if(!k6)
{
if(lim3>0)
lim3--; // 水位閾值遞減
while(!k6);
}
}
}
//定時(shí)器中斷
void Timer0() interrupt 1
{
uint i=0;
if(time<10)//0.5s
time++;
else
{
time=0;
Ds18b20ReadTemp();//測(cè)溫
wendu=ds18b20_temp;
ph=ADC(1);//PH
i=ph;
ph=i*14/127; // 將模擬值轉(zhuǎn)換為pH范圍
water=ADC(2);//水位
// 更新顯示緩沖區(qū)內(nèi)容
// ...更新溫度、pH值、水位顯示字符串...
disp1[2]=wendu/100+0x30;
disp1[3]=wendu%100/10+0x30;
disp1[4]=wendu%10+0x30;
disp1[8]=ph/10+0x30;
disp1[9]=ph%10+0x30;
disp1[13]=water/100+0x30;
disp1[14]=water%100/10+0x30;
disp1[15]=water%10+0x30;
write_string(1,0,disp1);
disp2[2]=lim1/100+0x30;
disp2[3]=lim1%100/10+0x30;
disp2[4]=lim1%10+0x30;
disp2[8]=lim2/10+0x30;
disp2[9]=lim2%10+0x30;
disp2[13]=lim3/100+0x30;
disp2[14]=lim3%100/10+0x30;
disp2[15]=lim3%10+0x30;
write_string(2,0,disp2);
// 根據(jù)設(shè)定閾值計(jì)算PWM占空比
pwm=PID(lim1,wendu);
// 根據(jù)pH值進(jìn)行高低電平控制
if(ph>lim2+1)
ph_h=0; // pH過(guò)高關(guān)閉高電平
else
ph_h=1; // pH正?;謴?fù)高電平
if(ph<lim2-1)
ph_l=0; // pH過(guò)低關(guān)閉低電平
else
ph_l=1; // pH正常恢復(fù)低電平
// 根據(jù)水位進(jìn)行排水閥控制
if(water>lim3)
out2=0; // 水位過(guò)高開(kāi)啟排水閥
else
out2=1; // 水位正常關(guān)閉排水閥
// 根據(jù)水位進(jìn)行排水閥控制
if(water<lim3-10)
out1=0; // 水位過(guò)低開(kāi)啟進(jìn)水閥
else
out1=1; // 水位正常關(guān)閉進(jìn)水閥
}
// 重置定時(shí)器初值
TH0=0X3C;
TL0=0XB0;
}
5. 設(shè)計(jì)報(bào)告
8335字設(shè)計(jì)報(bào)告,內(nèi)容包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、軟硬件框圖、調(diào)試、結(jié)論等
設(shè)計(jì)中的智能魚缸檢測(cè)控制系統(tǒng)具備了根據(jù)預(yù)設(shè)閾值自動(dòng)調(diào)節(jié)相關(guān)設(shè)備的能力。例如,當(dāng)檢測(cè)到魚缸內(nèi)水溫低于設(shè)定的適宜溫度時(shí),系統(tǒng)會(huì)立即啟動(dòng)加熱裝置,確保水溫恒定在最適宜魚類生活的范圍內(nèi);同時(shí),針對(duì)水位過(guò)低或過(guò)高情況,系統(tǒng)也能自動(dòng)開(kāi)啟加水閥或排水閥,維持水位在安全合理區(qū)間;另外,針對(duì)至關(guān)重要的水質(zhì)指標(biāo)——PH值,系統(tǒng)亦能及時(shí)捕捉其波動(dòng),并在PH值過(guò)高或過(guò)低時(shí)觸發(fā)報(bào)警提示,甚至聯(lián)動(dòng)酸堿度調(diào)節(jié)設(shè)備進(jìn)行調(diào)整。
為了驗(yàn)證并優(yōu)化設(shè)計(jì)的智能魚缸檢測(cè)控制系統(tǒng),我們還將借助功能強(qiáng)大的Proteus仿真平臺(tái)進(jìn)行詳細(xì)的系統(tǒng)建模與調(diào)試。Proteus的強(qiáng)大仿真能力使得我們?cè)趯?shí)際硬件搭建前就能完成系統(tǒng)功能的設(shè)計(jì)與驗(yàn)證,大大縮短開(kāi)發(fā)周期,降低研發(fā)成本,從而高效地將設(shè)計(jì)方案轉(zhuǎn)化為實(shí)用性強(qiáng)、可靠性高的智能魚缸檢測(cè)控制系統(tǒng),最終為用戶提供一個(gè)高度自動(dòng)化、精準(zhǔn)調(diào)控、操作便捷的最優(yōu)養(yǎng)殖環(huán)境解決方案。
6. 設(shè)計(jì)資料內(nèi)容清單&&下載鏈接
資料設(shè)計(jì)資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計(jì)報(bào)告、軟硬件設(shè)計(jì)框圖等。
0、常見(jiàn)使用問(wèn)題及解決方法–必讀?。。。?/p>
1、程序
2、proteus仿真
3、功能要求
4、軟硬件流程圖
5、開(kāi)題報(bào)告
6、設(shè)計(jì)報(bào)告
7、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開(kāi)查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接:
https://docs.qq.com/doc/DS0J3RGp0aWFTakhG