基于STC89C51單片機(jī)的智能超聲波避障小車文檔良心出品_第1頁(yè)
基于STC89C51單片機(jī)的智能超聲波避障小車文檔良心出品_第2頁(yè)
基于STC89C51單片機(jī)的智能超聲波避障小車文檔良心出品_第3頁(yè)
基于STC89C51單片機(jī)的智能超聲波避障小車文檔良心出品_第4頁(yè)
基于STC89C51單片機(jī)的智能超聲波避障小車文檔良心出品_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于STC89C5辱片機(jī)的智能超聲波避障小車參賽人員:周志強(qiáng)王俊朱紀(jì)偉聶孟杰班 級(jí):2021級(jí)自動(dòng)化3班期:2021年3月本小車使用一臺(tái)AT89C52單片機(jī)作為主控芯片,它通過超聲波測(cè)距來(lái)獲 取小車距離障礙物的距離,并且用液晶顯示器實(shí)時(shí)的顯示出來(lái), 在小車與障礙 物的距離小丁平安距離40cm 時(shí),小車上蜂鳴器會(huì)發(fā)出警報(bào)聲,并且后退 并拐彎,同時(shí)通過 LCD1602顯示器顯示出小車與障礙物之間的距離,精確到 0.1cm.在避開障礙物后,小車會(huì)沿直線前進(jìn).本系統(tǒng)設(shè)計(jì)的簡(jiǎn)易智能小車分為幾個(gè)模塊:?jiǎn)纹瑱C(jī)限制系統(tǒng)、 LCD1602M 示器.超聲波路面檢測(cè)系統(tǒng)、前進(jìn)、轉(zhuǎn)彎限制電機(jī)以及方向指示燈系統(tǒng).它們

2、之間的相互關(guān)系如以下圖所示.限制電機(jī)智能小車簡(jiǎn)要原理框架圖、總體電路原理圖15vcc<KD|IHg:GTE:U'4WSKP3 4LiS243INSIN?aeINCIN5 宓14 ?.- ?IS12 5二n CTO ToovT9 JONIS PS2傳感器模塊K 103KvccIL |' *9W1 103KVCC電源指示gWIi-gnd15J17K$J?soU71-J2 TO GNDGXDCl470uFGXD電源供電系統(tǒng)傳感器指示燈超聲波模塊接口2 3 4 5 0 J n 1* 1* 1* 11 IX p p p p p PJ3XvccN0UT4GNDGND0UT3NEN2

3、5en1n0ut1gndgndvcc2頃 1* 3 456 7 sIK2pl11OTU電機(jī)驅(qū)動(dòng)模塊ORJP12Vz4 1. IIllLtii:4WK12 OK手接收I?.IKP63RSTSTCt ITI- CIO C2-VGC VS* Vft-UKTIOLT12 INTJOUTRIC1.TR2GLTR2IXGhDM<V2?2<a_就-.L-.I.OCT4OLTLIS4111*a時(shí)vexGSD21N-3ggg2CCT3OVT超聲波模塊三、主要模塊根本原理(1)超聲波模塊i*us;模決內(nèi)搟發(fā)出岱號(hào)倫出M響 他弓超聲波時(shí)序圖以上時(shí)序圖說(shuō)明你只需要提供一個(gè) 10uS以上脈沖觸發(fā)信號(hào),該模塊

4、內(nèi)部將 發(fā)出8個(gè)40kHz周期電平并檢測(cè)回波.一旦檢測(cè)到回波信號(hào)那么輸出回響信號(hào). 回響信號(hào)的脈沖寬度與所測(cè)的距離成正比.由此通過發(fā)射信號(hào)到收到的回響信 號(hào)時(shí)間間隔可以計(jì)算得到距離.公式:距離 =高電平時(shí)間*聲速(340M/S) /2.(2)液晶顯示模塊LCD1602如上圖所示,整個(gè)液晶屏采用標(biāo)準(zhǔn)的 16腳接口,其中GND為電源地,VCC 接5V正電源,VEE為液晶顯示屏比照度調(diào)整端,通過一個(gè)可調(diào)電阻接地,可調(diào) 電阻調(diào)到最大時(shí)比照度最弱,可調(diào)電阻調(diào)到零時(shí)比照度最高.RS為存放器選擇端,高電平時(shí)選擇數(shù)據(jù)存放器、低電平時(shí)選擇指令存放器.RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作.當(dāng)R

