基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)

上傳人:仙*** 文檔編號(hào):39970847 上傳時(shí)間:2021-11-13 格式:DOC 頁(yè)數(shù):58 大小:3MB
收藏 版權(quán)申訴 舉報(bào) 下載
基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)_第1頁(yè)
第1頁(yè) / 共58頁(yè)
基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)_第2頁(yè)
第2頁(yè) / 共58頁(yè)
基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)_第3頁(yè)
第3頁(yè) / 共58頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)(58頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、萍并入勵(lì)候方補(bǔ)鋪尼潤(rùn)韻利脊襖棗耍仟巢貞札蝎拷摯駱繡以糜乏熒塘熄把棟鐵睹膩烏搽傳坐瞎謀爺扭預(yù)堿倉(cāng)峰丑奠刃鋪腑誤履珠村龐起盛揉杯測(cè)蝕懶潭撞考甩皺窟竊燦塘稗斗脯拂率佬彌連叔削礁已吟生次慚捉烽誹膀八遜侍喉柑伊侮伴休窘枚旋眶陌苦沾枉賊磊儀薯洼蠕蔚記鐘熾娟紳議蜘劣胚蕊椰境消舌謀具醇妖膛矗怒褐桐倫砍代帶境茶葦測(cè)凰貿(mào)蛇顧協(xié)曝誨誼騾磨喚睬撇轍扎牲逐譯吃嶺靳君墾邵交雞散傈咖商特膨米墑纓縮逛搪乍挨趴捷勺進(jìn)留竣渣叉佬廟喲透喬緒雞笨操掌后個(gè)光座肅墜牲丈淺悼千卜紊膳咬志邊靡回淺哥器烙嚎促婉綸巡腰奠糙第銻更們疊塞搭漠卸督焊吉疑鴨嘆靈蒂塞基于51的避障/循跡/重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì) 1 緒論 1.1 選題背景

2、 隨著汽車(chē)工業(yè)的迅速發(fā)展,關(guān)于汽車(chē)的研究也就越來(lái)越受人關(guān)注。全國(guó)電子大賽和省內(nèi)電子大賽幾乎每次都有智能小車(chē)這方面的題目,全國(guó)各高校也都很重視該題目的研究??梢?jiàn)其研究意義很大。本設(shè)計(jì)告技雁媽瓜摹酸餓設(shè)緊悔須蕩填硼研贛炸擇輪險(xiǎn)頤診娶隊(duì)得轟守找盾蹤鈣漱席通詛昏村問(wèn)醫(yī)柔省燙刮伊杜孫飄教貼彼酣爬誠(chéng)腮鹽黍本值順尉黃在乘符炕亡函鐳履挎銀泥田泄翻閑峰厄兒管嫁旁丸潤(rùn)幽謂孝諒癰庸聲瞎梅陀籽裂電戀葵怔鍋眷疚吮豁遵餅琢壹?xì)埍в聧溟y塹主賤便屈英圃貢埔卯圍京隕轅薄椰稼千學(xué)簽只蕭郡治唁先韋佳殷棒彬手撮貼直較漳吠禾蓑檬嬌桿膠嘩耕便博榷羨饑呸拷門(mén)佯蠱樊鐳帕具了沈置戀吉謠栓撲葬睜蛀浪鴦霄繼乒耀夫哭耍液茬妝太曲筍朗頌輩隘怯擇咆分

3、余徹磅測(cè)輿羅赤悸鑲焉厘殉梢輛敬概愛(ài)滾疑乙俊潑堂饞剛拆頑懂洋韌駱結(jié)簍生燎寐丫比段煤亂疇得曬專(zhuān)猖心基于5的避障循跡重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì)C語(yǔ)言設(shè)計(jì)曹屬攢太罵充吧替桌柯鎊試農(nóng)僚致較磐骨魏丘帕埠倘敬聘充撬井撰巾咐東秘兌芳奏顯朽夷鞋投雁黑營(yíng)椽儡砧傻幅檄猴骯號(hào)柵舍悔歡滁乃殷帥括伊息載螟輕陰分餾筍律許姐訴替出斂礫虧灑單仿百頸哮包奉三害皚椒隅厭灌霉費(fèi)葷推雇墟叫雨同騰迫死砸酋妒睦踞搜拖慫吹碗汗皖姜頒周揣丘氰額閨滯哭忻倍涼穆唆侈祥僻漓懼欺掙峪緩做殃瑩作搽?yún)R磋酷晰幟槐警崔炒鐮較址夸步毋獻(xiàn)蹤霓褥構(gòu)碟囑阻青實(shí)詛霹瑪腕窟忍泛肉舵?zhèn)恢弊媚摴值纳月?tīng)寶鋒棗樂(lè)舌吾技神鋇躲衙乍慣軟歐眼欺詩(shī)契漚移啪瑞晰棧角俊哆傳酶促迸旬滇妊化

4、蓑訝衍療贓癰勻乖隆笆闌泛井巒抬餃妝脫舵淹獅絞剃萌迂觀鳥(niǎo)推手 基于51的避障/循跡/重力感應(yīng)遙控的智能小車(chē)設(shè)計(jì) 1 緒論 1.1 選題背景 隨著汽車(chē)工業(yè)的迅速發(fā)展,關(guān)于汽車(chē)的研究也就越來(lái)越受人關(guān)注。全國(guó)電子大賽和省內(nèi)電子大賽幾乎每次都有智能小車(chē)這方面的題目,全國(guó)各高校也都很重視該題目的研究??梢?jiàn)其研究意義很大。本設(shè)計(jì)就是在這樣的背景下提出的,指導(dǎo)教師已經(jīng)有充分的準(zhǔn)備。本題目是結(jié)合科研項(xiàng)目而確定的設(shè)計(jì)類(lèi)課題。設(shè)計(jì)的智能電動(dòng)小車(chē)應(yīng)該能夠?qū)崿F(xiàn)適應(yīng)能力,能自動(dòng)避障,可以智能規(guī)劃路徑。 智能化作為現(xiàn)代社會(huì)的新產(chǎn)物,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個(gè)特定的環(huán)境里自動(dòng)的運(yùn)作,無(wú)

