超聲波避障小車程序設(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單片機+HCSRO4超聲波/*/#includeAT89x52、H>/器件配置文件# include<intrins、h>#defineRX1P3_6小車左側(cè)超聲波HC-SRO4接收端# defineTX1P1_7發(fā)送端# defineRX2P3_3左前方超聲波# defineTX2P0_2# defineRX3P24/正前方超聲波# defineTX3P2_5#defineRX4P3_5右前方超聲波# defineTX4P3_4# defineRX5P3_7/右側(cè)超聲波# defineTX5P1_6# defineLeft_moto_pwmP1

2、_5/PWM信號端# defineRight_moto_pwmP1_4/PWM信號端/定義小車驅(qū)動模塊輸入IO口sbitIN1=P1A0;sbitIN2=P1人1;sbitIN3=P1人2;sbitIN4=P1A3;sbitEN1=Pi4;sbitEN2=P1A5;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)

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

4、er=0;unsignedlongSI=0;unsignedlongS2=0;unsigned1ongS3=0;unsignedlongS4=0;unsignedlongS5=0;voiddelay_1ms(unsignedcharx)/1ms延時函數(shù),100ms以內(nèi)可用unsignedchari;while()for(i=124;i0;i);/*voidCount1()計算左側(cè)超聲波距離得函數(shù)while(!RX1);/當(dāng)RX1為零時等待TRO=1;開啟計數(shù)whi1e(RX1);/當(dāng)RX1為1計數(shù)并等待TR0=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S1=(ti

5、me*1、7)/100;/算出來就是CMvoidCount2()/計算函數(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;TLO=0;S2=(time*1、7)/100;算出來就是CMvoidCount3()/計算函數(shù)whi1e(!RX3);當(dāng)RX3為零時等待TR0=1;/開啟計數(shù)while(RX3);/當(dāng)RX3為1計數(shù)并等待TRO=0;關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=O;S3=(time*1、7)/100;/算出來就是CMvoidCo

6、unt4()/計算函數(shù)while(!RX4);當(dāng)RX4為零時等待TRO=1;/開啟計數(shù)while(RX4);當(dāng)RX4為1計數(shù)并等待TRO=0;/關(guān)閉計數(shù)time=TH0*256+TL0;TH0=0;TL0=0;S4=(time*1、7)/100;/算出來就是CMvoidCount5()/計算函數(shù)while(!RX5);當(dāng)RX5為零時等待0=1 ;/開啟計數(shù)w h i 1 e ( RX5 ); 當(dāng)RX 5為1計數(shù)并等待TR0=0;/ 關(guān)閉計數(shù)time =TH0* 256+TL 0;TH0=0;TL0=0;S5= ( t ime*1、7)/1 0 0;/算出來就是 C Mvo i d left r

7、 un (void) push_val_left=20 ;push_va 1 _right=20;Le f t_moto_ b ac k /左電機往后走Right _ mot o _go /右電機往前走/ * * * * * * * * * * * * * * * / / 右轉(zhuǎn)run(voi d)p ushva 1le f t=2 0 ;u sh_val_r i gh t =20;Le f t _moto_go /左電機往前走* * * * * * *R ig h t_mot o _ ba c* * */ 右電機往后走* * * * * * * * * */ / 停止voi dstoprun

8、(vo id)(eftm o to_S t op /左電機停/* * * * R i g ht_m o to_Stop* * * */ 右電機停* * * * * * * * * / / PWM調(diào)制機轉(zhuǎn)*/ * * * * * * * * * * * * * * * * * * */*速,占空比占空比左電機調(diào)速* /*/六調(diào)節(jié)s h val lef t得值改變電機轉(zhuǎn)oi d pw m_out_ 1 e f t_moto( v oid)if(Left_moto_ s to p )if (pwm _ val_ left=pu sh_val_left)e 1 seLeft_ m oto _ pw m

9、= 1 ;Letf _m o t o _ pwm=0;if (pwm_val_left >=20)p wm_val_left= 0 ;el s e* * * * *L ef t _m o t o _pwm = 0 ;* * * * * * * * * /*右電機調(diào)速*/v o i d pwm _ou t _ ri ght_m o t o (void)if (Ri gh t _mo t o _sto p)i f ( pwm_va 1 _rig h t =push_val_r i ght)R i gh t _ moto_ p w m=1;seR ight_ m oto_pwm=0;al r

10、ight= 20 )pw mval_ ri g ht=0;elseRig t_ m oto_pw m = 0 ;/ * * * * * * *voi d timer0() i nterpt 1/T 0中斷/* * * * * * * * * * * * */ / / * TIM E R1中斷服務(wù)子函數(shù)產(chǎn)生PWM 信號v o id t im e r1 () i nte r rupt 3 TH 1 =(6 5 5361000) / 2 56;/1ms 定時 TL1= ( 6 5536 10 0 0 )% 2 56;timer+;p w m _val_1 e f t+ + ;pwm_val_riht

11、 ;pwm_out_left_moto();pwm_out_right_moto()/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * vo i dmai n (v o id)TM OD =0x1 1 ;設(shè)T0為方式1, GATE=1 ;TH0=0;TL0=0;TH1=(655361000)/256;/1ms定時TL1=(655361000)%256;ET0=1;允許T0中斷ET1=1;允許T1中斷TR1=1;/開啟定時器EA=1;/開啟總中斷while(1)TX1=1;開啟超聲波1探測delay_1ms(1);TX1=0;Count1();/測距TX2=1;de1ay_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(S3<20&&S1<20&&S5<20)/進入狹窄通道backrun();倒車delay_1ms(100);elseif(S3<20&&S1<S5)/車子與障礙物90度垂直,左邊距離小右轉(zhuǎn)rig

溫馨提示

  • 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

提交評論