|
非常簡(jiǎn)潔!可直接調(diào)用�。�!
單片機(jī)源程序如下:
- #include "STC15Fxxxx.H"
- #include "hc_sr04.h"
- u16 time=0;
- u16 timer=0;
- bit flag =0;
- void Delay45us() //@11.0592MHz
- {
- unsigned char i;
- i = 122;
- while (--i);
- }
- //========================================================================
- // 函數(shù): HC_SR04_Init()
- // 描述: 初始化HC_SR04所需硬件。
- // 參數(shù):
- // 返回: none.
- //========================================================================
- void HC_SR04_Init()
- {
- TMOD |= 0x01; //定時(shí)器0 16位不可重裝模式
- TH0 = 0x00; // 設(shè)置定時(shí)初值
- TL0 = 0x00; //設(shè)置定時(shí)初值
- TR0=1;
- ET0=1;
- EA=1;
- }
- //========================================================================
- // 函數(shù): HC_SR04_Start()
- // 描述: 開始發(fā)送聲波。
- // 參數(shù):
- // 返回: none.
- //========================================================================
- void HC_SR04_Start()
- {
- Trig_Pin = 0;
- Delay45us();
- Trig_Pin = 1;
- }
- //========================================================================
- // 函數(shù): int HC_SR04_Loop()
- // 描述: 返回距離。
- // 參數(shù):
- // 返回: distance:距離(單位:厘米).
- //========================================================================
- int HC_SR04_Loop()
- {
- int distance;//distance|距離
- HC_SR04_Start();
- while(!Echo_Pin); //Wait when RX is zero|當(dāng)RX為零時(shí)等待
- TR0=1; //Opening count|開啟計(jì)數(shù)
- while(Echo_Pin); //When RX counts to 1 and waits|當(dāng)RX為1計(jì)數(shù)并等待
- TR0=0; //Closing count|關(guān)閉計(jì)數(shù)
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
- distance=(time*1.87)/100; //算出來是CM
- if(flag==1) //超出測(cè)量
- {
- flag=0;
- distance=0;
- }
- return distance;
- }
- void zd0() interrupt 1 //T0中斷用來計(jì)數(shù)器溢出,超過測(cè)距范圍
- {
- flag=1; //中斷溢出標(biāo)志
- }
復(fù)制代碼
所有資料51hei提供下載:
HC_SR04.zip
(60.9 KB, 下載次數(shù): 75)
2019-7-7 16:30 上傳
點(diǎn)擊文件名下載附件
|
|