欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機超聲波模塊的測距程序
[打印本頁]
作者:
CTKM
時間:
2024-8-11 22:08
標題:
51單片機超聲波模塊的測距程序
基于stc89c52單片機,采用HC-SR04模塊利用聲波反彈算出距離。
#include "reg52.h"
//距離小于10cm,D5亮,D6滅,反之相反現象
sbit D5 = P2^0;
sbit D6 = P2^1;
sbit Trig = P1^5;
sbit Echo = P1^6;
void Delay10us() //@11.0592MHz
{
unsigned char i;
i = 2;
while (--i);
}
void Time0Init()
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01;
TH0 = 0;
TL0 = 0;
//設置定時器0工作模式1,初始值設定0開始數數,不著急啟動定時器
}
/*
十進制2左移1位,變成20。相當于乘以10
二禁止1左移1位,變成10(2)。相當于乘以2,左移8位,乘以2的8次方=256;*/
void startHC()
{
Trig = 0;
Trig = 1;
Delay10us();
Trig = 0;
}
void main()
{
double time;
double dis;
Time0Init();
while(1){
//1. Trig ,給Trig端口至少10us的高電平
startHC();
//2. echo由低電平跳轉到高電平,表示開始發送波
while(Echo == 0);
//波發出去的那一下,開始啟動定時器
TR0 = 1;
//3. 由高電平跳轉回低電平,表示波回來了
while(Echo == 1);
//波回來的那一下,我們開始停止定時器
TR0 = 0;
//4. 計算出中間經過多少時間
time = (TH0 * 256 + TL0)*1.085;//us為單位
//5. 距離 = 速度 (340m/s)* 時間/2
dis = time * 0.017;
if(dis < 10){
D5 = 0;
D6 = 1;
}else{
D5 = 1;
D6 = 0;
}
//定時器數據清零,以便下一次測距
TH0 = 0;
TL0 = 0;
}
}
復制代碼
1723385268482.png
(372.23 KB, 下載次數: 13)
下載附件
2024-8-11 22:08 上傳
作者:
lsh04
時間:
2024-8-20 08:37
謝謝分享
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1