無線控制、循跡、避障、遙控智能小車-設(shè)計(jì)方案_第1頁
無線控制、循跡、避障、遙控智能小車-設(shè)計(jì)方案_第2頁
無線控制、循跡、避障、遙控智能小車-設(shè)計(jì)方案_第3頁
無線控制、循跡、避障、遙控智能小車-設(shè)計(jì)方案_第4頁
無線控制、循跡、避障、遙控智能小車-設(shè)計(jì)方案_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于51單片機(jī)多模式智能小車的研究與制作畢業(yè)設(shè)計(jì)(論文)課 題 名 稱 基于51單片機(jī)多模式智能小車研究與制作 學(xué) 生 姓 名 劉 川 學(xué) 號(hào) 1131204223 系、年級(jí)專業(yè) 電氣工程學(xué)院電子信息工程技術(shù)112班 指 導(dǎo) 教 師 伍小兵 職 稱 學(xué) 生 2012年5月13日目錄一、 前文摘要.3二、 作品介紹.5三、 工作原理.6四、 作品功能及特色.8五、 作品結(jié)構(gòu).81、 硬件部分.8(1):STC12C5A60S2單片機(jī)最小系統(tǒng).8(2):整機(jī)供電電源電壓模塊11(3):TC9012紅外遙控模塊.12(4):安卓手機(jī)藍(lán)牙模塊.16(5):電機(jī)驅(qū)動(dòng)模塊.17(6):ST188紅外循跡模

2、塊.202、 軟件部分.12(1):ST188紅外循跡程控制序流程圖.23(2):TC9012紅外遙控程序控制流程圖.34(3):安卓手機(jī)程序控制流程圖.48(4):整機(jī)工作程序流程圖57六、 參考文獻(xiàn).80七、 實(shí)物展示82摘要當(dāng)今社會(huì),科學(xué)技術(shù)日新月異,時(shí)代前進(jìn)的步伐越邁越寬,應(yīng)用自動(dòng)化設(shè)備,計(jì)算機(jī)處理,現(xiàn)代化通訊,數(shù)字化通訊,數(shù)字化信息,現(xiàn)代化顯示設(shè)備等高新技術(shù)而建立的現(xiàn)代化智能,監(jiān)控等系統(tǒng)已經(jīng)得到充分的發(fā)展與應(yīng)用,智能機(jī)器人也就應(yīng)運(yùn)而生。智能作為現(xiàn)代的新發(fā)展,是以后的發(fā)展方向,他可以按照預(yù)先設(shè)定的模式在一個(gè)環(huán)境里自動(dòng)的運(yùn)作,不需要人為的管理,可應(yīng)用于科學(xué)勘探等等的用途。智能小車就是其中

3、的一個(gè)體現(xiàn)。本次設(shè)計(jì)的多模式智能小車,支持紅外循跡、紅外遙控控制,安卓機(jī)藍(lán)牙控制。采用STC12C5A60S2單片機(jī)作為小車的檢測(cè)和控制核心;采用ST188紅外對(duì)管對(duì)路面進(jìn)行道路檢測(cè),從而把反饋到的信號(hào)送單片機(jī),使單片機(jī)按照預(yù)定的工作模式控制小車在道路上按照預(yù)定的速度行駛;此外可以使用TC9012紅外遙控和安卓手機(jī)對(duì)小車進(jìn)行控制,時(shí)時(shí)刻刻做到讓小車前進(jìn)、后退、左拐、右拐。本設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,較容易實(shí)現(xiàn),但具有高度的智能化、人性化,一定程度體現(xiàn)了智能。關(guān)鍵詞:智能車、STC12C5A60S2、單片機(jī) 、TC9012、藍(lán)牙、安卓手機(jī) ABSTRACTSmart as a new development

4、 of the modern, is the development direction of later, he can according to the preset mode automatically in an environment of operation, without the need of human management, can be used in scientific exploration and so on. Smart car is one of the embodiment. The multi-mode intelligent car design, s

5、upport infrared tracking and infrared remote control, bluetooth android machine control. USES STC12C5A60S2 single chip microcomputer as the car detection and control core; Using ST188 infrared tube road tests of pavement, so as to send feedback to the signal of single chip microcomputer, make SCM ac

6、cording to the scheduled work mode to control the car on the road in accordance with a predetermined speed; Also can use TC9012 infrared remote control and android mobile phone to control the car, do forward, backward, turn left, turn right. This design has simple structure and is easy to implement,