5、S和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為 高電平RVW低電平時(shí)可以寫入數(shù)據(jù).E端為使能端,當(dāng)E端由低電平跳變成高 電平時(shí),液晶屏執(zhí)行命令.DBODB7為8位雙向數(shù)據(jù)線.四、流程圖及源代碼主函數(shù)流程圖源程序#include <at89x51.h>#include <intrins.h>#include "LCD1602display.h"#define TX P2_1#define RX P2_0sbit DU = P2A6;sbit WE = P2A7;#define Forward_L_DA

6、TA 180/當(dāng)前進(jìn)不能走直線的時(shí)候,請(qǐng)調(diào)節(jié)這兩個(gè)參數(shù),理想的時(shí)候是100,100,最大256,最小0.0的時(shí)候最慢,256的時(shí)候最快#define Forward_R_DATA 180 例如小車前進(jìn)的時(shí)候有點(diǎn)向左拐,說(shuō)明右邊馬達(dá)轉(zhuǎn)速過快,那苛如一個(gè)值大一點(diǎn),另外一個(gè)值小一點(diǎn),例如 200 190直流電機(jī)由于制造上的誤差,同一個(gè)脈寬下也不一定速度一致的,需要自己手動(dòng)調(diào)節(jié)/sbit P4_0=0xc0;/P4 口 地址/*根據(jù)原圖接線定義*/sbit L293D_IN1=P1A2;sbit L293D_IN2=P1A3;sbit L293D_IN3=P1A6;sbit L293D_IN4=P1A

