freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于單片機(jī)的足球機(jī)器人小車系統(tǒng)設(shè)計(jì)-資料下載頁(yè)

2025-06-06 16:02本頁(yè)面
  

【正文】 先對(duì)程序運(yùn)行的重要環(huán)節(jié) — AD轉(zhuǎn)換器的讀寫控制進(jìn)行了說(shuō)明,再針對(duì)各個(gè)功能模塊設(shè)計(jì)了相關(guān)軟件,各模塊間相互獨(dú)立,可用于測(cè)試各個(gè)部件的運(yùn)行狀況。最后合成一個(gè)具有完整性能和多判斷的比賽應(yīng)用程序。 A/D 轉(zhuǎn)換器的讀寫控制模 塊 [8] A/D 轉(zhuǎn)換的過(guò)程首先向 P0 和 P2端口輸入 AD0809 的通道 0 地址,此時(shí) ALE 地址鎖存在信號(hào)將,地址鎖存,單片機(jī)讀寫端 RD____,W__R__, OE 有高電平打開三態(tài)門,同時(shí), STRAT 和 ALT接在 一起,程序輸入一個(gè)正脈沖啟動(dòng) A/D 轉(zhuǎn)換,把內(nèi)部轉(zhuǎn)換的數(shù)據(jù)送往總路線,當(dāng) EOC 由低變高時(shí)數(shù)據(jù)轉(zhuǎn)換結(jié)換結(jié)束。 用 C語(yǔ)言實(shí)現(xiàn)的代碼如下 [9]: include include define IN0 XBYTE[0xFEF8] /* 0 通道的絕對(duì)地址 */ define IN1 XBYTE[0xFEFA] /*2 通道的絕對(duì)地址 * void abc0809_1(uchar idata *x)。 /*找球傳感器的值 */ void abc0809_2(uchar idata *x)。 /*灰度傳感器的值 */ void main (void) { uchar idata ab[2]。 /*存放找球傳感器的數(shù)值 */ uchar idata ac[2]。 /*存放灰度傳感器的數(shù)值 */ uchar idata ad[2]。 /*存放最原始灰度傳感器的值 */ abc0809_2(ad)。 /*提取灰度傳器最原始的值 */ abc0809_1(ab)。 /*取找球傳感器的數(shù)值 */ } void abc0809_1(uchar data *x) /*提取找球傳感器值的函數(shù) */ { uchar i 。 uchar idata *ad_dr。 ad_dr=amp。IN0。 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 24 for(i=0。j2。i++) { do{*ad_dr=i x[i]=*ad_dr。 }while(P1^5==0)。 } } void abc0809_2(uchar data *x) /*提取灰度傳感器值的函數(shù) */ { uchar i 。 uchar idata *ad_dr。 ad_dr=amp。IN1。 for(i=0。j2。i++) { do{*ad_dr=i x[i]=*ad_dr。 }while(P1^5==0)。 } } 程序原理 機(jī)器人在實(shí)際運(yùn)用中,需要作出的動(dòng)作有:前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn),其中,左右轉(zhuǎn)可以根據(jù)需要分別有以車身中心為圓心轉(zhuǎn)動(dòng)和以車輪為圓心轉(zhuǎn)動(dòng)。其工作原理為,通過(guò) 8051 的 P1 口向電機(jī)驅(qū)動(dòng)芯片 L298 傳送 4位的控制信號(hào)控制左右兩個(gè)電機(jī)的正轉(zhuǎn)反轉(zhuǎn), 同時(shí)在單片機(jī)一個(gè)引腳輸出 PWM 波型來(lái)調(diào)節(jié)電機(jī)轉(zhuǎn)速 完成動(dòng)作。其中, 兩個(gè)輪子反向轉(zhuǎn)動(dòng)時(shí),可實(shí)現(xiàn)以車身中心為圓心轉(zhuǎn)彎,當(dāng)一個(gè)輪轉(zhuǎn)動(dòng)時(shí),可實(shí)現(xiàn)以車輪為圓心轉(zhuǎn)彎。 運(yùn)動(dòng)控制模塊 在驅(qū)動(dòng)電路的邏輯表可得正反轉(zhuǎn)電機(jī),通過(guò)二個(gè)電機(jī)的相互配合就可以使機(jī)器人在賽場(chǎng)中靈活的運(yùn)動(dòng)。 ( 1) 直行程序 void line(void) /*用于進(jìn)攻 */ { p1^1=1。 /* 由電機(jī)旋轉(zhuǎn)邏輯表得 */ p1^2=0。 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 25 p1^3=1。 p1^4=0。 pwm1()。 /*長(zhǎng)距離運(yùn)動(dòng) */ } ( 2) 輪心左轉(zhuǎn) void left(void) /*用于找球 */ { p1^1=1。 /* 由電機(jī)旋轉(zhuǎn)邏輯表得 */ p1^2=0。 p1^3=0。 p1^4=0。 pwm2(); /*短距離運(yùn)動(dòng) */ } ( 3) 輪心右轉(zhuǎn) void right(void) /*用于找球 */ { p1^1=0。 /* 由電機(jī)旋轉(zhuǎn)邏輯表得 */ p1^2=0。 p1^3=0。 p1^4=1。 pwm2()。 /*短距離運(yùn)動(dòng) */ } ( 4)旋轉(zhuǎn)程序 void xuanzhuang(void) /*用于找球 */ { p1^1=1。 /* 由電機(jī)旋轉(zhuǎn)邏輯表得 */ p1^2=0。 p1^3=0。 p1^4=1。 pwm2()。 /*短距離運(yùn)動(dòng) */ } ( 5) 后退程序 void houtui(void) /*用碰撞時(shí)用 */ { p1^1=0。 /* 由電機(jī)旋轉(zhuǎn)邏輯表得 */ 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 26 p1^2=1。 p1^3=0。 p1^4=1。 pwm2(); /*短距離運(yùn)動(dòng) */ p1^1=1。 p1^2=0。 p1^3=0。 p1^4=1。 pwm2()。 /*當(dāng)后退后在旋轉(zhuǎn)調(diào) 頭 */ } 編程思路 找球的過(guò)程是通過(guò)對(duì)左右兩個(gè)紅外傳感器的電壓數(shù)字量比較實(shí)現(xiàn)的。當(dāng)球在左前方時(shí),左紅外傳感器接收光量大于右紅外,電壓數(shù)字量也大于右紅外,這時(shí)控制機(jī)器人向左轉(zhuǎn)。右轉(zhuǎn)情況相同。當(dāng)球在正前方時(shí),左右傳感器電壓數(shù)字量相等,此時(shí)控制機(jī)器人直行。當(dāng)球在背后時(shí),兩個(gè)紅外傳感器沒有光接收,此時(shí)以車身中心為圓心進(jìn)行轉(zhuǎn)動(dòng),直到搜索到球?yàn)橹埂? 找球程序有以下幾點(diǎn)值得注意。 ( 1) 找球目的在于盡快地接近球,于是當(dāng)球不在正前方時(shí),每次調(diào)整方向后,調(diào)入一段短距離直行程序,在修正方向的同時(shí) ,不斷地向球靠近;當(dāng)球在正前方時(shí),調(diào)入一段長(zhǎng)距離執(zhí)行程序,縮短找球時(shí)間。 ( 2)由 于 AD 轉(zhuǎn)換以及傳感器的誤差的存在,即使球完全正對(duì)機(jī)器人,也不可能得到兩個(gè)完全相等的電壓數(shù)字量,于是在比較時(shí)應(yīng)設(shè)一個(gè)閾值,當(dāng)左右差值小于閾值時(shí),認(rèn)為正對(duì)足球,調(diào)用長(zhǎng)直行;當(dāng)差值大于閾值時(shí),再進(jìn)行左右大小判斷,調(diào)用轉(zhuǎn)彎程序。 ( 3) 當(dāng)進(jìn)行閾值判斷時(shí),差值有可能得到負(fù)數(shù),在此情況下應(yīng)求其相反數(shù)。 ( 4) 當(dāng)球不在紅外傳感器可視范圍,即傳感器接收到的紅外信號(hào)為零時(shí),由于周圍環(huán)境的影響和暗電流的存在,其輸出電壓不可能為零,而是約 V 左右。 找球程序流程圖 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 27 圖 31 找球程序流程圖 Figure 31 flow chart to find the ball 用 C語(yǔ)言編寫的程序代碼 void find(void) /*找球子程序 */ { uchar a,b。 abc0809_1(ab)。 /*提取找球傳感器的值 */ 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 28 a=ad[0]ad[1]。 /*判斷傳感器的值 */ b=abs(a)。 if(ab[0]==0||ab[1]==0) { xuanzhuang(); } /*調(diào)用原地旋程序 */ elseif(b2) { line(); } /*直線長(zhǎng)行走 */ elseif(ab[0]ab[1]) { life()。 } /*左轉(zhuǎn) */ else { right()。 } } 編程思路 進(jìn)攻方向的判斷是根據(jù)對(duì)面灰度的增減比較來(lái)進(jìn)行的。在接近白色的區(qū)域,對(duì)紅外光的反射量大,光電判讀器即灰度傳感器的輸出電壓高,在接近黑色區(qū)域,輸出電壓則低。在此,默認(rèn)從白到黑為進(jìn)攻方向進(jìn)行編程。當(dāng)機(jī)器人找到球并持球時(shí),程序進(jìn)入進(jìn)攻模塊。該模塊大致分為兩個(gè)步驟,首先判斷前進(jìn)的方向是否是進(jìn)攻的方向,之后,再判斷前進(jìn)的方向是否平行于邊線正對(duì)球門。 在進(jìn)攻程序之前的找球程序模塊中,多次用到讀取 AD 轉(zhuǎn)換結(jié)果的程序 READ,在該程序中,每執(zhí)行一次,將讀 進(jìn) 2 個(gè)傳感器的轉(zhuǎn)換結(jié)果,其中左灰度和右灰度的轉(zhuǎn)換結(jié)果存放在 數(shù)組 ac[2]兩個(gè)地址單元里。在判斷正確前進(jìn)方向時(shí),里存放著前一次的轉(zhuǎn)換結(jié)果,先把它們轉(zhuǎn)移到 數(shù)組 ac[2]中,在 于 ad[2]中的原始 灰度轉(zhuǎn)換結(jié)果,分別與 當(dāng)前 的結(jié)果進(jìn)行比較,只要其中有一個(gè)值增大,就認(rèn)定為前進(jìn)方向錯(cuò)誤,這時(shí)調(diào)用以車身中心為圓心的原地轉(zhuǎn)動(dòng)程序,當(dāng)轉(zhuǎn)過(guò)約 180 度后,讀取當(dāng)前灰度值保存,再調(diào)用一段短距離直行程序,再次比較灰度值變化趨勢(shì),直到左右兩個(gè)灰度值都為減小,這時(shí),機(jī)器人前進(jìn)方向?yàn)檎_進(jìn)攻方向。 在大方向調(diào)正之后,許要調(diào)整機(jī)器人的前進(jìn)角度 ,即使前進(jìn)方向平行于邊線,正對(duì)球門。這個(gè)動(dòng)作左右兩個(gè)灰度傳感器轉(zhuǎn)換結(jié)果之間的比較完成。先讀取當(dāng)前灰度值,左右兩個(gè)結(jié)果進(jìn)行比較,如果左灰度大于右灰度,說(shuō)明前進(jìn)方向偏左,調(diào)用原地轉(zhuǎn)動(dòng)程序向右偏轉(zhuǎn),調(diào)整后,再次讀取,比較,直到左右相等為止,這時(shí)方向正對(duì)球門,調(diào)用長(zhǎng)距離直行程序,開始進(jìn)攻,把球攻入球門。 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 29 在兩個(gè)灰度值大小比較時(shí),與紅外傳感器有類似的問(wèn)題需要注意:相減時(shí)出現(xiàn)負(fù)數(shù)時(shí)需要調(diào)整為相反數(shù);判斷相等時(shí)有傳感器誤差存在,需要設(shè)定閾值,差值小于閾值即認(rèn)為相等。 圖 32 進(jìn)攻判斷 Figure 32 attack judgment 進(jìn)攻程序模塊流程圖 進(jìn)攻程序模塊流程圖 如圖 33 所示: 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 30 圖 33 進(jìn)攻流程圖 Figure 33 offensive flow chart 用 C 語(yǔ)言編寫的程序代碼 void attack(void) /*進(jìn)攻子程序 */ { uchar a,d。 abc0809_2(ac)。 /*提取灰度傳感器的值 */ 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 31 a=ac[0]ac[1]。 d=abs(a)。 if(!(ac[0]ad[1]||ac[1]ad[1])) /*判斷進(jìn)攻方向 */ { xuanzhuang(); } elseif(abs(a)2) /*比較左右灰度傳感器的值 */ { line(); } /*長(zhǎng)距離運(yùn)動(dòng) */ elseif(ac[0]ac[1]) { life()。} /*左轉(zhuǎn) */ else { right(); } /*右轉(zhuǎn) */ } 碰撞避讓程序的硬件實(shí)現(xiàn) 本設(shè)計(jì)的碰撞避讓系統(tǒng),是通過(guò) 51 單片機(jī)的中斷控制功能實(shí)現(xiàn)的。 MCS51系列單片機(jī)有 5 個(gè)中斷源,可分為 2 個(gè)中斷優(yōu)先級(jí)。本碰撞避讓系統(tǒng)所用到的中斷源為 ,即 外部中斷 0。其請(qǐng)求信號(hào)由 輸入請(qǐng)求信號(hào)有效電平由 IT0 和設(shè)置,一旦輸入信號(hào)有效,則將 TCON 中的 IE0 標(biāo)志位置 1,可向 CUP 申請(qǐng)中斷 [10]。 中斷控制設(shè)置 MCS51 系統(tǒng)中斷控制由 4 個(gè)專用寄存器組成。 中斷請(qǐng)求標(biāo)志 TCON 其中 IE0 為外部中斷零的申請(qǐng)標(biāo)志位。當(dāng)外部中斷源有請(qǐng) 求時(shí),該位置 1,其復(fù)位由觸發(fā)方式來(lái)設(shè)置。 IT0為外部中斷觸發(fā)方式設(shè)置位, IT0=0 時(shí),為電平觸發(fā)方式,該方式下, CUP 每個(gè)機(jī)器周期對(duì)外部中斷源采樣,如果為低電平,則進(jìn)入中斷。該方式中 CUP 響應(yīng)中斷后不能自動(dòng)清除 IE標(biāo)志位,所以中斷返回前,外部中斷源引腳上的低電平必須撤銷。 IT0=1 時(shí)為脈沖觸發(fā)方式,即在兩個(gè)相鄰的機(jī)器周期內(nèi) 上的電平發(fā)生由高到低的跳變即進(jìn)入中斷 IE=1 保持到 CUP 響應(yīng)中斷時(shí),才由硬件清除,該方式下,中斷源低電平需要至少保持一個(gè)機(jī)器周期。 焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 32 ? 中斷開放和屏蔽 IE 其中, EA為總中斷允許位, EA=1 時(shí)開放中斷, EA=0 時(shí)關(guān)斷一切中斷。 EX0 為外部中斷 0 允許位, EX0=1 時(shí)允許。 ? 中斷優(yōu)先級(jí)設(shè)定 IP 其中 PX0 為外部中斷 0優(yōu)先級(jí)設(shè)定, PX0=1 時(shí),為高優(yōu)先級(jí)。 碰撞系統(tǒng)模塊程序 中斷控制設(shè)置: IT0=1 ;選擇觸發(fā)方式為電平觸發(fā) IE=0X85H ; EA=1,EX0=1,開放外部中斷 0 中斷服務(wù)子程序 用 C語(yǔ)言編寫的程序代碼如下: void pengzhuang(void)interrupt 0 { houtui() /*用碰撞時(shí)用 */ } 以上所述的幾大功能模塊,都可以獨(dú)立使用,分別完成不同的任務(wù),而把它們聯(lián)系到一塊,則可 以形成一個(gè)完整的程序,使機(jī)器人在賽場(chǎng)上完成整場(chǎng)比賽。而把他們聯(lián)系在一起的橋梁則是前中提到的持球探測(cè)壁以及其上的持球傳感器。 持球傳感器也一個(gè)紅外接收管,不需要 AD轉(zhuǎn)換,只需要邏輯判斷,當(dāng)機(jī)器人持球時(shí),該傳感器從 口輸入一個(gè)高電平。整個(gè)程序運(yùn)行過(guò)程中,通過(guò)查詢方焦作大學(xué)畢業(yè)設(shè)計(jì) 3 足球機(jī)器人的軟件設(shè)計(jì) 33 式來(lái)判斷是否持球。當(dāng) =0 時(shí),執(zhí)行找球程序,當(dāng) =1 時(shí),執(zhí)行進(jìn)攻程序。在整個(gè)程序中,中斷開放,實(shí)現(xiàn)任何狀態(tài)下的碰撞避讓。 2.整體 程序 流程圖如圖 34 圖 34 整體程序流程圖 焦作大學(xué)畢業(yè)設(shè)計(jì) 4 功能測(cè)試 34 4 功能 測(cè)試 找球功能模塊測(cè)試 ? 測(cè)試條件:用一個(gè)高功率紅外發(fā)光管模擬比賽用球,在室內(nèi)日光燈光源下進(jìn)行測(cè)試。 ? 測(cè)試軟件:找球程序模塊,差值閾值 ,無(wú)紅外情況輸出電壓 。轉(zhuǎn)彎延時(shí) 秒,直行延時(shí) 秒。 ? 測(cè)試結(jié)果:機(jī)器人能在 40CM 距離左右發(fā)現(xiàn)球,在向球運(yùn)動(dòng)過(guò)程中,前半段由于基礎(chǔ)電壓小,差值小 于閾值,直線前進(jìn);當(dāng)靠近球時(shí),電壓增大,差值大于閾值,機(jī)器人左右調(diào)整方向,逐漸靠近小球。 碰撞功能模塊測(cè)試 ? 測(cè)試條件:面向墻壁直行,模擬碰撞場(chǎng)地?fù)醢濉? ? 測(cè)試軟件:裝入直行程序,中斷開放,中斷服務(wù)程序?yàn)榈雇搜訒r(shí) 1 秒,原地轉(zhuǎn)彎延時(shí) 1秒。 ? 測(cè)試結(jié)果:機(jī)器人在直行碰撞墻壁后,順利進(jìn)入中斷服務(wù)程序,倒退并調(diào)頭,之后中斷返回繼續(xù)直行。 方向判斷功能模塊測(cè)試 ? 測(cè)試條件:用黑白兩色紙模擬場(chǎng)地基板,室內(nèi)日光燈光源。 ? 測(cè)試軟件:方向判斷程序模塊。默認(rèn)由白向黑進(jìn)攻。在起點(diǎn)采樣,直行到另一色地面再次 采樣,比較判斷。 ? 測(cè)試結(jié)果:由白向黑行進(jìn)時(shí),機(jī)器人判斷方向?yàn)檎_進(jìn)攻方向 ,繼續(xù)前進(jìn);由黑向白行進(jìn)時(shí),機(jī)器人發(fā)現(xiàn)方向錯(cuò)誤,掉頭前進(jìn)。 焦作大學(xué)畢業(yè)設(shè)計(jì) 5 設(shè)計(jì)總結(jié) 35 5 設(shè)計(jì)總結(jié) 本設(shè)計(jì)的優(yōu)點(diǎn)及創(chuàng)新之處 本設(shè)計(jì)利用簡(jiǎn)單的器件使機(jī)器人擁有了較為完善的功能, 用 C 語(yǔ)言做為 其 編程語(yǔ)言,即保證了 程序 的效率又使程序的 模塊 構(gòu)架清晰 ,用戶能夠根據(jù)需要方便的編寫輸入不同的程序,使得機(jī)器人的性能可以不斷的完善 ; 同時(shí), 并行口數(shù)模轉(zhuǎn)換提高了數(shù)據(jù)的處理速度;還有為 留有諸多的擴(kuò)展接口( 8 個(gè) AD 轉(zhuǎn)換接口, 5個(gè)中斷源)給今后的功能擴(kuò)展留下了廣闊的空間。 機(jī)器人的外形結(jié)構(gòu)可以根據(jù)需要改變,并實(shí)現(xiàn)一定功能,本設(shè)計(jì)中的 “ 持球探測(cè)臂 ” 就是通過(guò)機(jī)器人的外形實(shí)現(xiàn)功能,大大簡(jiǎn)化了軟件程序的算法,是本設(shè)計(jì)的創(chuàng)新之處。 本設(shè)計(jì)屬于第一 次嘗試,許多功能還不夠完善,結(jié)構(gòu)也過(guò)于簡(jiǎn)單。在以下方面有待改進(jìn) 。 ( 1) 移動(dòng)方式方面:目前所使用的 2 個(gè)驅(qū)動(dòng)輪方式都只有兩個(gè)自由度,還不能實(shí)現(xiàn)任意定位和定向 , 若 4 個(gè)輪子都具備獨(dú)立驅(qū)動(dòng)和轉(zhuǎn)向能力,則可實(shí)現(xiàn)全方位的運(yùn)動(dòng),大大增加其靈活性。 ( 2) 數(shù)值的使用 :目前能使用的紅外傳感器只能實(shí)現(xiàn)簡(jiǎn)單地計(jì)算比較 , 精確的計(jì)算差值,必利 用差值對(duì)轉(zhuǎn)向進(jìn)行精確的控制, 在用差值去調(diào)整 PWM 去改變電機(jī)轉(zhuǎn)速,再加入 PID 環(huán)節(jié)就會(huì)更好, 這也是改進(jìn)的方向之一。 ( 3) 傳感器方面:本次設(shè)計(jì)只使
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1