51单片机超声波测距c程序

51单片机超声波测距c程序

ID:1194054

大小:193.50 KB

页数:9页

时间:2017-11-08

51单片机超声波测距c程序_第1页
51单片机超声波测距c程序_第2页
51单片机超声波测距c程序_第3页
51单片机超声波测距c程序_第4页
51单片机超声波测距c程序_第5页
资源描述:

《51单片机超声波测距c程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、51单片机超声波测距C程序(2010-01-2614:09:10) 超声波检测原理  超声波测距的程序流程图程序如下://超声波模块程序//超声波模块程序//Trig =P2^0//Echo =P3^2#include    #defineucharunsignedchar#defineuint unsignedint//voiddelay(uintz){ uintx,y;  for(x=z;x>0;x--)  for(y=110;y>0;y--);}//voiddelay_20us() {    uchara;   for(a

2、=0;a<100;a++); }//***************************************************************//显示数据转换程序voiddisplay(uinttemp)  {    ucharge,shi,bai;   bai=temp/100;   shi=(temp%100)/10;     ge=temp%10;     wela=1;   P0=0xf7;   wela=0;   dula=1;   P0=table[bai];   dula=0;  delay(1);   dula

3、=1;  P0=0x00;  //关位码  dula=0;   wela=1;   P0=0xef;   wela=0;   dula=1;   P0=table[shi];   dula=0;   delay(1);   dula=1;   P0=0x00;  //关位码  dula=0;   dula=1;   P0=table[ge];   dula=0;   wela=1;   P0=0xdf;   wela=0;   delay(1);   dula=1;   P0=0x00;  //关位码  dula=0; }//**********

4、*****************************************************voidmain()  {    uintdistance;   test=0;   Trig=0;      //首先拉低脉冲输入引脚   EA=1;        //打开总中断0    TMOD=0x10;   //定时器1,16位工作方式    while(1)           {      EA=0;          //关总中断      Trig=1;        //超声波输入端       delay_20us();

5、  //延时20us       Trig=0;        //产生一个20us的脉冲       while(Echo==0);//等待Echo回波引脚变高电平       succeed_flag=0;//清测量成功标志      EA=1;        EX0=1;         //打开外部中断0       TH1=0;         //定时器1清零       TL1=0;         //定时器1清零       TF1=0;         //计数溢出标志       TR1=1;         //启动定时器

6、1       delay(20);     //等待测量的结果       TR1=0;         //关闭定时器1       EX0=0;         //关闭外部中断0      if(succeed_flag==1)      {             time=timeH*256+timeL;         distance=time*0.172; //厘米         display(distance);      }                             if(succeed_flag==0) 

7、     {         distance=0;                   //没有回波则清零         test=!test;                 //测试灯变化       }                 }}//***************************************************************//外部中断0,用做判断回波电平voidexter() interrupt0  //外部中断0是0号 {       timeH=TH1;   //取出定时器的值     

8、timeL=TL1;   //取出定时器的值    succeed_flag=1;//至成功测量的标志    EX0=0;       

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。