智能小車系統(tǒng)設(shè)計循跡超聲波遙控_第1頁
智能小車系統(tǒng)設(shè)計循跡超聲波遙控_第2頁
智能小車系統(tǒng)設(shè)計循跡超聲波遙控_第3頁
智能小車系統(tǒng)設(shè)計循跡超聲波遙控_第4頁
智能小車系統(tǒng)設(shè)計循跡超聲波遙控_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、任務(wù)書 年 季學(xué)期學(xué) 生 姓 名學(xué) 號專 業(yè) 方 向班 級題 目 名 稱智能小車系統(tǒng)設(shè)計2一、設(shè)計內(nèi)容及技術(shù)要求:(一)、任務(wù)描述利用智能小車系統(tǒng)設(shè)計2所提供部件(綜合訓(xùn)練目前共有3種智能小車模型),組裝小車模型,編寫檢測、控制程序,實現(xiàn)以單片機為控制系統(tǒng)核心的智能小車系統(tǒng)設(shè)計。(二)、控制任務(wù)和要求 基本任務(wù):1.完成小車的組裝工作2.小車可完成前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等動作,并且可以正確顯示當(dāng)前的速度及行進位移3.小車具有循跡(自己設(shè)計跑道)及避障功能4.三周設(shè)計任務(wù)完成后,不必拆分小車,將小車歸還老師并如實匯報功能部件運轉(zhuǎn)情況,便于老師及時維護,為下一組同學(xué)的設(shè)計做好準備進階任務(wù):1.實現(xiàn)

2、舵機轉(zhuǎn)動下的超聲波壁障功能,并且可以正確顯示前方物體的距離2.與按鍵功能配合,正確有序顯示小車位移、速度及與前方障礙物距離3.小車具有無線遙控功能4.與其它組的小車模型配合可以完成交替領(lǐng)跑任務(wù)二、課程設(shè)計總結(jié)報告要求:1.完整的設(shè)計任務(wù)書:封面(設(shè)計題目、指導(dǎo)教師、專業(yè)班級、姓名、學(xué)號、時間); 摘要及關(guān)鍵詞(35):設(shè)計總體概述(采用何種硬件,利用何種方法,設(shè)計何種東西,實現(xiàn)了何種功能) 目錄(按目錄格式書寫,頁碼要標清) 第一章 緒言 (本設(shè)計的內(nèi)容與實現(xiàn)的基本原理,設(shè)計的特點及可以最終可以實現(xiàn)的功能,可以達到的性能指標) 第二章 方案論證(對所提供的硬件理解并畫出系統(tǒng)結(jié)構(gòu)圖,為實現(xiàn)該任務(wù)

3、所采取軟件設(shè)計思路及核心算法) 第三章 硬件設(shè)計(按照結(jié)構(gòu)框圖對各功能部分進行分別介紹,如系統(tǒng)cpu部分、數(shù)據(jù)采集部分、程序控制部分、人機接口部分等) 第四章 軟件設(shè)計(整體設(shè)計思路,各獨立程序功能、原理介紹包括流程圖,如主程序、各子程序及中斷服務(wù)程序) 第五章 設(shè)計總結(jié)(對整個設(shè)計過程的總結(jié)、體會,還包括設(shè)計中遇到的問題及解決的辦法,以及想要實現(xiàn)卻未能完成的功能) 參考文獻:著作格式:作者.書名.版次.出版地:出版者,出版年; 期刊格式:作者.文章名.期刊名,年,卷(期):起止頁 注:字數(shù)10000字左右,不得抄襲和雷同,使用學(xué)生作業(yè)紙(16開) 2.手繪硬件連接2圖一張、手繪軟件流程2圖一

4、張。三、設(shè)計進度:第一周:熟悉掌握系統(tǒng)要求,完成硬件設(shè)計、調(diào)試。第二周:完成軟件設(shè)計,用仿真器完成軟、硬件聯(lián)調(diào),最終實現(xiàn)單片機在目標系統(tǒng)中的 合理運行第三周:完善設(shè)計,完成說明書編寫,答辯。指導(dǎo)教師簽字:附錄:電信學(xué)院課程設(shè)計報告要求1、 設(shè)計題目;2、 目錄;3、 本設(shè)計的基本原理;4、 簡要說明本設(shè)計內(nèi)容、用途及特點;5、 本設(shè)計達到的性能指標;6、 設(shè)計方案的選擇;7、 寫出各部分設(shè)計過程、工作原理、元器件選擇;8、 繪制圖紙(手繪2號圖紙);9、 設(shè)計參考文獻;10、 附錄;11、 設(shè)計總結(jié)體會;12、 設(shè)計說明書不得少于10000字。智能小車運行圖顯示速度,距離,超聲波探測距離經(jīng)過調(diào)

