欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
超聲波模塊的一點收獲
[打印本頁]
作者:
CLAY
時間:
2017-8-3 23:45
標題:
超聲波模塊的一點收獲
其實超聲波賊簡單,只是難者不會,會者不難而已。
核心就是先讓Trig產生10+us的高電平,然后等待echo的出現高電平,開啟定時器進行計數,完了關閉計數。計數對應的時間就是往返的時間。
乘以聲速除以2就是距離。
不多說了,看代碼一切理解。
#include <stdio.h>
#include <reg51.h>
#include <intrins.h>
sbit echo = P2 ^ 1;//超聲波測距的數據返回端口
sbit trig = P2 ^ 0;//起始控制端口
unsigned char flag = 0;
unsigned int time=0;//計數
float length;//返回距離
unsigned char str[12];
extern void InitLcd1602();
extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
void LcdFullClear();
void FloatToStr(unsigned char *str, float dat)
{
unsigned int H, L;
signed char i = 0;
unsigned char buf[12] = {0};
H = (unsigned int)dat;
L = dat*100-H*100;
do { //先轉換為低位在前的十進制數組
buf[i++] = H % 10;
H /= 10;
} while (H > 0);
while (i-- > 0) //將數組值轉換為ASCII碼反向拷貝到接收指針上
{
*str++ = buf[i] + '0';
}
*str++ = '.';
*str++ = L/10 + '0';
*str++ = L%10 + '0';
*str = '\0';
}
void Init()//用于初始化設置定時器和串口波特率
{
SCON = 0x50;
TH1 = 0xFD;
TL1 = 0xFD;//串口設置
TI = 1;
TR1 = 1; //開啟定時器
TMOD = 0x21; //設T0為方式1
TH0 = 0;
TL0 = 0;
TR0 = 0;//定時器初始關閉
ET0 = 1; //允許T0中斷
EA = 1; //開啟總中斷
}
void start_10() //10us+的起始信號
{
int i;
trig = 1;
for (i = 0; i <= 13; i++)
{
_nop_();
}
trig = 0; //重新拉回低電平
}
void Count(void)//用于將時間換算成長度
{
unsigned char str[12];
time = TH0 * 256 + TL0;
TH0 = 0;
TL0 = 0;
length = (time * 1.87)/100; //算出來是CM
if(!flag)
{
//printf("%f\n",length);
FloatToStr(str, length);
LcdShowStr(2,0, str);
}
else
{
flag = 0;
//printf("error\n");
LcdShowStr(2,0, "error");
}
}
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 22;
j = 3;
k = 227;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Scan()
{
start_10();
while (!echo); //當RX為零時等待
TR0 = 1; //開啟計數
while (echo); //當RX為1計數并等待
TR0 = 0; //關閉計數
Count();//計算出距離
Delay500ms();
LcdFullClear();
}
void main()
{
Init();//定時器初始化
InitLcd1602();
while(1)
{
Scan();
}
}
void Timer0() interrupt 1
{
flag = 1;
}
復制代碼
作者:
沉默的長明燈
時間:
2017-8-4 09:34
哈哈,正好可以做參考
作者:
笨笨兔
時間:
2017-8-4 09:41
難者不會,會者不難
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1