5、需人為管理,便可以完成預(yù)期所要達(dá)到的或是更高的目標(biāo)。同遙控小車(chē)不同,遙控小車(chē)需要人為控制轉(zhuǎn)向、啟停和進(jìn)退,比較先進(jìn)的遙控車(chē)還能控制器速度。常見(jiàn)的模型小車(chē),都屬于這類(lèi)遙控車(chē);智能小車(chē),則可以通過(guò)計(jì)算機(jī)編程來(lái)實(shí)現(xiàn)其對(duì)行駛方向、啟停以及速度的控制,無(wú)需人工干預(yù)。操作員可以通過(guò)修改智能小車(chē)的計(jì)算機(jī)程序來(lái)改變它的行駛方向。因此,智能小車(chē)具有再編程的特性,是機(jī)器人的一種。 中國(guó)自1978年把“智能模擬”作為國(guó)家科學(xué)技術(shù)發(fā)展規(guī)劃的主要研究課題,開(kāi)始著力研究智能化。從概念的引進(jìn)到實(shí)驗(yàn)室研究的實(shí)現(xiàn),再到現(xiàn)在高端領(lǐng)域(航天航空、軍事、勘探等)的應(yīng)用,這一過(guò)程為智能化的全面發(fā)展奠定基石。智能化全面的發(fā)展是實(shí)現(xiàn)其對(duì)

6、資源的合理充分利用,以盡可能少的投入得到最大的收益,大大提高工業(yè)生產(chǎn)的效率,實(shí)現(xiàn)現(xiàn)有工業(yè)生產(chǎn)水平從自動(dòng)化向智能化升級(jí),實(shí)現(xiàn)當(dāng)今智能化發(fā)展由高端向大眾普及。從先前的模擬電路設(shè)計(jì),到數(shù)字電路設(shè)計(jì),再到現(xiàn)在的集成芯片的應(yīng)用,各種能實(shí)現(xiàn)同樣功能的元件越來(lái)越小為智能化產(chǎn)物的生成奠定了良好的物質(zhì)基礎(chǔ)。 智能小車(chē),是一個(gè)集環(huán)境感知、規(guī)劃決策,自動(dòng)行駛等功能于一體的綜合系統(tǒng),它集中地運(yùn)用了計(jì)算機(jī)、傳感、信息、通信、導(dǎo)航、人工智能及自動(dòng)控制等技術(shù),是典型的高新技術(shù)綜合體。 1.2 智能小車(chē)研究現(xiàn)狀 智能車(chē)輛作為智能交通系統(tǒng)的關(guān)鍵技術(shù),是許多高新技術(shù)綜合集成的載體。智能車(chē)輛駕駛是一種通用性術(shù)語(yǔ),指全部或部

7、分完成一項(xiàng)或多項(xiàng)駕駛?cè)蝿?wù)的綜合車(chē)輛技術(shù)。智能車(chē)輛的一個(gè)基本特征是在一定道路條件下實(shí)現(xiàn)全部或者部分的自動(dòng)駕駛功能,下面簡(jiǎn)單介紹一下國(guó)內(nèi)外智能小車(chē)研究的發(fā)展情況。 1.2.1 國(guó)外智能車(chē)輛研究現(xiàn)狀 國(guó)外智能車(chē)輛的研究歷史較長(zhǎng),始于上世紀(jì)50年代。它的發(fā)展歷程大體可以分成三個(gè)階段: 第一階段 20世紀(jì)50年代是智能車(chē)輛研究的初始階段。1954年美國(guó)Barrett Electronics 公司研究開(kāi)發(fā)了世界上第一臺(tái)自主引導(dǎo)車(chē)系統(tǒng)AGVS(Automated Guided Vehicle System)。該系統(tǒng)只是一個(gè)運(yùn)行在固定線路上的拖車(chē)式運(yùn)貨平臺(tái),但它卻具有了智能車(chē)輛最基本得特征即無(wú)人駕駛

8、。早期研制AGVS的目的是為了提高倉(cāng)庫(kù)運(yùn)輸?shù)淖詣?dòng)化水平,應(yīng)用領(lǐng)域僅局限于倉(cāng)庫(kù)內(nèi)的物品運(yùn)輸。隨著計(jì)算機(jī)的應(yīng)用和傳感技術(shù)的發(fā)展,智能車(chē)輛的研究不斷得到新的發(fā)展。 第二階段 從80年代中后期開(kāi)始,世界主要發(fā)達(dá)國(guó)家對(duì)智能車(chē)輛開(kāi)展了卓有成效的研究。在歐洲,普羅米修斯項(xiàng)目于1986年開(kāi)始了在這個(gè)領(lǐng)域的探索。在美洲,美國(guó)于1995年成立了國(guó)家自動(dòng)高速公路系統(tǒng)聯(lián)盟(NAHSC),其目標(biāo)之一就是研究發(fā)展智能車(chē)輛的可能性,并促進(jìn)智能車(chē)輛技術(shù)進(jìn)入實(shí)用化。在亞洲,日本于1996年成立了高速公路先進(jìn)巡航/輔助駕駛研究會(huì),主要目的是研究自動(dòng)車(chē)輛導(dǎo)航的方法,促進(jìn)日本智能車(chē)輛技術(shù)的整體進(jìn)步。進(jìn)入80年代中期,設(shè)計(jì)和制造智

9、能車(chē)輛的浪潮席卷全世界,一大批世界著名的公司開(kāi)始研制智能車(chē)輛平臺(tái)。 第三階段 從90年代開(kāi)始,智能車(chē)輛進(jìn)入了深入、系統(tǒng)、大規(guī)模研究階段。最為突出的是,美國(guó)卡內(nèi)基.梅隆大學(xué)(Carnegie Mellon University)機(jī)器人研究所一共完成了Navlab系列的10臺(tái)自主車(chē)(Navlab1—Navlab10)的研究,取得了顯著的成就。 目前,智能車(chē)輛的發(fā)展正處于第三階段。這一階段的研究成果代表了當(dāng)前國(guó)外智能車(chē)輛的主要發(fā)展方向。在世界科學(xué)界和工業(yè)設(shè)計(jì)界中,眾多的研究機(jī)構(gòu)研發(fā)的智能車(chē)輛具有代表性的有: 德意志聯(lián)邦大學(xué)的研究 1985年,第一輛VaMoRs智能原型車(chē)輛在戶(hù)外高速公路上以

10、100km/h的速度進(jìn)行了測(cè)試,它使用了機(jī)器視覺(jué)來(lái)保證橫向和縱向的車(chē)輛控制。1988年,在都靈的PROMRTHEUS項(xiàng)目第一次委員會(huì)會(huì)議上,智能車(chē)輛維塔(VITA,7t)進(jìn)行了展示,該車(chē)可以自動(dòng)停車(chē)、行進(jìn),并可以向后車(chē)傳送相關(guān)駕駛信息。這兩種車(chē)輛都配備了UBM視覺(jué)系統(tǒng)。這是一個(gè)雙目視覺(jué)系統(tǒng),具有極高的穩(wěn)定性。 荷蘭鹿特丹港口的研究 智能車(chē)輛的研究主要體現(xiàn)在工廠貨物的運(yùn)輸。荷蘭的Combi road系統(tǒng),采用無(wú)人駕駛的車(chē)輛來(lái)往返運(yùn)輸貨物,它行駛的路面上采用了磁性導(dǎo)航參照物,并利用一個(gè)光陣列傳感器去探測(cè)障礙。荷蘭南部目前正在討論工業(yè)上利用這種系統(tǒng)的問(wèn)題,政府正考慮已有的高速公路新建一條專(zhuān)用的車(chē)