7、 but are highly intelligent, humane, to a certain extent reflects the intelligence.Keywords: intelligent car, STC12C5A60S2, microcontroller, TC9012, bluetooth, android mobile phones二、作品介紹 本次利用STC5A60S2單片機(jī)設(shè)計(jì)一款多模式的智能小車,該小車可以支持3種不同的工作模式:1、 智能循跡模式2、 紅外遙控模式3、 藍(lán)牙控制模式 為了讓小車能夠平穩(wěn)的在路道上行駛,本次采用的是四驅(qū)的,其三驅(qū)和四驅(qū)的區(qū)別是很

8、大的,我們可以從平穩(wěn)角度和小車帶負(fù)載能力都可以感覺的。循跡部分主要是給定一條路線,讓小車沿著該路線行駛,這時(shí)候就不需要人為的去對(duì)小車進(jìn)行控制,也可以讓小車沿著相反方向上行駛;紅外遙控部分主要是采用紅外線的編碼和解碼的原理去進(jìn)行控制,利用TC9012紅外一體化接收頭進(jìn)行對(duì)紅外遙控板發(fā)送過來的信號(hào)進(jìn)行采用,然后利用STC12C5A60S2單片機(jī)對(duì)紅外接收頭接收到的信號(hào)進(jìn)行解碼。從而達(dá)到了小車的前進(jìn)、后退、左拐、右拐;安卓手機(jī)控制利用手機(jī)上的藍(lán)牙和小車上的藍(lán)牙進(jìn)行匹配,然后傳送AT指令去控制小車的前進(jìn)、后退、左拐、右拐。 以上的3種模式主要是控制部分,驅(qū)動(dòng)部分我們采用的是2片L298N,通過STC1

9、2C5A60S2單片機(jī)產(chǎn)生PWM脈沖信號(hào)來控制小車的轉(zhuǎn)速和方向,能夠讓小車在規(guī)定的路線上行駛,時(shí)刻的聽從自己的控制。三、工作原理本次的多模式智能小車主要由穩(wěn)壓電源模塊、電機(jī)驅(qū)動(dòng)模塊、智能循跡模塊、紅外遙控模塊、藍(lán)牙控制模塊以及單片機(jī)最小系統(tǒng)模塊組成。系統(tǒng)框圖如圖一所示。循跡主控系統(tǒng)電源模塊紅外藍(lán)牙電機(jī)驅(qū)動(dòng)下面簡(jiǎn)要的描述一下給種模式工作原理:首先我們是通過安卓手機(jī)對(duì)小車進(jìn)行模式切換的,循跡模式、紅外模式、藍(lán)牙模式我們可以任意的切換,每當(dāng)我們切換到相應(yīng)的工作模式的時(shí)候相應(yīng)的LED指示燈就會(huì)被點(diǎn)亮,這樣更人性化,切換和手機(jī)控制面板如下圖所示:循跡模塊:主要采用的是ST188紅外對(duì)管,對(duì)路面上的黑白線

10、進(jìn)行采集、比較,然后將采集到的信號(hào)送給單片機(jī)進(jìn)行判斷,最后由單片機(jī)產(chǎn)生PWM信號(hào)去控制4個(gè)電機(jī)的差速,從而完成了智能循跡功能。紅外模塊:主要采用的是TC9012紅外一體化接收頭,首先對(duì)遙控板上所有的按鍵進(jìn)行解碼,然后將所有的碼元存入到單片機(jī)里面,通過編程將某某按鍵設(shè)置為什么功能,執(zhí)行什么動(dòng)作,來控制小車怎么行駛,這樣就完成了紅外遙控控制功能。藍(lán)牙模塊:主要采用的是HC-06藍(lán)牙模塊,與單片機(jī)的串口P3.0和P3.1相連接,安卓手機(jī)與小車上的藍(lán)牙進(jìn)行通訊時(shí),我們就需要在我們自己的安卓手機(jī)上安裝一個(gè)控制終端機(jī),可以設(shè)置按什么鍵完成什么動(dòng)作,什么小車的啟動(dòng)、左拐、右拐、前進(jìn)、后退、停止等功能。四、作

