版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、武漢理工大學(xué)華夏學(xué)院課外自主實(shí)驗(yàn)分析報告實(shí)驗(yàn)名稱 小車循跡控制程序設(shè)計 專 業(yè) 軟件工程 班 級 學(xué) 號 姓 名 第1章 實(shí)驗(yàn)分析31.1 實(shí)驗(yàn)設(shè)計題目31.2 實(shí)驗(yàn)設(shè)計任務(wù)31.2.1 總體任務(wù)31.2.2 詳細(xì)任務(wù)31.2.3 設(shè)計要求31.3軟硬件運(yùn)行環(huán)境及開發(fā)工具3第2章 概要設(shè)計42.1 小車軟硬件設(shè)計原理42.1.1 小車硬件設(shè)計原理42.1.2小車軟件設(shè)計原理42.2 功能設(shè)計原理及實(shí)現(xiàn)方法42.2.1小車前進(jìn)功能實(shí)現(xiàn)42.2.2 小車旋轉(zhuǎn)功能實(shí)現(xiàn)42.2.3 小車偏移修正功能設(shè)計4第3章 詳細(xì)設(shè)計93.1 硬件設(shè)計與實(shí)現(xiàn)93.2 系統(tǒng)主程序流程103.3功能模塊詳細(xì)設(shè)計103.
2、3.1 起始點(diǎn)到中心點(diǎn)路線模塊設(shè)計103.3.2 中心點(diǎn)到d點(diǎn)路線模塊設(shè)計103.3.3 d點(diǎn)到黑色點(diǎn)路線模塊設(shè)計113.3.4 白色點(diǎn)到中心點(diǎn)模塊設(shè)計123.3.5 中心點(diǎn)到起始點(diǎn)路線模塊設(shè)計13第4章 系統(tǒng)調(diào)試與操作說明154.1 系統(tǒng)調(diào)試154.1.1 直線調(diào)試154.1.2 達(dá)到黑色終點(diǎn)點(diǎn)調(diào)試154.3 操作說明15第5章 總結(jié)和體會16第6章 參考文獻(xiàn)16附錄:11課外實(shí)驗(yàn)設(shè)計計劃學(xué)生姓名: 萬志雄 專業(yè)班級: 軟件1111 實(shí)驗(yàn)題目:小車循跡控制系統(tǒng)設(shè)計(路線3)實(shí)驗(yàn)器材:1、硬件設(shè)備:mcs-51單片機(jī)最小系統(tǒng)板、四個qti傳感器、兩個舵機(jī)、兩個車輪、鋰電池、isp下載線、面包板
3、;2、軟件環(huán)境:keil c51、progisp下載器。實(shí)驗(yàn)任務(wù):(在規(guī)定的時間內(nèi)完成下列任務(wù))1完成硬件設(shè)計并連線,以mcs-51單片機(jī)為控制核心,根據(jù)4個qti傳感器采集到的數(shù)據(jù)控制舵機(jī)的運(yùn)轉(zhuǎn),進(jìn)而控制車輪的速度和方向,并畫出硬件原理圖和實(shí)驗(yàn)連線圖;2用c語言編程實(shí)現(xiàn)以下小車行駛線路(地圖見下頁):起始點(diǎn)中心點(diǎn)d點(diǎn),旋轉(zhuǎn)360度黑色點(diǎn),旋轉(zhuǎn)180度原路返回。時間安排:各時間段的任務(wù)可以交替進(jìn)行時間設(shè)計內(nèi)容第一天設(shè)計題目,實(shí)物演示、規(guī)劃任務(wù)、查找相關(guān)資料第二天進(jìn)行需求分析,完成總體設(shè)計第三天硬件詳細(xì)設(shè)計,連接實(shí)驗(yàn)電路,軟件詳細(xì)設(shè)計,編寫程序;第四天調(diào)試程序、測試系統(tǒng)、總結(jié);第五天總結(jié)后完成設(shè)
4、計報告。指 導(dǎo) 教 師 簽 名: 2014 年 6 月 30 日教研室主任(或責(zé)任教師)簽名: 2014年 6 月 30 日起始點(diǎn) 目 錄第1章 實(shí)驗(yàn)分析1.1 實(shí)驗(yàn)設(shè)計題目 小車循跡控制系統(tǒng)設(shè)計(路線3)1.2 實(shí)驗(yàn)設(shè)計任務(wù)及要求1.2.1 實(shí)驗(yàn)總體任務(wù)(1)硬件部分:完成硬件設(shè)計并連線,以mcs-51單片機(jī)為控制核心,隨時采集4個qti傳感器的數(shù)據(jù)控制舵機(jī)的運(yùn)轉(zhuǎn),進(jìn)而控制車輪的速度和方向。 (2)軟件部分:用c語言編程實(shí)現(xiàn)小車行駛線路:起始點(diǎn)中心點(diǎn)d點(diǎn)(旋轉(zhuǎn)360度)黑色點(diǎn)然后旋轉(zhuǎn)180度原路返回。1.2.2任務(wù) 使用keilc51編程軟件采用c語言編程實(shí)現(xiàn)小車路線3的總體調(diào)試,同時不斷修
5、正小車的路線。1.2.3 實(shí)驗(yàn)設(shè)計要求 完成硬件原理圖設(shè)計、小車模型構(gòu)建、軟件編程、調(diào)試、運(yùn)行等一整套工作任務(wù)??刂栖浖褂胏語言編程;系統(tǒng)聯(lián)調(diào),提交一個滿足要求的小車循跡控制系統(tǒng)設(shè)計。1.3軟硬件運(yùn)行環(huán)境及開發(fā)工具 以mcs-51單片機(jī)為控制核心,根據(jù)4個qti傳感器采集的數(shù)據(jù)控制舵機(jī)的運(yùn)轉(zhuǎn),windows xp操作系統(tǒng)pc機(jī)一臺。keilc51編程軟件、progisp下載器、串口調(diào)試小助手等軟件。第2章 概要設(shè)計2.1 小車軟硬件設(shè)計原理2.1.1 小車硬件設(shè)計原理小車前面有4個qti感應(yīng)器來隨時采集數(shù)據(jù),當(dāng)探測為黑線的時候,返回值為1,當(dāng)探測為白線的時候,返回值是0,只有當(dāng)中間那個qti
6、返回值全為1的時候,才走在黑線上,根據(jù)返回的狀態(tài)來控制小車舵機(jī)的速度。2.1.2小車軟件設(shè)計原理將整個過程分為五部分來實(shí)現(xiàn),分別為起點(diǎn)到中心點(diǎn),中心點(diǎn)到d點(diǎn),d點(diǎn)到黑色點(diǎn),黑色點(diǎn)到中心點(diǎn),中心點(diǎn)到起始點(diǎn)。在運(yùn)動過程中還需設(shè)計旋轉(zhuǎn)45度和180度和360度的旋轉(zhuǎn)子模塊,當(dāng)小車偏離軌跡候后,需設(shè)計修正子模塊。2.2 功能設(shè)計原理及實(shí)現(xiàn)方法2.2.1小車前進(jìn)功能實(shí)現(xiàn)此模塊原理是向伺服電機(jī)輸出若干個pwm波,波形的占空比可控制小車移動,通過時間寬度和延時產(chǎn)生信號,作用于電機(jī),從而控制其運(yùn)動。在本次設(shè)計中,向伺服電機(jī)pwm波過程已經(jīng)被模塊化在頭文件中,即motion()函數(shù)中,通過對motion()函數(shù)
7、的三個參數(shù)進(jìn)行設(shè)置來實(shí)現(xiàn)控制電機(jī)轉(zhuǎn)動從而控制小車前進(jìn)。motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count)例:其中參數(shù)left_val:左邊電機(jī)的高電平時間寬度;right_val:右邊電機(jī)的高電平時間寬度;count:脈沖數(shù)目 2.2.2 小車旋轉(zhuǎn)功能實(shí)現(xiàn)小車旋轉(zhuǎn)的原理是調(diào)整兩輪的移動方式、速度及移動步數(shù)。當(dāng)需旋轉(zhuǎn)360度時,將左輪設(shè)置為快速后退狀態(tài),右輪為快速前進(jìn)狀態(tài),多次調(diào)試測出旋轉(zhuǎn)所需的步數(shù). 2.2.3 小車偏移修正功能設(shè)計 小車偏移修正功能即對小車傳感器信號狀態(tài)進(jìn)行檢測并作出相應(yīng)的處理的過程,在修正過程
8、中偏移情況及其代碼和信號狀態(tài)如下:void modify()if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state() motor_motion(1470, 1700,1); /左轉(zhuǎn)修正 else if(!p22_state()&p23_state()|(!p21_state()& (!p22_state()&(!p23_state()&p24_state() motor_motion(1300, 1550,1); /右轉(zhuǎn)修正 else motor_motion(1700,1300,1)
9、; (1) 當(dāng)小車發(fā)生右偏移時,各傳感器狀態(tài)信號如下:100000001100 通過判斷語句:if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state()判斷小車是否向左偏移,若發(fā)生偏移此時通過調(diào)節(jié)左右輪的速度來實(shí)現(xiàn),左偏時調(diào)用motor_motion(1770, 1740,1)實(shí)現(xiàn)左輪前進(jìn)速度大于右輪前進(jìn)速度來實(shí)現(xiàn)向右偏移來對偏移進(jìn)行修正。 (2 ) 當(dāng)小車發(fā)生右偏移時,各傳感器狀態(tài)信號如下:100000001100通過判斷語句:if(!p22_state()&p23_state()|(
10、!p21_state()& (!p22_state()&(!p23_state()&p24_state() 判斷小車是否向右偏移。若發(fā)生偏移,此時通過調(diào)節(jié)坐游輪的速度來實(shí)現(xiàn),右偏時調(diào)用motor_motion(1550, 1300,1),通過調(diào)節(jié)左右輪的速度,當(dāng)右輪速度大于左輪速度進(jìn)行修正。2.3.1編程頭文件 (1)各個頭文件如下圖圖2.1 (2)delay.h頭文件實(shí)現(xiàn)延時功能,幫助系統(tǒng)更加理性化,易于操作。例如小車開始部分延時3秒。delay.h頭文件詳細(xì)代碼如下:void delay_nus(unsigned int i) i=i/10; while(-i); void delay_n
11、ms(unsigned int n) n=n+1; while(-n) delay_nus(900); /進(jìn)行時間補(bǔ)償 (3)qti.h頭文件其作用是獲取4個qti傳感器采集的信號。為51單片機(jī)提供判斷的輸入數(shù)據(jù)。qti.h頭文件p21口實(shí)例詳細(xì)代碼如下:/*函數(shù)名稱:p21_state()功能: 獲得左邊第一個qti的返回信號參數(shù):無參數(shù)返回值:1:高電平,看到黑線;0:低電平,看到白線*/int p21_state() return (p2&0x02)?1:0;(4)global.h頭文件其作用是定義用到的數(shù)據(jù)類型、變量。方便程序設(shè)計,簡化程序結(jié)構(gòu)。詳細(xì)代碼如下:#ifndef globa
12、l_h#define global_htypedef unsigned int uint16_t;typedef unsigned char uint8_t;typedef unsigned char bool;#define true 1#define false 0#endif (5)motion.h頭文件其作用是控制兩個舵機(jī)運(yùn)轉(zhuǎn) 。詳細(xì)代碼如下:#include global.hsbit left_motor = p10; /左電機(jī)接口sbit right_motor = p11; /右電機(jī)接口#define left_fwd 1700 /高電平時間定義,單位微秒#define left
13、_bwd 1300#define left_small_fwd1530#define left_small_bwd 1450#define right_fwd 1300#define right_bwd 1700#define right_small_fwd 1450#define right_small_bwd 1530函數(shù)名稱:motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count)作用:向伺服電機(jī)輸出若干個pwm波,波形的占空比可控制參數(shù):left_val:左邊電機(jī)的高電平時間寬度;right_val:右邊電機(jī)的
14、高電平時間寬度;count:脈沖數(shù)目返回值:無返回值void motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count) uint8_t i; for(i=0; icount; i+) left_motor = 1; delay_nus(left_val); left_motor = 0 right_motor = 1; delay_nus( right_val ); right_motor = 0; delay_nms(20); /輸出一定數(shù)量的pwm波形 第3章 詳細(xì)設(shè)計3.1 硬件設(shè)計與實(shí)現(xiàn)小車是由多個硬件零件組裝
15、而成,每個零件負(fù)責(zé)不同的功能,根據(jù)設(shè)計任務(wù)和要實(shí)現(xiàn)的主要功能,來進(jìn)行硬件設(shè)計。硬件設(shè)計原理圖如下: 圖3.1 總體電路圖圖3.3灰度qti傳感器3.2 系統(tǒng)主程序流程小本系統(tǒng)設(shè)計了五個個模塊,分別為起點(diǎn)到中心點(diǎn)路線模塊、中心點(diǎn)到d點(diǎn)、d點(diǎn)黑色點(diǎn)、黑色點(diǎn)到中心點(diǎn)、中心點(diǎn)返回到起始點(diǎn)路線模塊。通過對每個功能模塊的調(diào)用實(shí)現(xiàn)系統(tǒng)要求的功能。3.3功能模塊詳細(xì)設(shè)計3.3.1 起始點(diǎn)到中心點(diǎn)路線模塊設(shè)計起點(diǎn)到中心點(diǎn),主要是從開始就前進(jìn),在前進(jìn)過程中不停檢測傳感器傳過來的信號,通過判斷小車是否偏離路線后決定是否修正。程序代碼如下while(1) motor_motion(1700,1300,1); modi
16、fy(); if(p22_state()&p23_state()&p21_state()&!p24_state() /motor_motion(1500,1500,0); /中心點(diǎn)停 motor_motion(1500,1300,18); /右轉(zhuǎn)45度 break; 3.3.2 中心點(diǎn)到d點(diǎn)路線模塊設(shè)計中心點(diǎn)到b點(diǎn),主要是從開始就前進(jìn),在前進(jìn)過程中不停檢測傳感器傳過來的信號,通過判斷小車是否偏離路線后決定是否修正。如果檢測到0000信號,則執(zhí)行旋轉(zhuǎn)360度程序。設(shè)計函數(shù)centertod()來實(shí)現(xiàn)此模塊功能。程序代碼如下:while(1)motor_motion(1700,1300,1); m
17、odify(); if(!p21_state()&!p22_state()&!p23_state()&!p24_state()/motor_motion(1500,1500,0); /d點(diǎn)停 motor_motion(1300,1300,150); /轉(zhuǎn)360度 break; 程序流程圖如下: 開始前進(jìn)偏移?前進(jìn)修正是否全為1?否旋轉(zhuǎn)360度是退出循環(huán) 圖3.3中心點(diǎn)到d點(diǎn)模塊流程圖3.3.3 d點(diǎn)到黑色點(diǎn)路線模塊設(shè)計d點(diǎn)到黑色點(diǎn)前進(jìn)過程中也要進(jìn)行檢測修正,當(dāng)遇到1111信號時,執(zhí)行旋轉(zhuǎn)180度,其代碼為:while(1) motor_motion(1700,1300,1); modify()
18、; if(p21_state()&p22_state()&p23_state()&p24_state() motor_motion(1300,1300,75); /轉(zhuǎn)180度 break; 程序流程圖如下: 開始前進(jìn)偏移?前進(jìn)修正是否全為1?否旋轉(zhuǎn)180度是退出循環(huán) 圖3.4 d點(diǎn)到黑點(diǎn)模塊流程圖3.3.4 白色點(diǎn)到中心點(diǎn)模塊設(shè)計白色點(diǎn)到中心點(diǎn)循跡過程中,不斷地通過傳感器檢測信號,進(jìn)行路線修正。當(dāng)?shù)谝淮螜z測到1111信號時,這表示已經(jīng)到達(dá)中心點(diǎn)。采用的函數(shù)和剛開始去中心點(diǎn)的一樣,模塊程序代碼如下:while(1) motor_motion(1700,1300,1); modify(); if(
19、p21_state()&p22_state()&p23_state()&p24_state() /motor_motion(1500,1500,0); /回到中心點(diǎn)停 motor_motion(1700,1500,18); /向左轉(zhuǎn)45度 break; 程序流程圖如下: 開始前進(jìn)偏移?前進(jìn)修正是否全為1?否左旋轉(zhuǎn)45度是退出循環(huán) 圖3.5黑點(diǎn)到中心點(diǎn)模塊流程圖3.3.5 中心點(diǎn)到起始點(diǎn)路線模塊設(shè)計 while(1) motor_motion(1700,1300,1); modify(); if(p21_state()&p22_state()&p23_state()&p24_state() mo
20、tor_motion(1500,1500,0); /回到起始點(diǎn) break; 程序流程圖如下: 開始前進(jìn)偏移?前進(jìn)修正是否全為1?否停止是退出循環(huán) 圖3.6中心點(diǎn)到d點(diǎn)出發(fā)點(diǎn)模塊流程圖第4章 系統(tǒng)調(diào)試與操作說明4.1 系統(tǒng)調(diào)試4.1.1 直線調(diào)試 主要是判斷小車是否能沿著黑線向前走,方法:讓程序只有函數(shù)modify(),main()函數(shù)中只有motor_motion(1700,1300,1)這條語句;并燒寫到小車中,把小車放在一條黑線上,看它是否能一直在黑線上前進(jìn),若不能,再qti是否連接正確,直至小車能一直走在直線上。4.1.2 達(dá)到黑色終點(diǎn)點(diǎn)調(diào)試主要判斷小車能否到黑色終點(diǎn),并原地旋轉(zhuǎn)180
21、度,方法:將自己模塊程序燒寫到小車中,放在黑點(diǎn)上面,觀察小車能否到黑色終點(diǎn)旋轉(zhuǎn)前進(jìn)到中心點(diǎn)并并原地旋轉(zhuǎn)180度,注意看其角度是否正常。 4.2 調(diào)試中遇到的問題 調(diào)試的時候,是在黑色終點(diǎn)處的時候,旋轉(zhuǎn)度數(shù)不足。多次調(diào)試后為motor_motion(1300,1300,75)。4.3 操作說明在keilc51中寫好的程序進(jìn)行編譯生成.hex文件,然后通過isp下載線和progisp軟件將已生成的.hex文件燒寫到單片機(jī)中。當(dāng)燒寫成功后,拔掉下載線,然后在已設(shè)定好的路徑上,擺正小車的位置,打開小車上的開關(guān)。觀察小車是否按照預(yù)定的路徑進(jìn)行行駛。 第5章 總結(jié)和體會整個過程中,從需求分析到設(shè)計、編碼、
22、測試,我都力求規(guī)范化和文檔化,努力讓自己以前學(xué)的知識運(yùn)用到本系統(tǒng)的開發(fā)中,盡量保證整個系統(tǒng)的開發(fā)進(jìn)度和質(zhì)量,順利完成這次的課程設(shè)計。不過,在實(shí)驗(yàn)過程中,好多知識都是隨學(xué)隨用,就增加了很多不必要的麻煩。雖說這些都會消耗系統(tǒng)開發(fā)的時間,但在同學(xué)以及自己的不斷努力下,不怕麻煩,不怕重復(fù),當(dāng)克服了這些問題之后,我會感覺到自己的知識在一點(diǎn)一滴地積累,不知不覺中增加。我相信,只要肯鉆研,只要擠時間,一切自己想要的知識都可以掌握。通過本次課程設(shè)計,我對小車循跡系統(tǒng)經(jīng)典問題有了進(jìn)一步的了解,尤其是在軟件與硬件的結(jié)合方面有了新的認(rèn)識。在這次課程設(shè)計中,由于沒有掌握好進(jìn)程同步中的一些關(guān)鍵知識,導(dǎo)致在實(shí)際操作中遇到
23、了很多問題,比如說對單片機(jī)借口的不熟悉。此次課程設(shè)計使我明白,在程序設(shè)計中,我們需要有一個清晰的整體結(jié)構(gòu),然后針對每個模塊逐步實(shí)現(xiàn)其功能,在設(shè)計中也需要有嚴(yán)謹(jǐn)和認(rèn)真的態(tài)度,才會更好的完成一項(xiàng)任務(wù)。第6章 參考文獻(xiàn)1 尹志宇、郭晴,單片機(jī)入門,北京:清華大學(xué)出版社,2011.072黃維通、王曉英,萬能的51單片機(jī) ,北京:清華大學(xué)出版社,2011.013 龐婭娟、房大偉51單片機(jī)簡明教程,北京:人民郵電出版社,2009.104王小科、王軍、趙會東,單片機(jī)開發(fā)案例全程實(shí)錄(第二版),北京:清華大學(xué)出版社2011.01 附錄:#includereg52.h#includedelay.h#includeqti.h#includemotion.h#includeglobal.hvoid modify()if(p22_state()&(!p23_state()|(p21_state()&(!p22_state()&(!p23_state()&(!p24_state() motor_motion(1470, 1700,1); /左轉(zhuǎn)修正 else if(!p22_state()&p23_state()|(!p21_state()& (!p22_state()&(!p23_state()&p24_state() motor_motio
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年KTV特色主題活動策劃與執(zhí)行合同3篇
- 2025版攤鋪機(jī)租賃及施工質(zhì)量保障合同范本6篇
- 個人健身教練合同:2024版專業(yè)輔導(dǎo)合同書
- 2025年度臨時用工勞務(wù)合同編制指南范本2篇
- 二零二五年度光伏電站運(yùn)維人工勞務(wù)合同范本3篇
- 2025年木材市場分析與預(yù)測合作合同范本
- 二零二五版木門行業(yè)展會參展與推廣服務(wù)合同4篇
- 二零二五年度數(shù)字貨幣技術(shù)研發(fā)與應(yīng)用合同集2篇
- 2025年戶外健身路徑欄桿設(shè)施采購合同3篇
- 2025年度獵頭服務(wù)人才引進(jìn)與培養(yǎng)合作協(xié)議5篇
- 《電影之創(chuàng)戰(zhàn)紀(jì)》課件
- 社區(qū)醫(yī)療抗菌藥物分級管理方案
- 開題報告-鑄牢中華民族共同體意識的學(xué)校教育研究
- 《醫(yī)院標(biāo)識牌規(guī)劃設(shè)計方案》
- 公司2025年會暨員工團(tuán)隊頒獎盛典攜手同行共創(chuàng)未來模板
- 夜市運(yùn)營投標(biāo)方案(技術(shù)方案)
- 電接點(diǎn) 水位計工作原理及故障處理
- 國家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書樣本
- 公眾號運(yùn)營實(shí)戰(zhàn)手冊
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
評論
0/150
提交評論