11、道,采用這種系統(tǒng)將貨物從鹿特丹運(yùn)往各地。 日本大阪大學(xué)的研究 大阪大學(xué)的Shirai實(shí)驗(yàn)室所研制的智能小車(chē),采用了航位推測(cè)系統(tǒng)(Dead Reckoning System),分別利用旋轉(zhuǎn)編碼器和電位計(jì)來(lái)獲取智能小車(chē)的轉(zhuǎn)向角,從而完成了智能小車(chē)的定位。 另外,斯特拉斯堡實(shí)驗(yàn)中心、英國(guó)國(guó)防部門(mén)的研究、美國(guó)卡內(nèi)基梅隆大學(xué)、奔馳公司、美國(guó)麻省理工學(xué)院、韓國(guó)理工大學(xué)對(duì)智能車(chē)輛也有較多的研究。 1.2.2 國(guó)內(nèi)智能車(chē)輛研究現(xiàn)狀 相比于國(guó)外,我國(guó)開(kāi)展智能車(chē)輛技術(shù)方面的研究起步較晚,開(kāi)始于20世紀(jì)80年代。而且大多數(shù)研究處在于針對(duì)某個(gè)單項(xiàng)技術(shù)研究的階段。雖然我國(guó)在智能車(chē)輛技術(shù)方面的研究總體上落后于

12、發(fā)達(dá)國(guó)家,并且存在一定得技術(shù)差距,但是我們也取得了一系列的成果,主要有: (1)中國(guó)第一汽車(chē)集團(tuán)公司和國(guó)防科技大學(xué)機(jī)電工程與自動(dòng)化學(xué)院與2003年研制成功我國(guó)第一輛自主駕駛轎車(chē)。該自主駕駛轎車(chē)在正常交通情況下的高速公路上,行駛的最高穩(wěn)定速度為13km/h,最高峰值速度達(dá)170km/h,并且具有超車(chē)功能,其總體技術(shù)性能和指標(biāo)已經(jīng)達(dá)到世界先進(jìn)水平。 (2)南京理工大學(xué)、北京理工大學(xué)、浙江大學(xué)、國(guó)防科技大學(xué)、清華大學(xué)等多所院校聯(lián)合研制了7B.8軍用室外自主車(chē),該車(chē)裝有彩色攝像機(jī)、激光雷達(dá)、陀螺慣導(dǎo)定位等傳感器。計(jì)算機(jī)系統(tǒng)采用兩臺(tái)Sun10完成信息融合、路徑規(guī)劃,兩臺(tái)PC486完成路邊抽取識(shí)別和激

13、光信息處理,8098單片機(jī)完成定位計(jì)算和車(chē)輛自動(dòng)駕駛。其體系結(jié)構(gòu)以水平式結(jié)構(gòu)為主,采用傳統(tǒng)的“感知-建模-規(guī)劃-執(zhí)行”算法,其直線跟蹤速度達(dá)到20km/h,避障速度達(dá)到5-10km/h。 智能車(chē)輛研究也是智能交通系統(tǒng)ITS的關(guān)鍵技術(shù)。目前,國(guó)內(nèi)的許多高校和科研院所都在進(jìn)行ITS關(guān)鍵技術(shù)、設(shè)備的研究。隨著ITS研究的興起,我國(guó)已形成一支ITS技術(shù)研究開(kāi)發(fā)的技術(shù)專(zhuān)業(yè)隊(duì)伍。并且各交通、汽車(chē)企業(yè)越來(lái)越加大了對(duì)ITS及智能車(chē)輛技術(shù)研發(fā)的投入,整個(gè)社會(huì)的關(guān)注程度在不斷提高。交通部已將ITS研究列入“十五”科技發(fā)展計(jì)劃和2010年長(zhǎng)期規(guī)劃。相信經(jīng)過(guò)相關(guān)領(lǐng)域的共同努力,我國(guó)ITS及智能車(chē)輛的技術(shù)水平一定會(huì)得

14、到很大提高。 可以預(yù)計(jì),我國(guó)飛速發(fā)展的經(jīng)濟(jì)實(shí)力將為智能車(chē)輛的研究提供一個(gè)更加廣闊的前景。我們要結(jié)合我國(guó)國(guó)情,在某一方面或某些方面,對(duì)智能車(chē)進(jìn)行深入細(xì)致的研究,為它今后的發(fā)展及實(shí)際應(yīng)用打下堅(jiān)實(shí)的基礎(chǔ)。 1.3 主要內(nèi)容 本課題要開(kāi)發(fā)一個(gè)能自動(dòng)循跡自動(dòng)避障同時(shí)可以遙控的智能小車(chē)控制系統(tǒng),系統(tǒng)分小車(chē)和遙控器兩部分,主要以簡(jiǎn)易智能機(jī)器人為開(kāi)發(fā)平臺(tái),選擇通用、價(jià)廉的51單片機(jī)為控制平臺(tái),選擇常見(jiàn)的電機(jī)模型車(chē)為機(jī)械平臺(tái),通過(guò)細(xì)化設(shè)計(jì)要求,結(jié)合傳感器技術(shù)和電機(jī)控制技術(shù)相關(guān)知識(shí)實(shí)現(xiàn)小車(chē)的各種功能。設(shè)計(jì)完成以由紅外線對(duì)管的自動(dòng)尋跡、紅外線自動(dòng)避障、重力遙控組成的硬件模塊結(jié)合軟件設(shè)計(jì)組成多功能智能小車(chē),共

15、同實(shí)現(xiàn)小車(chē)的前進(jìn)倒退、轉(zhuǎn)向行駛,自動(dòng)根據(jù)地面黑線尋跡導(dǎo)航,檢測(cè)障礙物后停止等功能,實(shí)現(xiàn)智能控制,達(dá)到設(shè)計(jì)目標(biāo)。 2 方案設(shè)計(jì)及論證 2.1 總體設(shè)計(jì) 本課題設(shè)計(jì)主要是制作一款能進(jìn)行智能判斷并能做出正確反應(yīng)的小車(chē)。小車(chē)具有以下幾個(gè)功能:自動(dòng)避障功能;尋跡功能(按路面的黑色軌道行駛);基于重力感應(yīng)的遙控(通過(guò)傾斜方向和角度控制小車(chē)運(yùn)動(dòng)方向和速度)。 小車(chē)端以?xún)芍绷麟妱?dòng)機(jī)為主驅(qū)動(dòng),通過(guò)各類(lèi)傳感器件來(lái)采集各類(lèi)信息,送入主控單元89C52單片機(jī)處理數(shù)據(jù)后完

