基于單片機(jī)的WIFI智能小車設(shè)計(jì)
《基于單片機(jī)的WIFI智能小車設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的WIFI智能小車設(shè)計(jì)(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、企業(yè)實(shí)踐報(bào)告 ( 2016-- 2017年度第1學(xué)期) 基于51單片機(jī)的WIFI遙控小車設(shè)計(jì) 專業(yè) 學(xué)生姓名 ** 班級(jí) * 學(xué)號(hào) *** 指導(dǎo)教師 完成日期 2016.12.* 目錄 第1章 緒論 1 第2章 方案論證及選擇 2 2.1 系統(tǒng)方案選擇 2 2.2 總體設(shè)計(jì)方案 3 2.2.1 整機(jī)系統(tǒng) 3 2.1.2 整機(jī)工作原理 3 第3章 硬件系統(tǒng)設(shè)計(jì) 5 3.1 路由器 5 3.2 ESP8266WIFI模塊 5 3.2.1 ESP8266WIFI模塊引腳功能 6 3.3
2、 STC89C52RC單片機(jī) 7 3.3.1 STC89C52RC單片機(jī)引腳功能 8 3.3.2 單片機(jī)的外圍電路 10 3.4 L293D電機(jī)驅(qū)動(dòng)模塊 11 3.4.1 L293D引腳功能及原理圖 11 3.5 3.3V降/穩(wěn)壓模塊 13 3.5.1 降/穩(wěn)壓模塊的原理圖 13 3.6 5V和3.3V串口電平轉(zhuǎn)換模塊 14 3.6.1 引腳功能和原理圖 14 第4章 軟件系統(tǒng)設(shè)計(jì) 16 4.1 軟件開(kāi)發(fā)環(huán)境 16 4.1.1 Android的APP軟件的開(kāi)發(fā) 16 4.1.2 單片機(jī)程序開(kāi)發(fā)環(huán)境 Keil 17 4.2 程序流程圖 17 4.2.1 主程序流程圖
3、17 4.2.2 串口中斷接收流程圖 19 4.2.3 串口發(fā)送指令流程圖 20 第5章 設(shè)備調(diào)試 22 5.1 系統(tǒng)調(diào)試 22 5.2 硬件設(shè)備調(diào)試 22 5.2.1 ESP8266串口WIFI的連線 23 5.2.2 STC89C52RC單片機(jī)連線 23 5.2.3 單片機(jī)和WIFI模塊的連線 24 5.3 軟件調(diào)試 24 5.3.1 WIFI模塊的調(diào)試 24 5.3.2 單片機(jī)的調(diào)試 26 5.3.3 單片機(jī)和WIFI模塊的調(diào)試 27 心得體會(huì) 28 總結(jié) 29 參考文獻(xiàn) 30 附錄1 單片機(jī)程序 31 2 第1章 緒論 現(xiàn)在是一個(gè)智
4、能化的時(shí)代,各種智能化的設(shè)備正在逐步代替人為的操作。隨著汽車工業(yè)的迅速發(fā)展,關(guān)于智能汽車的研究也越來(lái)越受人們關(guān)注。全國(guó)電子大賽和省內(nèi)電子大賽幾乎每次都智能小車這方面的題目,全國(guó)各高校也都很重視該課題的研究。設(shè)計(jì)的WIFI智能小車能夠?qū)崿F(xiàn)自動(dòng)循跡,壁障功能,可程控行駛速度、電腦手機(jī)WIFI連接控制行駛及其他的控制方式。本系統(tǒng)能實(shí)現(xiàn)對(duì)小車的運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)控制。系統(tǒng)控制靈活、可靠、精度高、可滿足對(duì)系統(tǒng)的各項(xiàng)要求。本設(shè)計(jì)以STC89C52RC單片機(jī)為控制核心,利用ESP8266WIFI模塊和路由器接收和處理無(wú)線信號(hào),然后通過(guò)WIFI模塊和單片機(jī)之間的串口通信來(lái)傳遞信息,從而完成手機(jī)控制單片機(jī)的運(yùn)作。
5、通過(guò)對(duì)本小車的研究,我們可以初步構(gòu)建智能汽車的模型和理論基礎(chǔ)。對(duì)于智能汽車的研究,國(guó)內(nèi)外都有很大的成就,谷歌的無(wú)人駕駛汽車,已經(jīng)能夠在高速公路上安全行駛數(shù)千里,在高速行駛下都能有這么好的操控能力,無(wú)非是智能汽車領(lǐng)域的一座里程碑。 在智能家居系統(tǒng)研發(fā)方面,美國(guó)及一些歐洲國(guó)家一致處于領(lǐng)先地位,今年來(lái),以美國(guó)微軟公司及摩托羅拉公司等為首的一批國(guó)外知名企業(yè),先后躋身于智能家居系統(tǒng)的研發(fā)中。例如:微軟公司開(kāi)發(fā)的“夢(mèng)幻之家”、摩托羅拉公司開(kāi)發(fā)的“居所之門”IBM公司開(kāi)發(fā)的“家庭主任”等均已日趨成穩(wěn)定技術(shù)強(qiáng)占家居市場(chǎng)。此外,日韓等新國(guó)的龍頭企業(yè)紛紛致力于家居智能化的開(kāi)發(fā),對(duì)家居市場(chǎng)更是躍躍欲試。 本設(shè)計(jì)
6、選用的89C52單片機(jī)屬于MSC-51系列單片機(jī),由Intel公司開(kāi)發(fā),其結(jié)構(gòu)有8字節(jié)FLASH閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM , 32個(gè)I/O口線,3個(gè)16 位定時(shí)/計(jì)數(shù)器,一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89c52可降至O Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電上作模式??臻e方式停止CPU 的工作,但允許RAM,定時(shí)/計(jì)數(shù)器.串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM 中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。由于89C52的系統(tǒng)性能滿足系統(tǒng)數(shù)據(jù)采集及時(shí)間精度要求,而且產(chǎn)品產(chǎn)量豐富來(lái)源廣,應(yīng)用也很成熟,故
7、用來(lái)作為控制核心。新一代單片機(jī)為外部提供了相當(dāng)完善的總線結(jié)構(gòu),為系統(tǒng)的擴(kuò)展與配置打下了良好的基礎(chǔ)。本設(shè)計(jì)主要研究?jī)?nèi)容就是基于89C52設(shè)計(jì)一部WIFI智能小車,小車能夠?qū)崿F(xiàn)WIFI遙控的智能小車控制系統(tǒng)。 第2章 方案論證及選擇 2.1 系統(tǒng)方案選擇 方案1:自己首先學(xué)習(xí)相關(guān)知識(shí),理解單片機(jī)智能小車的原理以及WIFI模塊指令等。動(dòng)手設(shè)計(jì)出帶有WIFI模塊的單片機(jī)開(kāi)發(fā)板,在配購(gòu)好小車相關(guān)的材料后,組裝出小車模型。調(diào)試好WIFI模塊和單片機(jī)的硬件和軟件,然后用手機(jī)等終端設(shè)備通過(guò)路由器驅(qū)動(dòng)WIFI小車的運(yùn)動(dòng)等一系列指令。具體的如圖2-1所示。 下圖是關(guān)于方案1設(shè)計(jì)版圖構(gòu)想,如圖2-1所
8、示。 圖2-1 方案1設(shè)計(jì)圖 方案2:自己首先學(xué)習(xí)相關(guān)知識(shí),理解單片機(jī)智能小車的原理以及單片機(jī)和WIFI之間的通信方式,了解WIFI模塊的相關(guān)指令,以及單片機(jī)的串口傳輸?shù)姆绞?。然后利用已?jīng)完成有的單片機(jī)小車,通過(guò)在單片機(jī)小車上添加一個(gè)WIFI模塊和相關(guān)模塊來(lái)進(jìn)行改裝,然后自己通過(guò)設(shè)計(jì)編寫單片機(jī)和WIFI模塊之間串口通信的程序。利用這樣的方法來(lái)實(shí)現(xiàn)手機(jī)終端來(lái)通過(guò)路由器在無(wú)線傳輸?shù)姆绞綄?duì)單片機(jī)進(jìn)行控制,從而進(jìn)一步的控制小車的運(yùn)動(dòng)等一系列指令。具體的如圖2-2所示。 下圖是關(guān)于方案2設(shè)計(jì)版圖構(gòu)想,如圖2-2所示。 圖2-2 方案2設(shè)計(jì)圖 方案選擇:方案1和方案2涉及的相關(guān)知識(shí)大致相
9、同,兩種不同思路的選擇,所需要的材料也不同。介于我們對(duì)制作成本和材料考慮,我們小組選擇方案2,利用已有的單片機(jī)小車,對(duì)小車進(jìn)行改裝,在小車上加個(gè)WIFI模塊等一系列設(shè)備,實(shí)現(xiàn)手機(jī)等終端設(shè)備通過(guò)無(wú)線信號(hào)控制小車的運(yùn)動(dòng)。選擇方案2,我們認(rèn)為可以加強(qiáng)我們的動(dòng)手能力,能夠充分的學(xué)習(xí)和利用相關(guān)的專業(yè)知識(shí),達(dá)到綜合素質(zhì)的提升。 2.2 總體設(shè)計(jì)方案 基于單片機(jī)的WIFI智能小車主要由路由器、ESP8266WIFI模塊、STC89C52RC單片機(jī)控制模塊、L293D電機(jī)驅(qū)動(dòng)模塊、5V與3.3V串口電平轉(zhuǎn)換模塊和3.3V降/穩(wěn)壓模塊等主要結(jié)構(gòu)組成,其中還有一些次要設(shè)備,比如蜂鳴器,LED燈和數(shù)碼管等。
10、 2.2.1 整機(jī)系統(tǒng) 下圖是整機(jī)系統(tǒng)圖,是WIFI模塊和單片機(jī)之間通信的整體圖,如圖2-3所示。 圖2-3 整機(jī)系統(tǒng)圖 項(xiàng)目系統(tǒng)包括路由器、ESP8266串口WIFI模塊、STC89C52RC單片機(jī)、電機(jī)驅(qū)動(dòng)模塊、串口電平轉(zhuǎn)換模塊、5V電源、3.3v降/穩(wěn)壓模塊、電機(jī)驅(qū)動(dòng)模塊組成。如圖2-3所示。 ESP8266串口WIFI模塊是用來(lái)接收到手機(jī)等上位機(jī)設(shè)備發(fā)送的控制指令信息和單片機(jī)通過(guò)串口通信傳來(lái)的AT指令信息來(lái)連接到路由器,然后創(chuàng)建多連接和SERVER模式,來(lái)實(shí)現(xiàn)手機(jī)和WIFI模塊之間的通信;STC89C52RC單片機(jī)最小系統(tǒng)是小車的核心系統(tǒng),用來(lái)控制和協(xié)調(diào)小車的運(yùn)動(dòng);電機(jī)驅(qū)
11、動(dòng)模塊用來(lái)驅(qū)動(dòng)小車電機(jī)的運(yùn)作;5V和3.3V串口電平轉(zhuǎn)換模塊是用來(lái)轉(zhuǎn)換單片機(jī)和WIFI模塊之間的信號(hào)電平,主要是適用于本模塊的工作電壓;電源電路用來(lái)提供單片機(jī)和WIFI模塊的外部電源;3.3v降/穩(wěn)壓模塊用來(lái)給WIFI模塊提供一個(gè)3.3v穩(wěn)定的工作電壓;蜂鳴器電路作用是用來(lái)給單片機(jī)一個(gè)提示音;電機(jī)作用就是讓小車的輪子轉(zhuǎn)動(dòng),來(lái)使小車動(dòng)起來(lái)。 2.1.2 整機(jī)工作原理 基于單片機(jī)的WIFI智能小車是STC89C52RC單片機(jī)通過(guò)其串口對(duì)ESP8266WIFI模塊發(fā)送AT指令,使ESP8266WIFI模塊連接到路由器并且讓ESP8266WIFI模塊開(kāi)啟多連接和SERVER模式,然后手機(jī)打開(kāi)WL
12、AN連接路由器設(shè)備,打開(kāi)制作好的APP軟件,通過(guò)路由器這個(gè)中轉(zhuǎn)站向ESP8266WIFI模塊發(fā)送控制指令,在ESP8266WIFI模塊接收到控制指令后,通過(guò)ESP8266WIFI模塊的串口和STC89C52RC單片機(jī)上的串口之間相互發(fā)送控制指令的數(shù)據(jù)流,單片機(jī)的串口在接收到從WIFI模塊傳來(lái)的控制指令的數(shù)據(jù)流,最終做出控制選擇,進(jìn)而控制小車運(yùn)動(dòng)、指示燈的亮滅、蜂鳴器的開(kāi)關(guān)和數(shù)碼管的顯示。如:小車運(yùn)動(dòng),LED燈的亮滅,蜂鳴器的發(fā)聲等。 基于單片機(jī)的WIFI智能小車主要是利用手機(jī)作為上位機(jī),而單片機(jī)作為下位機(jī),通過(guò)WIFI模塊和路由器進(jìn)行對(duì)無(wú)線信號(hào)的處理,然后通過(guò)串口傳送有線的信號(hào),從而實(shí)現(xiàn)上位
13、機(jī)通過(guò)無(wú)線來(lái)控制下位機(jī)的運(yùn)作,實(shí)現(xiàn)智能化和無(wú)線遙控等功能。 第3章 硬件系統(tǒng)設(shè)計(jì) 3.1 路由器 路由器(Router),(如圖3-1所示)是連接因特網(wǎng)中各局域網(wǎng)、廣域網(wǎng)的設(shè)備,它會(huì)根據(jù)信道的情況自動(dòng)選擇和設(shè)定路由,以最佳路徑,按前后順序發(fā)送信號(hào)。 路由器是互聯(lián)網(wǎng)絡(luò)的樞紐"交通警察"。目前路由器已經(jīng)廣泛應(yīng)用于各行各業(yè),各種不同檔次的產(chǎn)品已成為實(shí)現(xiàn)各種骨干網(wǎng)內(nèi)部連接、骨干網(wǎng)間互聯(lián)和骨干網(wǎng)與互聯(lián)網(wǎng)互聯(lián)互通業(yè)務(wù)的主力軍。路由和交換機(jī)之間的主要區(qū)別就是交換機(jī)發(fā)生在OSI參考模型第二層(數(shù)據(jù)鏈路層),而路由發(fā)生在第三層,即網(wǎng)絡(luò)層。這一區(qū)別決定了路由和交換機(jī)在移動(dòng)信息的過(guò)程中需使用不同的控制信
14、息,所以說(shuō)兩者實(shí)現(xiàn)各自功能的方式是不同的。 路由器(Router),(如圖3-1所示)又稱網(wǎng)關(guān)設(shè)備(Gateway)是用于連接多個(gè)邏輯上分開(kāi)的網(wǎng)絡(luò),所謂邏輯網(wǎng)絡(luò)是代表一個(gè)單獨(dú)的網(wǎng)絡(luò)或者一個(gè)子網(wǎng)。當(dāng)數(shù)據(jù)從一個(gè)子網(wǎng)傳輸?shù)搅硪粋€(gè)子網(wǎng)時(shí),可通過(guò)路由器的路由功能來(lái)完成。因此,路由器具有判斷網(wǎng)絡(luò)地址和選擇IP路徑的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問(wèn)方法連接各種子網(wǎng),路由器只接受源站或其他路由器的信息,屬網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備。 下圖是路由器的設(shè)備圖,如圖3-1所示。 圖3-1 路由器 3.2 ESP8266WIFI模塊 本次設(shè)計(jì)用到ESP8266W
15、IFI模塊是用于連接到路由器,然后接收手機(jī)端發(fā)送的信號(hào),對(duì)單片機(jī)進(jìn)行控制。 WIFI模塊又名串口WIFI模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或TTL電平轉(zhuǎn)為符合WIFI無(wú)線網(wǎng)絡(luò)通信標(biāo)準(zhǔn)的嵌入式模塊,內(nèi)置無(wú)線網(wǎng)絡(luò)協(xié)議IEEE802.11b.g.n協(xié)議以及TCP/IP協(xié)議。傳統(tǒng)的硬件設(shè)備嵌入WIFI模塊可以直接利用WIFI聯(lián)入互聯(lián)網(wǎng),是實(shí)現(xiàn)無(wú)線智能家居、M2M等物聯(lián)網(wǎng)應(yīng)用的重要組成部分。 下圖是ESP8266WIFI模塊的正反面圖,如圖3-2,3-3所示。 圖3-2 ESP8266WIFI模塊正面圖 圖3-3 ESP8266WIFI模塊反面圖 ESP8266是一款超低
16、功耗的模塊,擁有業(yè)內(nèi)極富競(jìng)爭(zhēng)力的封裝尺寸和超低能耗技術(shù),專為移動(dòng)設(shè)備和互聯(lián)網(wǎng)的應(yīng)用設(shè)計(jì),可將用戶的物理設(shè)備連接到WIFI無(wú)線網(wǎng)絡(luò)上,進(jìn)行互聯(lián)網(wǎng)或局域網(wǎng)通信,實(shí)現(xiàn)聯(lián)網(wǎng)功能。 ESP8266可廣泛應(yīng)用于智能電網(wǎng)、智能交通、智能家具、手持設(shè)備、工業(yè)控制等領(lǐng)域。 3.2.1 ESP8266WIFI模塊引腳功能 下圖是ESP8266WIFI模塊的引腳圖,如圖3-4所示。 圖3-4 ESP8266WIFI模塊引腳圖 下表是ESP8266WIFI模塊引腳說(shuō)明,如表2所示。 表2 ESP8266WIFI模塊引腳表 PIN Function Description 1 URX
17、D 1) UART_RXD,接收; 2) General Purpose Input/Output:GPIO3; 2 UTXD 1) UART_TXD,發(fā)送; 2)General Purpose Input/Output:GPIO1; 3)開(kāi)機(jī)時(shí)禁止下拉; 3 RESET(GPIO 16) 外部Reset信號(hào),低電平復(fù)位,高電平工作(默認(rèn)高); 4 GND GND 5 VCC 3.3V,模塊供電; 6 GPIO0 1) 默認(rèn)WIFI Status:WIFI工作狀態(tài)指示燈控制信號(hào); 2) 工作模式選擇: 懸空:Flash Boot,工作模式;
18、 下拉:UART Download,下載模式; 7 CH_PD 1) 高電平工作; 2) 低電平模塊供電關(guān)掉; 8 GPIO2 1) 開(kāi)機(jī)上電時(shí)必須為高電平,禁止硬件下拉; 2) 內(nèi)部默認(rèn)已拉高 3.3 STC89C52RC單片機(jī) 單片機(jī)(Microcontrollers)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)
19、域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。 STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O 口線,看門狗定時(shí)器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個(gè)16位定時(shí)器/計(jì)數(shù)器,4
20、個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。 下圖是STC89C52RC單片機(jī)的實(shí)物圖,如圖3-5所示。 圖3-5 STC89C52RC單片機(jī) 3.3.1 STC89C52RC單片機(jī)引腳功能 下圖是STC89C52RC單片機(jī)的引腳功能圖,如圖3-6所示。
21、 圖3-6 STC89C52RC引腳圖 1、VCC(40引腳):電源電壓VSS(20引腳):接地P0端口(P0.0~P0.7,39~32引腳):P0口是一個(gè)漏極開(kāi)路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。 2、P1端口(P1.0~P1.7,1~8引腳):P1口是一個(gè)內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者
22、輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻, 那些被外部拉低的引腳會(huì)輸出一個(gè)電流。 此外,P1.0和P1.1還可以作為定時(shí)器/計(jì)數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見(jiàn)下表3所示: 表3 P1.0和P1.1引腳復(fù)用功能表 引腳號(hào) 功能特性 P1.0 T2(定時(shí)器/計(jì)數(shù)器2外部計(jì)數(shù)輸入),時(shí)鐘輸出 P1.1 T2EX(定時(shí)器/計(jì)數(shù)器2捕獲/重裝觸發(fā)和方向控制) 3、P2端口(P2.0~P2.7,21~28引腳):
23、P2口是一個(gè)內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。 4、P3端口(P3.0~P3.7,10~17引腳):P3是一個(gè)內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一個(gè)電流。 P3口除作為一般I/O
24、口外,還有其他一些復(fù)用功能,如下表4所示: 表4 P3口引腳復(fù)用功能 引腳號(hào) 復(fù)用功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 INT0(外部中斷0) P3.3 INT1(外部中斷1) P3.4 T0(定時(shí)器0的外部輸入) P3.5 T1(定時(shí)器1的外部輸入) P3.6 (外部數(shù)據(jù)存儲(chǔ)器、寫) P3.7 (外部數(shù)據(jù)存儲(chǔ)器、讀) 5、RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來(lái)完成單片機(jī)的復(fù)位初始化操作。看門狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地
25、址8EH)上的DISRTO位可以使此功能無(wú)效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。 6、ALE/PROG(30引腳):地址鎖存控制信號(hào)(ALE)是訪問(wèn)外部程序 存儲(chǔ)器時(shí),鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。 7、PSEN(29 引腳):外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部 程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C51RC 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,PSEN而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將不被激活。 8、EA/VPP(31引腳):訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H到FFFFH的外部程序存儲(chǔ)器讀
26、取指令,EA必須接GND。注意加密方式1時(shí),EA將內(nèi)部鎖定RESET。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。 9、XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。 10、XTAL2(18引腳):振蕩器反相放大器的輸入端。 3.3.2 單片機(jī)的外圍電路 1、基本復(fù)位電路 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。圖3-7所示的RC復(fù)位電路可以實(shí)現(xiàn)上述基本功能。 下圖是RC復(fù)位電路,如圖3-7所示。 圖3-7
27、RC復(fù)位電路 在電源上電的時(shí)候,等待一定的時(shí)間,等到電容兩端的電壓值相同時(shí),單片機(jī)復(fù)位。還有一種方法就是按鍵復(fù)位,當(dāng)SM按鍵按下之后RST端的電壓值瞬間和VCC相同,同樣也可以達(dá)到復(fù)位的效果,圖中的電容作用是充放電,電阻是為了保護(hù)電路而設(shè)置的。 2、時(shí)鐘電路 晶振是晶體振蕩器的簡(jiǎn)稱,在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)后,再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低,其中較低的頻率是串聯(lián)諧振,較高的頻率是并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏?,在這個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感。所以,晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電
28、路。 下圖是時(shí)鐘電路的電路圖,如圖3-8所示。 圖3-8 時(shí)鐘電路的電路圖 一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般IC的引腳都有等效輸入電容。 3.4 L293D電機(jī)驅(qū)動(dòng)模塊 我們所使用的電機(jī)一般是直流電機(jī),主要用到永磁直流電機(jī)、伺服電機(jī)及步進(jìn)電機(jī)三種。直流電機(jī)的控制很簡(jiǎn)單,性能出眾,直流電源也容易實(shí)現(xiàn)。 本次設(shè)計(jì)使用的是L293D(如圖3-8所示),L293D是一款單片集成的高電壓、高電流、4通道電機(jī)驅(qū)動(dòng),設(shè)計(jì)用于連接標(biāo)準(zhǔn)D
29、TL或TTL邏輯電平,驅(qū)動(dòng)電感負(fù)載(諸如繼電線圈、DC和步進(jìn)電機(jī))和開(kāi)關(guān)功率晶體管等等。 下圖是L293D電機(jī)驅(qū)動(dòng)模塊在單片機(jī)作用下驅(qū)動(dòng)電機(jī)運(yùn)動(dòng)圖,如圖3-9所示。 圖3-9 單片機(jī)驅(qū)動(dòng)電機(jī)模塊圖 3.4.1 L293D引腳功能及原理圖 下圖是L293D芯片引腳圖,如圖3-10所示。 圖3-10 L293D芯片引腳圖 1、INPUT1:輸入電機(jī)1的引腳A。 2、INPUT2:輸入電機(jī)1的引腳B。 3、INPUT3:輸入電機(jī)2的引腳A。 4、INPUT4:輸入電機(jī)2的引腳B。 5、GND:電源地接口。 6、VSS:輸入電機(jī)驅(qū)動(dòng)電壓接口。 7、OUTPUT1:輸出電
30、機(jī)1的引腳A。 8、OUTPUT2:輸出電機(jī)1的引腳B。 9、OUTPUT3:輸出電機(jī)2的引腳A。 10、OUTPUT4:輸出電機(jī)2的引腳B。 下圖是電機(jī)驅(qū)動(dòng)模塊和單片機(jī)原理圖,如圖3-11所示。 圖3-11 電機(jī)驅(qū)動(dòng)模塊和單片機(jī)原理圖 單片機(jī)的P0的8個(gè)端口在位定義之后對(duì)L293D電機(jī)模塊的4個(gè)INPUT寫入各不同的高低電平,經(jīng)L293D芯片內(nèi)部的轉(zhuǎn)換之后,在OUTPUT輸出4個(gè)相應(yīng)的電平值,分別對(duì)應(yīng)M1和M2的兩個(gè)電機(jī)A端和B端,從而控制電機(jī)M1和M2的正轉(zhuǎn)和反轉(zhuǎn),進(jìn)而實(shí)現(xiàn)小車的前進(jìn),后退,左轉(zhuǎn)和右轉(zhuǎn)等功能。 3.5 3.3V降/穩(wěn)壓模塊 降/穩(wěn)壓模塊是,通過(guò)降壓和
31、穩(wěn)壓的過(guò)程,給設(shè)備提供一個(gè)穩(wěn)定的工作環(huán)境,能夠提供不同的工作電壓設(shè)備在同一電源電壓下同時(shí)工作,應(yīng)用于單片機(jī)上能添加不同工作電壓的電子設(shè)備。 下圖是降/穩(wěn)壓模塊圖,如圖3-12所示。 圖3-12 AMS111 7-3.3 3.3V降/穩(wěn)壓模塊 將單片機(jī)上的5V的電源轉(zhuǎn)換為3.3V的穩(wěn)壓電源,提供給正常工作電壓是3.3V的電子設(shè)備,實(shí)現(xiàn)給5V和3.3V電壓之間的轉(zhuǎn)換,提供了能和單片機(jī)同時(shí)工作且電壓值可以不同的電子設(shè)備。比如,ESP8266串口WIFI模塊。 下圖是單片機(jī)的VCC通過(guò)降/穩(wěn)壓模塊給WIFI模塊供電,如圖3-12所示。 圖3-12 降/穩(wěn)壓模塊給WIFI模塊供電圖
32、3.5.1 降/穩(wěn)壓模塊的原理圖 下圖是降/穩(wěn)壓模塊的原理圖,如圖3-13所示。 圖3-13 降/穩(wěn)壓模塊的原理圖 上圖所示,D1作用是防止電源反接。C01、C02是電源輸入濾波。VDD3.3是3.3V電源,供數(shù)字電路使用。 L1、L2是隔離濾波電感。VCC3.3是3.3V電源,供模擬電路使用。電源在通過(guò)AMS111 7-3.3 3.3V降/穩(wěn)壓電路,電源電壓由原來(lái)的5V降為3.3V,可以提供給正常工作在3.3V的設(shè)備使用。 3.6 5V和3.3V串口電平轉(zhuǎn)換模塊 數(shù)字電路,電平就是電位的高低,用0和1表示。在計(jì)算機(jī)或者其他微處理器內(nèi)部只能識(shí)別0和1這兩個(gè)數(shù)字信號(hào),不同的系統(tǒng)電
33、平表示的0和1實(shí)際的電位并不相同。例如,高電平常用3.3V,5V,12V,低電平常用0,當(dāng)不同的系統(tǒng)進(jìn)行連接通信控制時(shí),就要進(jìn)行電平轉(zhuǎn)換。打個(gè)比方,單片機(jī)的高電位為5v,而電腦的串口電平為12V,要實(shí)現(xiàn)電腦到單片機(jī)通信就必須將電腦的12V轉(zhuǎn)到單片機(jī)的5V,反之,5V轉(zhuǎn)到12V。 下圖是串口電平轉(zhuǎn)換模塊圖,如圖3-14所示。 圖3-14 5V和3.3V串口電平轉(zhuǎn)換模塊圖 本項(xiàng)目的單片機(jī)是STC89C52RC,其工作電壓是5V,而WIFI模塊的工作電壓是3.3V,由于兩者工作電壓不一致,導(dǎo)致了信號(hào)的電平也不一致。要想兩個(gè)設(shè)備之間能夠進(jìn)行通信,就必須要對(duì)信號(hào)電平進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)5V的電平和
34、3.3V的電平之間能夠通信,完成數(shù)據(jù)間的交換。 下圖是單片機(jī)和WIFI模塊通過(guò)串口電平轉(zhuǎn)換模塊進(jìn)行通信的圖,如圖3-15所示。 圖3-15 單片機(jī)和WIFI模塊電平相互轉(zhuǎn)換圖 3.6.1 引腳功能和原理圖 下圖是串口電平轉(zhuǎn)換的引腳圖,如圖3-16所示。 圖3-16 串口電平轉(zhuǎn)換的引腳圖 1、5V和3.3V:由外電源接入5V和3.3V電源電壓。 2、GND:電源接地接口。 3、TXD:數(shù)據(jù)發(fā)送引腳。 4、RXD:數(shù)據(jù)接收引腳。 下圖是5V和3.3V串口電平轉(zhuǎn)換電路圖,如圖3-17所示。 圖3-17 5V和3.3V串口電平轉(zhuǎn)換電路圖 上圖的電路中,3.3V的信號(hào)
35、通過(guò)兩個(gè)三極管Q1,Q2的兩次放大,再配合上合適的電阻R1、R2、R3進(jìn)行轉(zhuǎn)換,完成了3.3V到5V信號(hào)的變換。5V信號(hào)同樣通過(guò)相反的方式將信號(hào)變成了3.3V的輸出,從而可以實(shí)現(xiàn)了數(shù)據(jù)能夠在3.3V和5V之間的相互通信。 第4章 軟件系統(tǒng)設(shè)計(jì) 4.1 軟件開(kāi)發(fā)環(huán)境 軟件開(kāi)發(fā)環(huán)境的主要組成成分是軟件工具。人機(jī)界面是軟件開(kāi)發(fā)環(huán)境與用戶之間的一個(gè)統(tǒng)一的交互式對(duì)話系統(tǒng),它是軟件開(kāi)發(fā)環(huán)境的重要質(zhì)量標(biāo)志。存儲(chǔ)各種軟件工具加工所產(chǎn)生的軟件產(chǎn)品或半成品(如 軟件開(kāi)發(fā)環(huán)境參考書(shū) 軟件開(kāi)發(fā)環(huán)境參考書(shū) 源代碼、測(cè)試數(shù)據(jù)和各種文檔資料等)的軟件環(huán)境數(shù)據(jù)庫(kù)是軟件開(kāi)發(fā)環(huán)境的核心。 4.1.1 Androi
36、d的APP軟件的開(kāi)發(fā) Android開(kāi)發(fā)需要用到Eclipse、ADT和SDK。三個(gè)組件整合開(kāi)發(fā)。 1、Eclipse 是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開(kāi)發(fā)工具(Java Development Kit,JDK)。如圖15所示。 下圖是安卓開(kāi)發(fā)環(huán)境界面,如圖4-1所示 圖4-1 安卓開(kāi)發(fā)環(huán)境界面 2、ADT:目前Android開(kāi)發(fā)所用的開(kāi)發(fā)工具主要有Android Studio、Eclipse,在Eclipse編譯IDE環(huán)境中,安
37、裝ADT,為Android開(kāi)發(fā)提供開(kāi)發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在Eclipse下開(kāi)發(fā)工具的升級(jí)下載工具。 3、SDK:一般是一些被軟件工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開(kāi)發(fā)工具的集合。在Android中,它為開(kāi)發(fā)者提供了庫(kù)文件以及其它開(kāi)發(fā)所用到的工具。簡(jiǎn)單理解為開(kāi)發(fā)工具包集合,是整體開(kāi)發(fā)中所用到的工具包。 4.1.2 單片機(jī)程序開(kāi)發(fā)環(huán)境 Keil Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C
38、編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(μVision)將這些部分組合在一起。如圖4-2所示。 下圖是單片機(jī)開(kāi)發(fā)環(huán)境界面,如圖4-2所示。 圖4-2 單片機(jī)開(kāi)發(fā)環(huán)境界面 4.2 程序流程圖 4.2.1 主程序流程圖 系統(tǒng)主程序模塊主要完成對(duì)系統(tǒng)中各模塊電路的初始化等工作,主要包括對(duì)串口中斷、外部中斷的初始化,同時(shí)執(zhí)行電腦等終端設(shè)備所發(fā)送的命令,等待外部中段以及根據(jù)所需要的功能進(jìn)行相應(yīng)的操作。 下圖是主程序流程圖,如圖4-3所示。 圖4-3 主程序流程圖 單片機(jī)首先設(shè)置好串口初始化,比如設(shè)置好波特率。然后向W
39、IFI模塊發(fā)送AT指令,使WIFI模塊連接上路由器,并創(chuàng)建好服務(wù)連接。之后手機(jī)通過(guò)連接到路由器向WIFI模塊發(fā)送無(wú)線的控制指令,單片機(jī)在接收到WIFI模塊從串口傳來(lái)的數(shù)據(jù)后,馬上進(jìn)入中斷函數(shù)來(lái)執(zhí)行接收數(shù)據(jù)的模式。接收到的控制指令存儲(chǔ)在寄存器中,單片機(jī)在寄存器中讀取接收到的控制指令,然后根據(jù)接收到命令的不同,執(zhí)行小車不同的動(dòng)作。比如,小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止等。 下圖是單片機(jī)對(duì)串口進(jìn)行初始化的程序圖,如圖4-4所示。 圖4-4 串口初始化程序圖 由于WIFI模塊的波特率是115200,那么單片機(jī)為了要和WIFI模塊進(jìn)行數(shù)據(jù)間的通信,就要把兩端的波特率設(shè)置成一致,這樣才能夠保證
40、雙方通信的正常進(jìn)行。如上圖,首先給T1(TMOD)選擇工作模式,然后給TH1和TL1賦初始值,然后啟動(dòng)T1和T2(TR2位) ,確定串口工作方式(編寫SCON寄存器)。 下圖是單片機(jī)在接收到信號(hào)后發(fā)送給電機(jī)模塊來(lái)驅(qū)動(dòng)電機(jī),從而使小車運(yùn)動(dòng)的程序圖,如圖4-5所示。 圖4-5 單片機(jī)驅(qū)使小車前進(jìn)的程序圖 單片機(jī)在接收到WIFI模塊傳來(lái)的無(wú)線數(shù)據(jù),通過(guò)switch語(yǔ)句來(lái)選擇小車的運(yùn)動(dòng)模式,上圖只選擇小車前進(jìn)的簡(jiǎn)單程序。小車的單片機(jī)在接到前進(jìn)的信號(hào)時(shí),就進(jìn)入選擇小車運(yùn)行的模式這個(gè)程序中,判斷接收到的信號(hào)和小車預(yù)先設(shè)置的值是否一致,若一致,則小車進(jìn)入那種模式,直到等待下次接收到的數(shù)據(jù)再來(lái)判
41、斷。 4.2.2 串口中斷接收流程圖 通過(guò)串口中斷,實(shí)現(xiàn)單片機(jī)和路由器進(jìn)行通訊。進(jìn)入中斷后關(guān)掉中斷,避免數(shù)據(jù)信號(hào)的重復(fù)引起中斷。根據(jù)命令數(shù)據(jù)發(fā)送的規(guī)律,將命令解碼儲(chǔ)存在相應(yīng)的二維數(shù)組中,方便主函數(shù)的調(diào)用。 下圖是串口中斷接收流程圖,如圖4-6所示。 圖4-6 串口中斷接收流程圖 上圖是串口中斷函數(shù),進(jìn)入串口中斷函數(shù)之后,首先要把RI至0,因?yàn)樵趩纹瑱C(jī)的串口接收存儲(chǔ)數(shù)據(jù)后RI會(huì)自動(dòng)的變成1,所以每次進(jìn)入串口中斷的時(shí)候要把RI先至0。然后判斷RI是否為1,是用來(lái)判斷數(shù)據(jù)是否接收完畢,不是的話繼續(xù)接收,是的話就將數(shù)據(jù)存儲(chǔ)在單片機(jī)的存儲(chǔ)器中,等待單片機(jī)到存儲(chǔ)器中讀取接收到的數(shù)據(jù),進(jìn)一
42、步執(zhí)行單片機(jī)的控制動(dòng)作。 下圖是通過(guò)串口中斷接收流程圖編寫的程序圖,如圖4-7所示。 圖4-7 串口中斷接收數(shù)據(jù)的程序圖 中斷接收函數(shù),首先要把RI置0,然后等待數(shù)據(jù)的傳輸。等待數(shù)據(jù)傳輸完畢后,RI會(huì)自動(dòng)跳到1,判斷RI=1后,先把數(shù)據(jù)存儲(chǔ)在寄存器中,然后單片機(jī)對(duì)寄存器中的數(shù)據(jù)讀取后,判斷接收到的數(shù)據(jù)和預(yù)先設(shè)置的值是否一致,若一致,則進(jìn)入小車運(yùn)行的模式函數(shù)。 4.2.3 串口發(fā)送指令流程圖 單片機(jī)通過(guò)串口向WIFI模塊發(fā)送指令,控制WIFI模塊的模式,以便手機(jī)接入WIFI模塊。在發(fā)送指令時(shí),要關(guān)閉串口中斷,避免在發(fā)送數(shù)據(jù)時(shí)串口中斷的產(chǎn)生,引起指令發(fā)送錯(cuò)誤。在指令發(fā)送完畢后,打
43、開(kāi)串口中斷,允許中斷函數(shù)對(duì)單片機(jī)作用。 下圖是串口發(fā)送指令流程圖,如圖4-8所示。 圖4-8 串口發(fā)送指令流程圖 上圖是串口發(fā)送指令的流程圖,在本項(xiàng)目中是單片機(jī)用來(lái)向WIFI模塊發(fā)送AT指令的。首先要關(guān)閉中斷源的允許位,目的是為了在發(fā)送數(shù)據(jù)的時(shí)候,不會(huì)因?yàn)橹袛嗪瘮?shù)的請(qǐng)求而去執(zhí)行中斷函數(shù),避免了數(shù)據(jù)發(fā)送的錯(cuò)誤。然后將TI至0,原因和前面所講的RI至0是一樣的。單片機(jī)為了發(fā)送數(shù)據(jù),同樣的是單片機(jī)不能單獨(dú)的發(fā)送或者接收數(shù)據(jù),在發(fā)送數(shù)據(jù)之前,都要把數(shù)據(jù)先存儲(chǔ)在寄存器中,在發(fā)送數(shù)據(jù)的時(shí)候,就在存儲(chǔ)器中進(jìn)行讀取。判斷TI是否為1,是為了判斷傳輸是否完成,和前面所講的判斷RI是否為1是一樣的道理
44、。在傳輸完成之后要將TI至0,以便下次的傳輸數(shù)據(jù)。數(shù)據(jù)傳輸完成后,要打開(kāi)中斷源的允許位,進(jìn)行串口中斷接收WIFI模塊發(fā)送而來(lái)的數(shù)據(jù)。 下圖是根據(jù)串口中斷發(fā)送指令流程圖來(lái)編寫的程序,如圖4-9 圖4-9 串口中斷發(fā)送數(shù)據(jù)的程序圖 首先把串口中斷關(guān)閉,防止串口中斷引發(fā)數(shù)據(jù)間的干擾,然后將TI置0,將數(shù)據(jù)存入串口寄存器中,等待數(shù)據(jù)傳輸完畢,然后再將TI置0,隨后便打開(kāi)串口中斷,便可進(jìn)行串口中斷數(shù)據(jù)接收。 第5章 設(shè)備調(diào)試 5.1 系統(tǒng)調(diào)試 本智能小車是由ESP8266WIFI模塊和STC89C52RC單片機(jī)組成。設(shè)計(jì)思路是由WIFI模塊連到路由器,然后接收到手機(jī)終端發(fā)出的信號(hào),通過(guò)
45、串口發(fā)送給單片機(jī),單片機(jī)在接到控制信號(hào)后來(lái)控制電機(jī)的運(yùn)轉(zhuǎn)。 具體步驟分為硬件設(shè)備調(diào)試和軟件調(diào)試兩個(gè)方面來(lái)進(jìn)行。在硬件設(shè)備的連線完成后,要分別對(duì)WIFI模塊,單片機(jī)進(jìn)行調(diào)試,確保每個(gè)元器件在單獨(dú)的環(huán)境下可以正常工作,之后把各個(gè)元器件連接成一個(gè)整體,完成整個(gè)的項(xiàng)目,實(shí)現(xiàn)手機(jī)無(wú)線控制單片機(jī)小車的運(yùn)動(dòng)。 5.2 硬件設(shè)備調(diào)試 由于此實(shí)物焊接量、裝配工作量大。所以在電路安裝完成后,首先應(yīng)對(duì)系統(tǒng)進(jìn)行整體檢查,確認(rèn)電路無(wú)虛焊、短路、斷路等錯(cuò)誤。然后應(yīng)該對(duì)電路各個(gè)模塊進(jìn)行分級(jí)調(diào)試,逐步實(shí)現(xiàn)系統(tǒng)的整體功能。 然后對(duì)設(shè)備進(jìn)行連線設(shè)置,每個(gè)模塊之間的連線都有一定的聯(lián)系,要按照這特有的聯(lián)系來(lái)進(jìn)行連線設(shè)置。比如
46、,WIFI模塊的工作電壓是3.3V,要接在降壓模塊下,才能正常工作。單片機(jī)要和WIFI模塊進(jìn)行通信,就要對(duì)兩者之間的信號(hào)電平進(jìn)行轉(zhuǎn)換,使其達(dá)到適合自己的工作電壓來(lái)進(jìn)行相互的通信。如圖5-1。 下圖是整個(gè)硬件設(shè)備之間的連線圖,如圖5-1所示。 圖5-1 硬件設(shè)備連線圖 5.2.1 ESP8266串口WIFI的連線 由于WIFI模塊(圖5-1)出廠已經(jīng)配置完成。其中CH_PD處于低電平是使供電模塊關(guān)閉,處于高電平是處于工作狀態(tài),所以要將CH_PD引腳和VCC相連。由于單片機(jī)和WIFI之間要用串口通信,是要用到串口的端口TXD和RXD,要求是交叉連接,意思就是將單片機(jī)的RXD和WIFI
47、模塊的TXD相連,單片機(jī)的TXD和WIFI模塊的RXD相連,VCC接3.3V電壓,接地要和單片機(jī)共地連接。如圖5-2。 下圖是WIFI模塊的引腳接線圖,如圖5-2所示。 圖5-2 WIFI模塊引腳的連線圖 5.2.2 STC89C52RC單片機(jī)連線 單片機(jī)上有RXD和TXD口,其和WIFI模塊連線時(shí),是屬于交叉連線。但是和電腦之間的連線,是要通過(guò)MAX232芯片進(jìn)行電平轉(zhuǎn)換,因?yàn)閱纹瑱C(jī)的是5V的工作電源,電腦的是12V串口電壓,以此來(lái)達(dá)到合適彼此工作電壓的電平來(lái)進(jìn)行數(shù)據(jù)交換的。當(dāng)然除此之外,單片機(jī)上還要接復(fù)位電路和時(shí)鐘(晶振)電路,晶振電路用來(lái)設(shè)置單片機(jī)的波特率,以達(dá)到和WIFI
48、模塊的波特率一致。 下圖是單片機(jī)的接線圖,如圖5-3所示。 圖5-3 單片機(jī)引腳接線圖 5.2.3 單片機(jī)和WIFI模塊的連線 在單片機(jī)連線完成后,WIFI模塊要處在工作狀態(tài),將CH_PD拉高后。進(jìn)入了關(guān)鍵的一步,那就是單片機(jī)和WIFI模塊之間的連線,這關(guān)系到WIFI模塊和單片機(jī)之間的通信的成功與否。因?yàn)閱纹瑱C(jī)和WIFI模塊的工作電壓不一致,導(dǎo)致了它們所產(chǎn)生的電平信號(hào)也不一致。因此,在本設(shè)計(jì)時(shí),要添加降/穩(wěn)壓模塊和電平轉(zhuǎn)換模塊,單片機(jī)和WIFI模塊要配合使用這兩個(gè)模塊,在這兩個(gè)模塊的同時(shí)作用下完成單片機(jī)和WIFI模塊之間的通信。 下圖是單片機(jī)和WIFI模塊之間的連接圖,如圖5-
49、4所示。 圖5-4 單片機(jī)和WIFI模塊的連線圖 5.3 軟件調(diào)試 此系統(tǒng)的軟件程序使用java和C語(yǔ)言編寫。首先選擇單片機(jī)開(kāi)發(fā)板作為調(diào)試的載體,逐步對(duì)各個(gè)模塊的子程序進(jìn)行調(diào)試,然后將各個(gè)模塊的子程序模塊進(jìn)行有機(jī)的聯(lián)合,最終完成整個(gè)系統(tǒng)的調(diào)試。 本次項(xiàng)目所要用到的調(diào)試工具有:sscom4.2測(cè)試版,用于WIFI模塊的調(diào)試如圖5-2所示;串口調(diào)試助手,用于單片機(jī)的通信使用,如圖5-6所示。 本次項(xiàng)目調(diào)試的步驟是:首先將WIFI模塊通過(guò)串口和電腦能夠相互進(jìn)行通信和控制,然后是單片機(jī)通過(guò)串口和電腦直接通信和控制,最后一步就是把WIFI模塊和單片機(jī)之間通過(guò)連線,將其連接起來(lái),完成最終的串
50、口數(shù)據(jù)的相互通信。 5.3.1 WIFI模塊的調(diào)試 由于本設(shè)計(jì)中,ESP8266WIFI模塊只需要輸入AT指令進(jìn)行調(diào)試配置,不需要對(duì)WIFI模塊的內(nèi)部程序進(jìn)行改動(dòng),所以WIFI模塊只需要接收單片機(jī)端發(fā)來(lái)的AT指令,便可以進(jìn)入SERVER模式。 ESP8266WIFI模塊在電腦上調(diào)試的主要目的是:通過(guò)電腦發(fā)出的指令,通過(guò)WIFI模塊的串口傳送給WIFI模塊。方向是電腦控制單片機(jī)和單片機(jī)反饋信號(hào)給電腦。是單片機(jī)和電腦之間的通信,這是調(diào)試步驟的第一步,配置好WIFI模塊。 WIFI模塊調(diào)試所需要用到的調(diào)試工具是:sscom4.2測(cè)試版。這個(gè)軟件是專門用作WIFI模塊和電腦之間的通信之間的
51、一個(gè)橋梁。提供WIFI模塊和電腦之間的通信,并且在軟件的界面顯示W(wǎng)IFI模塊向電腦發(fā)送的數(shù)據(jù)。 下圖是sscom4.2測(cè)試版的軟件操作界面,如圖5-5所示。 圖5-5 sscom4.2測(cè)試版的軟件操作界面 5.3.1.1 WIFI模塊調(diào)試步驟 步驟1:將WIFI模塊的VCC,GND,TXD,RXD和USB轉(zhuǎn)串口(TTL)連好后,打開(kāi)串口調(diào)試的軟件,給WIFI模塊上電,會(huì)出現(xiàn)亂碼。 步驟2:然后向WIFI模塊發(fā)送AT指令(詳見(jiàn)附錄2:AT指令集)。(注意要把發(fā)送新行打勾) 發(fā)送的指令有: AT+CWMODE=1 //選擇station模式 AT+RST //重啟WI
52、FI模塊
AT+CWLAP //查詢可用的AP
AT+CWJAP=
53、口傳來(lái)的手機(jī)消息。 下圖是WIFI模塊SERVER服務(wù)打開(kāi)成功圖,如圖5-6所示。 圖5-6 WIFI開(kāi)啟SERVER服務(wù) 5.3.2 單片機(jī)的調(diào)試 單片機(jī)和電腦串口通信的主要目的是單片機(jī)通過(guò)和電腦之間的串口通信,實(shí)現(xiàn)電腦控制單片機(jī)和單片機(jī)傳輸數(shù)據(jù)到電腦,并且單片機(jī)傳輸給電腦的數(shù)據(jù)在調(diào)試助手上顯示出來(lái)。 單片機(jī)調(diào)試所需要用到的工具是串口調(diào)試助手。這個(gè)軟件是用作單片機(jī)和電腦之間通信的一個(gè)平臺(tái),能夠提供單片機(jī)的收與發(fā)都能通過(guò)串口在電腦上進(jìn)行顯示。還有一個(gè)主要的作用是,單片機(jī)寫好對(duì)接收到的信息進(jìn)行比對(duì)來(lái)完成單片機(jī)的動(dòng)作,完成一個(gè)簡(jiǎn)單的電腦發(fā)送信息控制單片機(jī)動(dòng)作。簡(jiǎn)單來(lái)說(shuō)就是用電腦來(lái)模擬
54、WIFI模塊對(duì)單片機(jī)進(jìn)行控制。 下圖是單片機(jī)和電腦之間通信的操作界面圖,如圖5-7所示。 圖5-7 單片機(jī)和電腦之間通信的操作界面圖 5.3.2.1 單片機(jī)調(diào)試步驟 步驟1:該步驟主要是用來(lái)使電腦通過(guò)串口對(duì)單片機(jī)進(jìn)行控制,編好單片機(jī)通過(guò)串口接收到電腦的信號(hào),在單片機(jī)預(yù)先編好的程序中,選擇性的運(yùn)行單片機(jī)的某個(gè)指令動(dòng)作。 步驟2:通過(guò)串口調(diào)試助手,輸入控制信息,在電腦上通過(guò)串口對(duì)單片機(jī)發(fā)送控制信息,如圖所示,若單片機(jī)接到信息后,有做出相應(yīng)的反應(yīng),則電腦和單片機(jī)的串口調(diào)試連通。 5.3.3 單片機(jī)和WIFI模塊的調(diào)試 在此之前的WIFI模塊和單片機(jī)都和電腦之間可以相互進(jìn)行通信,由于
55、雙方實(shí)現(xiàn)的都是和電腦之間控制。要實(shí)現(xiàn)WIFI模塊和單片機(jī)之間的通信,就要把單片機(jī)和WIFI模塊進(jìn)行連通,完成單片機(jī)和WIFI模塊進(jìn)行數(shù)據(jù)傳輸,便能夠?qū)崿F(xiàn)手機(jī)控制單片機(jī)控制。 單片機(jī)編寫有關(guān)的發(fā)送與接收的程序和控制電機(jī)的程序,然后給WIFI模塊和單片機(jī)通電。單片機(jī)向WIFI模塊發(fā)送AT指令,用來(lái)創(chuàng)建SERVER服務(wù)等一系列指令。然后手機(jī)通過(guò)給WIFI模塊發(fā)送信息,WIFI模塊通過(guò)串口傳送給單片機(jī)。 下圖是小車完成后的實(shí)體圖,如圖5-8所示 圖5-8 小車整體效果圖 心得體會(huì) 通過(guò)本次WIFI智能小車的理論學(xué)習(xí)、論文編寫和實(shí)物的制作,進(jìn)一步的認(rèn)識(shí)到了自身存在的不足。特別是自己
56、在WIFI模塊方面知識(shí)的欠缺,這使得我在小車起步制作時(shí)WIFI模塊部分,花費(fèi)了大量的時(shí)間。但我通過(guò)在網(wǎng)上不斷的查詢相關(guān)的資料,在網(wǎng)上請(qǐng)教這方面的高手,最終我還是完成了WIFI模塊部分的處理。但是我還是不知道其中具體的一些細(xì)節(jié)的原理,如WIFI模塊為什么不能和單片機(jī)進(jìn)行通信。還有在整機(jī)裝配的時(shí)候我沒(méi)有注意到一些細(xì)節(jié)的地方,這使得我把小車拆裝了多次。想要把事情做好提高效率,這就需要注意學(xué)習(xí)生活工作中做事的細(xì)節(jié),以及對(duì)自己知識(shí)的擴(kuò)充。 同時(shí),通過(guò)這次的畢業(yè)設(shè)計(jì),我的各方面能力也得到了大幅度的提高。在知識(shí)上,一方面,我系統(tǒng)的總結(jié)了自己的專業(yè)知識(shí),明確了自己今后事業(yè)的發(fā)展方向。另一方面,我如饑似渴的
57、自學(xué)了單片機(jī)及外圍電路知識(shí),并通過(guò)自己獨(dú)立對(duì)軟件的編寫和實(shí)物的制作,最終完成了整個(gè)WIFI智能小車的設(shè)計(jì)。在能力上:我通過(guò)不斷查閱資料、與師生交流學(xué)習(xí)新知識(shí)、在網(wǎng)上請(qǐng)教相關(guān)的人士,然后將自己沉淀后的知識(shí)和經(jīng)驗(yàn)運(yùn)用到實(shí)際電路設(shè)計(jì)理念中,豐富其功能和質(zhì)量。在綜合素質(zhì)上,我雖然遇到很多的挑戰(zhàn)和困難,但從未想過(guò)放棄,最終憑借自己百折不撓、勇于研究的精神解決了這些技術(shù)難點(diǎn)。 當(dāng)然,由于我的知識(shí)和能力有限,整個(gè)設(shè)計(jì)還有很多不足之處有待完善和改進(jìn),懇求老師指教,這必將是我在踏上工作崗位之前的最大一筆收獲。 總結(jié) 本次項(xiàng)目的成果是基于WIFI的智能小車,完成了小車的組裝,程序的設(shè)計(jì),以及實(shí)現(xiàn)了
58、手機(jī)等終端與小車之間的無(wú)線通信。 在設(shè)計(jì)的過(guò)程中,學(xué)習(xí)了關(guān)于WIFI指令的相關(guān)知識(shí),還有的是WIFI模塊和單片機(jī)之間的串口通信方式以及過(guò)程。學(xué)會(huì)了從一個(gè)簡(jiǎn)單的想法到具體實(shí)物的制作流程以及方法,從制作小車的過(guò)程中遇到了很多的困難,遇到了許多從來(lái)沒(méi)有見(jiàn)過(guò)的知識(shí)。最終,還是通過(guò)在網(wǎng)上查找資料,完成了小車最后的測(cè)試作業(yè),實(shí)現(xiàn)了本次設(shè)計(jì)的要求。 在論文的寫作過(guò)程中遇到了無(wú)數(shù)的困難和障礙,都在同學(xué)和老師的幫助下度過(guò)了。尤其要強(qiáng)烈感謝我的論文指導(dǎo)老師—譚傳武老師,他對(duì)我進(jìn)行了無(wú)私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行論文的修改和改進(jìn)。另外,在校圖書(shū)館查找資料的時(shí)候,圖書(shū)館的老師也給我提供了很多方面的支持與幫
59、助。在此向幫助和指導(dǎo)過(guò)我的各位老師表示衷心的感謝! 感謝這篇論文所涉及到的各位學(xué)者。本文引用了數(shù)位學(xué)者的研究文獻(xiàn),如果沒(méi)有各位學(xué)者的研究成果的幫助和啟發(fā),我將很難完成本篇論文的寫作。感謝我的同學(xué)和朋友,在我寫論文的過(guò)程中給予我很多的素材,還在論文的撰寫和排版燈過(guò)程中提供熱情的幫助。 本次設(shè)計(jì)的成果,完整的敘述了對(duì)基于51單片機(jī)的WIFI智能小車的制作流程以及相關(guān)知識(shí)。同時(shí)也了解了我國(guó)在智能小車這塊的重視,隨著時(shí)間的流轉(zhuǎn),在未來(lái),智能時(shí)代也會(huì)成為主導(dǎo)時(shí)代,設(shè)備也將會(huì)變成智能化,人們的生活也將會(huì)變得更加方便,更加簡(jiǎn)單。我相信在不久的將來(lái),智能小車必將進(jìn)入服務(wù)行業(yè),為我們大家的生活和工作服務(wù)。
60、 由于我的學(xué)術(shù)水平有限,所寫論文難免有不足之處,懇請(qǐng)各位老師和學(xué)友批評(píng)和指正! 參考文獻(xiàn) [1]劉守義.單片機(jī)應(yīng)用技術(shù).西安:西安電子科技大學(xué)出版社,2007 [2]趙克林.C語(yǔ)言實(shí)例教程.北京:人民郵電出版社,2009 [3]先鋒工作室.單片機(jī)程序設(shè)計(jì)實(shí)例.西安:清華大學(xué)出版社,2003 [4]劉建清.從零開(kāi)始學(xué)單片機(jī)C語(yǔ)言.北京:國(guó)防工業(yè)出版社,2006 [5]李群芳.單片機(jī)微型計(jì)算機(jī)與接口技術(shù).北京:電子商務(wù)出版社,2007 [6]馬總梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京:北京航天航空大學(xué)出版社,1988 [7]張永楓.單片機(jī)應(yīng)用實(shí)訓(xùn)教程.北京:清華大學(xué)出版社,2
61、008 [8]徐瑋.C51高效入門.北京:機(jī)械工程出版社,2006 [9]王靜霞.單片機(jī)應(yīng)用技術(shù)(C語(yǔ)言版).北京:電子商務(wù)出版社,2009 [10]李伯成.嵌入式系統(tǒng)可靠性設(shè)計(jì).北京:電子商務(wù)出版社,2006 [11]先鋒工作室.單片機(jī)設(shè)計(jì)實(shí)例.西安:清華大學(xué)出版社,2003 [12]姚尚朗.Android開(kāi)發(fā)入門與實(shí)戰(zhàn).北京:人民郵電出版社,2009 [13]李興華.Android開(kāi)發(fā)實(shí)戰(zhàn)經(jīng)典.北京:清華大學(xué)出版社,2012 [14]郭志宏.Android應(yīng)用開(kāi)發(fā)詳解.北京:電子商務(wù)出版社,2010 [15]亨特.程序員的思維修煉.北京:人民郵電出版社,2011 [16]
62、李剛.瘋狂Android講義.北京:電子商務(wù)出版社,2011 [17]孫更新.Android從入門到精通. 北京:電子商務(wù)出版社,2011 [18] 陳昊鵬. Java編程思想. 北京:機(jī)械工程出版社,2007 [19] 昊斯特曼. JAVA核心技術(shù). 北京:電子商務(wù)出版社,2011 [20] E2ECloud工作室. 深入淺出Google Android.北京:人民郵電出版社,2009 附錄1 單片機(jī)程序 /************************************************* 文件名:智能WIFI小車 描述:通過(guò)手機(jī)發(fā)送無(wú)線信號(hào),在WIFI
63、模塊進(jìn)行接收,發(fā)送至單片機(jī),從而
控制小車的運(yùn)動(dòng)。
*************************************************/
#include
64、3; //位定義電機(jī)2負(fù) void tingzhi() //停止 { M1A=0; M1B=0; M2A=0; M2B=0; } void qianjin() //前進(jìn) { M1A=1; M1B=0;
65、 M2A=1; M2B=0; } void houtui() //后退 { M1A=0; M1B=1; M2A=0; M2B=1; } void youzhuan() //右轉(zhuǎn) { M1A=0;
66、 M1B=1; M2A=1; M2B=0; } void zuozhuan() //左轉(zhuǎn) { M1A=1; M1B=0; M2A=0; M2B=1; } void delay(int i) //延時(shí)函數(shù) { int j,k; for(j=0;j0;k--) for(j=110;j>0;j--); } void init_
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案