單片機(jī).智能小車的設(shè)計(jì)_第1頁
單片機(jī).智能小車的設(shè)計(jì)_第2頁
單片機(jī).智能小車的設(shè)計(jì)_第3頁
單片機(jī).智能小車的設(shè)計(jì)_第4頁
單片機(jī).智能小車的設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

...wd......wd......wd...單片機(jī)的智能小車的設(shè)計(jì)摘要單片機(jī)作為一種微型控制器,自走入人們的視野以來,就隨著科技進(jìn)步不斷地更新?lián)Q代。它能夠?qū)⒂?jì)算機(jī)所有關(guān)鍵的零件整合集中在一塊芯片上,并且具有強(qiáng)大的計(jì)數(shù)功能,以及各種必要的接口,因此單片機(jī)在自動(dòng)控制系統(tǒng)中通常處于核心地位。本文對(duì)于智能小車的設(shè)計(jì)思路就應(yīng)用了最常見的AT89S51單片機(jī)作控制處理器,該單片機(jī)在低功率的根基上,能夠保持其性能在一個(gè)較高的水平上,且其8K的處理器夠靈巧,適用于嵌入式產(chǎn)品,在眾多單片機(jī)中,表現(xiàn)較為優(yōu)秀。本設(shè)計(jì)是在單片機(jī)的根基上實(shí)施的,兼具數(shù)據(jù)處理、即時(shí)調(diào)控和報(bào)警提醒功能,小車接到行駛指令后,紅外探頭會(huì)檢測(cè)路況信息〔是否處在黑線路徑范圍內(nèi)〕并反響給單片機(jī)處理,單片機(jī)判斷后作出相應(yīng)指令,由電機(jī)驅(qū)動(dòng)使小車執(zhí)行相應(yīng)行駛動(dòng)作。單片機(jī)與系統(tǒng)的配合使智能小車的行駛保持靈敏迅速的狀態(tài)。關(guān)鍵詞 :?jiǎn)纹瑱C(jī)尋跡報(bào)警紅外線電機(jī)驅(qū)動(dòng)目錄摘要IAbstractII目錄III前言11設(shè)計(jì)任務(wù)及方案21.1設(shè)計(jì)任務(wù)及要求21.2設(shè)計(jì)方案論證21.2.1控制器選擇21.2.2電機(jī)驅(qū)動(dòng)芯片的選擇31.2.3路況檢測(cè)模塊42系統(tǒng)硬件電路與實(shí)現(xiàn)52.1紅外遙控及解碼模塊52.1.1二進(jìn)制信號(hào)的調(diào)制62.1.2二進(jìn)制信號(hào)的解調(diào)72.1.3二進(jìn)制信號(hào)的解碼72.2單片機(jī)紅外接收硬件電路的實(shí)現(xiàn)82.3電機(jī)驅(qū)動(dòng)模塊92.4路況檢測(cè)模塊132.4.1尋跡模塊142.4.2智能防撞報(bào)警模塊163系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)173.1整體程序的構(gòu)架183.2紅外遙控解碼的實(shí)現(xiàn)193.3電機(jī)驅(qū)動(dòng)213.4小車尋跡213.5小車防撞報(bào)警224小車系統(tǒng)原理圖245系統(tǒng)調(diào)試265.1遙控發(fā)送接收調(diào)試265.2電機(jī)驅(qū)動(dòng)調(diào)試275.3尋黑線和防撞的調(diào)試27總結(jié)27附錄30元件清單30系統(tǒng)程序31前言在科技飛快進(jìn)步的今天,自動(dòng)控制技術(shù)已經(jīng)迅速成長(zhǎng)起來,它與傳感器技術(shù)之間的配合也越來越默契,時(shí)下大熱的各種電子智能產(chǎn)品就是自動(dòng)控制技術(shù)開展的產(chǎn)物。目前國(guó)內(nèi)的自控和傳感技術(shù)與國(guó)外還存在一定的差距,這一領(lǐng)域的優(yōu)秀產(chǎn)品已有很多,比方日本本田制造出來的智能機(jī)器人,對(duì)于人類的步態(tài)模仿已到達(dá)非常自然的水平,并且它還有一定的智力,能夠與六歲的孩童相比。在機(jī)械領(lǐng)域一直處于熱門地位的汽車,也參加了越來越多的電子信息元素,比方越來越多的汽車產(chǎn)品配置了電子裝置,人們?cè)谲嚿喜粌H可以辦公,還能進(jìn)展多種娛樂活動(dòng),這使得汽車向著更加娛樂化和多功能的方向開展,而不僅僅發(fā)揮代步功能。另外,汽車的核心配置也越來越電子化,自動(dòng)控制技術(shù)讓汽車工藝開展更進(jìn)了一步。隨著自動(dòng)控制產(chǎn)業(yè)的開展,電子信息化的教育也漸漸在國(guó)際上被提上日程,越來越多的培養(yǎng)年前一代人才的科技競(jìng)賽也走入了人們的視野,比方中國(guó)大學(xué)生方程式汽車大賽(FSC、FSEC)、全國(guó)大學(xué)生機(jī)器人大賽等,都能夠很好地激發(fā)學(xué)生群體的興趣,促使他們主動(dòng)學(xué)習(xí),對(duì)我國(guó)電子信息行業(yè)的開展產(chǎn)生一定的促進(jìn)作用。本設(shè)計(jì)是以楊教師所給出的小車為框架,以AT89C52單片機(jī)為控制器制作一輛簡(jiǎn)易的智能小車,希望到達(dá)小車能夠按照引導(dǎo)線的路徑自動(dòng)行駛的效果,以期跟上汽車產(chǎn)業(yè)自動(dòng)化開展的腳步,并掌握本階段應(yīng)具有的專業(yè)素養(yǎng)和動(dòng)手能力。1設(shè)計(jì)任務(wù)及方案1.1設(shè)計(jì)任務(wù)及要求本設(shè)計(jì)是以單片機(jī)作為控制核心制作的一個(gè)具有簡(jiǎn)單智能的小車。設(shè)計(jì)要求如下:●具有單片機(jī)核心控制模塊;●具有紅外遙控解碼模塊;●具有電機(jī)驅(qū)動(dòng)模塊;●具有路況檢測(cè)模塊;●具有光感模塊;●具有聲控模塊;●具有7段數(shù)碼管顯示模塊;●具有報(bào)警模塊;1.2設(shè)計(jì)方案論證1.2.1控制器選擇方案一:采用MSP430單片機(jī)MSP430是德州儀器(TI)生產(chǎn)的一種RISC混合信號(hào)處理器,這個(gè)系列的產(chǎn)品一方面在低功耗上表現(xiàn)極其優(yōu)秀,另一方面又能夠不影響信號(hào)連接、傳感器以及其他組件的正常運(yùn)行,可以說為電池續(xù)航問題交上了一份完美的答卷。MSP430優(yōu)點(diǎn):0.1uARAM保持;0.8uA實(shí)時(shí)時(shí)鐘模式;250uA/MIPS有效;高性能模擬器件;是準(zhǔn)確測(cè)量的理想選擇;其處理器能夠到達(dá)僅需一串代碼就使一個(gè)應(yīng)用運(yùn)轉(zhuǎn)起來;而且還能夠在系統(tǒng)內(nèi)部更改、更新代碼和數(shù)據(jù)。但系列單片機(jī)也有缺點(diǎn),由于其功耗低,導(dǎo)致幾個(gè)管腳的驅(qū)動(dòng)力不夠,主頻也不夠高,處理數(shù)據(jù)的速度不夠快,達(dá)不到本設(shè)計(jì)對(duì)于單片機(jī)的預(yù)期,故不選用這一系列的單片機(jī)。方案二:采用AT89S51單片機(jī)[1]與MSP430不同,AT89S51在低功率的根基上,能夠保持其性能在一個(gè)較高的水平上,其8K字節(jié)的FLASH存儲(chǔ)器能夠與工業(yè)80C51產(chǎn)品指令和引腳完美融合,同時(shí)也能夠兼容常規(guī)編程器。與MSP430的16位處理器相比,AT89S51的8位處理器更加迷你靈活,適用于更多的嵌入式產(chǎn)品,兼容性更好。AT89S51具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三只16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向2級(jí)中斷構(gòu)造,全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。除此之外他還能夠?qū)崿F(xiàn)0Hz靜態(tài)邏輯操作,有兩款軟件能開啟省電模式。在不需高效工作的時(shí)候,還能夠保持處理器不運(yùn)行,RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作的狀態(tài)。在低電量模式,還能夠保證RAM數(shù)據(jù)不喪失,振蕩器停頓,單片機(jī)不運(yùn)行,持續(xù)該狀態(tài)到各項(xiàng)條件能夠恢復(fù)正常工作。方案選擇:綜上所述:經(jīng)過對(duì)MSP430和AT89S51的各項(xiàng)條件對(duì)比,本設(shè)計(jì)將采用MSP430作為處理器,其物美價(jià)廉,上手更容易,性能表現(xiàn)也優(yōu)異,符合設(shè)計(jì)最初的期望值。1.2.2電機(jī)驅(qū)動(dòng)芯片的選擇方案一:采用L298NL298N為SGS-THOMSONMicroelectronics所出產(chǎn)的雙全橋步進(jìn)電機(jī)專用驅(qū)動(dòng)芯片(DualFull-BridgeDriver),內(nèi)部包含4信道邏輯驅(qū)動(dòng)電路,是專門針對(duì)于二相和四相步進(jìn)電機(jī)的一款驅(qū)動(dòng)器,它能夠在同一時(shí)間調(diào)動(dòng)兩個(gè)二相或者一個(gè)四相的步進(jìn)電機(jī),它的內(nèi)部有兩個(gè)H-Bridge的高電壓、大電流雙全橋式驅(qū)動(dòng)器,用來接收標(biāo)準(zhǔn)TTL邏輯準(zhǔn)位信號(hào),能夠調(diào)動(dòng)46V、2A以下的步進(jìn)電機(jī),且可以直接透過電源來調(diào)節(jié)輸出電壓;它還能夠識(shí)別單片機(jī)IO端口傳來的模擬信號(hào),但I(xiàn)O端口在智能小車中較為少見,不過這一芯片的優(yōu)點(diǎn)是造價(jià)低廉。方案二:采用LG9110LG9110這種電路驅(qū)動(dòng)芯片對(duì)電路的集成度更高,將各個(gè)電路集中在一個(gè)芯片上,能夠減少外部元件比例,減少造價(jià)。另外這種芯片有兩個(gè)通道可以進(jìn)展輸入,且兩個(gè)輸出端都能保持750-800mA較大電流通過,峰值電流能力可達(dá)1.5-2.0A,從而保證了驅(qū)動(dòng)能力,提供更高的工作效率。而它所具有的低輸出飽和壓降以及內(nèi)置鉗位二極管釋放感性負(fù)載的反向沖擊電流的功能,又保證了在使用中安全性。因此,這種芯片作為集成電路器件已經(jīng)普遍被用在玩具汽車電機(jī)驅(qū)動(dòng)、步進(jìn)電機(jī)驅(qū)動(dòng)以及開關(guān)功率管等電路上。方案三:使用分立原件搭建電機(jī)驅(qū)動(dòng)電路這種方法本錢非常低,普遍應(yīng)用于規(guī)?;鳂I(yè)中,但它有一個(gè)缺點(diǎn),即H橋電路的運(yùn)轉(zhuǎn)狀態(tài)不能保持穩(wěn)定,發(fā)生硬件問題的幾率對(duì)比大,因此不選用這種方法。綜上所述:經(jīng)過對(duì)上面三種驅(qū)動(dòng)芯片的對(duì)比,我們發(fā)現(xiàn)第二種芯片不管是在驅(qū)動(dòng)能力上、造價(jià)上,還是使用的難易程度上都表現(xiàn)較為優(yōu)秀,因此決定使用第二種芯片LG9110。1.2.3路況檢測(cè)模塊這個(gè)局部我們將使用紅外發(fā)射探頭來處理,當(dāng)紅外線檢測(cè)到異物后,將信號(hào)返回到探頭,探頭再把信號(hào)傳送給單片機(jī)控制器進(jìn)展判斷,以這樣的一個(gè)模式,來判斷整體路況信息。2系統(tǒng)硬件電路與實(shí)現(xiàn)本方案選取AT89C52單片機(jī)為處理器,調(diào)控各單元工作,其硬件組成框架如圖2.1AT89C52AT89C52遙控模塊路面檢測(cè)模塊電機(jī)驅(qū)動(dòng)模塊報(bào)警模塊顯示模塊圖2.1系統(tǒng)硬件組成框架圖2.1紅外遙控及解碼模塊家中普遍使用的電視遙控器就使用了紅外遙控技術(shù),這種技術(shù)有諸多優(yōu)勢(shì),比方:無線實(shí)施、不需要觸控、干擾因素少、有效信息傳輸率高、功率損耗小、造價(jià)低廉等,隨著近年來的開展,已經(jīng)被廣泛地應(yīng)用于各個(gè)領(lǐng)域。這一技術(shù)系統(tǒng)由2個(gè)部門構(gòu)成:發(fā)送和接收部門。發(fā)送局部由主芯片將待發(fā)的二進(jìn)制信號(hào)編碼調(diào)制為一系列的脈沖串信號(hào),通過紅外發(fā)射管發(fā)射紅外信號(hào)紅外信號(hào)接收端普遍采用價(jià)格廉價(jià),效率高且效果有保證的一體化紅外接收頭〔如HS0038,它接收紅外頻率為38KHz,周期為26us〕。這種接收頭在放大信號(hào)的同時(shí),還能對(duì)信號(hào)的波形進(jìn)展檢測(cè)和修整,并轉(zhuǎn)換成TTL電平的編碼語言,傳到中央處理器,由cpu解碼和發(fā)布指令,去控制相關(guān)對(duì)象。如圖2.1.1所示。遙控器遙控器一體化紅外接收頭單片機(jī)發(fā)送接收解調(diào)解碼圖2.1.1紅外遙控解碼框圖2.1.1二進(jìn)制信號(hào)的調(diào)制控制器的主芯片要負(fù)責(zé)二進(jìn)制信號(hào)的處理工作,它將二進(jìn)制信號(hào)的編碼處理為38KHz的不連續(xù)脈沖串,簡(jiǎn)單來說就是做一個(gè)把兩者相乘的工作,用于之后的信號(hào)發(fā)射環(huán)節(jié)。如圖2.1.2所示,A為二進(jìn)制信號(hào)波,B是頻率=38KHz(周期=26us)的不連續(xù)脈沖串,C為經(jīng)芯片處理過的不連續(xù)脈沖串〔即C=A×B〕,用于之后的信號(hào)發(fā)射環(huán)節(jié)的波信號(hào)〔圖中二進(jìn)制信號(hào)編碼為101〕。圖2.1.2二進(jìn)制信號(hào)的調(diào)制2.1.2二進(jìn)制信號(hào)的解調(diào)紅外接收頭我們采用的是HS0038,它負(fù)責(zé)了二進(jìn)制信號(hào)的復(fù)原工作,就是解調(diào),即將上面提到的不連續(xù)脈沖信號(hào)恢復(fù)成二進(jìn)制信號(hào)波〔恰好是圖2.1.2中二進(jìn)制信號(hào)波的垂直翻轉(zhuǎn)〕。此階段接收頭的工作可以簡(jiǎn)單解釋成:有脈沖串時(shí)輸出低電平,沒有脈沖串時(shí)則輸出高電平。該紅外接收頭1腳GND接電源地,2腳VCC接+5V,3腳OUT為數(shù)據(jù)輸出〔TTL電平,反相輸出〕,能直接和單片機(jī)連接。圖2.1.3HS0038解調(diào)出的波形2.1.3二進(jìn)制信號(hào)的解碼接收單片機(jī)的解碼工作,相當(dāng)于將受到的波形復(fù)原成一開場(chǎng)發(fā)送端輸出的信號(hào)。如圖2.1.3,把波形E解碼復(fù)原成數(shù)據(jù)信息101。圖2.1.4為紅外信號(hào)的編碼格式傳輸開場(chǎng)8位數(shù)據(jù)傳輸開場(chǎng)8位數(shù)據(jù)傳輸完畢20個(gè)脈沖高位在前,低位在后10個(gè)脈沖10個(gè)脈沖圖2.1.4紅外信號(hào)的編碼格式2.2單片機(jī)紅外接收硬件的電路設(shè)計(jì)紅外接收硬件的電路設(shè)計(jì)如圖2.2.1,IR是紅外接收頭的圓形面,用于接收紅外信號(hào),它和SE303發(fā)射管之間的有效距離是35m,在這個(gè)范圍內(nèi)能夠進(jìn)展有效的紅外收發(fā)。圖2.2.1紅外接收電路3腳接電源,2腳接地,一腳接單片機(jī)的P3.3〔外部中斷0〕,在收到紅外信號(hào)時(shí),1腳處理之后把信號(hào)輸送到單片機(jī),使其暫停,進(jìn)而開場(chǎng)解碼工作。2.3電機(jī)驅(qū)動(dòng)模塊目前直流電機(jī)已經(jīng)普遍應(yīng)用于遙控車,它有2個(gè)控制端口,能夠根據(jù)接收的電平的異同來調(diào)整電機(jī)的工作。電機(jī)驅(qū)動(dòng)單元的電路圖如圖2.3.1所示。圖2.3.1電機(jī)驅(qū)動(dòng)模塊P0.0~P0.3電平的水平會(huì)影響直流電機(jī)M1、M2的轉(zhuǎn)向,單片機(jī)就是通過調(diào)控這幾個(gè)引腳的電平水平來調(diào)控電機(jī)的轉(zhuǎn)向。引腳的電平為1010使,M1、M2正轉(zhuǎn),使小車往前走;引腳電平為0101時(shí),M1、M2反轉(zhuǎn),使小車向后走;引腳電平為1001或0110時(shí),M1和M2一個(gè)正轉(zhuǎn)一個(gè)反轉(zhuǎn),使得小車能夠向左向右走。然而只以單片機(jī)輸出的電壓來帶動(dòng)小車形勢(shì)是完全不夠的,其電壓太小,缺乏以帶動(dòng)小車持續(xù)運(yùn)行,因此我們選取了一種適宜的電動(dòng)機(jī)芯片來彌補(bǔ)這個(gè)缺乏。L9110芯片在性能上表現(xiàn)優(yōu)秀,且造價(jià)不貴,又能夠很好地兼顧到小車本身的重量和電壓等其他要求,可以說是最適宜用于這個(gè)小車設(shè)計(jì)的芯片了。下面給出關(guān)于L9110的相關(guān)數(shù)據(jù)手冊(cè)。圖2.3.2LG9110的實(shí)物圖特點(diǎn):■低靜態(tài)工作電流;■寬電源電壓范圍2.5V-12V;■每通道具有800mA連續(xù)電流輸出能力;■較低的飽和壓降;■TTL/CMOS輸出電平兼容,可直接連接CPU;■輸出內(nèi)置鉗位二極管,適用于感性負(fù)載;■控制和驅(qū)動(dòng)集成于單片IC之中;■具備管腳高壓保護(hù)功能;圖2.3.3LG9110管腳圖管腳定義如表2.3.1表2.3.1LG9110的管腳定義序號(hào)符號(hào)功能1OAA路輸出管腳2VCC電源電壓3VCC電源電壓4OBB路輸出管腳5GND地線6IAA路輸入管腳7IBB路輸入管腳8GND地線L9110有8個(gè)管腳,電源腳、接地腳、輸入腳〔IA/IB〕、輸出腳(OA/OB)各有2個(gè),2個(gè)輸出腳與電機(jī)兩極相連,2個(gè)輸入腳與單片機(jī)相連,它們共同協(xié)作調(diào)控電機(jī)工作。圖2.2.4為L(zhǎng)9110的硬件連接圖。圖2.3.4LG9110硬件連接圖2.4路況檢測(cè)模塊這個(gè)單元的工作主要由紅外探頭來負(fù)責(zé),使用了簡(jiǎn)易且應(yīng)用廣泛地紅外探測(cè)法來到達(dá)目的。發(fā)射器發(fā)出紅外信號(hào)到達(dá)路面,再由路面返回接收器,因?yàn)楹谏桶咨矬w反射回來的光的強(qiáng)度不同,紅外裝置就可以通過返回的光的強(qiáng)度來確定路況。圖2.4.1為這一單元的硬件框架圖。圖2.4.1路況檢測(cè)單元框架設(shè)計(jì)圖發(fā)射管V1、V6、V3通電之后,往車前面和地面連續(xù)發(fā)出紅外光,在前方有白墻或者普通路面就會(huì)反射回強(qiáng)度較高的紅外光,使得V2、V5、V4接通,把低電平信號(hào)傳到單片機(jī)P3.5-3.7,進(jìn)展進(jìn)一步的信號(hào)識(shí)別處理。這一單元的檢測(cè)可實(shí)現(xiàn)黑線檢測(cè)和障礙物檢測(cè)2個(gè)功能。2.4.1尋跡模塊在這一單元,我們?cè)诎准埳项A(yù)設(shè)了一條無規(guī)則的彎曲黑線跑道,原理如上面表達(dá)的紅外探頭的工作原理,小車在行進(jìn)時(shí),探頭連續(xù)向地面發(fā)出紅外信號(hào),白紙局部反射回的紅外信號(hào)能夠接通接收管信號(hào)通路,黑線局部則會(huì)吸收紅外,不返回信號(hào),這要求黑線跑道的寬度至少要比兩個(gè)探頭的距離寬,這才能夠保證被檢測(cè)到。尋跡模塊設(shè)計(jì)實(shí)物如圖2.4.2所示。圖2.4.2小車前方探頭實(shí)物如圖,小車前方下部的兩個(gè)透明物就是紅外發(fā)射探頭,兩個(gè)黑色的就是紅外接收探頭,黑色路徑的寬度只要要寬于這個(gè)尺寸,就能夠確保小車尋跡行駛。當(dāng)小車開場(chǎng)運(yùn)行,如果在黑色路徑之內(nèi),則沒有紅外信號(hào)被返回,小車將繼續(xù)行駛;如果稍微偏離黑色路徑,紅外信號(hào)就會(huì)返回接收管,是接收探頭接通,將信號(hào)傳遞給單片機(jī)作判斷,如果收到的是左邊的接收器傳來的信號(hào),單片機(jī)就會(huì)發(fā)出向右轉(zhuǎn)向的指令,如果收到的是右邊的接收器傳來的信號(hào),單片機(jī)就會(huì)發(fā)出向左轉(zhuǎn)向的指令。小車的按照一定的路徑行駛就是通過這樣的信號(hào)傳遞流程實(shí)現(xiàn)的。2.4.2智能防撞報(bào)警模塊這一個(gè)單元對(duì)于現(xiàn)代汽車向進(jìn)一步自動(dòng)化方向開展非常有價(jià)值,也是一個(gè)非常實(shí)用,能夠提高駕駛安全性的一個(gè)功能。如果車子能夠自動(dòng)判別前面有沒有異物,并對(duì)駕駛員發(fā)出提醒,那么將在一定程度上減少交通事故的發(fā)生。當(dāng)小車在空地上時(shí),前面的2個(gè)探頭會(huì)檢測(cè)前方是否有異物,向下的4個(gè)探頭會(huì)一同接到檢測(cè)信息,在小車遇到不安全路況時(shí)〔比方山崖邊〕,單片機(jī)就會(huì)根據(jù)探頭傳來的信號(hào)調(diào)整小車的行駛方向,并發(fā)出警示提醒,防止不安全。本單元的設(shè)計(jì)如圖2.4.3所示。圖2.4.3防撞報(bào)警模塊電路設(shè)計(jì)如果前方有異物,單片機(jī)就會(huì)給P0.6傳遞一個(gè)高電平信號(hào),然后三極管V1被接通,接著連通報(bào)警器SB1,發(fā)出蜂鳴警示。如果前方路況正常無異物,那么紅外接收探頭就會(huì)收到反射回來的紅外光,并傳遞給單片機(jī)一個(gè)低電平;同樣的原理,在小車走到山崖邊上時(shí),由于山崖太深,發(fā)出去的紅外信號(hào)返回距離太長(zhǎng)不能被接收探頭檢測(cè)到,那么傳遞給單片機(jī)的就還是一個(gè)高電平信號(hào),接著單片機(jī)就會(huì)對(duì)次信號(hào)進(jìn)展判斷并發(fā)出對(duì)應(yīng)指令調(diào)整小車路徑,同時(shí)發(fā)給報(bào)警器一個(gè)指令,發(fā)出蜂鳴提醒。3系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)為了方便使用程序,我們?cè)谲浖O(shè)計(jì)方面做了一定的工作,把全部程序單元都嵌入遙控器,這樣做的優(yōu)點(diǎn)不止是方便使用,還能夠節(jié)省CPU的存儲(chǔ)空間,因?yàn)檎麄€(gè)設(shè)計(jì)中有多個(gè)單元都需要進(jìn)展即時(shí)檢測(cè),如果不做這樣的嵌入的話,不但會(huì)占CPU空間,還會(huì)影響各單元的正常運(yùn)行。各個(gè)單元的銜接如圖3.1所示。遙控器輸入遙控器輸入單片機(jī)解碼電機(jī)控制〔前進(jìn)后退左右轉(zhuǎn)〕黑線尋跡防撞報(bào)警圖3.1程序模塊連接遙控器發(fā)出信號(hào)后,單片機(jī)運(yùn)行外部中斷模式,對(duì)遙控器發(fā)出的信號(hào)實(shí)施解碼操作,解碼完畢后對(duì)照遙控器傳來的數(shù)據(jù)信息向?qū)?yīng)的單元發(fā)出運(yùn)行指令,所有模塊運(yùn)行的結(jié)果指令由電機(jī)來實(shí)施,因此圖3.1中所有的箭頭最后都匯總于電機(jī)控制單元。3.1整體程序的構(gòu)架程序框圖如圖3.1.1所示圖3.1.1整體程序框圖3.2紅外遙控解碼的實(shí)現(xiàn)所有的控制單元都集中在一個(gè)遙控器內(nèi),因此串聯(lián)起這個(gè)設(shè)計(jì)的角色就是紅外信號(hào)的解碼局部,它就像是開啟這個(gè)系統(tǒng)的門。按下遙控器上的按鈕發(fā)出紅外信號(hào)時(shí),1腳會(huì)將信號(hào)轉(zhuǎn)換成脈寬波,并讓單片機(jī)暫停運(yùn)轉(zhuǎn),同時(shí)翻開定時(shí)器和計(jì)數(shù)器。統(tǒng)計(jì)每個(gè)脈沖到達(dá)的時(shí)間和最終的數(shù)量,待一次紅外信號(hào)的脈沖接收完畢后,計(jì)數(shù)器和定時(shí)器停頓工作。然后開場(chǎng)識(shí)別此次信號(hào)的脈沖數(shù)量,假設(shè)>31就舍掉,假設(shè)是0或1就存儲(chǔ)下來,再進(jìn)展進(jìn)一步的判斷,先跟前導(dǎo)碼對(duì)比看是不是吻合,簡(jiǎn)單來說就是判斷遙控器是否匹配,假設(shè)匹配就存儲(chǔ)起來,之后核心程序再利用swich函數(shù)對(duì)其處理并發(fā)布指令。舉例來說就是,按下向下按鈕,核心程序就用后退函數(shù)來使小車做出后退動(dòng)作。如圖3.2所示初始化初始化中斷口是否有遙控信號(hào)輸入是否有抖動(dòng)進(jìn)入解碼計(jì)數(shù)脈沖個(gè)數(shù)同時(shí)計(jì)數(shù)單個(gè)脈沖寬度脈沖個(gè)數(shù)是否為32個(gè)數(shù)據(jù)解碼并判斷數(shù)據(jù)碼和數(shù)據(jù)反碼取非之后是否相等執(zhí)行相關(guān)模塊否是是否是否是否圖3.2解碼程序框圖3.3電機(jī)驅(qū)動(dòng)電機(jī)驅(qū)動(dòng)在這個(gè)設(shè)計(jì)當(dāng)中處于一個(gè)主導(dǎo)地位,所有單元,所有程序發(fā)出的命令,想要最終在小車的行駛動(dòng)作上有所表達(dá),都必須通過它。電機(jī)驅(qū)動(dòng)能讓小車實(shí)現(xiàn)的動(dòng)作有前行、倒退、向左向右轉(zhuǎn)和停頓。這些動(dòng)作并不是只能通過按下遙控器上相應(yīng)的按鈕才能實(shí)現(xiàn),我們?cè)谠O(shè)計(jì)程序時(shí),為了使小車更加智能化,把前行、倒退、向左向右轉(zhuǎn)和停頓這些動(dòng)作指令分別寫成了函數(shù),這樣每個(gè)子單元的工作只要運(yùn)行相應(yīng)的函數(shù)就能夠?qū)崿F(xiàn)。這樣做就節(jié)省了很大的程序空間。比方說,在寫入左轉(zhuǎn)函數(shù)時(shí),為了讓小車實(shí)現(xiàn)左轉(zhuǎn)的動(dòng)作,僅給P0.0-0.3賦值0010就能實(shí)現(xiàn),其他前行、后退等動(dòng)作只要改變對(duì)應(yīng)的賦值就可以完成動(dòng)作。不過為了保險(xiǎn)起見,減少失誤,我們可再寫入延遲函數(shù),防止指令執(zhí)行過于迅速損害電機(jī)。3.4小車尋跡小車的主程序假設(shè)是監(jiān)測(cè)到遙控器發(fā)出的尋跡信號(hào),那么主程序就會(huì)通過調(diào)取設(shè)定好的尋跡函數(shù)進(jìn)展尋跡。以下內(nèi)容是關(guān)于尋跡功能設(shè)計(jì)的主要思路。首先,我們需要搞懂小車是假設(shè)何進(jìn)展尋跡功能的,關(guān)于它的原理已經(jīng)陳述過,這里就不做過多說明,以免冗余。小車尋跡函數(shù)指的是:P3.5和P3.6,這兩個(gè)函數(shù)作為實(shí)時(shí)掃描單片機(jī)管腳。小車左側(cè)探頭返回的信號(hào)由P3.5管腳承受,p3.5=0代表的是左方探頭正在跑離黑線,與此同時(shí),實(shí)時(shí)掃描的單片機(jī)監(jiān)測(cè)p3.5=0,立即調(diào)取右轉(zhuǎn)函數(shù),實(shí)現(xiàn)小車的右轉(zhuǎn)功能。小車右側(cè)探頭返回的信號(hào)由P3.6管腳承受,同樣的原理,當(dāng)監(jiān)測(cè)到右側(cè)探頭正在跑離黑線時(shí),左轉(zhuǎn)的尋跡函數(shù)立即被調(diào)取,實(shí)現(xiàn)小車的左轉(zhuǎn)功能。如圖3.4,關(guān)于小車尋跡功能設(shè)計(jì)的程序示意圖。初始化初始化探頭跑出黑線了嗎哪邊探頭有輸入前進(jìn)后退右轉(zhuǎn)左轉(zhuǎn)是否左左右均有右圖3.4小車尋跡程序示意圖3.5小車防撞與報(bào)警小車的防撞報(bào)警系統(tǒng)由主人來激活,在遇到阻礙小車前行或者有不安全時(shí),小車主程序監(jiān)測(cè)到其防撞系統(tǒng)激活后,立刻調(diào)取p3.7函數(shù)。p3.7是小車內(nèi)部防撞函數(shù),借助小車的電機(jī)驅(qū)動(dòng)函數(shù)共同調(diào)控小車行駛路徑,以防落入懸崖等不安全情況,改變其行駛路徑的同時(shí)并出發(fā)報(bào)警信號(hào)引起報(bào)警。如圖3.5,關(guān)于小車防撞與報(bào)警的程序示意圖。初始化初始化前方有懸崖或障礙物嗎前進(jìn)后退并報(bào)警左轉(zhuǎn)并報(bào)警是否圖3.5小車防撞與報(bào)警程序示意圖4小車系統(tǒng)原理圖如圖4.1,關(guān)于小車的硬件電路總設(shè)計(jì)圖最終主板PCB圖前板PCB5系統(tǒng)調(diào)試運(yùn)用實(shí)驗(yàn)室現(xiàn)有的條件,根據(jù)成稿的硬件電路總設(shè)計(jì)圖以及pcb圖來制作元件板,在焊接各種元件時(shí),應(yīng)當(dāng)注意以下幾點(diǎn)情況:1.電解電容的正負(fù)極區(qū)分。長(zhǎng)為正極,短為負(fù)極;2.二極管的的正負(fù)極區(qū)分。長(zhǎng)為正極,短為負(fù)極;3.話筒的正負(fù)區(qū)分。負(fù)極與外殼相連;4.蜂鳴器的正負(fù)極之分。長(zhǎng)為正極,短為負(fù)極;5.三極管按照電路板封裝焊接;6.安裝集成電路的芯片時(shí),搞清楚各個(gè)缺口的對(duì)應(yīng)關(guān)系,缺口一般在芯片或者底座的某一邊,缺口對(duì)應(yīng)的部位需要與封裝對(duì)應(yīng)的部位保持一致;7.小數(shù)點(diǎn)的一致性。焊接數(shù)碼管應(yīng)當(dāng)保持管上小數(shù)點(diǎn)和電路板封裝上的小數(shù)點(diǎn)一致。8.各個(gè)電機(jī)都應(yīng)當(dāng)焊接瓷片電容104,完成后還應(yīng)當(dāng)確保各個(gè)硬件完好無損,分別對(duì)各元件進(jìn)展功能測(cè)試,假設(shè)有不適之處則應(yīng)當(dāng)調(diào)整。5.1遙控發(fā)送接收調(diào)試我們還需要對(duì)廠家提供的遙控設(shè)備進(jìn)展功能測(cè)試,保證遙控設(shè)備可以正常工作,可是假設(shè)何測(cè)試呢遙控設(shè)備一般都是集成的并且紅外線發(fā)射器也是透明的,難以通過人的肉眼識(shí)別。針對(duì)這個(gè)問題,我們發(fā)現(xiàn)了一個(gè)巧妙的檢測(cè)方法:首先給遙控設(shè)備裝上電源,再把手機(jī)攝像頭對(duì)準(zhǔn)遙控設(shè)備的紅外線發(fā)射器,我們隨意按下一個(gè)按鍵,通過看手機(jī)里紅外線發(fā)射器能否產(chǎn)生光源,假設(shè)產(chǎn)生光源就證明了遙控設(shè)備質(zhì)量沒問題,反之則有問題。除了遙控設(shè)備的測(cè)試外,我們還應(yīng)當(dāng)對(duì)紅外線接收器進(jìn)展測(cè)試,測(cè)試其對(duì)紅外線的接收功能是否正常。接收器的測(cè)試也很簡(jiǎn)單,把接收器的1號(hào)管腳與示波器進(jìn)展連接,長(zhǎng)時(shí)間按住遙控設(shè)備的按鍵,如果在示波器顯示屏幕上看到有上下不等的波形以及脈沖,則可以說明紅外線的接收無異常;如果連接之后沒有任何反響,那么可能是接收器的問題,具體問題還應(yīng)作進(jìn)一步分析,是接收器的原因還是內(nèi)部元件損傷亦或是焊接不成功導(dǎo)致連接短路疑心以上原因應(yīng)該重新對(duì)電路的連接進(jìn)展復(fù)查。完成了上述測(cè)試步驟之后,我們就可以通過燒寫遙控設(shè)備的一些簡(jiǎn)單程序,進(jìn)一步驗(yàn)證在改寫程序后,其余程序能否正常解碼。5.2電機(jī)驅(qū)動(dòng)調(diào)試關(guān)于電機(jī)驅(qū)動(dòng)的正常與否,目前最便捷的方法是把干電池作為電機(jī)電源,然后分別將電源兩級(jí)與直流電機(jī)的兩級(jí)連接,這里有個(gè)小建議,就是在電機(jī)的兩引腳間連接一個(gè)瓷片電容,這樣做可以防止由于電流過大將電機(jī)燒壞,如果接上之后電機(jī)能正常翻轉(zhuǎn),那么說明電機(jī)功能完好。之后,按照自己的意愿對(duì)電機(jī)工作進(jìn)展調(diào)整,在電動(dòng)車驅(qū)動(dòng)程序中可以設(shè)置一個(gè)反響時(shí)間,燒寫完程序之后重新啟動(dòng)小車,通過看小車前進(jìn)與后退或者轉(zhuǎn)彎的速度、敏捷程度以及轉(zhuǎn)向弧度是否適宜,來調(diào)整其反響時(shí)間,不斷進(jìn)展調(diào)試以到達(dá)最正確效果。5.3尋黑線和防撞的調(diào)試在尋黑線和防撞的測(cè)試中,我們首先應(yīng)該檢測(cè)前板探頭的探測(cè)功能,檢驗(yàn)方法如同上述的紅外接收器的檢驗(yàn)方法。識(shí)別黑色信號(hào)的探頭檢測(cè)方法是:把小車放到白色路面上行駛,在小車的行駛路徑上放置一個(gè)除黑色以外顏色的障物,然后用儀表測(cè)管腳P3.5/P3.6/P3.7的電壓,讀書為0的話則證明小車的電路正常,假設(shè)不為0則應(yīng)當(dāng)檢驗(yàn)小車電路的完整性,確認(rèn)是否屬于電路故障等原因。另外,再進(jìn)一步檢驗(yàn)尋跡和報(bào)警功能,把小車放在兩邊白、中間黑的彎曲跑道上,觀察小車的尋跡程序是否正常,小車轉(zhuǎn)向是否靈敏,轉(zhuǎn)向弧度是否適宜,并根據(jù)自己的要求來調(diào)試小車的反響時(shí)間,使小車最終能夠很好地按照跑道行駛。附錄元件清單位號(hào)名稱位號(hào)名稱M1電機(jī)1接線座SIUILED數(shù)碼管M2電機(jī)2接線座IR1紅外接收頭X1前端探測(cè)板接線座RX110K排阻9腳DC15KZ111.0592晶振R1220IC1STC89C52RCR2150IC2MAX232CPER31MIC3L9110集成電路R447KIC4L9110集成電路R54.7KC110uF/16VR6560C2104R7560C3104R8560C4104R9560C510uF/16VR10560C610uF/16VR11560C730PFR12560C830PFR13560C9104R14220C1010uF/16VR1510KC1110uF/16VR16560C1210uF/16VR17560C1310uF/16VR18560D1~D8紅色發(fā)光二極管R19560D9綠色發(fā)光二極管R20560S1按鍵開關(guān)R21560S2按鍵開關(guān)R22560S3按鍵開關(guān)R23560COM1DB9針串口R24560D1~D2LED(前板用)R2510KV1發(fā)射頭(前板用)R26560V2接收頭(前板用)RL1光敏電阻V3發(fā)射頭(前板用)SB1蜂鳴器V4接收頭(前板用)B1話筒V5發(fā)射頭(前板用)R1220(前板用)V6接收頭(前板用)R2560(前板用)R3220(前板用)R415K(前板用)R515K(前板用)R6220(前板用)R7560(前板用)R815K(前板用)9012紅外遙控發(fā)射器V1~V28550J1~J2跳線帽系統(tǒng)程序#include<reg52.h>//包含51單片機(jī)相關(guān)的頭文件#defineuintunsignedint//重定義無符號(hào)整數(shù)類型#defineucharunsignedchar//重定義無符號(hào)字符類型ucharcodeLedShowData[]={0x03,0x9F,0x25,0x0D,0x99,//定義數(shù)碼管顯示數(shù)據(jù)0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9ucharcodeRecvData[]={0x07,0x0A,0x1B,0x1F,0x0C,0x0D,0x0E,0x00,0x0F,0x19};ucharIRCOM[7];staticunsignedintLedFlash;//定義閃動(dòng)頻率計(jì)數(shù)變量unsignedcharRunFlag=0;//定義運(yùn)行標(biāo)志位bitEnableLight=0;//定義指示燈使能位/***********完成根本數(shù)據(jù)變量定義**************/sbitS1State=P1^0;//定義S1狀態(tài)標(biāo)志位sbitS2State=P1^1;//定義S2狀態(tài)標(biāo)志位sbitB1State=P1^2;//定義B1狀態(tài)標(biāo)志位sbitIRState=P1^3;//定義IR狀態(tài)標(biāo)志位sbitRunStopState=P1^4;//定義運(yùn)行停頓標(biāo)志位sbitFontIRState=P1^5;//定義FontIR狀態(tài)標(biāo)志位sbitLeftIRState=P1^6;//定義LeftIR狀態(tài)標(biāo)志位sbitRightIRState=P1^7;//定義RightIRState狀態(tài)標(biāo)志位/*************完成狀態(tài)指示燈定義*************/sbitS1=P3^2;//定義S1按鍵端口sbitS2=P3^4;//定義S2按鍵端口/*************完成按鍵端口的定義*************/sbitLeftLed=P2^0;//定義前方左側(cè)指示燈端口sbitRightLed=P0^7;//定義前方右側(cè)指示燈端口/*************完成前方指示燈端口定義*********/sbitLeftIR=P3^5;//定義前方左側(cè)紅外探頭sbitRightIR=P3^6;//定義前主右側(cè)紅外探頭sbitFontIR=P3^7;//定義正前方紅外探頭/*************完成紅外探頭端口定義***********/sbitM1A=P0^0;//定義電機(jī)1正向端口sbitM1B=P0^1;//定義電機(jī)1反向端口sbitM2A=P0^2;//定義電機(jī)2正向端口sbitM2B=P0^3;//定義電機(jī)2反向端口/*************完成電機(jī)端口定義***************/sbitB1=P0^4;//定義話筒傳感器端口sbitRL1=P0^5;//定義光敏電阻端口sbitSB1=P0^6;//定義蜂鳴端口/*********完成話筒,光敏電阻,蜂鳴器.端口定義**/sbitIRIN=P3^3;//定義紅外接收端口/*********完成紅外接收端口的定義*************/#defineShowPortP2//定義數(shù)碼管顯示端口externvoidControlCar(ucharCarType);//聲明小車控制子程序voiddelay(unsignedcharx)//0.14mS延時(shí)程序{unsignedchari;//定義臨時(shí)變量while(x--)//延時(shí)時(shí)間循環(huán){for(i=0;i<13;i++){}//14mS延時(shí)}}voidDelay()//定義延時(shí)子程序{uintDelayTime=30000;//定義延時(shí)時(shí)間變量while(DelayTime--);//開場(chǎng)進(jìn)展延時(shí)循環(huán)return;//子程序返回}voidControlCar(ucharCarType)//定義小車控制子程序{M1A=0;//將電機(jī)1正向電平置低M1B=0;//將電機(jī)1反向電平置低M2A=0;//將電機(jī)2正向電平置低M2B=0;//將電機(jī)2反向電平置低LeftLed=1;//關(guān)閉前方左側(cè)指示燈RightLed=1;//關(guān)閉前方右側(cè)指示燈Delay();//將此狀態(tài)延時(shí)一段時(shí)間switch(CarType)//判斷小車控制指令類型{case1://前進(jìn)//判斷是否是前進(jìn){M1A=1;//將電機(jī)1正向端口置高M(jìn)2A=1;//將電機(jī)2正向端口置高ShowPort=LedShowData[1];//數(shù)碼管顯示前進(jìn)狀態(tài)break;//退出判斷}case2://后退//判斷是否是后退{(lán)M1B=1;//將電機(jī)1反向端口置高M(jìn)2B=1;//將電機(jī)2反向端口置高ShowPort=LedShowData[2];//數(shù)碼管顯示后退狀態(tài)RightLed=0;//將前方右側(cè)指示燈置低(亮)LeftLed=0;//將前方左側(cè)指示燈置低(亮)break;//退出判斷}case3://左轉(zhuǎn)//判斷是否是左轉(zhuǎn){M1B=1;//將電機(jī)1反向端口置高M(jìn)2A=1;//將電機(jī)2正向端口置高ShowPort=LedShowData[3];//數(shù)碼管顯示左轉(zhuǎn)狀態(tài)LeftLed=0;//將前方左側(cè)指示燈置低(亮)break;//退出判斷}case4://右轉(zhuǎn)//判斷是否是右轉(zhuǎn){M1A=1;//將電機(jī)1正向端口置高M(jìn)2B=1;//將電機(jī)2反向端口置高ShowPort=LedShowData[4];//數(shù)碼管顯示右轉(zhuǎn)狀態(tài)RightLed=0;//將前方右側(cè)指示燈置低(亮)break;//退出判斷}default://默認(rèn)情況下的判斷{break;//直接退出判斷}}}voidComBreak()interrupt4//定義串口通信子程序{unsignedcharRecvData;//定義串口數(shù)據(jù)接收變量if(RI==1)//判斷是否接收數(shù)據(jù){RecvData=SBUF;//將接收到的數(shù)據(jù)放入暫時(shí)變量if(RecvData<10)//判斷接收到的數(shù)據(jù)是否小于10{ShowPort=LedShowData[RecvData];//將接收到的數(shù)據(jù)通過數(shù)碼管顯示出來ControlCar(RecvData);//將串口數(shù)據(jù)置于小于狀態(tài)}SBUF=RecvData;//向電腦返回當(dāng)前接收到的數(shù)據(jù)RI=0;//去除接收中斷標(biāo)志位}if(TI==1)//判斷是否是發(fā)送中斷{TI=0;//去除發(fā)送中斷標(biāo)志位}}voidIR_IN()interrupt2using0//定義INT2外部中斷函數(shù){unsignedcharj,k,N=0;//定義臨時(shí)接收變量EX1=0;//關(guān)閉外部中斷,防止再有信號(hào)到達(dá)delay(15);//延時(shí)時(shí)間,進(jìn)展紅外消抖if(IRIN==1)//判斷紅外信號(hào)是否消失{EX1=1;//外部中斷開 return;//返回}while(!IRIN)//等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號(hào)。{delay(1);//延時(shí)等待}for(j=0;j<4;j++)//采集紅外遙控器數(shù)據(jù){for(k=0;k<8;k++)//分次采集8位數(shù)據(jù){while(IRIN)//等IR變?yōu)榈碗娖?,跳過4.5ms的前導(dǎo)高電平信號(hào)。{delay(1);//延時(shí)等待}while(!IRIN)//等IR變?yōu)楦唠娖絳delay(1);//延時(shí)等待}while(IRIN)//計(jì)算IR高電平時(shí)長(zhǎng){delay(1);//延時(shí)等待N++;//計(jì)數(shù)器加加if(N>=30)//判斷計(jì)數(shù)器累加值 {EX1=1;//翻開外部中斷功能 return;//返回}}IRCOM[j]=IRCOM[j]>>1;//進(jìn)展數(shù)據(jù)位移操作并自動(dòng)補(bǔ)零if(N>=8)//判斷數(shù)據(jù)長(zhǎng)度{IRCOM[j]=IRCOM[j]|0x80;//數(shù)據(jù)最高位補(bǔ)1}N=0;//清零位數(shù)計(jì)錄器}}if(IRCOM[2]!=~IRCOM[3])//判斷地址碼是否一樣{EX1=1;//翻開外部中斷return;//返回}for(j=0;j<10;j++)//循環(huán)進(jìn)展鍵碼解析{if(IRCOM[2]==RecvData[j])//進(jìn)展鍵位對(duì)應(yīng){P2=LedShowData[j];//數(shù)碼管顯示相應(yīng)數(shù)碼}}switch(IRCOM[2]){case0x1A://前進(jìn){ControlCar(1);//小車前進(jìn)break;}case0x05://后退{(lán)ControlCar(2);//小車后退break;}case0x01://左轉(zhuǎn){ControlCar(3);//小車左轉(zhuǎn)break;}case0x03://右轉(zhuǎn){ControlCar(4);//小車右轉(zhuǎn)break;}case0x12://電源{ControlCar(5);//停頓break;}}EX1=1;//外部中斷開}voidmain(void)//主程序入口{bitExeFlag=0;//定義可執(zhí)行位變量LedFlash=3000;//對(duì)閃燈數(shù)據(jù)進(jìn)展初始化TMOD=0x01;//選擇定時(shí)器0為兩個(gè)16位定時(shí)器TH0=0xFF;//對(duì)定時(shí)器進(jìn)展計(jì)數(shù)值進(jìn)展初始化TL0=0x49;//同上,時(shí)間大約為25uSTR0=1;//同意開場(chǎng)定時(shí)器0EX1=1;//同意開啟外部中斷1IT1=1;//設(shè)定外部中斷1為低邊緣觸發(fā)類型ET0=0;SCON=80;//設(shè)置串口模式為8位數(shù)據(jù)TMOD=33;//設(shè)置定時(shí)/計(jì)數(shù)器模式TH1=0xFD;//給定時(shí)器1高八位初始化初值TL1=0xFD;//給定時(shí)器1低八位初始化初值TR1=1;//開啟定時(shí)器1ES=1;//開啟串口通信功能REN=1;//開啟接收中斷標(biāo)志EA=1;//總中斷開啟ControlCar(1);//將小車置于前進(jìn)狀態(tài)ShowPort=LedShowData[0];//數(shù)碼管顯示數(shù)字0while(1)//程序主循環(huán){while(LedFlash--)//閃燈總延時(shí){if(RL1==0)//判斷光敏電阻的狀態(tài) {RightLed=1;//將前方右側(cè)指示燈點(diǎn)亮 LeftLed=1;//將前方左側(cè)指示燈點(diǎn)亮 } else//在光敏電阻為不通的狀態(tài)下 { RightLed=0;//將前方右側(cè)指示燈熄滅 LeftLed=0;//將前方左側(cè)指示燈熄滅 } if(IRIN==0)//判斷延時(shí)期間是否有紅外信號(hào)輸入{ExeFlag=1;//將可執(zhí)行標(biāo)志位置1} if(S1==0)//判斷是否有S1按下 { ControlCar(8);//將小車置于停頓狀態(tài) RunFlag=1;//改變小車運(yùn)行狀態(tài)標(biāo)志位 S1State=!S1State;//改變S1按鍵標(biāo)志位 gotoNextRun;//跳轉(zhuǎn)到NextRun標(biāo)簽 } if(S2==0)//判斷是否有S2按下 { ControlCar(1);//將小車置于前進(jìn)狀態(tài) RunFlag=0;//改變小車運(yùn)行狀態(tài)標(biāo)志位 S2State=!S2State;//改變S2按鍵標(biāo)志位 gotoNextRun;//跳轉(zhuǎn)到NextRun標(biāo)簽 } FontIRState=FontIR;//前方紅外指示燈顯示正前方紅外探頭狀態(tài) L

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論