當(dāng)前位置:
首頁 >
【Proteus仿真】【51单片机】水箱液位检测控制装置设计
發(fā)布時間:2024/3/12
55
豆豆
生活随笔
收集整理的這篇文章主要介紹了
【Proteus仿真】【51单片机】水箱液位检测控制装置设计
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、主要功能
- 二、硬件資源
- 三、軟件設(shè)計
- 四、實驗現(xiàn)象
- 聯(lián)系作者
一、主要功能
1、壓力液位檢測
2、閾值設(shè)定,超限報警
3、壓力液位顯示
4、補(bǔ)排水自動控制
二、硬件資源
1、51單片機(jī)核心模塊
2、PCF8591 AD/DA模塊
3、LCD1602液晶模塊
4、蜂鳴器模塊
5、排水、補(bǔ)水控制電路
6、按鍵模塊
三、軟件設(shè)計
#include "appdemo.h" #include "lcd1602.h" #include "key.h" #include "beep.h" #include "pcf8591.h" #include "exti.h"//定義補(bǔ)水控制腳 sbit MOTOR_BS=P1^0; //定義排水控制腳 sbit MOTOR_PS=P1^1;//定義結(jié)構(gòu)體 _sys_ctrl sys_ctrl;//閾值設(shè)定 void key_set_threshold(void) {u8 key=0;key=key_scan(0);//模式設(shè)定顯示if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>=3)sys_ctrl.mode=1;lcd1602_clear();switch(sys_ctrl.mode){case 1://液位上限設(shè)置顯示界面 lcd1602_show_string(0,0,"LevelH Set:");break;case 2://液位下限設(shè)置顯示界面 lcd1602_show_string(0,0,"LevelL Set:");break;default : lcd1602_show_string(0,0,"Display Error");break;} }//確定,返回主界面else if(key==KEY4_PRESS){sys_ctrl.mode=0;lcd1602_clear();lcd1602_show_string(0,0," Current Level ");lcd1602_show_string(0,1," mm");}//液位上限設(shè)置if(sys_ctrl.mode==1){ if(key==KEY1_PRESS)//加{sys_ctrl.levelh+=THRESHOLD_STEP;if(sys_ctrl.levelh>MAX_VALUE)sys_ctrl.levelh=0; }else if(key==KEY2_PRESS)//減{sys_ctrl.levelh-=THRESHOLD_STEP;if(sys_ctrl.levelh<0)sys_ctrl.levelh=MAX_VALUE; }lcd1602_show_nums(0,1,sys_ctrl.levelh,4,0); }//液位下限設(shè)置else if(sys_ctrl.mode==2){ if(key==KEY1_PRESS)//加{sys_ctrl.levell+=THRESHOLD_STEP;if(sys_ctrl.levell>MAX_VALUE)sys_ctrl.levell=0; }else if(key==KEY2_PRESS)//減{sys_ctrl.levell-=THRESHOLD_STEP;if(sys_ctrl.levell<0)sys_ctrl.levell=MAX_VALUE; }lcd1602_show_nums(0,1,sys_ctrl.levell,4,0); } }//參數(shù)初始化 void sys_para_init(void) {sys_ctrl.mode=0;sys_ctrl.levelh=80;sys_ctrl.levell=20; }//數(shù)據(jù)采集 void sys_get_data(void) {u8 i=0;u8 ad_value=0;float vol=0;while(sys_ctrl.mode==0){i++;if(i%200==0){//讀取壓力AD值ad_value=pcf8591_read_adcvalue(0);//計算電壓vol=(float)ad_value*5.0/256;//計算液位高度VO=K*H+∮=0.038*H+1.105(V) //H單位mmsys_ctrl.level=(vol-1.105)/0.038;if(sys_ctrl.level<=0)sys_ctrl.level=0;break; }delay_ms(1); } }//采集數(shù)據(jù)顯示 void sys_data_show(void) {while(sys_ctrl.mode==0){lcd1602_show_nums(0,1,sys_ctrl.level,4,0);break; } }//液位自動控制 void auto_control(void) {while(sys_ctrl.mode==0){//上限閾值,排水開啟,補(bǔ)水關(guān)閉,蜂鳴器報警if(sys_ctrl.level>sys_ctrl.levelh){MOTOR_PS=0;MOTOR_BS=1;beep_alarm(100,20); }//下限閾值,排水關(guān)閉,補(bǔ)水開啟,蜂鳴器報警else if(sys_ctrl.level<sys_ctrl.levell){MOTOR_PS=1;MOTOR_BS=0;beep_alarm(100,20); }//正常液位,排水關(guān)閉,補(bǔ)水關(guān)閉else{MOTOR_PS=1;MOTOR_BS=1; }break; } }//智能溫濕度大棚控制系統(tǒng) void appdemo_show(void) {lcd1602_init();//初始界面lcd1602_show_string(0,0," Current Level ");lcd1602_show_string(0,1," mm");sys_para_init();//系統(tǒng)參數(shù)初始化sys_get_data();while(1){key_set_threshold();//閾值設(shè)定sys_get_data();//數(shù)據(jù)采集sys_data_show();//采集數(shù)據(jù)顯示auto_control();//溫濕度自動控制} }四、實驗現(xiàn)象
B站演示視頻:https://space.bilibili.com/444388619
聯(lián)系作者
B站演示視頻:https://space.bilibili.com/444388619
專注于51單片機(jī)、STM32、國產(chǎn)32、DSP、Proteus、ardunio、ESP32、物聯(lián)網(wǎng)軟件開發(fā),PCB設(shè)計,視頻分享,技術(shù)交流。
總結(jié)
以上是生活随笔為你收集整理的【Proteus仿真】【51单片机】水箱液位检测控制装置设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触摸屏手势控制镜头旋转与缩放
- 下一篇: 理解锁相环的工作原理