工作原理:
系统采用AT89S52单片机作为主、从机的控制芯片,24位高精度A/D转换芯片Hx711处理称重传感器输出微弱电压信号的变化,将其转换为数字信号,通过软件将ADHX711转换后的数字信号换算成相应的水位值显示在液晶屏12864上。水位控制装置如图,水位控制系统。
系统采用刻度尺作为实际值的测量工具;主机按键模块的作用是设定水箱水位;主机显示模块显示水泵状态及水箱水位值、当前水位值;串口模块传输数据及控制信号;从机显示模块显示状态与主机显示模块一致。
个实现的程序,按照流程走已经实现,不过单片机的数据通道你应该可以自己打开吧,以及把单片机传感器上获得的值给我写的那些参数就可以了,自己去实现以下就可以了,我用的C++写的,你可以把预处理文件改称C,更具自己的编译器来吧#include <iostream>
using namespace std
void checkWaterLevel(int uLevel,int dLevel)//检查水位函数
bool controlWaterLevel()//PI算法检查水位 ,算法自己添加进去,
int main()
{
int upLevel,downlevel
upLevel = 3// 设置水位的最高值
downlevel = 7// 设置水位的最低值
cout <<"The water's upLevel is 3 and downlevel is 7! " <<endl
checkWaterLevel(upLevel,downlevel)
return 0
}
void checkWaterLevel(int uLevel,int dLevel)
{
int level
cout <<"Get a water level: "
cin >>level
if (level <uLevel) // 检查是否在最高水位的下限
{
cout <<"start work!"<<endl// 自己把这里的方法改成单片机的控制命令就OK了,我就不帮你写了
}
else
{
if(level >dLevel) // 检查是否在最低水位的下限
{
cout <<"stop work!" <<endl// 自己把这里的方法改成单片机的控制命令就OK了,我就不帮你写了
}
else
{
controlWaterLevel()
}
}
}
bool controlWaterLevel() // PI算法自己有的话,可以把PI算法放进这个函数里面去就可以了
{
int setWaterLevel,getWaterLevel
cout <<"Set water's level!" <<endl//设置水位的 预设值
cin >>setWaterLevel
cout <<"now water's Level is: "
cin >>getWaterLevel//获得水位,怎么获得水位更具自己单片机的传感器来设置
cout <<endl
if (getWaterLevel == setWaterLevel) // 判断水位是否等于设置水位
cout <<"end work!" <<endl//自己把这里的方法改成单片机的控制命令就OK了,我就不帮你写了
return false
controlWaterLevel()
}
另外,团IDC网上有许多产品团购,便宜有口碑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)