11、品功能及特色 本作品的主要功能: 1、能實(shí)現(xiàn)智能循跡功能; 2、能支持紅外遙控功能;3、能支持安卓手機(jī)控制功能;4、控制簡(jiǎn)單;5、可靠性高;特色:1、成本低廉;2、綜合性比較強(qiáng),芯片利用度高;3、操作簡(jiǎn)單、經(jīng)改造有實(shí)用價(jià)值;五、作品結(jié)構(gòu) 1、硬件部分(1):STC12C5A60S2單片機(jī)最小系統(tǒng)STC12C5A60S2單片就是深圳宏晶科技有限公司的典型性單片機(jī)產(chǎn)品,采用了增強(qiáng)型8051內(nèi)核,片內(nèi)集成了60KB程序Flash、1K數(shù)據(jù)Flash(EEPROM)、1280字節(jié)RAM、2個(gè)16定時(shí)器、44根I/O、2個(gè)全雙工異步串行口(UART)、高速同步通訊端口(SPI)、8通道10位ADC、2通

12、道PWM/可編程計(jì)數(shù)器陣列/捕獲/比較單元(PWM/PCA/CCU)、MAX810專用復(fù)位電路和硬件看門狗資源。STC12C5A60S2指令系統(tǒng)完全兼容8051單片機(jī),并具有在系統(tǒng)可編程(ISP)功能和在系統(tǒng)調(diào)試(ISD)功能??梢允∪r(jià)格較高的專用編程器,開發(fā)環(huán)境的搭建非常容易。接下來研究下STC12C5A60S2單片機(jī)的特點(diǎn): :增強(qiáng)型8051內(nèi)核,先進(jìn)的指令集結(jié)構(gòu),兼容普通8051單片機(jī)的指令集,有硬件乘法器/除法指令。:高速度,1個(gè)時(shí)鐘/機(jī)器周期,速度比普通8051單片機(jī)塊812倍,可用低頻晶振,大幅度降低EMI.:片內(nèi)集成60KB的Flash程序存儲(chǔ)器,擦寫次數(shù)10萬次以上,并且有較

13、高的加密性,無法解密。:片內(nèi)集成1280字節(jié)數(shù)據(jù)存儲(chǔ)器(RAM).:芯片內(nèi)EEPROM功能,擦寫次數(shù)10萬次以上。:最多可以有44個(gè)I/O??稍O(shè)置4種模式準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,輸入/高阻,開漏。:8通道10位高速ADC,速度可達(dá)25萬次/秒。:2通道PWM/可編程計(jì)數(shù)器陳列/捕獲/比較單元(PWM/PCA/CCU).:2個(gè)16位定時(shí)器,兼容普通8051單片機(jī)的定時(shí)器T0/T1,2路PCA也作為2個(gè)16位定時(shí)器使用。:內(nèi)部集成硬件看門狗(WDT)。:超強(qiáng)的抗干擾能力:具有ESD保護(hù)功能,可以抵抗2萬伏的靜電干擾。:可編程時(shí)鐘輸出功能,T0在P3.4輸出時(shí)鐘,T1在P3.5輸出時(shí)鐘,BR

14、T在P1.0輸出時(shí)鐘。實(shí)物圖如下所示:最小系統(tǒng)如下所示:(2):整機(jī)供電電源電壓模塊電源模塊采用的是三端穩(wěn)壓集成芯片,輸入電壓為7.8V;由于系統(tǒng)的工作電壓為5V,故采用LM7805。接下來研究下LM7805穩(wěn)壓芯片的特點(diǎn):7805三端穩(wěn)壓集成電路,電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路有正負(fù)電壓輸出的78x× 系列和負(fù)電壓輸出的79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子象是普通的三極管,TO- 220 的標(biāo)準(zhǔn)封裝,也有9013樣子的TO-92封裝。用78系列三端穩(wěn)壓IC來組成穩(wěn)壓電源所需的外圍元

15、件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價(jià)格便宜。該系列集成穩(wěn)壓IC型號(hào)中的78后面的數(shù)字代表該三端集成穩(wěn)壓電路的輸出電壓,如7805表示輸出電壓為正5V,因?yàn)槿斯潭煞€(wěn)壓電路的使用方便,電子制作中經(jīng)常采用。實(shí)物圖如下所示:電路原理圖如下所示:(3):TC9012紅外遙控模塊本次紅外遙控控制采用的是TC9012,TC9012是一塊用于東芝系列紅外遙控系統(tǒng)中的專用發(fā)射集成電路,采用CMOS工藝制造。它可外接32個(gè)按鍵,提供8種用戶編碼,另外還具有3種雙重按鍵功能。TC9012的管腳設(shè)置和外圍應(yīng)用線路都進(jìn)行了高度優(yōu)化,以配合PCB的布圖和低成本的要求。接下來研

