新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 超聲波水位測量控制系統(tǒng)C語言源程序

超聲波水位測量控制系統(tǒng)C語言源程序

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
本文介紹一個(gè)超聲波水位測量控制系統(tǒng)C語言源程序,本設(shè)計(jì)的超聲波水位測量控制系統(tǒng)是一種利用超聲波技術(shù)、電子技術(shù)、電磁開關(guān)技術(shù)相結(jié)合來實(shí)現(xiàn)非接觸式液位測量和控制系統(tǒng),能夠在某些特定場合或環(huán)境比較惡劣的情況下使用,在工業(yè)監(jiān)測和控制等方面得到了廣泛應(yīng)用。近些年來,工業(yè)水平的不斷發(fā)展對液位測量的精度、廣度和抗干擾性提出了越來越高的要求,超聲波測距技術(shù)本身也在不斷的完善和發(fā)展,測距儀更趨向小型化和智能化,逐步實(shí)現(xiàn)了高精確度、高可靠性、安全性和多功能化。
言源程序,電子小制作可測量并顯示液位,還可以通過單片機(jī)控制把液位限定在某一范圍內(nèi),在單片機(jī)控制失效的情況下發(fā)出報(bào)警信號,提醒工作人員進(jìn)行手動控制。研究內(nèi)容包括超聲波測距的基本原理與方法、精度影響因素的分析與解決辦法、單片機(jī)對閥門的控制方法、監(jiān)控系統(tǒng)的整體方案設(shè)計(jì)、硬件設(shè)計(jì)、軟件流程設(shè)計(jì)等。設(shè)計(jì)完成之后提供一套可以使用的超聲波測距儀,測量范圍和測量精度滿足一般工業(yè)應(yīng)用需要。設(shè)計(jì)完成之后應(yīng)提供一套可以用于一般工業(yè)生產(chǎn)的液位監(jiān)控系統(tǒng)。通過畢業(yè)設(shè)計(jì)的整個(gè)過程,可以綜合運(yùn)用傳感器、單片機(jī)、電子電路和程序設(shè)計(jì)方面的知識,鍛煉和提高動手能力、參與科研工作的能力。
言源程序涉及了所學(xué)的單片機(jī)、自動控制原理、數(shù)字電路、模擬電路、電路分析、軟件技術(shù)、智能檢測與轉(zhuǎn)換技術(shù)等幾乎所有的專業(yè)課程,很好的體現(xiàn)了綜合訓(xùn)練的要求。本電子小制作設(shè)計(jì)屬于一個(gè)完整的系統(tǒng),設(shè)計(jì)過程中需要考慮的因素較多,但設(shè)計(jì)功能相對較為簡單不會存在太大困難,題目難易適中。既可以鞏固所學(xué)的知識和技能,又可以有所提高。本課題相對其它課題來說,資料相對較多,搜索資料相對容易。但對本科生來說,從眾多質(zhì)量參差不齊的資料中選擇最合適的資料也是比較困難的。言源程序這對設(shè)計(jì)學(xué)生來說是一次很好的鍛煉。
//超聲波水位測量控制系統(tǒng)C語言源程序
#include
#define uchar unsigned char
#define uint unsigned int
sbit Trig=P1^0;sbit Echo=P3^2;
sbit lcden=P0^4;
sbit lcdrs=P0^1;
sbit alertl=P1^1;//低水位報(bào)警,紅燈亮電子小制作
sbit alertm=P1^7;//中水位綠燈亮
sbit alerth=P1^4;//高水位報(bào)警,黃燈亮
sbit pumb=P0^2;//low vol is avalibal http://www.duankudp.com/
sbit power=P3^5;
uint time,distance,waterlevel;
uchar timeH,timeL;
bit succeed_flag;
void delay(uint z);

//超聲波水位測量控制系統(tǒng)C語言源程序電子小制作
void init()
{
power=0; //power is ok
lcden=0; //low enble http://www.duankudp.com/
write_com(0x38);
write_com(0x0c); //display open ,cursor off,blink off
write_com(0x06); //pointer auto add 1
write_com(0x01); //clear screen and pointer
write_com(0x80);
TMOD=0x10; //time1,16 bit timmer
EA=0; //open entire interrupt
Trig=0;
Echo=0;
delay(1);
}
//***************************************************************
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//***************************************************************電子小制作
void display(uint temp)
{
write_com(0x83);
write_dat((temp/100)+0x30);
delay(20);
write_dat(temp/10+0x30);
delay(20);
write_dat(temp+0x30);

}
//***************************************************************
void delay_20us()
{
uchar a ;
for(a=0;a<100;a++);
}
//***************************************************************
void display1()
{
uchar code table[]="SIAS UNIVERSITY ";
uchar code table1[]="ZZS 20071521258 ";
uchar num;
write_com(0x80);
for(num=0;num<16;num++)
{
write_dat(table[num]);
delay(300);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_dat(table1[num]);
delay(300);
}
write_com(0x01);
delay(1000);
}
//***************************************************************
//***************************************************************
//外部中斷0,用做判斷回波電平//超聲波水位測量控制系統(tǒng)C語言源程序
void exter() interrupt 0 // 外部中斷0是0號http://www.5imcu.net/
{
timeH =TH1; //取出定時(shí)器的值
timeL =TL1; //取出定時(shí)器的值
succeed_flag=1;//至成功測量的標(biāo)志
EX0=0; //關(guān)閉外部中斷
}
//****************************************************************
//定時(shí)器1中斷,用做超聲波測距計(jì)時(shí)//超聲波水位測量控制系統(tǒng)C語言源程序

void timer1() interrupt 3 //
{
TH1=0;
TL1=0;
}
//***************************************************************
//***************************************************************
void main()
{
init(); //timer1,16 bit
display1();
init1();
while(1)
{
alertl=1; //low alert
alertm=1; //middle alert
alerth=1; //high alert
EA=0; //off entire interrupt
Trig=1; //ultrasonic Trigger
delay_20us(); //delay 20us
Trig=0; //20uss Pulse
while(Echo==0); //wait Echo change High Vol
succeed_flag=0; //clear succeed flag
EA=1; //open entire interruot
EX0=1; //open exinterrupt0
TH1=0; //clear timer1s high 8 bit
TL1=0; //clear timer1s low 8 bit
TF1=0; //clear timer1s overflow bit
TR1=1; //start timer1
delay(20); //waitting
TR1=0; //stop timer1
EX0=0; //off exinterrupt0
if(succeed_flag==1)
{
time=timeH*256+timeL; //entire time
distance=time*0.172; //s=t*340/2*1000mm
waterlevel=163-distance; //
if(waterlevel>=0&&waterlevel<=163)
display(waterlevel);

}
if(succeed_flag==0)
{
distance=0;//沒有回波則清零//超聲波水位測量控制系統(tǒng)C語言源程序

}
if(waterlevel>=0&&waterlevel<=50)
{
write_com(0x8C);
write_dat(L);
alertl=0;//RED Light,low water level
pumb=0;//open pumb,add water http://www.5imcu.net/
}
else if(waterlevel>50&&waterlevel<=100)
{
write_com(0x8C);
write_dat(M);
alertm=0;
}
else if(waterlevel>100&&waterlevel<=163)
{
write_com(0x8C);
write_dat(H);
alerth=0;
pumb=1;//off pumb http://www.5imcu.net/
}


delay(200);

}
}
//***************************************************************


評論


技術(shù)專區(qū)

關(guān)閉