《智能小車設計報告.doc》由會員分享,可在線閱讀,更多相關《智能小車設計報告.doc(23頁珍藏版)》請在裝配圖網上搜索。
1、湖南涉外經濟學院課程設計報告課程名稱:專業(yè)綜合課程設計報告題目:智能小車設計學生姓名: 所在學院:信息科學與工程學院專業(yè)班級: 學生學號: 指導教師:廖亦凡20 15 年 7 月1日課程設計任務書報告題目智能小車設計完成時間2015.7.1學生姓名 專業(yè)班級 指導教師廖亦凡職稱副教授總體設計要求和技術要點參考選題一:智能小車設計1、內容:選用單片機設計一個智能小車,要求能小車實現循跡、避障、遙控、聲控、光控等功能。2、要求:(1)作品要求:有完整的電路原理圖;用設計的硬件演示系統功能。(2)按湖南涉外經濟學院課程設計管理辦法要求提交課程設計報告。工作內容及時間進度安排第17周:周1-周3 :立
2、題、論證方案設計周4-周5 :硬件設計或仿真電路設計第18周:周1-周3 :軟件設計周4-周5 :驗收答辯課程設計成果1與設計內容對應的軟件程序、電路圖、通過實物設計的作品或通過仿真設計的仿真圖。2課程設計總結報告(所有項目均需按湖南涉外經濟學院課程設計管理辦法要求提交課程設計報告)。摘要 STC89C52單片機是一款八位單片機,他的易用性和多功能性受到了廣大使用者的好評。本系統以設計題目的要求為目的,采用STC89C52單片機為控制核心,利用超聲波傳感器檢測道路上的障礙,控制電動小汽車的自動避障,快慢速行駛,以及自動停車,并可以自動記錄時間、里程和速度,自動尋跡和尋光功能。整個系統的電路結構
3、簡單,可靠性能高。實驗測試結果滿足要求,本文著重介紹了該系統的硬件設計方法及測試結果分析。在智能小車控制系統的設計中,以STC89C52為核心,用L293D驅動兩個直流電機,當產生信號驅動小車前進時,是通過尋跡模塊里的紅外對管是否尋到黑線產生的電平信號通過LM393再返回到單片機,單片機根據程序設計的要求做出相應的判斷送給電機驅動模塊,讓小車來實現前進、左轉、右轉、停車等基本功能。尋白線時,外部環(huán)境光線的強弱對小車的運動會產生很大的影響,基于此原因,本實驗中的尋跡是指在白色地板上尋黑線。尋跡是指通過紅外發(fā)射管和接收管識別路徑。關鍵詞:智能小車、單片機、STC89C52、超聲波傳感器;目錄一、系
4、統設計11.基本要求1二、方案設計與論證12.1循跡模塊12.2避障模塊32.3電機控制模塊52.4遙控模塊8三、總原理圖101.總原理圖102.實物圖11四、結論與心得12五、參考文獻121、 系統設計1. 基本要求 (1)智能小車能在設計好的線路上自動循跡; (2)智能小車利用紅外管進行探測,遇到障礙開啟報警,實現避障功能; (3)使用遙控器對智能小車進行控制,實現前后左右運動,并在數碼管上顯示相應的數字; (4)采用聲控裝置,用拍手來控制小車的啟動與停止; (5)采用光敏二極管完成管控模塊。二、方案設計與論證根據基本要求確定方案,在現有的智能小車上,實現對車的速度,運動狀況進行檢測,并將
5、測量數據傳送至單片機進行處理,然后有單片機根據所檢測的各種數據實現對智能小車的智能控制。2.1循跡模塊 2.1.1循跡原理 本車紅外對管設計是紅外發(fā)射管一直發(fā)射信號,接收管時刻準備接收信號。 兩對對著地的紅外管發(fā)射紅外信號,信號在白色的地面上反射回接收管,通過接收管把信號送回單片機進行處理,完成相應的動作。假如左右紅外發(fā)射管發(fā)射的紅外線對準地面白色的區(qū)域,則紅外線被反射回來被接收管接收后轉變成電信號送至單片機的P3.5和P3.6。此時P3.5=P3.6=0,當單片機信號檢測到此電平時,便會判斷出小車處于白色區(qū)域,這時小車就會沿直線行走,當紅外發(fā)射管左邊對準黑線(黑膠帶),右邊對準白線(白色地面
6、)時,左邊的紅外線被黑線吸收,紅外線無法反射回,則左邊呈現高電平,即單片機檢測到P3.5=1(左邊)、P3.6=0,這時,小車便向左邊修正(左轉彎),使左邊傳感器重新回到白色區(qū)域。右轉彎過程與左轉彎相類似。2.1.2循跡控制電路圖1 循跡控制電路圖 2.1.3循跡流程圖 圖2 循跡程序流程 2.1.4循跡主要程序代碼18void main() while(1) /while(1);等待 通常使用在主函數的最后一條 定時器的后面 if(zuod=0&youd=0)/如果左右兩個傳感器沒有檢測到黑線 qian(); /直走 out=ZM1;if(zuod=1&youd=0)/如果左邊的傳感器檢測到
7、黑線 while(1) zuo(); out=ZM3;/左轉 D1=0; / 蔽障 if(zuod=0) /一直左轉到傳感器檢測不到為止D1=1;break;/跳出循環(huán) if(youd=1&zuod=0) while(1) you(); out=ZM4; D2=0; if(youd=0) D2=1; break; /效果:沿著黑線轉圈2.2避障模塊2.2.1避障原理 避障電路由單片機、比較芯片L393、紅外發(fā)射對管等元器件構成。電路工作過程如下:首先,比較芯片的2腳為基準電壓輸入,該引腳通過電源串聯分壓,取得一個大約2.5V基準電壓作為比較電壓。比較芯片的3腳為比較電壓的輸入端,該電壓取之反饋
8、回來的紅外信號。當小車前進過程中,前方無障礙,則紅外接收管的阻值會很大,從而輸出一個高電平(約5V)給比較芯片的3腳,這樣經過比較芯片的比較,在比較芯片的2腳輸出一個高電平給單片機P3.7引腳。單片機根據接收到的電平就可以判別前方有無障礙。當前方有障礙時V2的阻值會很小,輸出低電平給比較芯片的3腳,比較芯片從而輸出低電平給單片機P3.7。 2.2.2避障控制原理圖 圖3 避障控制電路2.2.3 避障程序流程框 圖4 避障報警程序流程圖 2.2.4避障主要程序代碼void main() while(1) if(zuod=0&youd=0)/如果左右兩個傳感器沒有檢測到黑線 qian();/直走
9、out=ZM1; if(qiand=0)/如果在直走的過程中遇見障礙物 delay(50);/延時判斷是否為干擾if(qiand=0)/不是干擾jiao=0;/蜂鳴器hou();/后退半秒out=ZM2;delay(500);you();/右轉200毫秒out=ZM4;delay(200);jiao=1;/取消報警if(zuod=1&youd=0)/如果左邊的傳感器檢測到黑線 while(1) zuo(); out=ZM3; /左轉 D1=0; if(zuod=0) /一直左轉到傳感器檢測不到為止 D1=1; break;/跳出循環(huán)2.3電機控制模塊 2.3.1電機控制電路 圖5電機控制電路圖
10、 2.3.2 直流電機H橋驅動電路工作原理 圖6 直流電機H橋驅動電路工作原理 表2.1 電機控制狀態(tài)表輸入使能控制輸出電機狀態(tài)1A2AENA1Y2YDC01101電機正轉10110電機反轉11111電機剎車00100電機惰行XX0ZZ電機停轉 表2.2 智能小車運行狀態(tài)表輸入 使能控制小車狀態(tài)左電機右電機ENA1A2A3A4A101011前進10101后退10011左轉彎01101右轉彎11111停止2.3.3電機控制程序流程圖圖7 電機控制程序流程圖2.3.4電機運行程序#include#define uint unsigned int#define uchar unsigned char
11、sbit left1=P00;sbit left2=P01;sbit right1=P02;sbit right2=P03;sbit SB1=P32;sbit SB2=P34;void delay(uint x)uchar i;while(x-)for(i=0;i123;i+);void qianjin()left1=0;left2=1;/左邊往前right1=0;right2=1;/右邊往前void houtui()left1=1;left2=0;/左邊往后right1=1;right2=0;/右邊往后void left()left1=1;left2=0;/左邊往后right1=0;righ
12、t2=1;/右邊往前void right()left1=0;left2=1;/左邊往前right1=1;right2=0;/右邊往后void tingzhi() left1=1;left2=1;right=1;right2=1;main() while(1) if(SB1=0) qianjin(); if(SB2=0) houtui(); 2.4遙控模塊 2.4.1遙控原理 紅外遙控的發(fā)射電路是采用紅外發(fā)光二極管來發(fā)出經過調制的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外發(fā)射器發(fā)射的紅外光轉換為相應的電信號,再送后置放大器。把遙控程序下載到智能小車芯片上,利用紅外接
13、收頭接受遙控器發(fā)出的信號,對智能小車進行前后左右的控制,并使用智能小車上面的數碼管,把控制小車各運行方向的數值顯示出來。 2.4.2遙控主要程序 #include #includetypedef unsigned int uint;typedef unsigned char uchar;uint IR_time;uchar code table=0 x9f,0 x24,0 x0d,0 x99,0 xff;/數碼管編碼uchar TIME33=0;/存放33個波形時間uchar Time_dat4=0;/存放4個解碼完成的數據sbit left0 = P00;sbit left1 = P01;s
14、bit right0 = P02;sbit right1 = P03;sbit fmq = P33;bit IR_ok;bit IR_chuli_ok; /將波形時間轉換成邏輯電平的標志bit start; /標志位,開始計時標志位void qianjin() /前進子函數 left0 = 1; left1 = 0; right0 = 1; right1 = 0;void houtui()/后退子函數 left0 = 0; left1 = 1; right0 = 0; right1 = 1;void youzhuan() /右轉子函數 left0 = 1; left1 = 0; right0
15、= 0; right1 = 1;void zuozhuan() /左轉子函數 left0 = 0; left1 = 1; right0 = 1; right1 = 0;void stop() /停止子函數 left0 = 0; left1 = 0; right0 = 0; right1 = 0;void EX1_init(void) IT1 = 1; /外部中斷下降沿觸發(fā)EA = 1;EX1 = 1;void Time1_init(void) TMOD |= 0 x20;/定時器工作在方式2(8位自動重裝)TH1 = 0;TL1 = 0;ET1 = 1;TR1 = 1;void IR_chul
16、i(void) /將時間值轉化為邏輯電平(轉換成16進制函數)uchar i,j;uchar NUM = 1; /去除引導碼,因為引導碼存在數組下標為0的位置,即第1位,數據從第2位開始)uchar HL_time; /定義一個時間變量,用于單個按鍵波形處理uchar byte = 0 x00; /定義一個字節(jié)變量,用于存儲轉換的16進制數for(i=0;i4;i+) /表示4類數據(客戶碼、客戶反碼、數據碼、數據反碼)for(j=0;j 6) /(1.125+2.25)/2=1.687ms,277us*6=1.66ms,判斷為1,否則為0)byte |= 0 x80;else byte =
17、byte;if(j = 1; /因為最先處理低位數據,所以要用右移方法,將低位移7次,回到本來位置)NUM+;Time_dati = byte;byte = 0 x00;if(Time_dat2 = Time_dat3) /比較數據碼與數據反碼是否相等,相等,表示處理成功。IR_chuli_ok = 1;/處理成功的標志,void play(void)switch(Time_dat2)/ case 0 x0c:DataPort=dofly_DuanMa1;break;/1 顯示相應的按鍵值 case 0 x18:qianjin();P2=table0;break;/2/ case 0 x5e:
18、;break;/3 case 0 x08:zuozhuan();P2=table2;break;/4/ case 0 x1c:;break;/5 case 0 x5a:youzhuan();P2=table3;break;/6/ case 0 x42:;break;/7 case 0 x52:houtui();P2=table1;break;/8/ case 0 x47:switc_h = switc_h;break;/9 default:break;/*遙控器1(小)碼值: 遙控器2(大)碼值:45 46 4705 04 06 0744 40 4309 08 0a 0b07 15 090d
19、0c 0e 0f16 19 0d15 14 16 170c 18 5e19 18 1a 1b08 1c 5a11 10 12 1342 52 4a01 00 02 031d 1c 1e 1f*/void main()EX1_init();Time1_init();while(1)if(IR_ok)/ 按鍵的鍵值時間存儲完畢標志IR_ok = 0;IR_chuli(); /將鍵值時間轉換成16進制處理函數。if(IR_chuli_ok) IR_chuli_ok=0;play(); /調用符合鍵值的處理函數void EX1_(void) interrupt 2 /外部中斷 接收波形時間static
20、 uchar xx = 0; / 設置記錄波形的變量;計數 0 33(記錄34個波形的時間)if(!start) /第一個下降沿觸發(fā) 表示解碼開始start = 1;IR_time = 0; /將按鍵按下前的時間清除else if(start) /第二個下降沿到第33個下降沿 if(IR_time = 32) /剔除引導碼4*8=32(引導碼為9000US,在8.8MS與13.8MS之間認為是引導碼)xx = 0;TIMExx = IR_time; /存儲按鍵碼值時間(引導碼存在數組的第一個位置,TIME為鍵值時間存儲數組)IR_time = 0; /每個碼時間不一樣/if(xx = 1)&(
21、TIME19) /連發(fā)碼處理,可以去掉/xx = 0; /TIME1 = 0;/ xx+;if(xx = 33)xx = 0;IR_ok = 1; /按鍵鍵值時間存儲完成的標志,等于1表示完成start = 0; void Time1(void) interrupt 3 /定時器中斷IR_time+; /每經過256*(12/11.0592)us觸發(fā)一次中斷(約277US)if(IR_time390) / 不要這條語句的話按一下,就是長按,長按處理,處理連發(fā)碼的時間參數(見PDF文檔,約108MS,相當于長按有效,否則,按一下鍵,動的不明顯,277*390=108MS)IR_chuli_ok
22、= 0;/將標志清零,停止判斷。stop(); /按鍵松開,電機停轉P2 = table4; /數碼管滅start = 0; /清零,方便下一次重新計數。 三、總原理圖 1.總原理圖 圖8 總原理2.實物圖圖9 實物圖表3.1 學生情況統計表序號姓名性別出生日期學號專業(yè)聯系電話備注1萬智亮男1994.0312430621817069電子信息工程15607484951四、結論與心得歷時一周月的設計過程中,我首先邊查資料,邊在實驗室焊接小車的線路板。在焊接過程中,我感覺到即使是一個簡單的電路,要想很輕松的焊好,也不是很容易的事情。有時是“虛焊”的原因,有時可能是阻值選錯。在焊接顯示電路時,我就錯將
23、15千歐的電阻焊成了1.5千歐。這使我深深感受到理論與實際間的差距。通過這樣的設計,提高了我的動手能力。每天在實驗室除了焊接線路板,還可以上機編程,使我軟件調試知識也提高了。本次畢業(yè)設計已經告一段落。經過自己不斷的搜索努力以及廖老師的耐心指導和熱情幫助,本設計已經基本完成。在這段時間里,廖老師嚴謹的治學態(tài)度和熱忱的工作作風令我十分欽佩,他的指導使我受益非淺。同時通過自己的不懈努力加細心琢磨最終完成本次課程設計,通過這次課程設計,使我深刻地認識到學好專業(yè)知識的重要性,也理解了理論聯系實際的含義,并且檢驗了大學三年來的學習成果。雖然在這次設計中對于知識的運用和銜接還不夠熟練。但是我將在以后的工作和
24、學習中繼續(xù)努力、不斷完善。這一個月的設計是對過去所學知識的系統提高和擴充的過程,為今后的發(fā)展打下了良好的基礎。由于自身水平有限,設計中一定存在很多不足之處,敬請老師批評與指正,在此深表感謝。五、參考文獻【1】林立,張俊亮.單片機原理及應用.北京:電子工業(yè)出版社,2013.【2】李廣弟,單片機基礎,北京:北京航空航天大學出版社,2001,5664【3】何希才,新型實用電子電路400例,電子工業(yè)出版社,2000年,6065【4】王東峰,王會良,董冠強.單片機C語言應用100例.北京:電子工業(yè)出版社,2009.【5】程繼紅,常健.傳感器原理及工程應用(第四版).西安:西安電子科技大學出版社,2014.教師評語及設計成績教師評語:課程設計成績:指導教師:(簽名)日期:年月日