新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī) HCSR04超聲波測(cè)距儀 基礎(chǔ)代碼

51單片機(jī) HCSR04超聲波測(cè)距儀 基礎(chǔ)代碼

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
>_<:超聲波測(cè)距儀模塊:

本文引用地址:http://butianyuan.cn/article/201611/318641.htm

>_<:51單片機(jī),11.0592MHz晶振,將采集數(shù)據(jù)發(fā)送到串口的基礎(chǔ)例子:

>_<:代碼:

1 /***********************************************************************************************************/2 //HC-SR04 超聲波測(cè)距模塊 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;     //算出來(lái)是CM30     if(flag==1)               //超出測(cè)量31     {32         flag=0;33         printf("--n"); 34     }    35     printf("S=%fn",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中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍52 {53     flag=1;                     //中斷溢出標(biāo)志54 }55 /********************************************************/56 void  StartModule()          //T1中斷用來(lái)掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊57 {58     TX=1;                     //800MS  啟動(dòng)一次模塊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;                   //設(shè)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;                       //開啟定時(shí)器94     TI=1;95     96     EA=1;                       //開啟總中斷97     98     99     while(1)100     {101         StartModule();102         while(!RX);            //當(dāng)RX為零時(shí)等待103         TR0=1;                //開啟計(jì)數(shù)104         while(RX);            //當(dāng)RX為1計(jì)數(shù)并等待105         TR0=0;                //關(guān)閉計(jì)數(shù)106         Conut();            //計(jì)算107         delayms(10);        //100MS108     }109 }              



評(píng)論


技術(shù)專區(qū)

關(guān)閉