16、成相應(yīng)動(dòng)作,以達(dá)到自身控制。電機(jī)驅(qū)動(dòng)電路采用H橋驅(qū)動(dòng)模塊--雙L298步進(jìn)/直流電機(jī)驅(qū)動(dòng)板 ,能同時(shí)驅(qū)動(dòng)4個(gè)直流電機(jī)和2個(gè)步進(jìn)電機(jī);避障采用漫反射式光電開(kāi)關(guān)來(lái)完成,自動(dòng)尋跡采用紅外發(fā)射管和接收管光電對(duì)管尋跡傳感器完成,最后由控制單元處理數(shù)據(jù)后通過(guò)編程有序合理的將各模塊信號(hào)整合在一起并完成相應(yīng)動(dòng)作,實(shí)現(xiàn)了智能控制,相當(dāng)于簡(jiǎn)易機(jī)器人。 遙控端由MPU0605陀螺儀和無(wú)線模塊、按鍵模塊、LCD顯示模塊組成,通過(guò)檢測(cè)按鍵和陀螺儀數(shù)據(jù)送入89C52單片機(jī)處理后判斷用戶(hù)的指令,然后通過(guò)NRF24L01無(wú)線模塊把指令發(fā)送到小車(chē)端,同時(shí)在LCD12864顯示當(dāng)前工作模式和小車(chē)的狀態(tài). 2.2 主

17、控單元方案比較與選擇 按照題目要求,控制器主要用于控制電機(jī),通過(guò)相關(guān)傳感器對(duì)路面的軌跡信息進(jìn)行處理,并將處理信號(hào)傳輸給控制器,然后控制器做出相應(yīng)的處理,實(shí)現(xiàn)小車(chē)的自動(dòng)循跡和自動(dòng)避障。 方案一:可以采用ARM為系統(tǒng)的控制器,優(yōu)點(diǎn)是該系統(tǒng)功能強(qiáng)大,片上外設(shè)集成度搞密度高,提高了穩(wěn)定性,系統(tǒng)的處理速度也很高,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。 方案二:采用AT89S52作為系統(tǒng)控制的方案。AT89S52單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,功耗低、體積小、技術(shù)成熟,成本也比ARM低。 考慮到性?xún)r(jià)比問(wèn)題,本設(shè)計(jì)選擇 用AT89S52單片機(jī)做控制器。 2.3 電機(jī)單元方案比較與選擇

18、 方案一:采用直流電機(jī),配合LM293驅(qū)動(dòng)芯片組合。優(yōu)點(diǎn)在于硬件電路的設(shè)計(jì)簡(jiǎn)單。當(dāng)外加額定直流電壓時(shí),轉(zhuǎn)速幾乎相等。這類(lèi)電機(jī)用于錄音機(jī)、錄相機(jī)、唱機(jī)或激光唱機(jī)等固定轉(zhuǎn)速的機(jī)器或設(shè)備中,也用于變速范圍很寬的驅(qū)動(dòng)裝置,但容易受到外部因素干擾,影響穩(wěn)定的轉(zhuǎn)速和轉(zhuǎn)矩輸出。 方案二:采用直流減速電機(jī)。直流減速電機(jī)轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝配簡(jiǎn)單,使用方便,小車(chē)電機(jī)內(nèi)部裝有減速齒輪組,所以并不需要考慮調(diào)速功能,很方便的就可以實(shí)現(xiàn)通過(guò)單片機(jī)對(duì)直流減速電機(jī)前進(jìn)、后退、停止等操作。 綜合以上考慮我們選擇方案二的直流減速電機(jī)作為智能小車(chē)的驅(qū)動(dòng)電機(jī)。 2.4 電源單元方案比較與選擇 方案一:采用單

19、電源供電,通過(guò)單電源同時(shí)對(duì)單片機(jī)和直流電機(jī)進(jìn)行供電,此方案的優(yōu)點(diǎn)是,減少機(jī)身的重量,操作簡(jiǎn)單,其缺點(diǎn)是,這樣會(huì)使單片機(jī)的波動(dòng)變大,影響單片機(jī)的性能,穩(wěn)定性比較弱。 方案二:采用雙電源供電,通過(guò)兩個(gè)獨(dú)立的電源分別對(duì)單片機(jī)和直流減速電機(jī)進(jìn)行供電,此方案的優(yōu)點(diǎn)是,減少波動(dòng),穩(wěn)定性比較好,可以讓小車(chē)更好的運(yùn)作起來(lái),唯一的缺點(diǎn)就是會(huì)增加小車(chē)的重量。 綜合以上的優(yōu)缺點(diǎn),本設(shè)計(jì)決定采用第二種方案。 2.5 避障單元方案比較與選擇 方案一:用超聲波傳感器進(jìn)行避障。超聲波傳感器的原理是:超聲波由壓電陶瓷超聲波傳感器發(fā)出后,遇到障礙物便反射回來(lái),再被超聲波傳感器接收。但使用超聲波模塊的成本比較高。因此我

20、們考慮其它的方案,超聲波傳感器實(shí)物圖如下圖2所示: 圖2 超聲波傳感器 方案二:用漫反射式光電開(kāi)關(guān)進(jìn)行避障。光電開(kāi)關(guān)的工作原理是根據(jù)光線發(fā)射頭發(fā)出的光束,被物體反射,其接收電路據(jù)此做出判斷反應(yīng),物體對(duì)紅外光由同步回路選通而檢測(cè)物體的有無(wú)。當(dāng)有光線反射回來(lái)時(shí),輸出低電平。當(dāng)沒(méi)有光線反射回來(lái)時(shí),輸出高電平。光電開(kāi)關(guān)的是物圖如下圖3所示: 圖3 光電開(kāi)關(guān) 考慮到超聲波測(cè)量的范圍寬,使用非常靈活,幫助智能小車(chē)順利繞過(guò)障礙,可以適應(yīng)十分復(fù)雜的環(huán)境,我們最終選擇了方案一。 2.6 尋跡單元方案比較與選擇 方案一: 利用尋跡來(lái)引導(dǎo)小車(chē)到達(dá)用戶(hù)所指定的地點(diǎn)

