標(biāo)題:
如何用51單片機(jī)來(lái)完成超聲波測(cè)距
[打印本頁(yè)]
作者:
大宏哥
時(shí)間:
2017-4-26 14:32
標(biāo)題:
如何用51單片機(jī)來(lái)完成超聲波測(cè)距
求各路大神前來(lái)指導(dǎo)啊,首先我先來(lái)單片機(jī)控制超聲波測(cè)距模塊的程序,只要有大神來(lái)幫忙能完成的活,肯定少不了你的好處的
作者:
美猴王HLM
時(shí)間:
2017-4-26 16:30
/***********************************************************************************************************/ //HC-SR04 超聲波測(cè)距模塊 DEMO 程序 //晶振:11。0592 //接線:模塊模塊 TRIG接 P2.0 ECH0 接P2.1 VCC接單片供電正極5V,GND接單片系統(tǒng)板的GND //蜂鳴器接p2.7 /***********************************************************************************************************/ #include <AT89X51.H> #include <intrins.h> #include <STDIO.H> #define uchar unsigned char #define uint unsigned int #define RX P2_1 #define TX P2_0 #define buzzer P2_7 unsigned int time=0; unsigned int timer=0; float S=0; bit flag =0; /********************************************************/ void delayms(unsigned int ms) { unsigned char i=60,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } } } /********************************************************/ void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.87)/100; //算出來(lái)是CM if((S>=42000)||flag==1) //超出測(cè)量 { flag=0; buzzer=1;//printf("S=-----CM\n"); } else { buzzer=1; //delayms(500); delayms(S); //printf("S=%fCM\n",S); buzzer=0; delayms(S); } } /********************************************************/ void zd0() interrupt 1 //T0中斷用來(lái)計(jì)數(shù)器溢出,超過(guò)測(cè)距范圍 { flag=1; //中斷溢出標(biāo)志 } /********************************************************/ void StartModule() //T1中斷用來(lái)掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊 { TX=1; //800MS 啟動(dòng)一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } /********************************************************/ void main(void) { TMOD=0x21; //設(shè)T0為方式1,GATE=1; SCON=0x50; TH1=0xFD; TL1=0xFD; TH0=0; TL0=0; TR0=0; ET0=1; //允許T0中斷 TR1=1; //開(kāi)啟定時(shí)器 TI=1; EA=1; //開(kāi)啟總中斷 //delayms(100); //printf("超聲波串口測(cè)量系統(tǒng)\n"); //delayms(100); while(1) { StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR0=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR0=0; //關(guān)閉計(jì)數(shù) Conut(); //計(jì)算 //delayms(50); } }
作者:
美猴王HLM
時(shí)間:
2017-4-26 16:31
復(fù)制的時(shí)候格式亂了,將就著看吧
作者:
大宏哥
時(shí)間:
2017-4-26 16:44
666,我去調(diào)試一下,可以的話在聯(lián)系你
作者:
大宏哥
時(shí)間:
2017-4-26 16:45
美猴王HLM 發(fā)表于 2017-4-26 16:31
復(fù)制的時(shí)候格式亂了,將就著看吧
666,我去調(diào)試一下,可以的話在聯(lián)系你
作者:
白羊一只老母豬
時(shí)間:
2017-4-26 21:31
樓上有回答了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1