91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

我們知道超聲波在空氣中的傳播速度為0.34mm/us,這樣只要能夠精確計算高電平的持續時間,測量精度就能夠達到0.34mm。 具體的高精度算法我已經寫到程序里面了,需要的同學可以點擊下載HC-SR04超聲波模塊驅動程序

資源截圖

代碼片段和文件信息

#include?“SR04.h“
/**********************************************************************
/*----------------????1.開發環境:Keil?v5 ?????----------------*/
/*----------------????2.使用單片機型號:STC89C52R??????----------------*/
/*----------------????3.單片機使用晶振:11.0592M ?????----------------*/
/*接線方式????????????????????????????????????????????????????????????*/
/*連接線圖: ?????????????????????????????????????????????????????????*/
/*???????----------------------------------??????????????????????????*/
/*???????|?TRIG?-----?P1.2?|ECH0?-----P1.1|??????????????????????????*/
/*???????----------------------------------??????????????????????????*/
/*???????????????????????????????????????????????????????????????????*/
/*???????????????????????????????????????????????????????????????????*/
//測量數據
//Count/2???????us???????us/2?????us/2?/?Count/2
//306???????????668??????334??????????1.0915
//292???????????636??????318??????????1.0890
//270???????????588??????294??????????1.0888
//254???????????552??????276??????????1.0866
//247???????????540??????270??????????1.0931
//216???????????472??????236??????????1.0925
//366???????????796??????398??????????1.0874
//404???????????880??????440??????????1.089
//340000?mm/1000000us?=0.34mm/us


/*[注:AT89x51使用12M或11.0592M晶振實測使用11.0592M]
/*?文件歷史:
/*?版本號?????日期???????作者????說明
/*?v0.1????2018-03-24???Pang??創建該文件
/*===================================================================*/
unsigned?int??time?=?0;
unsigned?int??timer?=?0;
float?????????S?=?0;
bit???????????SRflag?=?0;
/********************************************************/
void?Conut(void)
{
time?=?TH0?*?256?+?TL0;
TH0?=?0;
TL0?=?0;

/*S=(float)time/2;//算出來是mm
S=S*1.089;
S=S*0.34;//mm
S=time*0.5*1.089*0.34;
*/
S?=?(float)time?*?0.18513;?//一次性算完,提高效率;

if(SRflag?==?1) ??//超出測量
{
SRflag?=?0;
//??printf(“-----\n“);
}

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

/********************************************************/
void?zd0()?interrupt?1? ?//T0中斷用來計數器溢出超過測距范圍
{
SRflag?=?1; ?//中斷溢出標志
}
/********************************************************/
void??StartModule()? ?????????//T1中斷用來掃描數碼管和計800MS啟動模塊
{
TX?=?1; ???????????????//800MS??啟動一次模塊
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX?=?0;
}

void?SR04Init(void)
{
TMOD?|=?0x01;?//定時器1方式1,計數與否不受P3.3的影響
TH0?=?0;
TL0?=?0;?//定時器1的計數起點為0
TR0?=?0;?//啟動定時器1
//ET0=1;??//TF0?如果這個標志為1,進入中斷子函數

EA?=?1; //開啟總中斷
}
/********************************************************/
float?getDistance(void)
{
StartModule();
while(!RX); //當RX為零時等待
TR0?=?1; ??//開啟計數
while(RX); //當RX為1計數并等待
TR0?=?0; //關閉計數
Conut(); //計算
return?S;

}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3124??2018-05-01?14:00??SR04.c
?????文件?????????250??2018-05-01?14:00??SR04.h

評論

共有 條評論