網(wǎng)站站內(nèi)推廣計(jì)劃書國(guó)外網(wǎng)站搭建
文章目錄
- 一、功能簡(jiǎn)介
- 二、軟件設(shè)計(jì)
- 三、實(shí)驗(yàn)現(xiàn)象
- 聯(lián)系作者
一、功能簡(jiǎn)介
本項(xiàng)目使用Proteus8仿真STM32單片機(jī)控制器,使用按鍵、LCD1602液晶、DS18B20模塊、PCF8591 ADC、渾濁傳感器、PH傳感器、液位傳感器、繼電器、水泵、酸堿調(diào)節(jié)劑、加熱降溫裝置等。
主要功能:
系統(tǒng)運(yùn)行后,LCD1602顯示溫度、液位、渾濁度、PH濃度值;
可通過(guò)按鍵K3進(jìn)入閾值設(shè)置模式,K3鍵用于切換選擇溫度閾值、渾濁度、PH濃度,
K1和K2用于調(diào)節(jié)對(duì)應(yīng)閾值,K4用于確定并返回主界面。
如果溫度高于上限,打開(kāi)降溫裝置;如果溫度低于下限,打開(kāi)加熱裝置;
如果溫度正常,關(guān)閉加熱和降溫裝置;
如果水位低于下限,停止抽水,打開(kāi)加水裝置;
如果水位高于上限,停止加水;如果水位正常范圍內(nèi),
渾濁高于上限,打開(kāi)抽水裝置;
PH高于上限,打開(kāi)酸性調(diào)節(jié)劑;PH低于下限,打開(kāi)堿性調(diào)節(jié)劑;
二、軟件設(shè)計(jì)
/*
作者:嗨小易(QQ技術(shù)交流群:570487280)*///系統(tǒng)數(shù)據(jù)獲取
void sys_data_get(void)
{static u8 i=0;while(1){//溫度獲取i++;if(i%5==0)sys_ctrl.temp=DS18B20_GetTemperture();//渾濁獲取sys_ctrl.turbid=pcf8591_read_adcvalue(0);sys_ctrl.turbid=pcf8591_read_adcvalue(0);sys_ctrl.turbid=cal_map(sys_ctrl.turbid,0,255,0,99);//PH獲取sys_ctrl.ph=pcf8591_read_adcvalue(1);sys_ctrl.ph=pcf8591_read_adcvalue(1);sys_ctrl.ph=cal_map(sys_ctrl.ph,0,255,0,140);//液位獲取sys_ctrl.level=pcf8591_read_adcvalue(2);sys_ctrl.level=pcf8591_read_adcvalue(2);sys_ctrl.level=cal_map(sys_ctrl.level,0,255,0,99); break;}
}//系統(tǒng)數(shù)據(jù)設(shè)置
void sys_data_set(void)
{u8 key=0;key=KEY_Scan(0);//模式設(shè)置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>5)sys_ctrl.mode=1;sys_parm_set_show();//系統(tǒng)參數(shù)設(shè)置顯示}if(sys_ctrl.mode!=0){//在設(shè)置模式下,加if(key==KEY1_PRESS){ switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl++;if(sys_ctrl.phl>140)sys_ctrl.phl=0;break;case 2://PH上 sys_ctrl.phh++;if(sys_ctrl.phh>140)sys_ctrl.phh=0;break;case 3://溫度下 sys_ctrl.templ++;if(sys_ctrl.templ>99)sys_ctrl.templ=0;break;case 4://溫度上 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 5://渾濁度 sys_ctrl.turbidh++;if(sys_ctrl.turbidh>99)sys_ctrl.turbidh=0;break;} }//在設(shè)置模式下,減else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl--;if(sys_ctrl.phl<0)sys_ctrl.phl=140;break;case 2://PH上 sys_ctrl.phh--;if(sys_ctrl.phh<0)sys_ctrl.phh=140;break;case 3://溫度下 sys_ctrl.templ--;if(sys_ctrl.templ<0)sys_ctrl.templ=99;break;case 4://溫度上 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 5://渾濁度sys_ctrl.turbidh--;if(sys_ctrl.turbidh<0)sys_ctrl.turbidh=99;break;}}//確定else if(key==KEY4_PRESS){sys_ctrl.mode=0;sys_open_show();//系統(tǒng)開(kāi)機(jī)界面顯示 } }
}//系統(tǒng)功能控制
void sys_fun_ctrl(void)
{//正常工作模式下if(sys_ctrl.mode==0){//如果溫度高于上限,打開(kāi)降溫裝置if(sys_ctrl.temp>sys_ctrl.temph)JW_PIN=0;//如果溫度低于下限,打開(kāi)加熱裝置else if(sys_ctrl.temp<sys_ctrl.templ)JR_PIN=0;//如果溫度正常,關(guān)閉加熱和降溫裝置else {JW_PIN=1;JR_PIN=1;}//如果水位低于下限,停止抽水,打開(kāi)加水裝置if(sys_ctrl.level<sys_ctrl.levell){JS_PIN=0;CS_PIN=1;}//如果水位高于上限,停止加水else if(sys_ctrl.level>sys_ctrl.levelh)JS_PIN=1;//如果水位正常范圍內(nèi)else{//渾濁高于上限,打開(kāi)抽水裝置if(sys_ctrl.turbid>sys_ctrl.turbidh)CS_PIN=0;else CS_PIN=1;}//PH高于上限,打開(kāi)酸性調(diào)節(jié)劑if(sys_ctrl.ph>sys_ctrl.phh){SXTJ_PIN=0;JXTJ_PIN=1;}//PH低于下限,打開(kāi)堿性調(diào)節(jié)劑else if(sys_ctrl.ph<sys_ctrl.phl){SXTJ_PIN=1;JXTJ_PIN=0; }else{SXTJ_PIN=1;JXTJ_PIN=1; } }
}//應(yīng)用控制系統(tǒng)
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系統(tǒng)參數(shù)初始化KEY_Init();ctrl_pin_init();pcf8591_init();DS18B20_Init();lcd1602_init();//LCD1602初始化//等待數(shù)據(jù)穩(wěn)定while(i--){//溫度獲取sys_ctrl.temp=DS18B20_GetTemperture();delay_ms(100);}sys_open_show();//系統(tǒng)開(kāi)機(jī)界面顯示while(1){sys_data_get();//系統(tǒng)數(shù)據(jù)獲取sys_data_show();//系統(tǒng)數(shù)據(jù)顯示sys_data_set();//系統(tǒng)數(shù)據(jù)設(shè)置sys_fun_ctrl();//系統(tǒng)功能控制 }
}
三、實(shí)驗(yàn)現(xiàn)象
B站演示視頻:https://space.bilibili.com/444388619
聯(lián)系作者
視頻地址:https://space.bilibili.com/444388619/video
專注于51單片機(jī)、STM32、國(guó)產(chǎn)32、DSP、Proteus、arduino、ESP32、物聯(lián)網(wǎng)軟件開(kāi)發(fā),PCB設(shè)計(jì),視頻分享,技術(shù)交流。