5、試,小車完美實現(xiàn)了如下功能1小車具有無線遙控功能,小車可完成前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等動作,并且可以正確顯示當(dāng)前的速度及行進位移。2.小車具有循跡及避障功能,實現(xiàn)了舵機轉(zhuǎn)動下的超聲波壁障功能,并且可以正確有序顯示小車位移、速度及與前方障礙物距離。3.與其它組的小車模型配合可以完成交替領(lǐng)跑任務(wù)。4小車所有模式切換均由遙控器控制。流程圖硬件原理圖附件一:智能小車系統(tǒng)程序#include #include sbit aa=p30; sbit dd=p31;sbit bb=p32;sbit cc=p22;sbit lcm_rw=p24; /定義lcd引腳sbit lcm_rs=p23;#define r

6、x p2_0#define tx p2_1#define lcm_e p2_5#define sevro_moto_pwm p2_7/接舵機信號端輸入pwm信號調(diào)節(jié)速度#define lcm_data p0#define busy 0x80 /用于檢測lcm狀態(tài)字中的busy標識#define left_1_led p3_7 /p3_7接四路尋跡模塊接口第一路輸出信號即中控板上面標記為out1#define xunji_left_led p3_6 /p3_6接四路尋跡模塊接口第二路輸出信號即中控板上面標記為out2#define xunji_right_led p3_5 /p3_5接四路尋跡模

7、塊接口第三路輸出信號即中控板上面標記為out3#define right_2_led p3_4 /p3_4接四路尋跡模塊接口第四路輸出信號即中控板上面標記為out4#define left_moto_go p1_4=1,p1_5=0,p1_6=1,p1_7=0; /左邊兩個電機向前走#define left_moto_back p1_4=0,p1_5=1,p1_6=0,p1_7=1; /左邊兩個電機向后轉(zhuǎn)#define left_moto_stop p1_4=0,p1_5=0,p1_6=0,p1_7=0; /左邊兩個電機停轉(zhuǎn) #define right_moto_go p1_0=1,p1_1=

8、0,p1_2=1,p1_3=0;/右邊兩個電機向前走#define right_moto_back p1_0=0,p1_1=1,p1_2=0,p1_3=1;/右邊兩個電機向后走#define right_moto_stop p1_0=0,p1_1=0,p1_2=0,p1_3=0;/右邊兩個電機停轉(zhuǎn) void lcminit(void); /lcd初始化函數(shù)void displayonechar(unsigned char x, unsigned char y, unsigned char ddata); /lcd顯示一個字符函數(shù)void displaylistchar(unsigned cha

9、r x, unsigned char y, unsigned char code *ddata);/lcd顯示一個字符串函數(shù)void delay5ms(void); /延時5毫秒函數(shù)void delay400ms(void); /延時400毫秒函數(shù)void decode(unsigned char scancode);void writedatalcm(unsigned char wdlcm); /lcd1602寫數(shù)據(jù)函數(shù)void writecommandlcm(unsigned char wclcm,buysc);/lcd寫命令函數(shù)unsigned char readstatuslcm(vo

10、id);unsigned char code range =v= cm/s s= . m; /lcd1602顯示格式unsigned char code welcome = welcome = ;unsigned char code key=press any key.;unsigned char code ascii13 = 0123456789.-m;unsigned char code table=distance:000.0cm;unsigned char code table1=yao kong mo shi ;unsigned char code table2=xun ji mo

11、shi= ;unsigned char pwm_val_left = 0;/變量定義unsigned char push_val_left =14;/舵機歸中,產(chǎn)生約,1.5ms 信號unsigned int ch0=0; /循跡模式標志unsigned int ch1=0; /超聲波模式標志unsigned int t=0; /速度基準變量unsigned int timer=0;/延時基準變量unsigned int time=0;unsigned int pwm=250;unsigned int count1=0; /計左電機碼盤脈沖值unsigned char timer1=0; /掃