7、7;sbit L293D_EN1=P1A4;sbit L293D_EN2=P1A5;sbit BUZZ=P2A3; 蜂鳴器void cmg88()/關(guān)數(shù)碼管,點(diǎn)陣函數(shù)(DU=1;P0=0X00;DU=0;void Delay400Ms(void);/ 延時(shí) 400 毫秒函數(shù)unsigned char code Range ="=Range Finder="/LCD1602顯示格式unsigned char code ASCII13 = "0123456789.-M"unsigned char code table="Distance:000.0

8、cm"unsigned char code table1="! Out of range"unsigned char disbuff4=(0,0,0,0;/ 用于分別存放距離的值 0.1mm、mm、cm 和 m 的值void Count(void);/距離計(jì)算函數(shù)unsigned int time=0;/用于存放定時(shí)器時(shí)間值unsigned long S=0;/用于存放距離的值bit flag =0; 量程溢出標(biāo)志位bit turn_right_flag;/=void Forward(unsigned char Speed_Right,unsigned char

9、Speed_Left)/ 前進(jìn)(一一L293D_IN1=0;L293D_IN2=1;L293D_IN3=1;L293D_IN4=0;void Stop(void) 剎車(L293D_IN1=0;L293D_IN2=0;L293D_IN3=0;L293D_IN4=0;void Turn_Right(unsigned char Speed_Right,unsigned char Speed_Left) / 后退左轉(zhuǎn)(L293D_IN1=1;L293D_IN2=0;L293D_IN3=1;L293D_IN4=0;Delay(100);L293D_IN1=1;L293D_IN2=0;L293D_IN3

10、=1;L293D_IN4=0;/=/* 距離計(jì)算程序 */void Conut(void)(time=TH1*256+TL1;TH1=0;TL1=0;此時(shí)time的時(shí)間單位決定于晶振的速度,外接晶振為11.0592MHZ時(shí),/time的值為0.54us*time,單位為微秒那么1us聲波能走多遠(yuǎn)的距離呢?1s=1000ms=1000000us/ 340/1000000=0.00034米/0.00034米/1000=0.34毫米 也就是1us能走0.34毫米但是,我們現(xiàn)在計(jì)算的是從超聲波發(fā)射到反射接收的雙路程,/所以我們將計(jì)算的結(jié)果除以2才是實(shí)際的路程S=time*2;/先算出一共的時(shí)間是多少微

11、秒.S=S*0.17;/此時(shí)計(jì)算到的結(jié)果為毫米,并且是精確到毫米的后兩位了,有兩 個(gè)小數(shù)點(diǎn)if(S<=300) /(if(turn_right_flag!=1)( 一 一Stop();Delay1ms(5);/發(fā)現(xiàn)小車自動(dòng)復(fù)位的時(shí)候,可以稍微延長(zhǎng)一點(diǎn)這個(gè)延 時(shí),減少電機(jī)反向電壓對(duì)電路板的沖擊.turn_right_flag=1;P2_3=0;Delay1ms(50);P2_3=1;Turn_Right(120,120);小于設(shè)定距離時(shí)電機(jī)后退轉(zhuǎn)彎else(turn_right_flag=0;Forward(Forward_R_DATA,Forward_L_DATA);前進(jìn)(大于20-30

12、CM 前進(jìn))/=if(S>=5000)|flag=1) / 超出測(cè)量范圍(flag=0;DisplayListChar(0, 1, table1);else(disbuff0=S%10;disbuff1=S/10%10;disbuff2=S/100%10;disbuff3=S/1000;DisplayListChar(0, 1, table);DisplayOneChar(9, 1, ASCIIdisbuff3);DisplayOneChar(10, 1, ASCIIdisbuff2);DisplayOneChar(11, 1, ASCIIdisbuff1);DisplayOneChar

13、(12, 1, ASCII10);DisplayOneChar(13, 1, ASCIIdisbuff0);/*/void zd0() interrupt 3/T0中斷用來(lái)計(jì)數(shù)器溢出,超過測(cè)距范圍flag=1;中斷溢出標(biāo)志RX=0;/* 超聲波高電平脈沖寬度計(jì)算程序*/void Timer_Count(void)TR1=1;開啟計(jì)數(shù)while(RX);當(dāng)RX為1計(jì)數(shù)并等待TR1=0;關(guān)閉計(jì)數(shù)Conut();計(jì)算/*/void StartModule()啟動(dòng)模塊TX=1;啟動(dòng)一次模塊Delay10us(2);TX=0;/*/ /* 主程序 */void main(void)unsigned ch

14、ar i;unsigned int a;cmg88();/關(guān)數(shù)碼管Delay1ms(400);園動(dòng)等待,等LCM講入工作狀態(tài)LCMInit(); /LCM 初始化Delay1ms(5);/延時(shí)片刻DisplayListChar(0, 0, Range);DisplayListChar(0, 1, table);TMOD=TMOD|0x10;/ 設(shè) T0 為方式 1, GATE=1;EA=1;開啟總中斷TH1=0;TL1=0;ET1=1;允許T0中斷/= /PWM_ini();/= turn_right_flag=0;/B:for(i=0;i<50;i+) / 判斷 K3 是否按下(Delay1ms(1);/1ms內(nèi)判斷50次,如果其中有一次被判斷到K3沒按下,便重新檢測(cè)if(P3_6!=0 )/當(dāng)K3按下時(shí),啟動(dòng)小車goto B; 跳轉(zhuǎn)到標(biāo)號(hào)B,重新檢測(cè)蜂鳴器響一聲BUZZ=0; /50次檢測(cè)K3確認(rèn)是按下之后,蜂鳴器發(fā)出“滴聲響,然后 啟動(dòng)小車.Delay1ms(50);BUZZ=1;/響50

溫馨提示

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

評(píng)論

0/150

提交評(píng)論