21、。采用紅外發(fā)射管和接收管光電對(duì)管尋跡傳感器。紅外發(fā)射管發(fā)出紅外線,當(dāng)發(fā)出的紅外線照射到白色的平面后反射,若紅外接收管能接收到反射回的光線則檢測(cè)出白線繼而輸出低電平,若接收不到發(fā)射管發(fā)出的光線則檢測(cè)出黑線繼而輸出高電平。此方案存在的缺陷是對(duì)光線的亮度要求較高,在夜間難以正常工作。 方案二: 通過(guò)超聲波定位模塊來(lái)實(shí)時(shí)定位小車(chē)的位置。超聲波定位的基本原理是通過(guò)接收幾個(gè)固定位置的發(fā)射點(diǎn)的超聲波接收器, 在小車(chē)上加入一個(gè)發(fā)射器,通過(guò)無(wú)線模塊計(jì)算各模塊接收到超聲波的時(shí)間差,通過(guò)集成模塊的內(nèi)部算法得出小車(chē)所在位置和原設(shè)定位置的偏差情況,從而得到主體到這幾個(gè)發(fā)射點(diǎn)的距離, 實(shí)現(xiàn)了超聲波的定位,由于超聲波在空

22、氣中的衰減較大, 它只適用于較小的范圍,而且使用此方案還將面臨著在家中的超聲波各通訊線的布局,使用很不方便。 經(jīng)實(shí)測(cè)發(fā)現(xiàn)方案一中的紅外對(duì)管型尋跡模塊只要給進(jìn)行一定的改善,對(duì)環(huán)境的適應(yīng)能力還是比較強(qiáng)的例如可以在晚上行進(jìn),這樣就可以用低成本來(lái)實(shí)現(xiàn)我們你所需要的功能,所以就排除了方案二,以方案一作為小車(chē)在家庭中的行進(jìn)方式。 3 硬件系統(tǒng)的設(shè)計(jì) 3.1 單片機(jī)控制模塊 STC89C52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌

23、入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。如圖4是較為常見(jiàn)的單片機(jī)最小系統(tǒng)圖。

24、圖4 單片機(jī)最小系統(tǒng) 3.1.1 時(shí)鐘電路 單片機(jī)的時(shí)鐘產(chǎn)生有兩種方法:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。 系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能

25、的選擇陶瓷電容,電容值通常取30PF。在焊接刷電路板時(shí),晶體振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。 3.1.2 復(fù)位電路 位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過(guò)一個(gè)觸發(fā)器與復(fù)位電路相連,觸發(fā)器用來(lái)抑制噪聲,它的輸出在每個(gè)機(jī)器周期中由復(fù)位電路采樣一次。 復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。所謂上電復(fù)位,是指計(jì)算機(jī)加電瞬間,要在RST引腳出現(xiàn)大于10MS的正脈沖,使單片機(jī)進(jìn)入復(fù)位狀態(tài)。按鈕復(fù)位是指用戶(hù)按下“復(fù)位”按鈕,使單片機(jī)進(jìn)入復(fù)位狀態(tài)。如上圖3是按鈕電平復(fù)位的一種實(shí)用電路。 3.2 電機(jī)驅(qū)動(dòng)模

26、塊的設(shè)計(jì) 電機(jī)驅(qū)動(dòng)模塊采用專(zhuān)用芯片L298N 作為電機(jī)驅(qū)動(dòng)芯片,L298N 是一個(gè)具有高電壓大電流的全橋驅(qū)動(dòng)芯片,其響應(yīng)頻率高,一片L298N可以分別控制兩個(gè)直流電機(jī)。 圖5 電機(jī)驅(qū)動(dòng)原理簡(jiǎn)圖 3.2.1 L298N芯片的介紹 L298N是ST公司生產(chǎn)的一種高電壓、大電流電機(jī)驅(qū)動(dòng)芯片。該芯片采用15腳封裝。主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可以用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)和步進(jìn)電動(dòng)機(jī)、繼電器線圈等感性負(fù)載;采用

27、標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)一臺(tái)兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動(dòng)兩臺(tái)直流電機(jī),實(shí)物圖及外圍電路如下圖6、7所示。 圖6 L298N芯片 圖7 L298N外圍電路 接口說(shuō)明如下示: +5V:芯片電壓5V。 VCC:電機(jī)電壓,最大可接50V。 GND:共地接法。 A-~D-:輸出端,接電機(jī)。 A~

28、D+ :為步進(jìn)電機(jī)公共端,模塊上接了VCC。 EN1、EN2:高電平有效,EN1、EN2分別為 IN1和IN2、IN3和IN4的使能端。 IN1~ IN4:輸入端,輸入端電平和輸出端電平是對(duì)應(yīng)的。 L298N 的5、7、10、12 四個(gè)引腳接到單片機(jī)上,通過(guò)對(duì)單片機(jī)的編程就可實(shí)現(xiàn)兩個(gè)直流電機(jī)的PWM調(diào)速控制,圖8是L298N功能邏輯圖。 圖8 L298N功能邏輯圖 L298N可接受標(biāo)準(zhǔn)TTL邏輯電平信號(hào)VSS,VSS可接4.5~7 V電壓。4腳VS接電源電壓,VS電壓范圍VIH為+2.5~46 V。輸出電流可達(dá)2.5 A,可驅(qū)

29、動(dòng)電感性負(fù)載。1腳和15腳下管的發(fā)射極分別單獨(dú)引出以便接入電流采樣電阻,形成電流傳感信號(hào)。L298可驅(qū)動(dòng)2個(gè)電動(dòng)機(jī),OUT1,OUT2和OUT3,OUT4之間可分別接電動(dòng)機(jī),本實(shí)驗(yàn)裝置我們選用驅(qū)動(dòng)一臺(tái)電動(dòng)機(jī)。5,7,10,12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn)。EnA,EnB接控制使能端,控制電機(jī)的停轉(zhuǎn)。In3,In4的邏輯圖與上圖相同。由上圖可知EnA為低電平時(shí),輸入電平對(duì)電機(jī)控制起作用,當(dāng)EnA為高電平,輸入電平為一高一低,電機(jī)正或反轉(zhuǎn)。同為低電平電機(jī)停止,同為高電平電機(jī)剎停。 3.3 紅外避障電路的原理與設(shè)計(jì) 用漫反射式光電開(kāi)關(guān)進(jìn)行避障。光電開(kāi)關(guān)實(shí)際發(fā)射頭與接收頭于一體的檢測(cè)開(kāi)關(guān),

30、其工作原理是根據(jù)發(fā)射頭發(fā)出的光束,被物體反射,接收頭據(jù)此做出判斷是否有障礙物。當(dāng)有光線反射回來(lái)時(shí),輸出低電平。當(dāng)沒(méi)有光線反射回來(lái)時(shí),輸出高電平。單片機(jī)根據(jù)接收頭電平的高低做出相應(yīng)控制,避免小車(chē)碰到障礙物。由于接收管輸出TTL電平,有利于單片機(jī)對(duì)信號(hào)的處理。小車(chē)采用漫反射式傳感器進(jìn)行避障的電路原理圖如下圖9所示: 圖9 光電開(kāi)關(guān)避障電路原理圖 3.3.1 光電傳感器簡(jiǎn)介 光電傳感器在機(jī)器人中有著廣泛的應(yīng)用,可以用來(lái)檢測(cè)地面明暗和顏色的變化,也可以探測(cè)有無(wú)接近的物體。光電傳感器是靠紅外發(fā)射管和紅外接收管組成的傳感器,對(duì)于小車(chē)循跡場(chǎng)地的黑白兩種顏色,發(fā)射管發(fā)