16、究下TC9012紅外發(fā)射器的特點(diǎn):低壓CMOS工藝制造:低功耗超小靜態(tài)電流:低工作電壓(VDD=2.05.0V):32+3條指令碼:8種用戶編碼可選擇:TSOP-20、SOP20、COB可選的封裝形式下面看看TC9012編碼方式: TC9012的一幀數(shù)據(jù)中含有32位碼,包括兩個(gè)8位用戶碼,8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼及最后位的同步位。引導(dǎo)碼由4.5ms的載波和4.5ms的載波關(guān)斷波形所構(gòu)成,以作為用戶碼、數(shù)據(jù)碼以及他們的反碼。同步位(SY)是標(biāo)志最后一位編碼是“0”或“1”的標(biāo)示位,它只有0.56ms的有載波信號(hào)構(gòu)成。TC9012的發(fā)射碼的格式如下:遙控器的輸出波形如下所示:長(zhǎng)按鍵發(fā)碼示意圖:發(fā)碼

17、數(shù)據(jù)參數(shù)示意圖:“1”和“0”的區(qū)分取決于脈沖之間的時(shí)間,稱之為脈沖位置調(diào)制方式(PPM)。發(fā)射端輸出高電平下圖的載波波形發(fā)送,頻率:38KHZ;占空比:1/3.紅外發(fā)射實(shí)物圖如下所示:紅外接收實(shí)物圖如下所示:電路原理圖如下所示:(4):安卓手機(jī)藍(lán)牙模塊藍(lán)牙的創(chuàng)始人是瑞典愛立信公司,藍(lán)牙技術(shù)是一種無線數(shù)據(jù)與語音通信的開放性全球規(guī)范,它以低成本的近距離無線連接為基礎(chǔ),為固定與移動(dòng)設(shè)備通信環(huán)境建立一個(gè)特別連接。手機(jī)之間通過藍(lán)牙實(shí)現(xiàn)數(shù)據(jù)共享已成為常理,將手機(jī)變身為遙控器為人們的生活帶來無限方便。遙控小車在工業(yè)、國防、科研等領(lǐng)域應(yīng)用越來越廣泛,例如說:消防遙控小車、探測(cè)小車等。使用安卓手機(jī)藍(lán)牙通信使小

18、車啟動(dòng)、前行、倒退、左轉(zhuǎn)、右轉(zhuǎn)和停止等功能。實(shí)物圖如下所示: 手機(jī)終端控制圖如下所示:(5):電機(jī)驅(qū)動(dòng)模塊小車電機(jī)采用的專用芯片為L(zhǎng)298N,通過單片機(jī)產(chǎn)生PWM脈沖信號(hào)是控制L298N的使能端,控制電機(jī)的轉(zhuǎn)速;通過L298N的輸出電平來控制電機(jī)的正反轉(zhuǎn)。接下來研究下L298N電機(jī)驅(qū)動(dòng)芯片的特點(diǎn):L298專用電機(jī)驅(qū)動(dòng)芯片,L298N內(nèi)部集成了H橋式驅(qū)動(dòng)電路,通過單片機(jī)給予L298N電路PWM信號(hào)來控制小車的速度,控制運(yùn)輸車的前進(jìn)(使電動(dòng)機(jī)正轉(zhuǎn))與停止(使電動(dòng)機(jī)反轉(zhuǎn))。 電機(jī)驅(qū)動(dòng)芯片L298N內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器

19、,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。其引腳排列如圖1中U4所示,1腳和15腳可單獨(dú)引出連接電流采樣電阻器,形成電流傳感信號(hào)。L298可驅(qū)動(dòng)2個(gè)電機(jī),OUT1、OUT2和OUT3、OUT4之間分別接2個(gè)電動(dòng)機(jī)。5、7、10、12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機(jī)的停轉(zhuǎn)。也利用單片機(jī)產(chǎn)生PWM信號(hào)接到ENA,ENB端子,對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié)實(shí)物圖如下所示:直流電機(jī)控制實(shí)例圖如下所示:電路原理圖如下所示:(6):ST188紅外循跡模塊 本次設(shè)計(jì)的循跡模塊主要是采用的是ST188。市場(chǎng)上用于紅外探測(cè)法的器件較多,可以利用反射式傳感器外接簡(jiǎn)單

