超聲波傳感器測(cè)距的原理主要是測(cè)出回波和發(fā)射脈沖之間的時(shí)間間隔,由公式:
距離=速度*時(shí)間/2計(jì)算,輸出顯示。下面我們以AT89C2051超聲波測(cè)距程序?yàn)槔右哉f(shuō)明。
AT89C2051通過(guò)P1.6輸出10個(gè)40kHz脈沖,由非門(mén)做電流放大,以推挽形式加到變壓器的初級(jí),升壓后推動(dòng)
超聲波傳感器換能器。在發(fā)射的同時(shí), P1.7輸出一個(gè)高電平啟動(dòng),給電容C4充電,。發(fā)射結(jié)束時(shí)高電平翻轉(zhuǎn)為低電平,C4開(kāi)始對(duì)R2、R3組成的分壓器放電并輸出到比較器的負(fù)端。
超聲波接收換能器將回波送到放大器進(jìn)行放大后,送入機(jī)內(nèi)比較器的正輸入端。發(fā)射時(shí)P1.7輸出的電平用以抑制比較器的翻轉(zhuǎn),稱(chēng)為渡越時(shí)間,抑制發(fā)射器發(fā)射的超聲波直接輻射到接收器。
超聲波傳感器測(cè)距系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì),由主程序、發(fā)射子程序、查蟓接收子程序、定時(shí)子程序、顯示子程序等模塊組成。該系統(tǒng)的主程序處于鍵控循環(huán)工作方式,當(dāng)按下測(cè)量鍵時(shí),主程序開(kāi)始調(diào)用發(fā)射子程序、查詢(xún)接收子程序、定時(shí)子程序,并把測(cè)量結(jié)果用顯示子程序在液晶屏上顯示出來(lái)。
由于液晶要使用同一P3口,所以必須使用位操作,否則將導(dǎo)致LCD不能正常顯示。在系統(tǒng)還可以加入
溫度傳感器來(lái)監(jiān)測(cè)環(huán)境溫度,可進(jìn)行溫度被償。為了增強(qiáng)系統(tǒng)的可靠性,應(yīng)在軟硬件上采用抗干擾措施。
下面是AT89C2051超聲波測(cè)距程序,僅供大家參考:
# pragma DB OE CD OT(5,SPEED) ROM(LARGE)IV
/*連接所需要的庫(kù)*/
#i nclude
#i nclude
#i nclude
/*定義數(shù)據(jù)類(lèi)型*/
typedef unsingned char byte;
typedef unsigned int word
#define uchar unsigned char
#define unint unsigned int
#define ulong unsigned long
/*定義系統(tǒng)常數(shù)*/
#define TRUE 1
#define FALSE 0
#define C=340 /*聲速*/
/*定義功能位*/
sbit bflag=ACC7;
sbit VOLCK=P1^5;
sbit MING=P3^5;
sbit QUIET=P1^3;
sbit BACK=P1^2;
/*定義顯示緩沖區(qū)*/
uchar idata ON[16]={’,’L’,’E’,’N’,’G’,’T’,’H’,’=’,’8’,’.’,’8
’8’,’m’,’’,’’,’’};
/*主程序用延時(shí)子程序*/
woid main-delay(void)
{
register i;
TRO=1;
&
nbsp; for(i=0;i<15;i++)
{
TH0=0;
TL0=0;
Do{}while(!TF0);
TF0=0;
}
TR0=0;
}
*/通用延時(shí)子程序*/
void delay(void)
{
unint i;
for(i=0;i<200;i++){;}
}
/*鍵盤(pán)延時(shí)子程序*/
void key-delay(void)
{
unint i;
for(i=0;i<200;i++){;}
}
/*初始化程序*/
void start_main()
{
tegister i;
uchar a[16]={’’,’L’,’E’,’N’,’G’,’T’,’H’,’=,’8’,’.’,’8’,’8
’,’m’,’’,’’,’’};
for(i=0;<16;i++)
{ON[i]=a[i];}
nitlcd();/*初始化液晶*/
display(ON);/*更新顯示*/
}
/*主程序*/
void main()
{
register s,keycode;
long idata t;
start-main();/*初始化*/
main-delay();/*延時(shí)*/;
if(keycoed= =true)
{
keycode=key-scan-wait();
/*判斷是否有測(cè)量鍵按下*/
t=measure();*/測(cè)量*/
S=0.5*t*C;*/換算*/
Decode-bcd(s.0x09);
/*把測(cè)量結(jié)果置換入顯示緩沖區(qū)*/
init-lcd();/*初始化液晶*/
display(ON);/*更新顯示*/
}
}
其他特價(jià)產(chǎn)品
1LG6253-4MA91-ZSIEMENS高壓液壓站
1LA9163-4KA91-ZSIEMENS高壓液壓站
1PH7184-7NF000AJ3-ZSIEMENS
1LA9183-2WA61-ZSIEMENS
1LA9090-2KA11-ZSIEMENS
1PH7186-7ND300AA3SIEMENS
1LA7096-4AA91SIEMENS
1LG4207-4AA60SIEMENS
1FT6132-6SB71-1DG0SIEMENS
1LE1001-1CA03-4AA4SIEMENS
1LE10011DA433JZ6ZSIEMENS
1LG4316-4AA66-ZSIEMENS
1LA5186-4AA66-Z SIEMENS
主營(yíng)產(chǎn)品:Sick傳感器,Sick激光掃描儀 ,Sick安全光柵 ,
sick激光掃描儀 ,編碼器 ,安全光柵 ,安全繼電器 ,CAPTRON觸摸開(kāi)關(guān)
,菲尼克斯PHOENIX CONTACT
進(jìn)入上海遠(yuǎn)康自動(dòng)化淘寶店鋪