【Proteus仿真】【51单片机】水箱液位检测控制装置设计
生活随笔
收集整理的這篇文章主要介紹了
【Proteus仿真】【51单片机】水箱液位检测控制装置设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、主要功能
- 二、硬件資源
- 三、軟件設計
- 四、實驗現象
- 聯系作者
一、主要功能
1、壓力液位檢測
2、閾值設定,超限報警
3、壓力液位顯示
4、補排水自動控制
二、硬件資源
1、51單片機核心模塊
2、PCF8591 AD/DA模塊
3、LCD1602液晶模塊
4、蜂鳴器模塊
5、排水、補水控制電路
6、按鍵模塊
三、軟件設計
#include "appdemo.h" #include "lcd1602.h" #include "key.h" #include "beep.h" #include "pcf8591.h" #include "exti.h"//定義補水控制腳 sbit MOTOR_BS=P1^0; //定義排水控制腳 sbit MOTOR_PS=P1^1;//定義結構體 _sys_ctrl sys_ctrl;//閾值設定 void key_set_threshold(void) {u8 key=0;key=key_scan(0);//模式設定顯示if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>=3)sys_ctrl.mode=1;lcd1602_clear();switch(sys_ctrl.mode){case 1://液位上限設置顯示界面 lcd1602_show_string(0,0,"LevelH Set:");break;case 2://液位下限設置顯示界面 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");}//液位上限設置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); }//液位下限設置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); } }//參數初始化 void sys_para_init(void) {sys_ctrl.mode=0;sys_ctrl.levelh=80;sys_ctrl.levell=20; }//數據采集 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); } }//采集數據顯示 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){//上限閾值,排水開啟,補水關閉,蜂鳴器報警if(sys_ctrl.level>sys_ctrl.levelh){MOTOR_PS=0;MOTOR_BS=1;beep_alarm(100,20); }//下限閾值,排水關閉,補水開啟,蜂鳴器報警else if(sys_ctrl.level<sys_ctrl.levell){MOTOR_PS=1;MOTOR_BS=0;beep_alarm(100,20); }//正常液位,排水關閉,補水關閉else{MOTOR_PS=1;MOTOR_BS=1; }break; } }//智能溫濕度大棚控制系統 void appdemo_show(void) {lcd1602_init();//初始界面lcd1602_show_string(0,0," Current Level ");lcd1602_show_string(0,1," mm");sys_para_init();//系統參數初始化sys_get_data();while(1){key_set_threshold();//閾值設定sys_get_data();//數據采集sys_data_show();//采集數據顯示auto_control();//溫濕度自動控制} }四、實驗現象
B站演示視頻:https://space.bilibili.com/444388619
聯系作者
B站演示視頻:https://space.bilibili.com/444388619
專注于51單片機、STM32、國產32、DSP、Proteus、ardunio、ESP32、物聯網軟件開發,PCB設計,視頻分享,技術交流。
總結
以上是生活随笔為你收集整理的【Proteus仿真】【51单片机】水箱液位检测控制装置设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触摸屏手势控制镜头旋转与缩放
- 下一篇: 理解锁相环的工作原理