12、描時間變量unsigned long s1=0;unsigned long s2=0;unsigned long s3=0;unsigned long s4=0; unsigned long s=0;unsigned long v=0; /定義其速度unsigned long ss=0;unsigned char disbuff4= 0,0,0,0,;unsigned char disbuff14= 0,0,0,0,;void writedatalcm(unsigned char wdlcm) /寫數(shù)據(jù)readstatuslcm(); /檢測忙lcm_data = wdlcm;lcm_rs =

13、 1;lcm_rw = 0;lcm_e = 0; /若晶振速度太高可以在這后加小的延時lcm_e = 0; /延時lcm_e = 1;void writecommandlcm(unsigned char wclcm,buysc) /寫指令,buysc為0時忽略忙檢測if (buysc) readstatuslcm(); /根據(jù)需要檢測忙lcm_data = wclcm;lcm_rs = 0;lcm_rw = 0;lcm_e = 0;lcm_e = 0;lcm_e = 1;unsigned char readstatuslcm(void) /讀狀態(tài)lcm_data = 0xff; lcm_rs

14、= 0;lcm_rw = 1;lcm_e = 0;lcm_e = 0;lcm_e = 1;while (lcm_data & busy); /檢測忙信號return(lcm_data);void lcminit(void) /lcm初始化lcm_data = 0;writecommandlcm(0x38,0); /三次顯示模式設(shè)置,不檢測忙信號delay5ms(); writecommandlcm(0x38,0);delay5ms(); writecommandlcm(0x38,0);delay5ms(); writecommandlcm(0x38,1); /顯示模式設(shè)置,開始要求每次檢測忙信

15、號writecommandlcm(0x08,1); /關(guān)閉顯示writecommandlcm(0x01,1); /顯示清屏writecommandlcm(0x06,1); / 顯示光標移動設(shè)置writecommandlcm(0x0c,1); / 顯示開及光標設(shè)置/按指定位置顯示一個字符void displayonechar(unsigned char x, unsigned char y, unsigned char ddata)y &= 0x1;x &= 0xf; /限制x不能大于15,y不能大于1if (y) x |= 0x40; /當(dāng)要顯示第二行時地址碼+0x40;x |= 0x80;

16、/算出指令碼writecommandlcm(x, 1); /發(fā)命令字writedatalcm(ddata); /發(fā)數(shù)據(jù)/按指定位置顯示一串字符void displaylistchar(unsigned char x, unsigned char y, unsigned char code *ddata)unsigned char listlength; listlength = 0;y &= 0x1;x &= 0xf; /限制x不能大于15,y不能大于1while (ddatalistlength0x19) /若到達字串尾則退出if (x = 0xf) /x坐標應(yīng)小于0xfdisplayone

17、char(x, y, ddatalistlength); /顯示單個字符listlength+;x+;/5ms延時void delay5ms(void)unsigned int tempcyc = 5552;while(tempcyc-);/400ms延時void delay400ms(void)unsigned char tempcyca = 5;unsigned int tempcycb;while(tempcyca-)tempcycb=7269;while(tempcycb-);/*/ void conut(void) /超聲波距離計算函數(shù) while(!rx); /當(dāng)rx為零時等待 t

18、r0=1; /開啟計數(shù) while(rx); /當(dāng)rx為零時等待 tr0=0; time=th0*256+tl0; th0=0; tl0=0; s=(time*1.7)/10+10; disbuff10=v%10; disbuff11=v/10; displaylistchar(0, 0, range); displayonechar(2, 0, asciidisbuff11); displayonechar(3, 0, asciidisbuff10); disbuff10=ss/10%10; disbuff11=ss/100%10; disbuff12=ss/1000; displayone

19、char(11, 0, asciidisbuff12); displayonechar(12, 0, asciidisbuff11); displayonechar(13, 1, ascii10); displayonechar(14, 0, asciidisbuff10); 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, asc

20、iidisbuff2); displayonechar(11, 1, asciidisbuff1); displayonechar(12, 1, ascii10); displayonechar(13, 1, asciidisbuff0); /*/void conut0(void) /循跡模式顯示 disbuff10=v%10; disbuff11=v/10; displaylistchar(0, 0, range); displayonechar(2, 0, asciidisbuff11); displayonechar(3, 0, asciidisbuff10); disbuff10=ss

