一、理论部分
1.板子
2.引脚图
3.引脚注释
4.原理图
5.基本原理
6.实现步骤
二、代码部分
1.超声波初始化函数
2.超声波距离读取函数
三、程序部分
1.12us
2.超声波初始化函数
3.超声波距离读取函数
#include <ultrasonic.h>
#include <intrins.h>
sbit Tx = P1^0;//发射端
sbit Rx = P1^1;//接收端
void Delay12us() //@12.000MHz
{
unsigned char i;
_nop_();
_nop_();
i = 38;
while (--i);
}
void Wave_Init()//超声波初始化函数 产生8个40mhz的方波
{
unsigned char i;
for(i=0;i<8;i++)
{
Tx = 1;
Delay12us();
Tx = 0;
Delay12us();
}
}
unsigned int Ut_Wave_Data() //超声波距离读取函数
{
unsigned int time;//int!!!
TMOD &= 0x0f;
TH1 = TL1 =0;
Wave_Init();
while((Rx == 1) && (TF1 == 0));
TR1 = 0;
if(TF1 == 0)
{
time = TH1 << 8 |TL1;
return (time * 0.017);
}
else
{
TF1 = 0;
return 0;
}
}
4.超声波数据显示
unsigned char Wave_Data;
/* 信息处理函数 */
void Seg_Proc()
{
if(Seg_Slow_Down) return;
Seg_Slow_Down = 1;//数码管减速程序
Wave_Data = Ut_Wave_Data();
Seg_Buf[0] = Wave_Data / 100 % 10;
Seg_Buf[1] = Wave_Data / 10 % 10;
Seg_Buf[2] = Wave_Data % 10;
}