最经典的52单片机C语言HC -SR 04超声波测距程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/***********************************************************************************************************/
//HC-SR04超声波测距模块//晶振:11。0592
/***********************************************************************************************************/
{
TX=1;//800MS启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
void zd0() interrupt 1//T0中断用来计数器溢出,超过测距范围
{
flag=1;//中断溢出标志
}
/********************************************************/
void StartModule()//T1中断用来扫描数码管和计800MS启动模块
TL0=0;
ET0=1; //允许T0中断
TR0=0;
EA=1;//开启总中断
while(1)
{
StartModule();
whLeabharlann Baidule(!RX);//当RX为零时等待
TR0=1;//开启计数
while(RX);//当RX为1计数并等待
TR0=0;//关闭计数
Conut();//计算
}
}
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100; //算出来是cM
if(flag==1)//超出测量
{
flag=0;
}
if(S<15&&S>0)
{
moto_left();
}
else
{
moto_forward();
}
}
/********************************************************/
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
/********************************************************/
void main(void)
{
TX=0;
RX=0;
TMOD=0x01;//设T0为方式1,GATE=1;
TH0=0;
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX=P2^1;
sbit TX=P2^2;
unsigned int time=0;
unsigned int timer=0;
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************/
float S=0;
bit flag =0;
void moto_left()
{
P1=0x02;
}
void moto_forward()
{
P1=0x0a;
}
/********************************************************/
void Conut(void)
相关文档
最新文档