超聲波避障小車程序設(shè)計參考模板_第1頁
超聲波避障小車程序設(shè)計參考模板_第2頁
超聲波避障小車程序設(shè)計參考模板_第3頁
超聲波避障小車程序設(shè)計參考模板_第4頁
超聲波避障小車程序設(shè)計參考模板_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、/*/5路超聲波避障實驗:51單片機+HC-SR04超聲波/*/#include/器件配置文件#include#defineRX1P3_6/小車左側(cè)超聲波HC-SR04接收端#defineTX1P1_7/發(fā)送端#defineRX2P3_3/左前方超聲波#defineTX2P0_2#defineRX3P2_4/正前方超聲波#defineTX3P2_5#defineRX4P3_5/右前方超聲波#defineTX4P3_4#defineRX5P3_7/右側(cè)超聲波#defineTX5P1_6#defineLeft_moto_pwmP1_5/PWM信號端#defineRight_moto_pwmP1_4

2、/PWM信號端/定義小車驅(qū)動模塊輸入IO口sbitIN1=P10;sbitIN2=P11;sbitIN3=P12;sbitIN4=P13;sbitEN1=P14;sbitEN2=P15;bitRight_moto_stop=1;bitLeft_moto_stop=1;#defineLeft_moto_goIN1=0,IN2=1,EN1=1;/左電機向前走#defineLeft_moto_backIN1=1,IN2=0,EN1=1;/左邊電機向后走#defineLeft_moto_StopEN1=0;/左邊電機停轉(zhuǎn)#defineRight_moto_goIN3=1,IN4=0,EN2=1;/右邊

3、電機向前走#defineRight_moto_backIN3=0,IN4=1,EN2=1;/右邊電機向后走#defineRight_moto_StopEN2=0;/右邊電機停轉(zhuǎn)unsignedcharpwm_val_left=0;/變量定義unsignedcharpush_val_left=0;/左電機占空比N/20unsignedcharpwm_val_right=0;unsignedcharpush_val_right=0;/右電機占空比N/20unsignedinttime=0;unsignedinttimer=0;unsignedlongS1=0;unsignedlongS2=0;un

4、signedlongS3=0;unsignedlongS4=0;1 / 5unsignedlongS5=0;voiddelay_1ms(unsignedcharx)/1ms延時函數(shù),100ms以內(nèi)可用unsignedchari;while(x-)for(i=124;i0;i-);/*/voidCount1()/計算左側(cè)超聲波距離的函數(shù)while(!RX1);/當(dāng)RX1為零時等待TR0=1;/開啟計數(shù)while(RX1);/當(dāng)RX1為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S1=(time*1.7)/100;/算出來是CMvoidCount2(

5、)/計算函數(shù)while(!RX2);/當(dāng)RX2為零時等待TR0=1;/開啟計數(shù)while(RX2);/當(dāng)RX2為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S2=(time*1.7)/100;/算出來是CMvoidCount3()/計算函數(shù)while(!RX3);/當(dāng)RX3為零時等待TR0=1;/開啟計數(shù)while(RX3);/當(dāng)RX3為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S3=(time*1.7)/100;/算出來是CMvoidCount4()/計算函數(shù)while(!RX4);/當(dāng)RX4為

6、零時等待TR0=1;/開啟計數(shù)while(RX4);/當(dāng)RX4為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S4=(time*1.7)/100;/算出來是CMvoidCount5()/計算函數(shù)while(!RX5);/當(dāng)RX5為零時等待TR0=1;/開啟計數(shù)while(RX5);/當(dāng)RX5為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S5=(time*1.7)/100;/算出來是CMvoidleftrun(void)push_val_left=20;push_val_right=20;Left_mo

7、to_back/左電機往后走Right_moto_go/右電機往前走/*/右轉(zhuǎn)voidrightrun(void)push_val_left=20;push_val_right=20;Left_moto_go/左電機往前走Right_moto_back/右電機往后走/*/停止voidstoprun(void)Left_moto_Stop/左電機停Right_moto_Stop/右電機停/*/*PWM調(diào)制電機轉(zhuǎn)速*/*/*左電機調(diào)速*/*調(diào)節(jié)push_val_left的值改變電機轉(zhuǎn)速,占空比*/voidpwm_out_left_moto(void)if(Left_moto_stop) if(pw

8、m_val_left=20)pwm_val_left=0;elseLeft_moto_pwm=0;/*/*右電機調(diào)速*/voidpwm_out_right_moto(void)if(Right_moto_stop)if(pwm_val_right=20)pwm_val_right=0;elseRight_moto_pwm=0;/*/voidtimer0()interrupt1/T0中斷/*/*TIMER1中斷服務(wù)子函數(shù)產(chǎn)生PWM信號*/voidtimer1()interrupt3TH1=(65536-1000)/256;/1ms定時TL1=(65536-1000)%256;timer+;pwm

9、_val_left+;pwm_val_right+;pwm_out_left_moto();pwm_out_right_moto();/*/voidmain(void)TMOD=0x11;/設(shè)T0為方式1,GATE=1;TH0=0;TL0=0;TH1=(65536-1000)/256;/1ms定時TL1=(65536-1000)%256;ET0=1;/允許T0中斷ET1=1;/允許T1中斷TR1=1;/開啟定時器EA=1;/開啟總中斷while(1)TX1=1;/開啟超聲波1探測delay_1ms(1);TX1=0;Count1();/測距TX2=1;delay_1ms(1);TX2=0;Count2();TX3=1;delay_1ms(1);TX3=0;Count3();TX4=1;delay_1ms(1);TX4=0;Count4();TX5=1;delay_1ms(1);TX5=0;Count5();if(S320&S120&S520)/進入狹窄通道backrun();/倒車delay_1ms(100);elseif(S320&S1S5)/車子與障礙物90度垂直,左邊距離小右轉(zhuǎn)rightrun();elsei

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論