基于51單片機(jī)小車的循跡避障系統(tǒng).doc
畢業(yè)論文(設(shè)計(jì))題目:基于51單片機(jī)的小車循跡避障系統(tǒng) 學(xué) 院: 電氣工程學(xué)院 學(xué) 號(hào): 姓 名: 專業(yè)年級(jí): 指導(dǎo)老師: 基于51單片機(jī)的小車循跡避障系統(tǒng)專業(yè):電子信息工程 姓名: 指導(dǎo)教師: 摘 要 隨著社會(huì)的發(fā)展,智能化越來越受到人們的關(guān)注。本設(shè)計(jì)通過模擬汽車的自動(dòng)行駛及避障功能,來實(shí)現(xiàn)智能化。在此設(shè)計(jì)中,用STC89C52單片機(jī)作為主控芯片,處理接收到的各種信號(hào),并作出相應(yīng)的反饋;用紅外對(duì)管來進(jìn)行黑線檢測,從而達(dá)到循跡的目的;用超聲波傳感器來感知障礙物,實(shí)現(xiàn)避障功能;用L298N芯片來進(jìn)行驅(qū)動(dòng),通過編寫的程序,保證了電機(jī)的左右轉(zhuǎn)動(dòng),從而達(dá)到小車設(shè)計(jì)時(shí)預(yù)定的目標(biāo)。在本小車的設(shè)計(jì)中,有著嚴(yán)格的設(shè)計(jì)過程,采用了模塊結(jié)構(gòu)框圖設(shè)計(jì)、程序流程圖設(shè)計(jì)、程序設(shè)計(jì)以及電路圖設(shè)計(jì)等多個(gè)設(shè)計(jì)步驟。這樣就可以保證在設(shè)計(jì)過程中的嚴(yán)密性,不會(huì)因?yàn)閱我辉O(shè)計(jì)體系而使整個(gè)系統(tǒng)功能出現(xiàn)錯(cuò)誤。由于小車在設(shè)計(jì)過程中,采用了模塊化的設(shè)計(jì)思路,所以在進(jìn)行調(diào)試時(shí)非常方便。我們可以分別對(duì)每一個(gè)功能部分來進(jìn)行調(diào)試,驅(qū)動(dòng)部分調(diào)試時(shí),只要給電機(jī)向前或者向后的信號(hào),就可以調(diào)試出其功能。循跡部分調(diào)試時(shí),只要通過檢測到黑線,判斷是否沿黑線行駛,即可以調(diào)試出。在進(jìn)行避障調(diào)試中,我們可以把障礙物放在小車前方,然后看小車兩個(gè)輪子的轉(zhuǎn)向。這種模塊化的設(shè)計(jì)思想不僅簡化了設(shè)計(jì)過程,而且對(duì)我們以后的設(shè)計(jì)也會(huì)有一定啟發(fā)。 關(guān)鍵詞 智能化,單片機(jī),紅外對(duì)管,超聲波傳感器ABSTRACT Along with the development of society, more and more intelligent attention. This design by simulating a car driving and automatic obstacle avoidance, to achieve intelligent. In this design, with STC89C52 SCM as the master chip, processing various signals received, and make corresponding feedback; using Infrared to tube to detect the black line, so as to achieve the purpose of tracking; using ultrasonic sensors to perceive obstacles thing to realize obstacle avoidance function; using L298N chip to be driven by written procedures to ensure that the motor is rotating around to achieve the desired goal when designing the car. In car design, a rigorous design process, using a block diagram of the module design, program flowchart design, programming and multiple design steps Schematic design. This ensures that the design process rigor, the error does not occur because of a single design system and make the entire system functions. As the car in the design process, using a modular design concept, so very convenient during debugging. We were part of each function for debugging, debugging driving part, as long as the motor forward or backward signal, you can debug the functionality. When debugging tracking part, simply by detecting the black line, to determine whether the black line running along, that you can debug a. Avoidance during commissioning, we can put an obstacle in front of the car, and then look at the car two steering wheels. This modular design not only simplifies the design, but also for our future designs also have some inspiration.Key Words : Intelligent,SCM,Infrared to tube,Ultrasonic sensors目 錄第1章 緒論11.1 智能小車的研究意義11.2 智能小車的現(xiàn)狀11.3 論文研究內(nèi)容與主要結(jié)構(gòu)2第2章 方案選型32.1車體設(shè)計(jì)32.2 電機(jī)驅(qū)動(dòng)選擇32.3 PWM調(diào)速技術(shù)42.4 循跡模塊技術(shù)52.5 避障模塊技術(shù)72.6 控制系統(tǒng)模塊82.7 電源選擇9第3章 硬件電路設(shè)計(jì)103.1總體設(shè)計(jì)103.2電源電路設(shè)計(jì)103.3驅(qū)動(dòng)電路設(shè)計(jì)113.4 循跡部分電路133.5 避障部分電路143.4主控電路設(shè)計(jì)16第4章 程序設(shè)計(jì)174.1主程序設(shè)計(jì)概述174.2主程序流程圖174.3 驅(qū)動(dòng)程序流程圖184.4 循跡程序流程圖184.5 避障程序流程圖19第5章 制作安裝與調(diào)試205.1 小車的安裝205.2小車運(yùn)動(dòng)模式調(diào)試205.3小車循跡調(diào)試215.4小車避障調(diào)試235.3小車的功能24結(jié) 論25參考文獻(xiàn)26致 謝27第1章 緒論1.1 智能小車的研究意義隨著社會(huì)的發(fā)展,科技的發(fā)展日新月異。于是,智能一詞越來越受到人們的關(guān)注。而科技代替人工的說法,早已被提上人們的日常生活了。目前,由于私家車的普及,伴隨著的就是各種車禍的產(chǎn)生。如何避免此類情況,是人們需要深思的一個(gè)問題。在我所研究的自動(dòng)循跡避障系統(tǒng)中,我們可以利用小車來模擬汽車自動(dòng)避障功能,來避免現(xiàn)實(shí)中汽車因與障礙物碰撞而產(chǎn)生的車禍。因此,自動(dòng)循跡避障小車對(duì)于在進(jìn)行自動(dòng)避障的時(shí)候,有著非常重要的現(xiàn)實(shí)意義。1.2 智能小車的現(xiàn)狀2013年年底,工業(yè)和信息化部頒布關(guān)于推進(jìn)工業(yè)機(jī)器人產(chǎn)業(yè)發(fā)展的指導(dǎo)意見,將機(jī)器人產(chǎn)業(yè)推到了公眾的視線內(nèi)。隨著全球工業(yè)化進(jìn)程的推進(jìn),機(jī)器人制造業(yè)正逐漸獲得長足發(fā)展。智能小車作為移動(dòng)機(jī)器人的基礎(chǔ),在智能全球化的浪潮中,受到越來越大的沖擊,更多的高新技術(shù)和硬件設(shè)備被應(yīng)用其中,使智能小車走出了只能用于比賽的模式,而更加廣泛的服務(wù)于大眾。從20世紀(jì)80年代起,由于計(jì)算機(jī)、電子、通信等方面的技術(shù)飛速發(fā)展,使得越來越多的技術(shù)從理論走向?qū)嶋H。于是,在國外掀起了智能機(jī)器人研究浪潮,世界各國或者國際機(jī)構(gòu)都加大了對(duì)機(jī)器人的研究力度,并投入了巨大的經(jīng)費(fèi)。其中,各種具有廣闊應(yīng)用前景和軍事價(jià)值的移動(dòng)式機(jī)器人都受到西方各國的普遍關(guān)注。韓國科學(xué)技術(shù)部在20世紀(jì)末推出的“二十一世紀(jì)的尖端研究計(jì)劃”,其中包括服務(wù)機(jī)器人,可適應(yīng)惡劣環(huán)境機(jī)器人,微型機(jī)器人和掃雷機(jī)器人項(xiàng)目。歐盟在信息社會(huì)技術(shù)計(jì)劃中,展開了探測火山情況的機(jī)器人、可以用來評(píng)價(jià)地震災(zāi)害危險(xiǎn)性的攀爬式機(jī)器人,以及利用機(jī)器人的交互式行為的博物館臨場感等項(xiàng)目研究。2013年Irobot公司新推出一款機(jī)器人名叫braava,它可以模仿人工跪地姿勢,利用室內(nèi)GPS導(dǎo)航系統(tǒng)先進(jìn)的北極星技術(shù)生成室地圖,確定方向,以及標(biāo)記障礙物和記憶經(jīng)歷過的地區(qū)。自2012以來,在政策層面上,國家大力支持發(fā)展工業(yè)機(jī)器人,用來提高我國的工業(yè)實(shí)力。從其中可以看出,由于國家層面的各種規(guī)劃和制度的出臺(tái),讓我國機(jī)器人的發(fā)展得到更進(jìn)一步的提升。并且提出要大力推動(dòng)工業(yè)的自動(dòng)化控制系統(tǒng)完善,工業(yè)機(jī)器人技術(shù)的研發(fā),關(guān)鍵材料和配件等裝置的研發(fā)和市場化,這對(duì)于中國國產(chǎn)機(jī)器人在將來的發(fā)展與應(yīng)用有著明顯的積極作用。2005年11月,我國教育部自動(dòng)化專業(yè)指導(dǎo)分委員會(huì)與飛思卡爾半導(dǎo)體公司簽署了雙方長期合作協(xié)議書,協(xié)助我國舉辦“飛思卡爾”智能小車大賽。于是,我國智能小車比賽才開始發(fā)展。而且,在我國自主舉辦的全國大學(xué)生電子設(shè)計(jì)大賽中,智能小車出現(xiàn)的頻率也居高不下。 1.3 論文研究內(nèi)容與主要結(jié)構(gòu)論文主要研究的內(nèi)容就是小車的循跡與避障,因?yàn)樵趯?shí)現(xiàn)整個(gè)系統(tǒng)時(shí),如何確保小車按照所設(shè)定的路線行進(jìn),是至關(guān)重要的。在進(jìn)行避障循跡小車研究時(shí),我們首先要確保電路圖的設(shè)計(jì)合理。這樣的話,在后面進(jìn)行的硬件調(diào)試時(shí),才可以避免因?yàn)殡娐吩淼腻e(cuò)誤,而使得設(shè)計(jì)達(dá)不到預(yù)定要求。論文主要由九部分組成,第一部分:主要介紹選題的目的意義,以及選題目前在國內(nèi)外的發(fā)展現(xiàn)狀。這樣我們在進(jìn)行課題設(shè)計(jì)的時(shí)候,有很大的參考意義;第二部分:主要是在論證小車設(shè)計(jì)方案的優(yōu)劣,并根據(jù)實(shí)際情況,例如實(shí)現(xiàn)難易程度、生產(chǎn)成本以及后續(xù)的維護(hù)是否方便來進(jìn)行篩選,得出最后本小車的設(shè)計(jì)方案;第三部分:小車的系統(tǒng)硬件電路設(shè)計(jì),我們在實(shí)現(xiàn)小車功能時(shí),必須通過構(gòu)建硬件電路;第四部分:系統(tǒng)軟件設(shè)計(jì),這是一個(gè)很重要的部分,因?yàn)橹挥型ㄟ^系統(tǒng)軟件的控制,小車才可以按照設(shè)定功能進(jìn)行一系列動(dòng)作,比如循跡以及避障;第五部分:小車的測試,這是對(duì)小車設(shè)計(jì)完成后,其功能是否達(dá)到最初的設(shè)計(jì)規(guī)劃,是設(shè)計(jì)工作是否準(zhǔn)確完成的一個(gè)很重要的指標(biāo);第六部分:總結(jié),是對(duì)整個(gè)小車設(shè)計(jì)過程中所遇到的一些問題,所付出的努力,還有最后的結(jié)果進(jìn)行一個(gè)大致總結(jié);第七部分:致謝,對(duì)于這幾個(gè)月中,老師以及領(lǐng)導(dǎo)在對(duì)本次論文設(shè)計(jì)編寫過程中所給予的幫助;第八部分:參考文獻(xiàn):在小車設(shè)計(jì)及論文編寫過程中,所參考的一系列的資料,進(jìn)行一個(gè)歸納整理;第九部分:附錄,最要用來展示小車的整體硬件電路情況以及小車的系統(tǒng)程序,這樣便于閱讀。 第2章 方案選型2.1車體設(shè)計(jì)在本次設(shè)計(jì)中,所采用的是兩輪驅(qū)動(dòng)的車體。顧名思義,指的是用兩個(gè)電機(jī)來驅(qū)動(dòng)小車的兩個(gè)輪子,能夠使得動(dòng)力分布的更均勻,可以減少車體滑動(dòng)。相對(duì)于四輪驅(qū)動(dòng)的安全性、靈活性來說,兩輪驅(qū)動(dòng)也比較高??梢园凑招旭偮访鏍顟B(tài)的不同而將發(fā)動(dòng)機(jī)輸出扭矩分別分布在兩個(gè)輪子上,提高小車的行駛能力。而且,兩輪驅(qū)動(dòng)在車體結(jié)構(gòu)及元器件分布上,也相較于四輪來說更加密集。兩輪驅(qū)動(dòng)在控制上,相對(duì)于四輪驅(qū)動(dòng)也比較容易,在設(shè)計(jì)時(shí)更加便于實(shí)現(xiàn)。2.2 電機(jī)驅(qū)動(dòng)選擇 小車要向前行駛,必須要有動(dòng)力來驅(qū)動(dòng)輪子,因?yàn)槲覀冊诳刂菩≤嚨男羞M(jìn)時(shí),并不是每個(gè)輪子的轉(zhuǎn)向轉(zhuǎn)速都一樣。在轉(zhuǎn)彎的時(shí)候,就必須區(qū)別每個(gè)輪子的轉(zhuǎn)速快慢和轉(zhuǎn)向,所以就必須用到電機(jī)驅(qū)動(dòng)模塊來對(duì)小車進(jìn)行驅(qū)動(dòng)。直流電機(jī)在驅(qū)動(dòng)時(shí),只需要合適的直流電壓就可以進(jìn)行驅(qū)動(dòng)。而且,直流電機(jī)可以承受反復(fù)沖擊,對(duì)于小車在急速轉(zhuǎn)彎或者反復(fù)前后轉(zhuǎn)動(dòng)時(shí),有很好的容納性。在調(diào)速特性方面,直流電機(jī)可以很方便的進(jìn)行調(diào)速,且調(diào)速范圍廣。在控制時(shí)只要加上合適的電壓就會(huì)轉(zhuǎn),我們并不需要精確的計(jì)算其所轉(zhuǎn)的圈數(shù)。步進(jìn)電機(jī)則是靠脈沖信號(hào)來進(jìn)行驅(qū)動(dòng),對(duì)于脈沖信號(hào)來說,我們不能直接使用直流電壓產(chǎn)生,必須借助于單片機(jī)的I/O來產(chǎn)生,這樣的話在進(jìn)行設(shè)計(jì)時(shí),就會(huì)增加I/O的使用數(shù)量,使得設(shè)計(jì)難度增加。我們在電機(jī)選擇時(shí),可以選用直流電機(jī)。因?yàn)橥ㄟ^對(duì)兩種電機(jī)的綜合性能比較,直流電機(jī)在控制是更加方便,而步進(jìn)電機(jī)在控制時(shí),相較于直流電機(jī)來說,比較困難一點(diǎn),因此我們不采用步進(jìn)電機(jī),選擇更加簡單的直流電機(jī)。電機(jī)的驅(qū)動(dòng)電路為“H橋式驅(qū)動(dòng)電路”(如圖1所示),整個(gè)電路是由四個(gè)晶體管和一個(gè)電機(jī)組成。在電路中,四個(gè)晶體管分別表示H的四個(gè)角,分別接上“+”、“-”電壓,這樣通過四個(gè)腳的電壓輸入,就可以驅(qū)動(dòng)電機(jī)。而電機(jī)在H型電路中,是表示中間的橫杠。在實(shí)際使用的時(shí)候,如果我們用單獨(dú)的元器件來實(shí)現(xiàn)H橋式電路的話,是比較困難的。因此,我們可以采用市面上的已有封裝的芯片。這樣的話,我們只要在進(jìn)行電路設(shè)計(jì)時(shí),考慮芯片的工作電壓范圍,功率以及所需的控制信號(hào)即可,就不用再通過自己來一個(gè)一個(gè)搭建電路。 圖1 H橋式驅(qū)動(dòng)電路 2.3 PWM調(diào)速技術(shù) 由于小車在進(jìn)行自動(dòng)循跡和避障時(shí),兩個(gè)驅(qū)動(dòng)輪的速度并不是一樣的,這個(gè)時(shí)候我們要對(duì)小車各個(gè)輪子速度控制,就必須使用到一種調(diào)速技術(shù),即為脈沖寬帶調(diào)制技術(shù)(PWM),簡稱為脈寬調(diào)制。PWM調(diào)速主要是利用微處理器來控制,它可以使模擬電路中的信號(hào)進(jìn)行數(shù)字化輸出,從而可以對(duì)電路進(jìn)行有效的控制。而且,PWM技術(shù)在使用單片機(jī)等控制芯片的系統(tǒng)中,可以讓控制方面變得更加簡潔、高效。 PWM技術(shù)的實(shí)現(xiàn)主要有兩種方法,一種是硬件調(diào)制法,另外一種就是軟件生成法。硬件生成法(如圖2所示)是把所希望得到的波形作為調(diào)制信號(hào),我們可以根據(jù)需要的波形來進(jìn)行改變參數(shù)選擇。被調(diào)制信號(hào)作為載波信號(hào),通過對(duì)載波信號(hào)的幅頻、相頻等進(jìn)行調(diào)節(jié),可以得到所需要的PWM信號(hào)波形。由于三角在實(shí)現(xiàn)時(shí)比較容易,而且其各種參數(shù)的調(diào)制也方便,因此我們一般將其作為載波信號(hào)。由于各種復(fù)雜的信號(hào)都可以認(rèn)為是許多不同的正弦信號(hào)疊加而成,我們可以把正弦波作為調(diào)制信號(hào),這樣我們得到的信號(hào)波形就是PWM信號(hào)。軟件生成方法是利用計(jì)算機(jī)軟件技術(shù)來實(shí)現(xiàn)產(chǎn)生PWM波的調(diào)制,這種技術(shù)產(chǎn)生信號(hào)更加容易。而且在進(jìn)行PWM波形變換時(shí),只要在軟件程序里進(jìn)行簡單的修改,即可以進(jìn)行實(shí)現(xiàn)。由于硬件調(diào)制法電路是屬于模擬電路,其結(jié)構(gòu)比較復(fù)雜,而且在實(shí)現(xiàn)電路設(shè)計(jì)和搭建時(shí),相比較起來不方便,難以實(shí)現(xiàn)精確的控制。而軟件生成法就比較簡單,只要在控制程序里加上PWM調(diào)制就可以。因此,我采用軟件生成法來實(shí)現(xiàn)PWM波形。圖2 PWM硬件電路2.4 循跡模塊技術(shù)在小車進(jìn)行循跡時(shí),我們要考慮小車對(duì)循跡黑線檢測的靈敏性。CCD圖像傳感器在實(shí)現(xiàn)的時(shí)候,有比較好的靈敏性,而且可以進(jìn)行路徑成像。其通過將光信號(hào)轉(zhuǎn)變?yōu)槟M信號(hào),在經(jīng)過信號(hào)放大和A/D轉(zhuǎn)換,可以產(chǎn)生便于單片機(jī)識(shí)別的數(shù)字信號(hào)。紅外對(duì)管則是由于紅外線接收二極管在光線下照明,通過調(diào)用產(chǎn)生的光電流。如果連接到外部電路上的負(fù)載,所需的電信號(hào)通過負(fù)載獲得,并且這個(gè)電信號(hào)會(huì)隨光的改變而發(fā)生相應(yīng)的變化。這種獲得的信號(hào)相對(duì)比較模糊,而且受光強(qiáng)度影響較大。在本次設(shè)計(jì)中,由于我們只要考慮小車對(duì)黑線的檢測,并不需要有實(shí)際的成像效果,加上CCD圖像傳感器價(jià)格昂貴?;趯?shí)用、成本等綜合因素,我考慮使用紅外對(duì)管進(jìn)行循跡。小車上使用了五對(duì)紅外對(duì)管(如圖3所示),這樣可以很準(zhǔn)確地檢測出黑線位置,并循跡行走。圖3 紅外對(duì)管實(shí)物紅外對(duì)管是將光信號(hào)轉(zhuǎn)換為電信號(hào)(如圖4所示)的光敏器件或者光電變換裝置??梢姽庑畔⒃础⒓t外光信息源、紫外光信息源等都直接或者間接地輻射出一定功率的光能,包括含有一定信息量的光能量由紅外對(duì)管接收后,紅外對(duì)管能夠按一定的規(guī)律將光能中所包括的模擬或者數(shù)字信息轉(zhuǎn)化成相應(yīng)的電信號(hào),從而可以以電信號(hào)的形式還原出光能中所攜帶的信息。 圖4 紅外光電傳感器工作原理2.5 避障模塊技術(shù) 小車進(jìn)行避障時(shí),我們需要提前探知其前方是否存在障礙物,這樣就可以在行進(jìn)過程中,自動(dòng)選擇遠(yuǎn)離障礙物的路線。在避障模塊的選擇時(shí),有兩種選擇,一種是使用紅外避障,還有一種是超聲波避障。紅外避障是通過發(fā)射和接收光信號(hào),在通過一系列的轉(zhuǎn)換變?yōu)閿?shù)字信號(hào),來判斷前方障礙物。這種方式容易受到其他光的干擾,使得檢測結(jié)果不準(zhǔn)確。而且由于其光束比較集中,在探測時(shí)其探測的區(qū)間較小,可能會(huì)造成避障不成功。超聲波避障則是利用聲波信號(hào)遇到障礙物返回,測量其間隔時(shí)間來進(jìn)行避障的。超聲波的測量范圍很廣,可以測量方向、距離等。測量距離可以采用主動(dòng)測距法和被動(dòng)測距法:被動(dòng)測距法是傳感器只有接受信號(hào)的功能,包括方位法和視差法;主動(dòng)測距法是傳感器既發(fā)射信號(hào)又接收信號(hào),包括TOF法、脈沖回波法、FM-CW法等。聲波在傳遞過程中,是發(fā)散形式的,可以大角度的檢測,這樣就可以保證不會(huì)存在死角。而且聲波的使用也比較廣泛,像雷達(dá)探測,金屬探傷等。本小車采用了HC-SR04超聲波避障模塊(如圖5所示),在其性能方面,有比較好的探測距離和角度。采用I/O口TRIG觸發(fā)測距,利用接收到信號(hào)后的電平差,來進(jìn)行信號(hào)控制,從而選擇驅(qū)動(dòng)小車兩個(gè)輪子來進(jìn)行避障。模塊由5V電壓供電,接入端為VCC口,TRIG為觸發(fā)控制信號(hào)輸入口,回響信號(hào)則由端口ECHO進(jìn)行輸出。 圖5 HC-SR04超聲波模塊圖6 超聲波脈沖響應(yīng)時(shí)序圖表1 HC-SR電氣參數(shù) 電氣參數(shù)HC-SR04超聲波模塊工作電壓DC 5V工作電流15mA工作頻率40Hz最遠(yuǎn)射程4m最近射程2cm測量角度15度輸入觸發(fā)信號(hào)10uS的TTL脈沖輸出回響信號(hào)輸出TTL電平信號(hào),與射程成比例規(guī)格尺寸45*20*15mm2.6 控制系統(tǒng)模塊 在本小車設(shè)計(jì)的控制系統(tǒng)中,我們采用STC公司生產(chǎn)的一款單片機(jī)STC89C52。由于在小車的整個(gè)運(yùn)行過程中,其需要處理的數(shù)據(jù)比較多,在驅(qū)動(dòng)電機(jī)時(shí),就需要通過單片機(jī)的I/O口來輸出控制信號(hào),使得小車實(shí)現(xiàn)前進(jìn)、后退以及轉(zhuǎn)彎等功能。在小車運(yùn)動(dòng)過程中,還需要接收很多的控制信號(hào),像循跡信號(hào)、超聲波信號(hào)等。這樣就可以實(shí)現(xiàn)小車的速度控制、循跡行駛以及躲避障礙物等功能。STC89C52單片機(jī)(如圖7所示)有40個(gè)I/O口,其中P0、P1、P2、P3為并行I/O口。芯片時(shí)鐘的產(chǎn)生有兩種,內(nèi)部時(shí)鐘和外部時(shí)鐘,而內(nèi)部時(shí)鐘就是通過單片機(jī)引腳XTAL1和XTAL2外界晶振得到的。還有多個(gè)中斷源及優(yōu)先級(jí)等,可以對(duì)程序執(zhí)行功能的優(yōu)先進(jìn)行區(qū)分,通過中斷來進(jìn)行高優(yōu)先級(jí)的指令。52單片機(jī)是8位單片機(jī),擁有8K字節(jié)Flash,512字節(jié)RAM,內(nèi)置4KB EEPROM,以及復(fù)位電路等。在單片機(jī)的4個(gè)并行I/O口中,P0與P3、P1與P2擁有相似的功能,除了P1口是單功能口外,其余都為雙功能口。 圖7 51單片機(jī)引腳圖2.7 電源選擇在小車電源選擇時(shí),我們需要特別注意,因?yàn)橄到y(tǒng)單片機(jī)的額定工作電壓為5V。對(duì)于電機(jī)來說,用5V驅(qū)動(dòng)又不能讓小車行駛,而過高的電壓可能會(huì)使系統(tǒng)芯片燒壞。因此,我們需要通過計(jì)算得到小車的可允許電壓電流范圍,一般采用9V12V為好,本小車采用9V供電。這樣既可以保證電機(jī)驅(qū)動(dòng)所需電壓,又不會(huì)因?yàn)殡妷哼^大而造成元器件的燒壞。第3章 硬件電路設(shè)計(jì)3.1總體設(shè)計(jì) 圖8 小車總體框架圖 小車的整體系統(tǒng)(如圖8所示)是以51單片機(jī)為CPU,通過紅外對(duì)管來進(jìn)行黑線檢測循跡行走,通過超聲波探測器進(jìn)行障礙物感知,進(jìn)行避障功能實(shí)現(xiàn),通過驅(qū)動(dòng)模塊來實(shí)現(xiàn)電機(jī)的驅(qū)動(dòng),從而達(dá)到小車的運(yùn)動(dòng)。 系統(tǒng)電路圖見附錄1:3.2電源電路設(shè)計(jì) 在小車的電源系統(tǒng),采用9V直流供電,為了防止在誤操作時(shí)接入過高的電流使整個(gè)電路燒毀,一般會(huì)在電路中接入防擊穿電容。圖9 小車電源電路3.3驅(qū)動(dòng)電路設(shè)計(jì)圖10 驅(qū)動(dòng)電路框架圖 在驅(qū)動(dòng)電路部分設(shè)計(jì)時(shí),我們要考慮的是驅(qū)動(dòng)芯片的選擇,一般是在L298N和L293D這兩款芯片中選擇。對(duì)于L298N芯片,是使用的15腳直插式封裝模式,具有四通道驅(qū)動(dòng)邏輯電路,可以很方便的驅(qū)動(dòng)兩個(gè)電機(jī)。而且它的工作電壓以及單通道輸出電流都比較高,一般可達(dá)到46V和2A。L293D在功能上和L298N基本一樣,但是它的工作電壓和通道電流都相比于L298N要小,其采用的是直插式16腳SOIC-20封裝模式。所以,在應(yīng)用時(shí),一般使用L298N而不采用L293D,從經(jīng)濟(jì)方面來考慮,L298N也更具有優(yōu)勢。L298N輸出電壓的方式有兩種,一種是直接通過電源的調(diào)節(jié)來進(jìn)行電壓輸出;另一種就是直接使用單片機(jī)上的輸入輸出口提供電壓信號(hào)。 圖11 L298N引腳圖 小車采用兩輪驅(qū)動(dòng),使用L298N芯片組成的電路來驅(qū)動(dòng)電機(jī),驅(qū)動(dòng)電路中,采用7805穩(wěn)壓芯片進(jìn)行穩(wěn)壓。由于電機(jī)驅(qū)動(dòng)所需要的電壓很大,因此使用9V電壓直接通過驅(qū)動(dòng)芯片供電。通過八個(gè)LED燈來分別顯示每個(gè)車輪的轉(zhuǎn)動(dòng)方向。圖12 電機(jī)驅(qū)動(dòng)電路該驅(qū)動(dòng)芯片可驅(qū)動(dòng)2 路直流電機(jī),使能端ENA、ENB 為高電平時(shí)有效,控制方式及直流電機(jī)狀態(tài)表如下所示。如果PWM直流電機(jī)的速度控制,需要設(shè)置IN1和IN2,確定電機(jī)的旋轉(zhuǎn)方向,并使輸出PWM脈沖,可以實(shí)現(xiàn)轉(zhuǎn)速控制。請(qǐng)注意,當(dāng)使能信號(hào)是0,電動(dòng)機(jī)自由停止?fàn)顟B(tài);若使能ENA信號(hào)為1,并且IN1 和IN2 都為00 或11 時(shí),電機(jī)處于制動(dòng)狀態(tài)。表2 L298N驅(qū)動(dòng)狀態(tài)表ENAIN1IN2直流電機(jī)狀態(tài)0XX停止100制動(dòng)101正轉(zhuǎn)110反轉(zhuǎn)111制動(dòng) 7805(如圖13所示)作為穩(wěn)壓芯片,在我們?nèi)粘J褂弥?,是使用最廣泛的。并且使用起來很簡單、很方便,只要簡單的接入電路中,給它一個(gè)穩(wěn)定的直流電壓源即可。 7805一共有三個(gè)引腳,引腳1是INPUT即為整流器輸入電壓,引腳2為GND,公共接地端,引腳3是OUTPUT輸出穩(wěn)壓后的5V電壓. 圖13 LM7805引腳圖3.4 循跡部分電路圖14 循跡模塊框架 在進(jìn)行小車循跡電路設(shè)計(jì)時(shí),我們要考慮到當(dāng)紅外對(duì)管檢測到黑線以后,如何進(jìn)行下一步操作。首先將紅外對(duì)管接收的光信號(hào)轉(zhuǎn)化為電流信號(hào),再將模擬電流信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)。在這里我們就可以使用電壓比較器,進(jìn)行電壓比較,來確定檢測到的黑線在哪一邊,再通過控制電機(jī)的轉(zhuǎn)動(dòng)來驅(qū)動(dòng)小車循著黑線行駛。一般常用的電壓比較器芯片為LM339和LM393,其中LM339為四電壓比較器,而LM393為雙電壓比較器。由于我們采用五個(gè)紅外對(duì)管進(jìn)行黑線檢測,所以使用了一個(gè)LM339和一個(gè)LM393。圖15 循跡模塊電路3.5 避障部分電路圖16 超聲波模塊框架圖 在小車避障時(shí),我們選用超聲波避障模塊,主要是因?yàn)槠湓谶M(jìn)行檢測時(shí),受到外界干擾較少,檢測距離相對(duì)較遠(yuǎn),可以多角度多范圍的進(jìn)行檢測,這樣可以減少避障失敗的可能。超聲波電路主要由一個(gè)聲波發(fā)射口,一個(gè)聲波接收口以及MAX232和EM78P153組成。其中MAX232該產(chǎn)品是一款兼容RS232標(biāo)準(zhǔn)的芯片,EM78P153是采用高速CMOS工藝制造的8位單片機(jī)芯片。通過揚(yáng)聲器T發(fā)出的超聲波,如果遇到障礙物返回后,被傳感器接收到。通過各級(jí)三極管放大電路,將所得信號(hào)放大。放大信號(hào)被傳送到EM89P153單片機(jī),通過處理,得到所需要的數(shù)字信號(hào)。然后再通過通信接口芯片MAX232,與STC89C52單片機(jī)通信,將信號(hào)傳到52單片機(jī)。最后通過52單片機(jī)的處理,得到小車避障所需的控制信息。圖17 超聲波檢測電路MAX232為16腳直插式封裝芯片,其主要的作用是來進(jìn)行電平轉(zhuǎn)換。其內(nèi)部主要結(jié)構(gòu)可分為三部分:由端口16以及四個(gè)電容構(gòu)成的電荷泵電路,由引腳7-14組成的數(shù)據(jù)轉(zhuǎn)換通道電路以及供電電路,一般可以產(chǎn)生-12V和+12V兩種電壓。EM89P153單片機(jī)芯片,其內(nèi)部有512*13位一次性的ROM,程序代碼可以通過EM下載到EM89P153芯片中。工作電壓范圍為2.0V-6.0V;片內(nèi)有4MHz校準(zhǔn)RC振蕩器;振蕩器起振時(shí)間預(yù)分頻系數(shù)可編程;片內(nèi)可按位編程;兩個(gè)雙向I/O口;5級(jí)堆棧;3個(gè)中斷源,外部中斷,輸出引腳狀態(tài)變化中斷,TCC溢出中斷;8位實(shí)時(shí)定時(shí)/計(jì)數(shù)器(TCC);每個(gè)指令周期為兩個(gè)時(shí)鐘周期。3.4主控電路設(shè)計(jì)小車的主控電路是以52單片機(jī)作為控制芯片,結(jié)合復(fù)位電路、晶振電路來控制整個(gè)系統(tǒng)的運(yùn)行。在電路中,我們一般使用的晶振位12MHz,這樣的話,單片機(jī)的每一個(gè)機(jī)器周期為1uS,這樣在利用單片機(jī)時(shí)鐘進(jìn)行計(jì)時(shí)時(shí),比較方便。 圖18 最小單片機(jī)系統(tǒng)第4章 程序設(shè)計(jì)4.1主程序設(shè)計(jì)概述在小車整體設(shè)計(jì)過程中,不僅有著大量的硬件電路設(shè)計(jì),更多的是對(duì)于系統(tǒng)軟件的分析設(shè)計(jì)。因?yàn)樵谟布娐反罱ㄍ暌院?,只有通過軟件程序的控制,才可以讓小車按照設(shè)想的運(yùn)行路徑進(jìn)行行駛,達(dá)到所需要的功能。由于小車整體功能比較多,如果在最開始程序設(shè)計(jì)時(shí)就進(jìn)行整體設(shè)計(jì)的話,無疑會(huì)對(duì)整個(gè)設(shè)計(jì)工作帶來困難,而且在設(shè)計(jì)完成后進(jìn)行運(yùn)行調(diào)試時(shí),也會(huì)造成困難。因此,我在設(shè)計(jì)程序時(shí),采用了模塊化設(shè)計(jì),即先對(duì)每一個(gè)部分子功能模塊進(jìn)行設(shè)計(jì),在驗(yàn)證各個(gè)功能程序的完整性以及正確性以后,再把各個(gè)子程序組合成一個(gè)完整的程序。4.2主程序流程圖 圖19 系統(tǒng)程序流程圖4.3 驅(qū)動(dòng)程序流程圖圖20 驅(qū)動(dòng)程序流程圖4.4 循跡程序流程圖圖21 循跡程序流程圖4.5 避障程序流程圖 圖22 避障程序流程圖第5章 制作安裝與調(diào)試5.1 小車的安裝在小車各個(gè)部分的電路焊接完成后,我們就開始對(duì)小車進(jìn)行整體組裝。利用購買的高強(qiáng)度塑料制成的模型作為小車的車體,然后分別將各模塊按照功能安裝固定好。紅外循跡模塊固定在車體底部,因?yàn)槠渥饔檬莵頇z測地面黑線存在,而且其工作距離也有一定限制,所以不能放在離地面太高的地方。超聲波探測模塊則應(yīng)該置于小車正前方,其目的主要是用來發(fā)現(xiàn)前方障礙物,其安裝高度要合適。對(duì)于驅(qū)動(dòng)模塊和最小單片機(jī)系統(tǒng),安裝在小車正中間,因?yàn)槠湟c各模塊之間進(jìn)行連接。供電電源則放在小車車尾,這樣有利于小車整體重量的均勻分布,也可以在進(jìn)行充電時(shí),更加方便拆裝。5.2小車運(yùn)動(dòng)模式調(diào)試 對(duì)小車的左右轉(zhuǎn)彎進(jìn)行調(diào)試時(shí),可以在程序里給定每個(gè)電機(jī)引腳信號(hào),看小車的轉(zhuǎn)動(dòng)是否滿足所設(shè)定的方向。通過調(diào)試可知,小車的運(yùn)動(dòng)方向與初始設(shè)置相同,能夠?qū)崿F(xiàn)。圖23 小車驅(qū)動(dòng)調(diào)試圖為了便于明確知道小車電機(jī)轉(zhuǎn)向的控制信號(hào),表3給出了每個(gè)I/O的控制信號(hào),通過對(duì)其進(jìn)行不同的改變,可以選擇在不同情況下電機(jī)的各種運(yùn)動(dòng)狀態(tài),從而得到小車行駛的數(shù)據(jù)。表3 運(yùn)動(dòng)調(diào)試結(jié)果I/O口P0.0P0.1P0.2P0.3結(jié)果輸入電平1010直線前進(jìn)1001右轉(zhuǎn)彎0110左轉(zhuǎn)彎0101后退1111停止 5.3小車循跡調(diào)試小車的循跡是通過五路紅外對(duì)管實(shí)現(xiàn),當(dāng)左側(cè)檢測到有黑線時(shí),左側(cè)LED指示燈會(huì)亮(圖24),當(dāng)右側(cè)指示燈亮?xí)r,那么小車檢測到的黑線在右側(cè)(圖25),如果當(dāng)小車在黑線中間是中間指示燈會(huì)亮(圖26),這時(shí)候,小車就會(huì)循著黑線一直行進(jìn)。圖24 左側(cè)檢測黑線圖25 右側(cè)檢測黑線圖26 中間檢測黑線在進(jìn)行循跡測試時(shí),黑線的寬度對(duì)我們循跡成功也有一定的影響,因此,我還進(jìn)行了黑線寬度的測試,其結(jié)果如表4:表4 黑線寬度調(diào)試循跡次數(shù)黑線寬度123450.5cm失敗失敗成功失敗失敗1cm成功失敗成功成功成功1.5cm成功成功成功成功成功2cm成功成功成功成功成功5.4小車避障調(diào)試 在進(jìn)行小車避障調(diào)試時(shí),當(dāng)把障礙物放置在小車的行駛路線上時(shí),如果被檢測到,那么小車會(huì)在安全距離內(nèi)旋轉(zhuǎn)180度進(jìn)行避障處理。圖27 小車避障調(diào)試在進(jìn)行避障功能測試時(shí),還需要對(duì)障礙物大小進(jìn)測試,因?yàn)檫@樣可以更加準(zhǔn)確的得到調(diào)試結(jié)果。結(jié)果如表5:表5 障礙物大小調(diào)試結(jié)果 避障次數(shù)障礙物大小123450.0025失敗失敗失敗失敗失敗0.01成功失敗成功成功成功0.04成功成功成功成功成功5.3小車的功能通過對(duì)小車的各項(xiàng)功能進(jìn)行測試,可以發(fā)現(xiàn),在合適的工作條件下,小車基本可以達(dá)到設(shè)計(jì)要求。因此,本設(shè)計(jì)完成了預(yù)先的設(shè)計(jì)任務(wù),實(shí)現(xiàn)了所有功能。小車可以進(jìn)行循跡功能,檢測到黑線以后,會(huì)沿著黑線進(jìn)行行進(jìn)??梢赃M(jìn)行避障功能,在檢測到障礙物以后,小車會(huì)原地旋轉(zhuǎn)180度進(jìn)行避障處理,然后繼續(xù)行駛。結(jié) 論經(jīng)過幾個(gè)月的辛苦努力,本設(shè)計(jì)循跡避障小車通過驗(yàn)證,基本實(shí)現(xiàn)了最初的設(shè)計(jì)目標(biāo)。在最開始進(jìn)行選題時(shí),覺得這個(gè)課題比較簡單,可是在課題設(shè)計(jì)過程中,我發(fā)現(xiàn)其實(shí)并沒有想的那么簡單。首先是在硬件電路方面的設(shè)計(jì),對(duì)于硬件電路設(shè)計(jì),并不是說只要把元器件選好了,把線一連接就可以了,我們在進(jìn)行電路設(shè)計(jì)時(shí),還要考慮諸多因素,比如元器件使用難易,價(jià)格如何,還有就是電路中各個(gè)元器件的工作電流電壓,所消耗的功率,這些都是要考慮的。所以在進(jìn)行電路設(shè)計(jì)時(shí),我查閱了大量的資料,結(jié)合前人的研究成果,通過分析電路中電流電壓的關(guān)系,最終選擇出合適的元器件,完成了整個(gè)硬件電路的設(shè)計(jì)。在程序方面,這是一個(gè)占工作量比較大的部分,因?yàn)樾≤嚨母鞣N功能是靠程序的選擇控制的,只有保證程序的正確性,才能保證小車功能的實(shí)現(xiàn)。程序設(shè)計(jì)時(shí),我對(duì)于以前的各種相關(guān)的設(shè)計(jì)進(jìn)行了參考比較,覺得使用模塊化設(shè)計(jì)更加方便于我們的編寫。在進(jìn)行各功能驗(yàn)證時(shí)可以很簡單,而且還可以在以后繼續(xù)使用某一需要的功能程序,而不必要重新編寫。在進(jìn)行實(shí)物焊接以及組裝時(shí),可以考驗(yàn)我們的動(dòng)手能力,并對(duì)我們的生產(chǎn)工藝進(jìn)行了解。焊接時(shí)的虛焊、錯(cuò)焊,還有組裝時(shí)的結(jié)構(gòu)不合理等等,都在此次設(shè)計(jì)過程中體現(xiàn)出來了。 參考文獻(xiàn)1 于金霞 王璐 蔡自興 未知環(huán)境中移動(dòng)機(jī)器人自定位技術(shù)北京:電子工業(yè)出版社 20112 李仁定 電機(jī)的微機(jī)控制 北京:機(jī)械工業(yè)出版社 2004 3 趙虎 葉朝斌 無刷直流電機(jī)無傳感器PWM 智能控制器ML 4428及其應(yīng)用 載國外電子元器件 1998年第5期4 蘇震 現(xiàn)代傳感技術(shù)原理、方法與接口電路北京:電子工業(yè)出版社 2011 5 于金霞 王璐 蔡自興 未知環(huán)境中移動(dòng)機(jī)器人自定位技術(shù)北京:電子工業(yè)出版社 2011 6 趙建領(lǐng) 弓雷 51系列單片機(jī)開發(fā)寶典北京:電子工業(yè)出版社 2012 第2版 7 王允上 學(xué)用單片機(jī)制作機(jī)器人 北京:科學(xué)出版社 20118 徐德 鄒偉 室內(nèi)移動(dòng)式服務(wù)機(jī)器人的感知、定位與控制 北京:科學(xué)出版社 20089 陳永真 寧武 藍(lán)和慧 新編全國大學(xué)生電子設(shè)計(jì)競賽試題精解選 北京:電子工業(yè)出版社 200910 馬廣云 潘琢金 彭甫陽譯 英漢雙解嵌入式系統(tǒng)字典北京:北京航空航天大學(xué)出版社 200611 陳賾 鄒道勝 電子創(chuàng)新設(shè)計(jì)技術(shù) 北京:科學(xué)出版社 200812 吳國慶 王格芳 郭陽寬 現(xiàn)代測控技術(shù)及應(yīng)用 北京:電子工業(yè)出版社 200713 譚民 徐德 侯增廣 王碩 曹志強(qiáng) 先進(jìn)機(jī)器人控制 北京:高等教育出版社 200714 何社成 袁躍進(jìn) 電機(jī)光電顯示改進(jìn)應(yīng)用電路濟(jì)南:山東科學(xué)技術(shù)出版社 200715 R西格沃特 IR諾巴克什 自主移動(dòng)機(jī)器人導(dǎo)論 西安:西安交通大學(xué)出版社 200616 陳繼榮 智能電子創(chuàng)新制作機(jī)器人制作入門 北京:科學(xué)出版社 200717 李全利 單片機(jī)原理及接口技術(shù) 北京:高等教育出版社 2009 第2版18 求是科技 8051系列單片機(jī)C程序設(shè)計(jì)完全手冊 北京:人民郵電出版社 200619 沈紅衛(wèi) 基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 北京:電子工業(yè)出版社 200520YamatoI,etal1NewconversionsystemforUPSusinghighfre2quencylinkJ1IEEEPESC,198821YamatoI,etal1HighfrequencylinkDC/ACconverterforUPSwithanewvoltageclamperJ1IEEEPESC,199022 http:/www.pdf.la23 http:/www.elecfans.com24 http:/home.eeworld.com.cn/?fromuid=54140125 http:/www.21ic.com 致 謝 經(jīng)過幾個(gè)月的忙碌,我的畢業(yè)設(shè)計(jì)課題也終于告一段落。在本次設(shè)計(jì)中,我很感謝我的指導(dǎo)老師,感謝她在我設(shè)計(jì)過程中給予我的一系列幫助和指導(dǎo),感謝她對(duì)我的嚴(yán)格要求,才讓我的設(shè)計(jì)順利完成。我也要感謝電氣工程學(xué)院的各位領(lǐng)導(dǎo)和老師,感謝他們四年來對(duì)我的關(guān)心和培養(yǎng),感謝他們對(duì)于我學(xué)習(xí)生活上給予的幫助。還要感謝我班級(jí)同學(xué)和舍友,感謝他們四年來對(duì)我提供的幫助、支持和鼓勵(lì)。 大學(xué)即將過去了,在這四年里,我們有過歡樂,有過悲傷,我們付出過,也收獲過。在即將離去之際,我可以對(duì)我的大學(xué)生活自豪的說一句,我來過,我無悔。附 錄1: 系統(tǒng)電路圖 附 錄2: 源程序#include <reg52.h> /調(diào)用單片機(jī)頭文件#define uchar unsigned char /無符號(hào)字符型 宏定義 變量范圍0255#define uint unsigned int /無符號(hào)整型 宏定義 變量范圍065535#include <intrins.h>uint shudu_l,shudu_ll; /測速變量bit flag_1s ;sbit c_send = P16; /超聲波發(fā)射sbit c_recive = P17; /超聲波接收uchar flag_hc_value; /超聲波中間變量long distance = 888; /距離uint set_d; /距離bit flag_csb_juli; /超聲波超出量程uint flag_time0; /用來保存定時(shí)器0的時(shí)候的bit flag_300ms ;uchar miao,fen,shi; /秒,分,時(shí)uint juli;/* 名稱 : delay_1ms()* 功能 : 延時(shí)1ms函數(shù)* 輸入 : q* 輸出 : 無*/void delay_1ms(uint q)uint i,j;for(i=0;i<q;i+)for(j=0;j<110;j+);void delay_10ms(uint q)uint j; for(j=0;j<q;j+)delay_1ms(10); #include "che.h"#include "lcd1602.h"#define L 3#define R 4/*尋跡模塊IO口定義*/sbit xun_ll = P10; /從左到右第1個(gè)sbit xun_l = P11; /從左到右第2個(gè)sbit xun_z = P12; /從左到右第3個(gè)sbit xun_r = P13; /從左到右第4個(gè)sbit xun_rr = P14; /從左到右第5個(gè)void che_90_180_break(uchar dat) uchar i_z = 0;while(1) /循環(huán)等待中間尋跡傳感器到黑線上if(xun_z = 0) /如果中間那尋跡傳感器到了黑線上,要讓小車停下來前進(jìn)了 i_z+; /消去干擾if(i_z >= 10) /10次之后就確定尋跡模塊的中間傳感器到黑線上了if(dat = L) /如果是左轉(zhuǎn)90度就讓右轉(zhuǎn)的方法制動(dòng) right_s();else left_s(); /如果是右轉(zhuǎn)90度就讓左轉(zhuǎn)的方法制動(dòng)delay_10ms(5);go(); break; /break退出while(1)這個(gè)死循環(huán)else /沒有在黑錢上就給i_z變量清零i_z = 0;/*小車左轉(zhuǎn)90度*/void left_s_90_while() /小車向左轉(zhuǎn)90度go(); /前進(jìn)一小會(huì)讓小車轉(zhuǎn)90度時(shí)剛好讓黑線在小車的中間delay_10ms(12);left_s(); /左轉(zhuǎn)90度注意這個(gè)延時(shí)不能太長 只要能讓尋跡模塊中間的傳感離開黑線就好delay_10ms(18);che_90_180_break(L);/*小車向右轉(zhuǎn)90度*/void right_s_90_while() /go(); /前進(jìn)一小會(huì)讓小車轉(zhuǎn)90度時(shí)剛好讓黑線在小車的中間delay_10ms(12);right_s(); /左轉(zhuǎn)90度注意這個(gè)延時(shí)不能太長 只要能讓尋跡模塊中間的傳感離開黑線就好delay_10ms(18);che_90_180_break(R);/ 白線為 1 黑線為 0void xunji()if(xun_ll=1) && (xun_l=1) && (xun_z=0) && (xun_r=1) && (xun_rr=1)go(); /小車前進(jìn)if(xun_ll=0) && (xun_l=0) && (xun_z=0) && (xun_r=0) && (xun_rr=0) stop(); if(xun_ll=1) && (xun_l=1) && (xun_z=0) && (xun_r=0) && (xun_rr=1) |(xun_ll=1) && (xun_l=1) && (xun_z=1) && (xun_r=0) && (xun_rr=1) |(xun_ll=1) && (xun_l=1) && (xun_z=1) && (xun_r=0) && (xun_rr=0) |(xun_ll=1) && (xun_l=1) && (xun_z=1) && (xun_r=1) && (xun_rr=0) right(); /小車右轉(zhuǎn)if(xun_ll=1) && (xun_l=0) && (xun_z=0) && (xun_r=1) && (xun_rr=1) |(xun_ll=1) && (xun_l=0) && (xun_z=1) && (xun_r=1) && (xun_rr=1) |(xun_ll=0) && (xun_l=0) && (xun_z=1) && (xun_r=1) && (xun_rr=1) |(xun_ll=0) && (xun_l=1) && (xun_z=1) && (xun_r=1) && (xun_rr=1) left(); /小車左轉(zhuǎn)if(xun_ll=1) && (xun_z=0) && (xun_r=0) && (xun_rr=0) go(); delay_10ms(1);if(xun_ll=1) && (xun_z=0) && (xun_r=0) && (xun_rr=0) right_s_90_while(); /小車右轉(zhuǎn)90度if(xun_ll=0) && (xun_l=0) && (xun_z=0) && (xun_rr=1) go();delay_10ms(1);if(xun_ll=0) && (xun_l=0) && (xun_z=0) && (xun_rr=1) left_s_90_while(); /小車左轉(zhuǎn)90度 /*小延時(shí)函數(shù)*/void delay()_nop_(); /執(zhí)行一條_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超聲波測距程序*/void send_wave()c_send = 1; /10us的高電平觸發(fā) delay();c_send = 0; TH0 = 0; /給定時(shí)器0清零TL0 = 0;TR0 = 0; /關(guān)定時(shí)器0定時(shí)flag_hc_value = 0;while(!c_recive); /當(dāng)c_recive為零時(shí)等待TR0=1;while(c_recive) /當(dāng)c_recive為1計(jì)數(shù)并等待flag_time0 = TH0 * 256 + TL0;if(flag_hc_value > 1) | (flag_time0 > 65000) /當(dāng)超聲波超過測量范圍時(shí),顯示3個(gè)888TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;return ;else flag_csb_juli = 1; if(flag_csb_juli = 1)TR0=0; /關(guān)定時(shí)器0定時(shí)distance = TH0; /讀出定時(shí)器0的時(shí)間distance = distance * 256 + TL0;distance += ( flag_hc_value * 65536);/算出超聲波測距的時(shí)間 得到單位是msdistance *= 0.017; / 0.017 = 340M / 2 = 170M = 0.017M 算出來是米if(distance > 350) /距離 = 速度 * 時(shí)間distance = 888; /如果大于3.8m就超出超聲波的量程 /*處理距離函數(shù)*/void smg_display()if(flag_1s = 1)flag_1s = 0;shudu_ll = shudu_ll * (float)2.55; / 2.55 = 20.4 / 8 = 2.55 算出每一個(gè)脈沖的輪子走了多少距離juli += shudu_ll; /計(jì)路程/ write_sfm_jl(1,11,juli / 100); /顯示路程write_sfm2(1,3,shudu_ll); /顯示速度write_sfm2(2,4,shi);write_sfm2(2,7,fen);write_sfm2(2,10,miao);/*定時(shí)器0、定時(shí)器1初始化*/void time_init() EA = 1; /開總中斷TMOD = 0X11; /定時(shí)器0、定時(shí)器1工作方式1ET0