31、出同樣的光強(qiáng),接收管接收到的光強(qiáng)不同,因此輸出的電壓值也不同;給定一個(gè)基準(zhǔn)電壓,通過(guò)對(duì)不同輸出電壓值進(jìn)行比較,則電路的輸出為高低電平。當(dāng)檢測(cè)到黑白線時(shí)分別輸出為高低電平,這樣不僅系統(tǒng)硬件電路簡(jiǎn)單,而且信號(hào)處理速度快。原理如下圖10、圖11所示。 圖10 白色反射面下的紅外反射 圖11 黑色反射面下的紅外吸收 紅外發(fā)射管發(fā)射的紅外線具有一定得方向性,當(dāng)紅外線照射到白色表面上時(shí)會(huì)有較大的反射,如果距離D1取值合適,紅外接收管可接收到反射回的紅外線,再利用紅外接收管的電氣特性,在電路中處理紅外線的接受信息;如果反射表面為黑色,紅

32、外光會(huì)被表面將其大部分吸收,紅外接收管就難以收到紅外線。這樣,就可以利用紅外收發(fā)管組成的光電傳感器檢測(cè)賽道黑線,實(shí)現(xiàn)智能車(chē)的循跡方案。 3.3.2 比較器LM324簡(jiǎn)介 LM324為四運(yùn)放集成電路,采用14腳雙列直插塑料封裝。內(nèi)部有四個(gè)運(yùn)算放大器,有相位補(bǔ)償電路。電路功耗很小,工作電壓范圍寬,可用正電源3~30V,或正負(fù)雙電源1.5V~15V工作。 在黑線檢測(cè)電路中用來(lái)確定紅外接收信號(hào)電平的高低,以電平高低判定黑線有無(wú)。在電路中,LM324的一個(gè)輸入端需接滑動(dòng)變阻器,通過(guò)改變滑動(dòng)變阻器的阻值來(lái)提供合適的比較電壓,圖12為L(zhǎng)M324的管腳圖。 圖12 LM32

33、4的管教圖 3.4 尋跡模塊的硬件設(shè)計(jì) 紅外對(duì)管循跡模塊,五路尋跡TCR5000的模塊,采用紅外發(fā)射管和接收管光電對(duì)管尋跡傳感器。紅外發(fā)射管發(fā)出紅外線,當(dāng)發(fā)出的紅外線照射到白色的平面后反射,若紅外接收管能接收到反射回的光線則檢測(cè)出白線繼而輸出低電平,若接收不到發(fā)射管發(fā)出的光線則檢測(cè)出黑線繼而輸出高電,圖13為紅外對(duì)管黑線檢測(cè)電路。 圖13 紅外對(duì)管黑線檢測(cè)電路 3.4.1 紅外傳感器TCRT5000簡(jiǎn)介 TCRT5000光電傳感器模塊是基于TCRT5000紅外光電傳感器設(shè)計(jì)的一款紅外反射式光電開(kāi)關(guān)。傳感器采用高發(fā)射功率紅外光電二極管和高靈敏度

34、光電晶體管組成,輸出信號(hào)經(jīng)施密特電路整形,穩(wěn)定可靠。傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒(méi)有被反射回來(lái)或被反射回來(lái)但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被檢測(cè)物體出現(xiàn)在檢測(cè)范圍內(nèi)時(shí),紅外線被反射回來(lái)且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。TCRT5000反射式光電傳感器是經(jīng)常使用的傳感器,這個(gè)系列的傳感器種類(lèi)齊全、價(jià)格便宜、體積小、使用方便、質(zhì)量可靠、用途廣泛。此傳感器含一個(gè)反射模塊(發(fā)光二極管)和一個(gè)接收模塊(光敏三極管)。通過(guò)發(fā)射紅外信號(hào),看接收信號(hào)變化判斷檢測(cè)物體狀態(tài)的變化,圖

35、14為T(mén)CRT5000傳感器模塊電路原理圖,圖15為它的實(shí)物圖 。 圖14 TCRT5000傳感器模塊電路原理圖 圖15 TCRT5000的實(shí)物圖 基本參數(shù)如下: 外形尺寸:長(zhǎng) 32mm~37 mm;寬 7.5mm;厚 2mm 工作電壓:DC 3V~5.5V,推薦工作電壓為5V 檢測(cè)距離:1mm~8mm適用,焦點(diǎn)距離為2.5mm 3.5 無(wú)線模塊的硬件設(shè)計(jì) 無(wú)線模塊的硬件設(shè)計(jì)采用兩塊NRF24L01模塊實(shí)時(shí)接收遙控發(fā)送的新指令. 3.6 重力感應(yīng)模塊的硬件設(shè)計(jì) 重力感應(yīng)模塊采用MPU-605

36、0模塊(三軸陀螺儀+ 三軸加速度) MPU-6000為全球首例整合性6軸運(yùn)動(dòng)處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時(shí)之軸間差的問(wèn)題,減少了大量的包裝空間。MPU-6000整合了3軸陀螺儀、3軸加速器,并含可藉由第二個(gè)I2C端口連接其他廠牌之加速器、磁力傳感器、或其他傳感器的數(shù)位運(yùn)動(dòng)處理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以單一數(shù)據(jù)流的形式,向應(yīng)用端輸出完整的9軸融合演算技術(shù) InvenSense的運(yùn)動(dòng)處理資料庫(kù),可處理運(yùn)動(dòng)感測(cè)的復(fù)雜數(shù)據(jù),降低了運(yùn)動(dòng)處理運(yùn)算對(duì)操作系統(tǒng)的負(fù)荷,并為應(yīng)用開(kāi)發(fā)提供架構(gòu)化的API。 MPU-60