20、電路自制探頭,也可以使用結(jié)構(gòu)簡(jiǎn)單、工作性能可靠的集成式紅外探頭。ST系列集成紅外探頭價(jià)格便宜、體積小、使用方便、性能可靠、用途廣泛,所以該系統(tǒng)中最終選擇了ST188反射傳感器作為紅外光的發(fā)射和接收器件,其內(nèi)部結(jié)構(gòu)和外接電路均較為簡(jiǎn)單ST188采用高發(fā)射功率紅外光、電二極管和高靈敏光電晶體管組成,采用非接觸式檢測(cè)方式。ST188的檢測(cè)距離很小,一般為815毫米,因?yàn)?毫米以下是它的檢測(cè)盲區(qū),而大于15毫米則很容易受干擾。筆者經(jīng)過多次測(cè)試、比較,發(fā)現(xiàn)把傳感器安裝在距離檢測(cè)物表面10毫米時(shí),檢測(cè)效果最好。本部分采用了傳統(tǒng)的對(duì)光控制,在運(yùn)輸車的底座的相應(yīng)位置安裝對(duì)光裝置來控制小車在行駛過程中采集信號(hào)并

21、經(jīng)CPU進(jìn)行信息處理判斷處于停止、前進(jìn)、拐彎等。主要利用ST188檢測(cè)循跡線,輸出接收到的信號(hào)給LM324 ,接收電壓與比較電壓比較后,輸出信號(hào)變?yōu)楦叩碗娖?,再輸入到單片機(jī)中,用以判定是否檢測(cè)到循跡線。我們采用紅外探測(cè)法,即利用紅外線在不同顏色的物體表面具有不同的反射性質(zhì)的特點(diǎn),在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機(jī)就是否收到反射回來的紅外光為依據(jù)來確定小車的行走路線。正確選擇檢測(cè)方法和傳感器件是決定循跡效果的重要因素,而且正確的器件安裝方法也是循跡電路好壞的

22、一個(gè)重要因素。從簡(jiǎn)單、方便、可靠等角度出發(fā),同時(shí)在底盤裝設(shè)4個(gè)紅外探測(cè)頭,進(jìn)行兩級(jí)方向糾正控制,將大大提高其循跡的可靠性,具體位置分布下圖所示。紅外探頭的分布圖圖中循跡傳感器全部在一條直線上。其中X1與Y1為第一級(jí)方向控制傳感器,X2與Y2為第二級(jí)方向控制傳感器,并且黑線同一邊的兩個(gè)傳感器之間的寬度不得大于黑線的寬度。小車前進(jìn)時(shí),始終保持(如圖3中所示的行走軌跡黑線)在X1和Y1這兩個(gè)第一級(jí)傳感器之間,當(dāng)小車偏離黑線時(shí),第一級(jí)傳感器就能檢測(cè)到黑線,把檢測(cè)的信號(hào)送給小車的處理、控制系統(tǒng),控制系統(tǒng)發(fā)出信號(hào)對(duì)小車軌跡予以糾正。第二級(jí)方向探測(cè)器實(shí)際是第一級(jí)的后備保護(hù),它的存在是考慮到小車由于慣性過大會(huì)

23、依舊偏離軌道,再次對(duì)小車的運(yùn)動(dòng)進(jìn)行糾正,從而提高了小車循跡的可靠性。實(shí)物圖如下所示: 電路原理圖如下所示: 2、軟件部分(1):ST188紅外循跡程控制序流程圖及程序代碼 /*測(cè)試:成功*/ /*智能循跡小車c語言代碼*/#include<reg52.h>/*宏定義*/#define uint unsigned int#define uchar unsigned char/*全局變量定義*/uchar Right_Pwm_Num; /右輪脈沖變量uchar Left_Pwm_Num; /左輪脈沖變量uchar flag_Buzzer;/*特殊功能寄存器定義*/sfr p0=0x80

