您的位置 首页 产品

51单片机 HCSR04超声波测距仪 根底代码

>_:超声波测距仪模块:>_:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子:>_:代码:1/*****************************…

>_<:超声波测距仪模块:

>_<:51单片机,11.0592MHz晶振,将并重数据发送到串口的根底比如:

>_<:代码:

1 /***********************************************************************************************************/2 //HC-SR04 超声波测距模块 DEMO 程序3 //晶振:11。05924 //接线:模块TRIG接 P1.2  ECH0 接P1.15 //串口波特率96006 /***********************************************************************************************************/      7 #include   8 #include   9 #include   10 11 #define uchar unsigned  char12 #define uint  unsigned   int  13 #define  RX  P1_114 #define  TX  P1_215 16 17 unsigned int  time=0;18 unsigned int  timer=0;19 float         S=0;20 bit           flag =0;21 22 23 /********************************************************/24 void Conut(void)25 {26     time=TH0*256+TL0;27     TH0=0;28     TL0=0;29     S=(time*1.87)/100;     //算出来是CM30     if(flag==1)               //超出丈量31     {32         flag=0;33         printf("--\n"); 34     }    35     printf("S=%f\n",S); 36 }37 /********************************************************/ 38 void delayms(unsigned int ms)39 {40     unsigned char i=100,j;41     for(;ms;ms--)42     {43         while(--i)44         {45             j=10;46             while(--j);47         }48     }49 }50 /********************************************************/51 void zd0() interrupt 1          //T0中止用来计数器溢出,超越测距规模52 {53     flag=1;                     //中止溢出标志54 }55 /********************************************************/56 void  StartModule()          //T1中止用来扫描数码管和计800MS发动模块57 {58     TX=1;                     //800MS  发动一次模块59     _nop_(); 60     _nop_(); 61     _nop_(); 62     _nop_(); 63     _nop_(); 64     _nop_(); 65     _nop_(); 66     _nop_(); 67     _nop_(); 68     _nop_(); 69     _nop_(); 70     _nop_(); 71     _nop_(); 72     _nop_(); 73     _nop_(); 74     _nop_(); 75     _nop_();76     _nop_(); 77     _nop_(); 78     _nop_(); 79     _nop_();80     TX=0;81 }82 /********************************************************/83 void main(void)84 {  85     TMOD=0x21;                   //设T0为方法1,GATE=1;86     SCON=0x50;87     TH1=0xFD;88     TL1=0xFD;89     TH0=0;90     TL0=0; 91     TR0=1;  92     ET0=1;                     //答应T0中止93     TR1=1;                       //舱位定时器94     TI=1;95     96     EA=1;                       //舱位总中止97     98     99     while(1)100     {101         StartModule();102         while(!RX);            //当RX为零时等候103         TR0=1;                //舱位计数104         while(RX);            //当RX为1计数并等候105         TR0=0;                //封闭计数106         Conut();            //核算107         delayms(10);        //100MS108     }109 }              

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/263769.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部