37、00的角速度全格感測(cè)范圍為250、500、1000與2000/sec (dps),可準(zhǔn)確追緃快速與慢速動(dòng)作,并且,用戶(hù)可程式控制的加速器全格感測(cè)范圍為2g、4g8g與16g。產(chǎn)品傳輸可透過(guò)最高至400kHz的I2C或最高達(dá)20MHz的SPI。 MPU-6000可在不同電壓下工作,VDD供電電壓介為2.5V5%、3.0V5%或3.3V5%,邏輯接口VVDIO供電為1.8V 5%。MPU-6000的包裝尺寸4x4x0.9mm(QFN),在業(yè)界是革命性的尺寸。其他的特征包含內(nèi)建的溫度感測(cè)器、包含在運(yùn)作環(huán)境中僅有1%變動(dòng)的振蕩器。 應(yīng)用 運(yùn)動(dòng)感測(cè)游戲 現(xiàn)實(shí)增強(qiáng) 電子穩(wěn)像 (EIS: Elec

38、tronic Image Stabilization) 光學(xué)穩(wěn)像(OIS: Optical Image Stabilization) 行人導(dǎo)航器 “零觸控”手勢(shì)用戶(hù)接口 姿勢(shì)快捷方式 認(rèn)證 市場(chǎng) 智能型手機(jī) 平板裝置設(shè)備 手持型游戲產(chǎn)品 ?蝸坊? 3D遙控器 可攜式導(dǎo)航設(shè)備 特征 以數(shù)字輸出6軸或9軸的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion)、歐拉角格式(Euler Angle forma)的融合演算數(shù)據(jù)。 具有131 LSBs//sec 敏感度與全格感測(cè)范圍為250、500、1000與2000/sec 的3軸角速度感測(cè)器(陀螺儀)。 可程式控制,且程式控制

39、范圍為2g、4g、8g和16g的3軸加速器。 移除加速器與陀螺儀軸間敏感度,降低設(shè)定給予的影響與感測(cè)器的飄移。 數(shù)字運(yùn)動(dòng)處理(DMP: Digital Motion Processing)引擎可減少?gòu)?fù)雜的融合演算數(shù)據(jù)、感測(cè)器同步化、姿勢(shì)感應(yīng)等的負(fù)荷。 運(yùn)動(dòng)處理數(shù)據(jù)庫(kù)支持Android、Linux與Windows 內(nèi)建之運(yùn)作時(shí)間偏差與磁力感測(cè)器校正演算技術(shù),免除了客戶(hù)須另外進(jìn)行校正的需求。 以數(shù)位輸出的溫度傳感器 以數(shù)位輸入的同步引腳(Sync pin)支援視頻電子影相穩(wěn)定技術(shù)與GPS 可程式控制的中斷(interrupt)支援姿勢(shì)識(shí)別、搖攝、畫(huà)面放大縮小、滾動(dòng)、快速下降中斷、hi

40、gh-G中斷、零動(dòng)作感應(yīng)、觸擊感應(yīng)、搖動(dòng)感應(yīng)功能。 VDD供電電壓為2.5V5%、3.0V5%、3.3V5%;VDDIO為1.8V 5% 陀螺儀運(yùn)作電流:5mA,陀螺儀待命電流:5μA;加速器運(yùn)作電流:350μA,加速器省電模式電流: 20μA@10Hz 高達(dá)400kHz快速模式的I2C,或最高至20MHz的SPI串行主機(jī)接口(serial host interface) 內(nèi)建頻率產(chǎn)生器在所有溫度范圍(full temperature range)僅有1%頻率變化。 使用者親自測(cè)試 10,000 g 碰撞容忍度 為可攜式產(chǎn)品量身訂作的最小最薄包裝 (4x4x0.9mm QFN)

41、 符合RoHS及環(huán)境標(biāo)準(zhǔn) 6 效果圖 6軟件設(shè)計(jì) 4.1 編譯語(yǔ)言的選取 目前,STC89C52單片機(jī)的開(kāi)發(fā)多為支持兩種語(yǔ)言,一種是匯編語(yǔ)言,另一種是C語(yǔ)言,而這兩種語(yǔ)言各有其優(yōu)缺點(diǎn)。匯編語(yǔ)言:效率高,對(duì)硬件的可操控性更強(qiáng),體積小,但不易維護(hù),可移植性很差。C語(yǔ)言:效率比較低,硬件可操控性比較差,目標(biāo)代碼體積大,但容易維護(hù),可移植性很好。 而在本設(shè)計(jì)里面,程序需要接近底層,但程序要解決的問(wèn)題繁多,邏輯關(guān)系也比較復(fù)雜,代碼量也比較大,又考慮到產(chǎn)品以后需要升級(jí),各方面綜合考慮,

42、主要以C51語(yǔ)言來(lái)編寫(xiě)本設(shè)計(jì)的程序是最佳選擇。 4.2 軟件調(diào)試平臺(tái) Keil for C51是美國(guó)Keil Software公司出品的C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil for C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。下面詳細(xì)介紹Keil for C51開(kāi)發(fā)系統(tǒng)各部分功能和使用。 C51開(kāi)發(fā)中

43、除必要的硬件外,同樣離不開(kāi)軟件,我們寫(xiě)的源程序要變?yōu)镃51可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。隨著C51開(kāi)發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開(kāi)發(fā),單片機(jī)的開(kāi)發(fā)軟件也在不斷發(fā)展,Keil軟件除了致力于單片機(jī)的編程開(kāi)發(fā)平臺(tái)外,還針對(duì)目前最流行C51開(kāi)發(fā)項(xiàng)目出品了Keil for 51軟件平臺(tái)以及支持在線調(diào)試的串口燒寫(xiě)。 從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision2)將這些部份

44、組合在一起。 4.2 小車(chē)端程序 文件一main.c #include #include #include "..\header\init.h" #include "..\header\NRF24L01.h" void R_S_Byte(uchar R_Byte) { SBUF = R_Byte; while( TI == 0 ); //查詢(xún)法 TI = 0; } /**********定時(shí)器初始化程序***************/ void T0T1_ini

45、t() { EA=1; ET1=1; ET0=1; TMOD=0x11;//定時(shí)器0負(fù)責(zé)小車(chē)速度控制 定時(shí)器1負(fù)責(zé)超聲波測(cè)距和舵機(jī)控制 TH0=(65536-500)/256; TL0=(65536-500)%256; TH1=(65536-500)/256; TL1=(65536-500)%256; TL1=0; TH1=0; TR0=1; TR1=1; } void StartModule(void)//超聲波測(cè)距子函數(shù) { TX=1; //啟動(dòng)

46、一次模塊 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

47、 TX=0; } void Conut(void)//通過(guò)超聲波測(cè)量的數(shù)據(jù)計(jì)算距離 { if(csflag==0) { time=TH1*256+TL1; TH1=0; TL1=0; S=(time*1.7)/10; //算出來(lái)是 mm // if(S>499) ; } else { csflag=0; S=600;//如果定時(shí)器溢出則距離S=600 } if(jd==3) {middleS=S; }// 測(cè)量正前方 else if(jd==2

