×
单片机 > 单片机程序设计 > 详情

HC-SR04超声波测距仪 基础代码

发布时间:2020-07-08 发布时间:
|

>_<:>

>_<:51>

>_<:>


  1 /***********************************************************************************************************/

  2 //HC-SR04 超声波测距模块 DEMO 程序

  3 //晶振:11。0592

  4 //接线:模块TRIG接 P1.2  ECH0 接P1.1

  5 //串口波特率9600

  6 /***********************************************************************************************************/      

  7 #include  

  8 #include  

  9 #include  

 10 

 11 #define uchar unsigned  char

 12 #define uint  unsigned   int  

 13 #define  RX  P1_1

 14 #define  TX  P1_2

 15 

 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;     //算出来是CM

 30     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);        //100MS

108     }

109 }      





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32 USB HID 键盘