24、;sfr p1=0x90;sfr p2=0xA0;sfr p3=0xB0;/*蜂鳴器定義*/sbit Buzzer=p26;/*電機(jī)引腳控制線定義*/sbit Motor_Input_1=p20; sbit Motor_Input_2=p21; sbit Motor_Input_3=p22;sbit Motor_Input_4=p23;sbit Motor_ENA=p24;sbit Motor_ENB=p25;/*循跡輸入引腳定義*/sbit Tracking_Input_1=p00;/sbit Tracking_Input_2=p01;/sbit Tracking_Input_3=p02;/

25、sbit Tracking_Input_4=p03;/*操作按鍵定義*/sbit Motor_start=p30;sbit Motor_stop= p31;/*分支函數(shù)的聲明*/void init();void keyscan();void Car_line();void Motor_Stop();void Motor_Start();void Buzzer_sound();void Car_Left_bend(); void Car_Right_bend();void delay_1ms(uint z);void Tracking_Collect();/*主函數(shù)*/void main()in

26、it();Motor_ENA=0;Motor_ENB=0;while(1)keyscan(); Tracking_Collect();Buzzer_sound();/*定時(shí)器0初始化*/void init()TMOD=0x10;TH1=0xfc; /定時(shí)時(shí)間為1ms,初值為65536-921,時(shí)鐘為11.0592mhzTL1=0x67;EA=1;ET1=1;/*循跡采集判斷與速度處理*/void Tracking_Collect() /循跡采集函數(shù)uchar Tracking_Collect; Tracking_Collect=P0&0x0f;switch(Tracking_Colle

27、ct)case 0: /00 00Right_Pwm_Num=70; /右輪(直線前進(jìn)) Left_Pwm_Num=70; /左輪Car_line();break;case 1: /00 01Left_Pwm_Num=30; /左輪(大左轉(zhuǎn))Right_Pwm_Num=70; /右輪Car_Right_bend();break;case 2: /00 10Left_Pwm_Num=65;/左輪(小左轉(zhuǎn))Right_Pwm_Num=70;/右輪Car_line();break;case 3:/00 11Left_Pwm_Num=59;/左輪(中左轉(zhuǎn))Right_Pwm_Num=60; /右輪Ca

28、r_Right_bend();break;case 4:/01 00Right_Pwm_Num=65; /右輪(小右轉(zhuǎn))Left_Pwm_Num=70;/左輪Car_line();break;case 8:/10 00Right_Pwm_Num=30; /右輪(大右轉(zhuǎn))Left_Pwm_Num=70;/左輪Car_Left_bend();break;case 12:/11 00Right_Pwm_Num=59;/右輪(中右轉(zhuǎn))Left_Pwm_Num=60;/左輪Car_Left_bend();break;case 15: /11 11/停車flag_Buzzer=1;Motor_Stop()

29、;break;default:break;/*電機(jī)開始*/void Motor_Start()Motor_ENA=1;Motor_ENB=1; TR1=1;/*電機(jī)停止*/void Motor_Stop()Motor_ENA=0;Motor_ENB=0;TR1=0;/*功能按鍵掃描函數(shù)*/void keyscan()if(Motor_start=0)delay_1ms(5);if(Motor_start=0)Motor_Start();if(Motor_stop=0)delay_1ms(5);if(Motor_stop=0) Motor_Stop();/*以下就是小車循跡算法*/*小車直線前進(jìn)

30、*/void Car_line()Motor_Input_1=0;Motor_Input_2=1;Motor_Input_3=0;Motor_Input_4=1;/*小車向右(中拐彎)大拐彎*/void Car_Right_bend()Motor_Input_1=0;Motor_Input_2=1;Motor_Input_3=1;Motor_Input_4=0;/*小車向左(中拐彎)大拐彎*/void Car_Left_bend()Motor_Input_1=1;Motor_Input_2=0;Motor_Input_3=0;Motor_Input_4=1;/*蜂鳴器函數(shù)*/void Buzz

31、er_sound()unsigned char Buzzer_num;if(flag_Buzzer=1)flag_Buzzer=0;for(Buzzer_num=0;Buzzer_num<4;Buzzer_num+) Buzzer=0;delay_1ms(2);Buzzer=1;/*中斷處理函數(shù)*/void T0_time() interrupt 3uint t0_count;TH1=0xfc;TL1=0x67;t0_count+;if(t0_count<Right_Pwm_Num) Motor_ENA=1;elseMotor_ENA=0;if(t0_count<Left_P

32、wm_Num) Motor_ENB=1;else Motor_ENB=0;if(t0_count>100)t0_count=0;/*軟件延時(shí)zms*/void delay_1ms(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);(2):TC9012紅外遙控程序控制流程圖及程序代碼 /*測(cè)試:成功*/ /*智能小車c語言程序代碼*/ /*CH-:00FF45BA CH: 00FF46B9 CH+:00FF47B8*/ /*|>>:00FF44BB <<|:00FF40BF <|:00FF43BC*/