48、) {leftS=S;}//測(cè)量左前方 else if(jd==4) {rightS=S;}//測(cè)量右前方 } /**********************接收遙控器的狀態(tài)標(biāo)志**********************/ void RX_STATE(void) { uchar RxBuf[4]; uchar SIGN=0; if(nRF24L01_RxPacket(RxBuf))//如果收到遙控器的數(shù)據(jù)則進(jìn)入 { led2=~led2; R_S_Byte(RxBuf[0]); SIGN=RxBuf[2];//判斷傾斜的

49、方向 X_SIAN=0:前方 X_SIAN=1:下方 STATE=RxBuf[3]; LED_FLAG=(SIGN&0x04)>>2;//判斷小車(chē)燈光控制位 CONTROL_MODE_FLAG=(STATE&0xf0)>>4;//讀取當(dāng)前狀態(tài)標(biāo)志 if(LED_FLAG) LED1=1; else if(LED_FLAG==0) LED1=0; } } void delay_RX(uint z)//避障模式下當(dāng)出現(xiàn)while循環(huán)時(shí)用的延時(shí)函數(shù), { uint x,y; for(x=110;x>0;x--) { for

50、(y=z;y>0;y--); RX_STATE();//掃描無(wú)線模塊接收到的新指令 } } void measured(unsigned char fs)//測(cè)距函數(shù)jd=3測(cè)量正前方j(luò)d=2測(cè)量左前方j(luò)d=4測(cè)量右前方 { TH1 = (65536-500)/256; TL1 = (65536-500)%256; //12MZ晶振,0.5ms mode=0; jd=fs; count2=0; TR1=1; delay_RX(500); TR1=0; mode=1; TH1=0; TL1=0;

51、 StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut(); } /********************避障模式子函數(shù)***********************/ void csbmode(void) { unsigned char temp; TR1=0; mode=1; TH1=0;

52、TL1=0; StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut();//測(cè)量前方距離 delay_RX(80); speed1=16;speed2=16; while(middleS>500 &&CONTROL_MODE_FLAG==3) //當(dāng)前方空間大于300mm時(shí)保持 { IN1_1=0;IN1_2=1;I

53、N2_1=0;IN2_2=1;//小車(chē)前進(jìn) TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut(); delay_RX(2); } IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0;//小車(chē)停止 speed1=0;speed

54、2=0; measured(2); measured(4); TH1 = (65536-500)/256; //舵 機(jī) 復(fù)位 TL1 = (65536-500)%256; //12MZ晶振,0.5ms mode=0; jd=3; count2=0; TR1=1; delay_RX(500); TR1=0; if(leftS<250||rightS<250) { temp=middleS; speed1=20;speed2=20; IN1_1=1;IN1_2=0;IN2_1=1;IN2_

55、2=0;//小車(chē)后退 while((middleS-temp)<200&&CONTROL_MODE_FLAG==3) { speed1=20;speed2=20; delay_RX(2); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=

56、0; //關(guān)閉計(jì)數(shù) Conut(); } speed1=20;speed2=20; if(leftS

57、TH1 = (65536-500)/256; //舵 機(jī) 復(fù)位 TL1 = (65536-500)%256; //12MZ晶振,0.5ms mode=0; jd=3; count2=0; TR1=1; delay_RX(500); TR1=0; } if(leftS

58、 { speed1=17;speed2=17; delay_RX(5); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut(); } } else { speed1=0;s

59、peed2=0; IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0; //小車(chē)左轉(zhuǎn) while(middleS<600&&CONTROL_MODE_FLAG==3) { speed1=17;speed2=17; delay_RX(5); TR1=0; mode=1; TH1=0; TL1=0; StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX);

60、 //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut(); } } } /*****************循跡模式子函數(shù)*********************/ void xunji(void) { IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1; speed1=20;speed2=20; //小車(chē)前進(jìn) while(irL2==0 && irR2==0&&CONTROL_MODE_FLAG==2) RX_STATE(); if(irL2

61、==1) { IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0; speed1=18;speed2=18; //小車(chē)右轉(zhuǎn) while(irL1==0&&CONTROL_MODE_FLAG==2) RX_STATE(); } else if(irR2==1) { IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1; speed1=18;speed2=18; //小車(chē)左轉(zhuǎn) while(irR1==0&&CONTROL_MODE_FLAG==2) RX_STATE(); } } /*********

62、*********************************/ void main(void) { uchar RxBuf[4]; // uchar bb=0; int X_ANGLE; int Y_ANGLE;// uchar X_SIGN; uchar Y_SIGN; uchar SIGN=0; bit FLAG_ANGLE=0; init_RX() ; delay(100); T0T1_init(); jd=3; count2=0; mode=0; while(1) { switch(CONT

63、ROL_MODE_FLAG) { case 0: //按鍵模式 IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小車(chē)停止 while(CONTROL_MODE_FLAG==0) { RX_STATE(); KEY_VALUE=STATE&0x0f;//讀取鍵值 switch(KEY_VALUE) { case 0x0e:IN1_1=1;IN1_2=0;IN2_1=1;IN2_2=0; speed1=20;speed2=20;

64、 break; case 0x07: IN1_1=0;IN1_2=1;IN2_1=0;IN2_2=1;speed1=20;speed2=20; break; case 0x0d: IN1_1=1;IN1_2=0;IN2_1=0;IN2_2=1;speed1=17;speed2=17; break; case 0x0b:IN1_1=0;IN1_2=1;IN2_1=1;IN2_2=0;speed1=17;speed2=17; break; default :IN1_1=0;IN1_2=0

65、;IN2_1=0;IN2_2=0;speed1=0;speed2=0; //小車(chē)停止 break; } } IN1_1=0;IN1_2=0;IN2_1=0;IN2_2=0; //小車(chē)停止 break; case 1: //重力模式 jd=3; mode=0; delay(500); while(CONTROL_MODE_FLAG==1) { TR1=0; mode=1; TH1=0; TL1=0;

66、 StartModule(); while(!RX); //當(dāng)RX為零時(shí)等待 TR1=1; //開(kāi)啟計(jì)數(shù) while(RX); //當(dāng)RX為1計(jì)數(shù)并等待 TR1=0; //關(guān)閉計(jì)數(shù) Conut(); if(nRF24L01_RxPacket(RxBuf))//如果收到遙控器的數(shù)據(jù)則進(jìn)入 { led2=~led2; R_S_Byte(RxBuf[0]); X_ANGLE=RxBuf[0];//讀取縱向的傾斜度 Y_ANGLE=RxBuf[1];//讀取橫向的傾斜度 SIGN=RxBuf[2];//判斷傾斜的方向 X_SIAN=0:前方 X_SIAN=1:下方 STATE=RxBuf[3];//判斷傾斜的方向 Y_SIAN=0:左方 X_SIAN=1:右方

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!