21、/10%10; disbuff11=ss/100%10; disbuff12=ss/1000; displayonechar(11, 0, asciidisbuff12); displayonechar(12, 0, asciidisbuff11); displayonechar(13, 0, ascii10); displayonechar(14, 0, asciidisbuff10); displaylistchar(0, 1, table2); /*/ void startmodule() /啟動模塊 tx=1; /啟動一次模塊 _nop_(); _nop_(); _nop_(); _n

22、op_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); tx=0; /*/ /*void delayms(unsigned int ms)unsigned char i=100,j;for(;ms;ms-)while(-i)j=10;while(-j);*/void timer_count(void) /超聲波高電平脈沖寬度計算函數(shù)

23、tr0=1; /開啟計數(shù) while(rx);/當(dāng)rx為1計數(shù)并等待 tr0=0;/關(guān)閉計數(shù) conut();/計算/*/前速前進 void run(void) left_moto_go ; /左電機往前走 right_moto_go ; /右電機往前走/*/前速后退 void backrun(void) left_moto_back ; /左電機往前走 right_moto_back ; /右電機往前走/*/左轉(zhuǎn) void leftrun(void) left_moto_back ; /左電機往前走 right_moto_go ; /右電機往前走/*/右轉(zhuǎn) void rightrun(voi

24、d) left_moto_go ; /左電機往前走 right_moto_back ; /右電機往前走/*/stop void stoprun(void) left_moto_stop ; /左電機停走 right_moto_stop ; /右電機停走/*/ void comm( void ) v=0; push_val_left=5; /舵機向左轉(zhuǎn)90度 timer=0; while(timer=4000); /延時400ms讓舵機轉(zhuǎn)到其位置 4000 startmodule(); /啟動超聲波測距 conut(); /計算距離 s2=s; push_val_left=23; /舵機向右轉(zhuǎn)9

25、0度 timer=0; while(timer=4000); /延時400ms讓舵機轉(zhuǎn)到其位置 startmodule(); /啟動超聲波測距 conut();/計算距離 s4=s; push_val_left=14;/舵機歸中 timer=0; while(timer=4000); /延時400ms讓舵機轉(zhuǎn)到其位置 startmodule(); /啟動超聲波測距 conut(); /計算距離 s1=s; if(s2300)|(s4300) /只要左右各有距離小于,30cm小車后退 backrun(); /后退 timer=0; while(timers4) rightrun(); /車的左邊

26、比車的右邊距離小右轉(zhuǎn) timer=0; while(timer=800); else leftrun();/車的左邊比車的右邊距離大左轉(zhuǎn) timer=0; while(timer=800); /*/void pwm_servomoto(void) if(pwm_val_left=100) pwm_val_left=0; /*/*timer1中斷服務(wù)子函數(shù)產(chǎn)生pwm信號*/ void time1()interrupt 3 using 2 th1=(65536-100)/256; /100us定時 tl1=(65536-100)%256; timer+; /定時器100us為準。在這個基礎(chǔ)上延時

27、pwm_val_left+; pwm_servomoto(); t+; timer1+; if(t=6000) v=count1; count1=0; t=0; if(timer1=500)timer1=0; /*/ void intersvr1(void) interrupt 2 using 1 ss+;count1+;/*/void timer0()interrupt 1 using 0 /timer0計數(shù) void main(void)delay400ms(); /啟動等待,等lcm講入工作狀態(tài)lcminit(); /lcm初始化delay5ms(); /延時片刻displaylistc

28、har(0, 0, welcome);displaylistchar(0, 1, key); tmod=0x11;th1=(65536-100)/256; /100us定時tl1=(65536-100)%256;th0=0;tl0=0; tr1= 1;et1= 1;et0= 1;ex1=1; /開啟外部中斷0 it1=1; /下降沿有效 ie1=0; ea = 1; push_val_left=14; /舵機歸中while(1) if(aa=1&bb=1) ch0=1; ch1=0; conut0(); delay400ms(); if(aa=1&cc=1) ch0=0; ch1=1; stoprun(); delay400ms(); if(tim

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論