33、* -:00FF07F8 +: 00FF15EA EQ:00FF09F6*/* 0:00FF16E9 100+:00FF19E6 200+:00FF0BF2*/* 1:00FF0CF3 2:00FF18E7 3:00FF5EA1*/* 4:00FF08F7 5:00FF1CE3 6:00FF5AA5*/* 7:00FF42BD 8:00FF52AD 9:00FF4AB5*/#include <stc12c5a.h>/*宏定義*/#define uint unsigned int #define uchar unsigned char /*特殊功能寄存器定義*/sfr p0=0x80

34、;sfr p1=0x90;sfr p2=0xA0;sfr p3=0xB0;/*全局變量定義*/uchar Right_Pwm_Num; /右輪脈沖變量uchar Left_Pwm_Num; /左輪脈沖變量long bianma_kaishi,bianma_tingzhi,bianma_qianjin,bianma_houtui;long bianma_zuo,bianma_you,bianma_add;uchar irtime;uchar startflag;uchar irdata33;uchar bitnum;uchar irreceok;uchar ircode4;uchar irpro

35、sok;/*LED指示燈定義,用于調(diào)試TC9012紅外使用*/sbit LED1=P34;sbit LED2=P35;sbit LED3=P36;sbit LED4=P37;/*電機(jī)引腳控制線定義*/sbit Motor_Input_1=p20; sbit Motor_Input_2=p21; sbit Motor_Input_3=p22;sbit Motor_Input_4=p23;sbit Motor_ENA=p24;sbit Motor_ENB=p25;/*TC9012紅外遙控編碼控制定義,定義某某按鍵為什么功能*/開始紅外編碼【CH-】/啟動(dòng)功能uchar bianma_start_1

36、=0xBA; / *1uchar bianma_start_2=0x45; / *256uchar bianma_start_3=0xFF; / *65536uchar bianma_start_4=0x00; / *65536*65536/停止紅外編碼【CH+】/停止功能uchar bianma_stop_1=0xB8; / *1uchar bianma_stop_2=0x47; / *256uchar bianma_stop_3=0xFF; / *65536uchar bianma_stop_4=0x00; / *65536*65536/前進(jìn)紅外編碼【2】/前進(jìn)功能uchar bianma

37、_1=0xE7; / *1uchar bianma_2=0x18; / *256uchar bianma_3=0xFF; / *65536uchar bianma_4=0x00; / *65536*65536/后退紅外編碼【8】/后退功能uchar bianma_5=0xAD; / *1uchar bianma_6=0x52; / *256uchar bianma_7=0xFF; / *65536uchar bianma_8=0x00; / *65536*65536/左紅外編碼【4】/左拐功能uchar bianma_9=0xF7; / *1uchar bianma_10=0x08; / *2

38、56uchar bianma_11=0xFF; / *65536uchar bianma_12=0x00; / *65536*65536/右紅外編碼【6】/右拐功能uchar bianma_13=0xA5; / *1uchar bianma_14=0x5A; / *256uchar bianma_15=0xFF; / *65536uchar bianma_16=0x00; / *65536*65536/*函數(shù)聲明*/void irpros(); void int0init();void timerinit(); void Motor_Stop();void IR_dispose();void

39、Motor_Start();void delay_1ms(uint z);/*主函數(shù)*/void main()timerinit();int0init();Motor_ENA=0;Motor_ENB=0;while(1) if(irreceok)irpros();irreceok=0;if(irprosok)irprosok=0;IR_dispose(); /TC9012紅外遙控處理函數(shù)調(diào)用/*定時(shí)器0和定時(shí)器1初始化*/void timerinit()TMOD=0x12;TH0=0x00;TL0=0x00;TH1=0xfc; /定時(shí)時(shí)間為1ms,初值為65536-921,時(shí)鐘為11.0592

