日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Proteus仿真】【51单片机】水箱液位检测控制装置设计

發布時間:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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单片机】水箱液位检测控制装置设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。