A. 8051單片機的水位監測程序c語言的
用超聲波比較好
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit fa = P3^3;
sbit shou = P3^2;
uchar code DSY[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code Heng[] = {0x01,0x02,0x04,0x08,0x10};
uint temp;
uchar succeed_flag;
uint time;
uchar test,timeH,timeL;
void delay(int ms)
{
int i;
while(ms--)
{
for(i = 0; i< 120; i++);
}
}
void delay_20us()
{
uchar a ;
for(a=0;a<100;a++);
}
void show()
{
uchar i;
uchar dsy2[5];
dsy2[0] = DSY[temp % 10];
dsy2[1] = DSY[temp / 10 %10];
dsy2[2] = DSY[temp / 100 % 10];
dsy2[3] = DSY[temp / 1000 % 10];
dsy2[4] = DSY[temp / 10000];
for(i=0;i<5;i++)
{
P0 = dsy2[i];
P1 = ~Heng[i];
delay(2);
}
}
void main()
{
test =0;
fa = 1; //首先拉低脈沖輸入引腳
EA = 1; //打開總中斷0
TMOD=0x10; //定時器1,16位工作方式
while(1)
{
EA = 0; //關總中斷
fa = 0; //超聲波輸入端
delay_20us(); //延時20us
fa = 1; //產生一個20us的脈沖
while(shou == 0); //等待Echo回波引腳變高電平
succeed_flag = 0; //清測量成功標志
EA = 1;
EX0 = 1; //打開外部中斷0
TH1 = 0; //定時器1清零
TL1 = 0; //定時器1清零
TF1 = 0; //計數溢出標志
TR1 = 1; //啟動定時器1
delay(20); //等待測量的結果
TR1 = 0; //關閉定時器1
EX0 = 0; //關閉外部中斷0
if(succeed_flag == 1)
{
time = timeH * 256 + timeL;
temp = time * 0.172; //厘米
show();
}
if(succeed_flag == 0)
{
temp = 0; //沒有回波則清零
test = !test; //測試燈變化
}
}
}
void exter() interrupt 0 // 外部中斷0是0號
{
timeH =TH1; //取出定時器的值
timeL =TL1; //取出定時器的值
succeed_flag = 1;//至成功測量的標志
EX0 = 0; //關閉外部中斷
}
//****************************************************************
//定時器1中斷,用做超聲波測距計時
void timer1() interrupt 3 //
{
TH1=0;
TL1=0;
}
B. 求一個C語言程序,是基於單片機的溫度和水位控制,其溫度加熱和加水排水均採用繼電器電路控制。
你好!
1、一般情況下,加溫加溫都用PID控制,這樣准確率高;
2、你發的圖太小,應該直接發文件;
3、編程是用C語言嗎?匯編我不會;
4、具體要求發一下,可以,私,信,我
C. 基於c語言環境的單液位槽液位控制系統的設計 要求,在c語言環境下,編寫相關程序實現對液位液槽的檢查,控
Based on your subject
給我留一個你的問題和Email,
請與我們聯系進一步需求,
有可能幫你,
使用網路_Hi給我留言,
此回復針對所有來訪者和需求者有效,
ES:\\
D. C語言編程
呃,建議你提高分值,這樣會有更多人來幫助你。因為你的要求是做一個程序,所以獲得滿意答案的可能性不大。
E. 高塔水位報警系統c語言程序
個s實現的程序,按照流程走已v經實現,不g過單片3機的數據通道你應該可以4自己j打開w吧,以8及l把單片5機感測器上u獲得的值給我寫的那些參數就可以2了j,自己w去實現以2下e就可以1了y,我用的C++寫的,你可以1把預處理文5件改稱C,更具自己r的編譯器來吧 #include <iostream> using namespace std; void checkWaterLevel(int uLevel,int dLevel); 。。檢查水5位函數 bool controlWaterLevel(); 。。PI演算法檢查水4位 ,演算法自己z添加進去, int main() { int upLevel,downlevel; upLevel = 4; 。。 設置水0位的最高值 downlevel = 0;。。 設置水6位的最低值 cout << "The water's upLevel is 8 and downlevel is 2! " << endl; checkWaterLevel(upLevel,downlevel); return 0; } void checkWaterLevel(int uLevel,int dLevel) { int level; cout << "Get a water level: "; cin >> level; if (level < uLevel) 。。 檢查是否在最高水3位的下f限 { cout << "start work!"<<endl; 。。 自己i把這里的方5法改成單片4機的控制命令就OK了u,我就不e幫你寫了j } else { if(level > dLevel) 。。 檢查是否在最低水4位的下i限 { cout << "stop work!" << endl; 。。 自己y把這里的方7法改成單片8機的控制命令就OK了t,我就不w幫你寫了i } else { controlWaterLevel(); } } } bool controlWaterLevel() 。。 PI演算法自己k有的話,可以1把PI演算法放進這個a函數裡面去就可以4了w { int setWaterLevel,getWaterLevel; cout << "Set water's level!" << endl; 。。設置水5位的 預設值 cin >> setWaterLevel; cout << "now water's Level is: "; cin >> getWaterLevel; 。。獲得水2位,怎麼m獲得水2位更具自己d單片1機的感測器來設置 cout << endl; if (getWaterLevel == setWaterLevel) 。。 判斷水2位是否等於l設置水5位 cout << "end work!" << endl; 。。自己n把這里的方8法改成單片7機的控制命令就OK了o,我就不r幫你寫了v return false; controlWaterLevel(); } 另外,團IDC網上o有許多產品團購,便宜有口d碑 z茅mu鍘ou鍘tx肌簪病癭qⅣ◇cqⅣ◇
F. 求助。。用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();
}
G. c語言程序設計水位控制系統,我有流程圖和原理圖但沒有程序 幫忙 編寫個 謝謝
個實現的程序,按照流程走已經實現,不過單片機的數據通道你應該可以自己打開吧,以及把單片機感測器上獲得的值給我寫的那些參數就可以了,自己去實現以下就可以了,我用的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網上有許多產品團購,便宜有口碑
H. 一種水塔水位控制系統的設計,需要C語言程序。有流程圖和原理圖
我畢業論文(2011)也是這個課題。
供參考:
金龍國.單片機原理與應用[M].北京:中國水利水電出版社,2005.第221頁(匯編語言)。
其中的匯編程序有點排版錯誤,沒有大礙,你自己改一下。
林立.基於Proteus和KeilC單片機原理及應用[M].北京:電子工業出版社,2009.第180頁(C語言)。
如果你去買這兩本書的話,給你建議,用第二本書上那個例子中的原理圖中電機控制系統部分代替第一本書上那個例子的相應部分。
另外水塔水位可以用二位拔碼器代替(高低電平)。
下面給你一些所需要的Proteus模擬元件清單(供參考):
DIPSW-2(拔碼器),MOTOR電機,OPTOCOUPLER-NPN光電耦合器,W107DIP-3繼電器。
I. 在keilC51中容器水位控制系統的程序是怎麼樣的
這種問題 能在這里回答嗎?找地方下載去吧 !會者的人是懶得來這里回你帖的!好好把書看 !
J. 水井抽水 C程序
#include"stdio.h"
#include"Windows.h"
staticboolflag=false;
boolcheck(floathigh,booltest){
if(high>5){
returntrue;
}elseif(high<1){
returnfalse;
}
if(test){
returntrue;
}else{
returnfalse;
}
}
intmain(){
floatadd=1;//水面上升速度
floatsub=2; //抽水速度
floatbegin=6;
boolflag;//水泵開關狀態
booltest=true;
while(1){
printf("水面高度:%.0f ",begin);
flag=check(begin,test);
if(flag){
printf("水泵打開 ");
test=true;
begin=begin+add-sub;
}else{
printf("水泵關閉 ");
test=false;
begin=begin+add;
}
Sleep(1000);
}
}