40、mhzTL1=0x67;EA=1; ET0=1;ET1=1;TR0=1;/*外部中斷0初始化*/void int0init()IT0=1;EX0=1;EA=1;/*紅外遙控解碼,并將其放在ircode【】數(shù)組里面*/void irpros()uchar k,i,j;uchar value;k=1;for(j=0;j<4;j+)for(i=0;i<8;i+)value=value>>1; /7if(irdatak>6) /8value=value | 0x80;k+;ircodej=value;irprosok=1; /*TC9012紅外遙控處理*/void IR_

41、dispose()bianma_add=ircode3+ircode2*256+ircode1*65536+ircode0*65536*65536;bianma_kaishi=bianma_start_1+bianma_start_2*256+bianma_start_3*65536+bianma_start_4*65536*65536;bianma_tingzhi=bianma_stop_1+bianma_stop_2*256+bianma_stop_3*65536+bianma_stop_4*65536*65536;bianma_qianjin=bianma_1+bianma_2*256+

42、bianma_3*65536+bianma_4*65536*65536;bianma_houtui=bianma_5+bianma_6*256+bianma_7*65536+bianma_8*65536*65536;bianma_zuo=bianma_9+bianma_10*256+bianma_11*65536+bianma_12*65536*65536;bianma_you=bianma_13+bianma_14*256+bianma_15*65536+bianma_16*65536*65536;if(bianma_add=bianma_kaishi)Motor_start(); /啟動(dòng)功

43、能else if(bianma_add=bianma_tingzhi)Motor_stop(); /停止功能else if(bianma_add=bianma_qianjin) /前進(jìn)功能Right_Pwm_Num=70; Left_Pwm_Num=70; Motor_Input_1=0;Motor_Input_2=1;Motor_Input_3=0;Motor_Input_4=1;else if(bianma_add=bianma_houtui) /后退功能Right_Pwm_Num=70; Left_Pwm_Num=70;Motor_Input_1=1;Motor_Input_2=0;Mo

44、tor_Input_3=1;Motor_Input_4=0;else if(bianma_add=bianma_zuo) /左拐功能Right_Pwm_Num=60; Left_Pwm_Num=20;Motor_Input_1=0;Motor_Input_2=1;Motor_Input_3=0;Motor_Input_4=1;else if (bianma_add=bianma_you) /右拐功能Right_Pwm_Num=20; Left_Pwm_Num=60;Motor_Input_1=0;Motor_Input_2=1;Motor_Input_3=0;Motor_Input_4=1;/

45、*電機(jī)啟動(dòng)函數(shù)*/void Motor_Start()Motor_ENA=1;Motor_ENB=1;TR1=1;/*電機(jī)停止函數(shù)*/void Motor_Stop()Motor_ENA=0;Motor_ENB=0;TR1=0;/*定時(shí)器0中斷處理函數(shù)【TC9012紅外遙控】*/void timer0() interrupt 1irtime+; /255/*外部中斷0處理函數(shù)*/void init0() interrupt 0if(startflag)if(irtime>32) /檢查引導(dǎo)碼bitnum=0;irdatabitnum=irtime;irtime=0;bitnum+;if(

46、bitnum=33)bitnum=0;irreceok=1;elsestartflag=1;irtime=0;/*定時(shí)器1中斷處理函數(shù)【電機(jī)的PWM產(chǎn)生】*/void T1_time() interrupt 3uint t0_count;TH1=0xfc;TL1=0x67;t0_count+;if(t0_count<Right_Pwm_Num) Motor_ENA=1;elseMotor_ENA=0;if(t0_count<Left_Pwm_Num) Motor_ENB=1;else Motor_ENB=0;if(t0_count>100)t0_count=0;/*延時(shí)函數(shù)*

47、/void delay_1ms(uint z) /延時(shí)zmsuint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);(3):安卓手機(jī)程序控制流程圖及程序代碼 /*測(cè)試:成功*/*智能小車藍(lán)牙程序*/#include"stc12c5a.h"/*特殊功能寄存器定義*/sfr p0=0x80;sfr p1=0x90;sfr p2=0xA0;sfr p3=0xB0;/*宏定義定義*/#define uchar unsigned char#define uint unsigned int/*電機(jī)引腳控制線定義*/sbit Motor_Input_1=p20; sbit Motor_Input_2=p21; sbit Motor_Input_3=p22;sbit Motor_Input_4=p23;sbit Motor_ENA=p24;sbit Motor_ENB=p25;/*全局變量定義*/uchar aa;uchar Right

溫馨提示

  • 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)論