智能小車無(wú)線控制系統(tǒng)_第1頁(yè)
智能小車無(wú)線控制系統(tǒng)_第2頁(yè)
智能小車無(wú)線控制系統(tǒng)_第3頁(yè)
智能小車無(wú)線控制系統(tǒng)_第4頁(yè)
智能小車無(wú)線控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

智能小車無(wú)線控制系統(tǒng)摘要本文設(shè)計(jì)一個(gè)無(wú)線智能小車控制系統(tǒng),系統(tǒng)分為上位機(jī)與下位機(jī)兩部分,分別以單片機(jī)STC89C52作為主控芯片。上位機(jī)集成了USB和nRF905兩個(gè)模塊,通過(guò)USB接口與上位機(jī)(通用計(jì)算機(jī))相連,接收由上位機(jī)傳來(lái)的控制信息(例如:前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)),利用nRF905無(wú)線發(fā)射模塊、無(wú)線接收模塊,將該控制信息經(jīng)過(guò)nRF905無(wú)線傳輸技術(shù)433MHz發(fā)射出去;并通過(guò)nRF905接收器接收遙控器的控制信號(hào),再將信號(hào)傳給小車電機(jī)并作出相應(yīng)動(dòng)作。本設(shè)計(jì)主要由電機(jī)USB傳輸模塊、單片機(jī)處理模塊、無(wú)線發(fā)射模塊和無(wú)線接收模塊四部分組成。該無(wú)線遙控小車的功能如下:能夠在有障礙物的情況下實(shí)現(xiàn)150米內(nèi)的無(wú)線遙控;實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn),溫度信息的采集并對(duì)采集信息處理等功能。然后將處理后的數(shù)據(jù)傳送至PC端,并通過(guò)VB程序顯示在屏幕上。關(guān)鍵詞:微控制器;無(wú)線傳輸技術(shù);上位機(jī);USB;控制器AbstractThedesignadoptsawirelesssystemwithcarcontrollerSTC89C52microcontrollerasthemaincontrolchip.ThiscontrollerconcludednRF905andUSBmodules.ThecontrollerconnectsPCmachine(generalpurposecomputer)throughgeneralUSBinterface,andreceivescontrollinginformation(forward,backward,left,right)fromthecomputer.Thethesisadoptswirelessremote-controllingmoduleconsistingofwirelesssendingmoduleandwirelessreceivingmodule.ItsendsthecontrollinginformationoutbythenRF905wirelesstechnology.Afterreceivingthecontrollingsignal,thenRF905receiversendsittomotorcarandtakesactionaccordingly.ThissystemmainlyconsistofmotorUSBtransmissionmodule,singlechipmicroprocessingmodule,wirelesstransmittingmoduleandwirelessreceivingmodules.Thewirelessremotecontrollingofthecarfunctionsareasfollows:undertheconditionoftheobstacles,itcancomplete150metersofwirelessremotecontrol.Thecarcangoforward,backward,left,andright.Inaddition,thelittlecarcollectsomeinformationelse,suchasthetemperature.ThentherelateddatasandinformationhavebeensendbacktothePC.ThecollectedinformationisdisplayedbytheVBprogram.Keywords:MCU;wirelesstransmissiontechnology;PC;USB;Controller引言自動(dòng)化是人類文明進(jìn)步和現(xiàn)代化的標(biāo)志,特別是在當(dāng)今信息時(shí)代,在我國(guó)由制造大國(guó)向制造強(qiáng)國(guó)轉(zhuǎn)變的過(guò)程中,智能控制與自動(dòng)化技術(shù)正廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、軍事、交通運(yùn)輸、醫(yī)療、服務(wù)和家庭方面,改變著社會(huì)各人們的生活。今天,利用無(wú)線電波傳送聲音和圖像節(jié)目的廣播和電視,已經(jīng)深入到社會(huì)生活的各個(gè)角落,成為億萬(wàn)人民的伴侶。利用無(wú)線電波可以傳播信號(hào)的這一特性,無(wú)線電遙控技術(shù)應(yīng)運(yùn)而生。無(wú)線電遙控就是利用電磁波在遠(yuǎn)距離上,按照人們的一致實(shí)現(xiàn)對(duì)物體對(duì)象的無(wú)線操縱和控制,這種無(wú)線控制的方式就叫做無(wú)線電遙控[1]。無(wú)線電遙控技術(shù)發(fā)展雖然只有幾十年的歷史,但是在軍事,國(guó)防,工農(nóng)業(yè)生產(chǎn)以及科學(xué)技術(shù)等方面已得到了廣泛的應(yīng)用,并且隨著電子技術(shù)的飛速發(fā)展,新型大規(guī)模遙控集成電路的不斷出現(xiàn),使得遙控技術(shù)有了日新月異的發(fā)展[2]。遙控裝置的中心控制部件已從早期的分立元件、集成電路逐步發(fā)展到現(xiàn)在的單片微型計(jì)算機(jī),智能化程度大大提高。近年來(lái),遙控技術(shù)在工業(yè)生產(chǎn)、家用電器,安全保衛(wèi)以及人們的日常生活中使用越來(lái)越廣泛,并成為發(fā)達(dá)國(guó)家研究的熱點(diǎn)。無(wú)線遙控小車是上世紀(jì)提出的一種新型小車,由于在軍事偵察、反恐、防爆、防核化及污染等危險(xiǎn)與惡劣環(huán)境作業(yè)中有著廣闊的應(yīng)用前景,使其成為一個(gè)重要的研究熱點(diǎn)[3]。無(wú)線遙控小車具有體積小、成本低、生存能力強(qiáng)、運(yùn)動(dòng)靈活等特點(diǎn)。由于其應(yīng)用場(chǎng)合特殊,所以特別要求這類小車重量輕、體積小、能耗低、實(shí)時(shí)性好、操作使用可靠。依據(jù)無(wú)線遙控小車系統(tǒng)的總體結(jié)構(gòu),整個(gè)小車系統(tǒng)由移動(dòng)平臺(tái)、車載控制系統(tǒng)、遙控系統(tǒng)和傳感檢測(cè)四大部分組成。從系統(tǒng)總體來(lái)看,無(wú)線遙控小車有近端操作人員,遠(yuǎn)端移動(dòng)小車和運(yùn)行環(huán)境場(chǎng)所構(gòu)成,由此構(gòu)成了人—小車—環(huán)境三者相互緊密聯(lián)系的一個(gè)整體。操作人員在遙控作業(yè)端根據(jù)作業(yè)任務(wù)的要求,通過(guò)遙控操作平臺(tái)的人機(jī)交互接口,借助反饋信息控制小車完成特定的作業(yè)任務(wù)。操作人員依據(jù)終端反饋的信息,根據(jù)特定作業(yè)任務(wù)的要求發(fā)送操作與控制指令信息,控制無(wú)線遙控小車的前進(jìn)、后退、轉(zhuǎn)向、加速和減速。1系統(tǒng)方案設(shè)計(jì)1.1總體方案設(shè)計(jì)1.1.1設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)無(wú)線小車的控制系統(tǒng),此控制系統(tǒng)可以通過(guò)USB接口與無(wú)線模塊相連,并通過(guò)無(wú)線模塊來(lái)控制無(wú)線小車進(jìn)行前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、采集信息等操作。本設(shè)計(jì)預(yù)期要研究的主要問(wèn)題有:(1)如何實(shí)現(xiàn)USB口與串口間的轉(zhuǎn)換。(2)如何實(shí)現(xiàn)無(wú)線傳輸模塊的接收與發(fā)送。(3)如何通過(guò)編程實(shí)現(xiàn)控制系統(tǒng)的各項(xiàng)功能。(4)如何實(shí)現(xiàn)下位機(jī)小車的行進(jìn)。(5)如何實(shí)現(xiàn)溫度、濕度信息的采集。(6)如何設(shè)定通信協(xié)議。1.1.2設(shè)計(jì)原理系統(tǒng)以C51單片機(jī)作為主控芯片,移動(dòng)控制平臺(tái)上的單片機(jī)通過(guò)USB轉(zhuǎn)串口模塊連接上位機(jī)的USB口,接收控制信息(例如:前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等),并將該控制信息經(jīng)過(guò)編碼和調(diào)制之后,通過(guò)無(wú)線傳輸模塊實(shí)現(xiàn)無(wú)線發(fā)送、接收操作指令,將控制信號(hào)發(fā)送出去供小車接收,并作出相應(yīng)動(dòng)作。1.2方案選擇與論證1.2.1單片機(jī)處理模塊方案1:8051是在8031的基礎(chǔ)上,片內(nèi)又集成有4KBROM,作為程序存儲(chǔ)器,是1個(gè)程序不超過(guò)4KB的小系統(tǒng)。ROM內(nèi)的程序是公司制作芯片時(shí),代為燒制的,出廠的8051都是含有特殊用途的單片機(jī)[4]。所以8051應(yīng)用在程序已定,且大批量生產(chǎn)的單片機(jī)產(chǎn)品中,8051是具有MCS-51內(nèi)核的各種型號(hào)單片機(jī)的基礎(chǔ),也是各種增強(qiáng)型,擴(kuò)展型等衍生品種的核心,使用簡(jiǎn)單,可以根據(jù)自己的需要擴(kuò)展外部接口。方案2:AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。將多功能8位CPU組合在單個(gè)芯片中,三級(jí)程序存儲(chǔ)器鎖定,0Hz-24MHz,128×8位內(nèi)部RAM,32條可編程I/O線,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷源,可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時(shí)鐘電路,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。方案3:Cypress公司的EZ-USBFX2單片機(jī)CY7C68013是一款性能較高的USB2.0控制器[5]。在芯片上集成了USB和C51內(nèi)核兩個(gè)模塊,由USB收發(fā)模塊進(jìn)行數(shù)據(jù)字節(jié)傳輸,功能強(qiáng)大的USB內(nèi)核自動(dòng)完成USB協(xié)議的轉(zhuǎn)換,大大簡(jiǎn)化了8051代碼。芯片集成了USB外設(shè)接口的硬件,包括非易失存儲(chǔ)器(EPROM、EEPROM、FLASH、ROM)、微處理器、RAM、SIE(串口接口引擎)、DMA等全部功能模塊。集成工業(yè)標(biāo)準(zhǔn)的8051內(nèi)核,具有以下增強(qiáng)特性:高達(dá)48MHz的時(shí)鐘;每條指令四個(gè)時(shí)鐘周期;兩個(gè)UART;三個(gè)計(jì)數(shù)器/定時(shí)器;擴(kuò)展的中斷系統(tǒng);兩個(gè)數(shù)據(jù)指針;3.3V電源;矢量USB中斷;8051可工作在48MHz、24MHz、12MHz三種時(shí)鐘頻率;四個(gè)集成FIFO,可以同16位總線進(jìn)行自動(dòng)轉(zhuǎn)換;可工作在主/從模式;FIFO可使用外部提供的時(shí)鐘或異步選通信號(hào);為ASIC和DSP提供方便的接口;為FIFO和GPIF設(shè)計(jì)的專門自動(dòng)中斷矢量;最多可有40個(gè)通用目的I/O。改進(jìn)增強(qiáng)的8051內(nèi)核,性能可達(dá)到標(biāo)準(zhǔn)8051的5-10倍,指令系統(tǒng)與8051完全兼容。USB內(nèi)核為USB設(shè)備開發(fā)者完成協(xié)議中大部分的通信工作,使開發(fā)者不需要深入了解USB的低級(jí)協(xié)議即可順利開發(fā)出所需要的USB設(shè)備。綜上所述:方案1可以大大簡(jiǎn)化設(shè)計(jì)難度,所以采用方案1。1.2.2USB傳輸模塊方案1:CP2101及其升級(jí)產(chǎn)品CP2102是美國(guó)Silicon公司生產(chǎn)的高集成度USB-UART橋接電路[6]。它們能夠用最簡(jiǎn)單的外部電路、最少的外部器件及最小的電路板面積簡(jiǎn)便實(shí)現(xiàn)USB2.0到UART的轉(zhuǎn)換。該電路的集成度高,內(nèi)置USB2.0全速功能控制器、USB收發(fā)器、晶體振蕩器、EEPROM及異步串行數(shù)據(jù)總線(UART),支持調(diào)制解調(diào)器全功能信號(hào),無(wú)需任何外部的USB器件。功能強(qiáng)大,采用MLP-28封裝,尺寸僅為5mm×5mm,占用空間非常小。與其他USB-UART轉(zhuǎn)接電路的工作原理類似,CP2101通過(guò)驅(qū)動(dòng)程序?qū)C的USB口虛擬成COM口以達(dá)到擴(kuò)展的目的。虛擬COM口(VCP)的器件驅(qū)動(dòng)程序允許一個(gè)基于CP2101的器件以PC應(yīng)用軟件的形式作為一個(gè)增加的COM口獨(dú)立于任何現(xiàn)有的硬件。COM口使用運(yùn)行在PC上的應(yīng)用軟件以訪問(wèn)一個(gè)標(biāo)準(zhǔn)硬件COM口的方式訪問(wèn)基于CP2101的器件,PC與CP2101間的數(shù)據(jù)傳輸是通過(guò)USB完成的,因此,無(wú)需修改現(xiàn)有的軟件和硬件就可以通過(guò)USB向基于CP2101的器件傳輸數(shù)據(jù)。CP2101的體積雖小但功能非常強(qiáng)大,其主要特性如下:=1\*GB3①內(nèi)含USB收發(fā)器,無(wú)需外接電路器;=2\*GB3②內(nèi)含時(shí)鐘電路,無(wú)需外接振蕩器;=3\*GB3③內(nèi)含上電復(fù)位電路;=4\*GB3④片內(nèi)電壓調(diào)節(jié)可輸出3.3V電壓;=5\*GB3⑤符合USB2.0規(guī)范的要求(12Mb/s);=6\*GB3⑥SUSPEND引腳支持USB狀態(tài)掛起;=7\*GB3⑦內(nèi)含512字節(jié)接收緩沖器和512字節(jié)發(fā)送緩沖器;=8\*GB3⑧支持硬件或X-On/X-Off握手;=9\*GB3⑨支持事件狀態(tài)。方案2:FT2232C是一款USB到UART/FIFO的轉(zhuǎn)換電路,是FTDI公司繼第二代FT232BM、FT245BM之后的第三代產(chǎn)品,集成了兩片BM芯片的功能[7]。電路要用48-LDLQFP封裝。FT2232C具有兩個(gè)多用途的UART/FIFO控制器,可分別配置成不同的工作模式。一個(gè)USB下游端口轉(zhuǎn)換成兩個(gè)I/O通道,每個(gè)I/O通道相當(dāng)一個(gè)FT232BM或FT245BM,可以單獨(dú)配置成UART接口或者FIFO接口。通過(guò)對(duì)外掛EEPROM的配置,F(xiàn)T2232C還提供一系列新的操作模式,如多協(xié)議同步串行機(jī)接口,這是專為同步串行協(xié)議如JTAG和SPI總線設(shè)計(jì)的。還有同步位寬模式、CPU風(fēng)格的FIFO模式、多協(xié)議同步串行機(jī)接口模式、MCU主機(jī)總線競(jìng)爭(zhēng)模式及快速光隔離串行機(jī)接口模式等。此外,該電路的驅(qū)動(dòng)能力有很大提高,能夠輸出較之通常電路3倍的功率,這使得多個(gè)電路可能共享總線。使用FTDI公司提供的虛擬串口(VCP)驅(qū)動(dòng),對(duì)外圍接口的使用就像使用PC的標(biāo)準(zhǔn)串口一樣。FT2232C的特點(diǎn):=1\*GB3①只需添加簡(jiǎn)單配置電路,便可實(shí)現(xiàn)串/并口的轉(zhuǎn)換;=2\*GB3②芯片上集成了全部USB協(xié)議,不需要另外編寫USB固件程序;=3\*GB3③2個(gè)I/O通道相互獨(dú)立,可配置成2個(gè)5V邏輯I/O接口;=4\*GB3④UART接口支持7或8位數(shù)據(jù)位,1/2位停止位,奇校驗(yàn)/偶校驗(yàn)/標(biāo)志位/空位/無(wú)奇偶校驗(yàn);=5\*GB3⑤發(fā)送數(shù)據(jù)速率300~1Mb/s(RS-232)3Mbs;=6\*GB3⑥接口模式和USB描述字符可在外部EEPROM中進(jìn)行配置,還可以在板子上通過(guò)USB對(duì)EEPROM進(jìn)行配置;=7\*GB3⑦4.35V~5.25V的單電壓工作范圍。方案3:PL2303是Prolific公司生產(chǎn)的高集成的RS232-USB接口轉(zhuǎn)換器,可提供一個(gè)RS232全雙工異步串行通信裝置與USB功能接口便利聯(lián)接的解決方案。該器件內(nèi)置USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號(hào)的UART,只需外接幾只電容就可實(shí)現(xiàn)USB信號(hào)與RS232信號(hào)的轉(zhuǎn)換,能夠方便嵌入到各種設(shè)備,該器件作為USB/RS232雙向轉(zhuǎn)換器,一方面從主機(jī)接收數(shù)據(jù)并將其轉(zhuǎn)換為RS232信息流格式發(fā)送給外設(shè);另一方面從RS232接收數(shù)據(jù)轉(zhuǎn)換為USB數(shù)據(jù)格式傳送回主機(jī)。這些工作全部由器件自動(dòng)完成,PL2303的高兼容驅(qū)動(dòng)可在大多操作系統(tǒng)上模擬成傳統(tǒng)COM端口,并允許基于COM端口應(yīng)用可方便地轉(zhuǎn)換成USB接口應(yīng)用,通訊波特率高達(dá)6Mb/s。在工作模式和休眠模式時(shí)都具有功耗低,是嵌入式系統(tǒng)手持設(shè)備的理想選擇。該器件具有以下特征:完全兼容USB1.1協(xié)議;可調(diào)節(jié)的3~5V輸出電壓,滿足3V、3.3V和5V不同應(yīng)用需求。PL2303的特點(diǎn):=1\*GB3①完全符合USB規(guī)范2.0(全速兼容);=2\*GB3②片內(nèi)擁有USB1.1收發(fā)器,5V轉(zhuǎn)3.3V的穩(wěn)壓器;=3\*GB3③支持RS232這樣的串行接口;=4\*GB3④全雙工發(fā)送器和接收器(TxD和RxD);=5\*GB3⑤六個(gè)引腳(RTS,CTS,DTR,DSR,DCD和RI);=6\*GB3⑥寬廣的流量控制機(jī)制;=7\*GB3⑦支持從遠(yuǎn)程輸入相關(guān)調(diào)制信號(hào)進(jìn)行喚醒功能;=8\*GB3⑧兩個(gè)通用的I/O(GPIO)引腳;綜上所述:PL2303最便宜只要3人民幣,外圍電路也不復(fù)雜,所以選擇PL2303來(lái)作此次設(shè)計(jì)。1.2.3無(wú)線傳輸模塊方案1:紅外接口是新一代的配置標(biāo)準(zhǔn),它支持?jǐn)?shù)字設(shè)備進(jìn)行數(shù)據(jù)交流。紅外通訊有著成本低廉、連接方便、簡(jiǎn)單易用和結(jié)構(gòu)緊湊的特點(diǎn),因此在小型的移動(dòng)設(shè)備中獲得了廣泛的應(yīng)用。通過(guò)紅外接口,各類移動(dòng)設(shè)備可以自由進(jìn)行數(shù)據(jù)交換。紅外線是波長(zhǎng)在750nm至1mm之間的電磁波,它的頻率高于微波而低于可見(jiàn)光,是一種人的眼睛看不到的光線。(1)紅外傳輸?shù)膬?yōu)點(diǎn)=1\*GB3①可以再同樣具備紅外接口的設(shè)備間進(jìn)行信息交流;=2\*GB3②紅外接口可省去下載或其他信息交流所發(fā)生的費(fèi)用;=3\*GB3③由于需要對(duì)接才能傳輸信息,安全性較強(qiáng)。(2)紅外傳輸?shù)娜秉c(diǎn)=1\*GB3①通訊距離短,通訊過(guò)程不能移動(dòng),遇障礙物通訊中斷;=2\*GB3②紅外通訊技術(shù)的主要目的是取代線纜連接進(jìn)行無(wú)線數(shù)據(jù)傳輸,功能單一,擴(kuò)展性差。方案2:藍(lán)牙(Bluetooth)技術(shù)是愛(ài)立信、IBM等5家公司在1998年聯(lián)合推出的一種短距(10~100米)無(wú)線網(wǎng)絡(luò)技術(shù)。它將各種通信設(shè)備、計(jì)算機(jī)及其終端設(shè)備、各種數(shù)字?jǐn)?shù)據(jù)系統(tǒng)、甚至家用電器采用無(wú)線方式聯(lián)接起來(lái)。(1)藍(lán)牙傳輸?shù)膬?yōu)點(diǎn)=1\*GB3①支持語(yǔ)音和數(shù)據(jù)傳輸;采用無(wú)線電技術(shù),傳輸范圍大,可穿透不同物質(zhì)以及在物質(zhì)間擴(kuò)散。=2\*GB3②采用跳頻展頻技術(shù),抗干擾性強(qiáng),不易竊聽。=3\*GB3③在各國(guó)都不受頻譜的限制,理論上說(shuō),不存在干擾。(2)藍(lán)牙傳輸?shù)娜秉c(diǎn)=1\*GB3①傳輸距離短,目前我們所用的藍(lán)牙一般為10米功率級(jí)別。也就是說(shuō)只能在方圓十米之內(nèi)進(jìn)行數(shù)據(jù)之間傳輸。=2\*GB3②傳輸速度慢。目前藍(lán)牙的峰值帶寬只能達(dá)到3Mb/s。方案3:nRF905三頻段收發(fā)合一,抗干擾能力強(qiáng),特別適合工業(yè)控制場(chǎng)合采用DSS+PLL頻率合成技術(shù),頻率穩(wěn)定性極好靈敏度高,-100dBm低工作電壓(2.7V),功耗小,待機(jī)狀態(tài)僅為1uA,可滿足低功耗設(shè)備的要求最大發(fā)射功率達(dá)+10dBm具有多個(gè)頻道(最多170個(gè)以上),特別滿足需要多信道工作的特殊場(chǎng)合工作速率最高可達(dá)76.8Kbps

外圍元件最少(僅10個(gè)),基本無(wú)需調(diào)試。由于采用了低發(fā)射功率、高接收靈敏度的設(shè)計(jì),使用無(wú)需申請(qǐng)?jiān)S可證,開闊地的使用距離最遠(yuǎn)可達(dá)1000米,具體使用環(huán)境及元件參數(shù)有關(guān)[8]。nRF905的優(yōu)點(diǎn)[9]:=1\*GB3①433Mhz開放ISM頻段免許可證使用;=2\*GB3②接收發(fā)送功能合一,收發(fā)完成中斷標(biāo)志;=3\*GB3③170個(gè)頻道,滿足多點(diǎn)通訊和跳頻通訊,實(shí)現(xiàn)組網(wǎng)通訊;=4\*GB3④內(nèi)置硬件8/16位CRC校驗(yàn),開發(fā)簡(jiǎn)單,數(shù)據(jù)傳輸可靠;

=5\*GB3⑤工作電壓1.9-3.6V,低功耗,待機(jī)模式僅2.5uA;

=6\*GB3⑥收發(fā)模式切換時(shí)間<650us;=7\*GB3⑦每次最多可發(fā)送接收32字節(jié),并可軟件設(shè)置發(fā)送/接收緩沖區(qū)大小2/4/8/16/32字節(jié);=8\*GB3⑧模塊可軟件設(shè)地址,只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供中斷指示),可直接接各種單片機(jī)使用,軟件編程非常方便;

=9\*GB3⑨發(fā)射速率50Kbps,外置433MHz天線,空曠通訊距離可達(dá)300米左右,室內(nèi)通信3-6層可實(shí)現(xiàn)可靠通信,抗干擾性能強(qiáng),很強(qiáng)的障礙穿透性能。綜上所述:nRF905兼有紅外傳輸和藍(lán)牙傳輸?shù)膬?yōu)點(diǎn),并且傳輸距離大大增加,所以采用方案3nRF905。2智能小車無(wú)線控制系統(tǒng)硬件部分設(shè)計(jì) 2.1單片機(jī)串口通信(1)串口通信原理[10]串口通訊對(duì)單片機(jī)而言意義重大,不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)接?jì)算機(jī)端,而且也能實(shí)現(xiàn)計(jì)算機(jī)對(duì)單片機(jī)的控制。由于其所需電纜線少,接線簡(jiǎn)單,所以在較遠(yuǎn)距離傳輸中,得到了廣泛的運(yùn)用。

(2)波特率選擇波特率(BoudRate)就是在串口通信中每秒能夠發(fā)送的位數(shù)(bits/second)。MSC-51串行端口在四種工作模式下有不同的波特率計(jì)算方法。模式1和模式3的波特率選擇相同,故在此僅以工作模式1為例來(lái)說(shuō)明串口通信波特率的選擇。在串行端口工作于模式1,其波特率將由計(jì)時(shí)/計(jì)數(shù)器1來(lái)產(chǎn)生,通常設(shè)置定時(shí)器工作于模式2(自動(dòng)再加模式)。在選擇波特率的時(shí)候需要考慮兩點(diǎn):首先,系統(tǒng)需要的通信速率。這要根據(jù)系統(tǒng)的運(yùn)作特點(diǎn),確定通信的頻率范圍。然后考慮通信時(shí)鐘誤差。使用同一晶振頻率在選擇不同的通信速率時(shí)通信時(shí)鐘誤差會(huì)有很大差別。為了通信的穩(wěn)定,應(yīng)該盡量選擇時(shí)鐘誤差最小的頻率進(jìn)行通信。(3)通信協(xié)議的使用通信協(xié)議是通信設(shè)備在通信前的約定。單片機(jī)、計(jì)算機(jī)有了協(xié)議這種約定,通信雙方才能明白對(duì)方的意圖,進(jìn)行下一步動(dòng)作。在系統(tǒng)工作過(guò)程中,單片機(jī)接收到PC機(jī)數(shù)據(jù)信息后,便查找協(xié)議,完成相應(yīng)的操作。當(dāng)單片機(jī)接收到0xA1時(shí),讀取P0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回PC機(jī);當(dāng)單片機(jī)接收到0xA2時(shí),單片機(jī)等待從PC機(jī)接收一段控制數(shù)據(jù);當(dāng)PC機(jī)接收到0xA3時(shí),就表明單片機(jī)操作已經(jīng)成功。(4)硬件連接51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和計(jì)算機(jī)之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如計(jì)算機(jī)的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡(jiǎn)單可靠。采用了三線制連接串口,也就是說(shuō)和計(jì)算機(jī)的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)本次設(shè)計(jì)來(lái)說(shuō)已經(jīng)足夠使用了,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。(5)SBUF數(shù)據(jù)緩沖寄存器這是一個(gè)可以直接尋址的串行口專用寄存器?!盀楹卧诖锌谑瞻l(fā)中,都只是使用到同一個(gè)寄存器SBUF。而不是收發(fā)各用一個(gè)寄存器?!睂?shí)際上SBUF包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們都共同使用同一個(gè)尋址地址-99H。CPU在讀SBUF時(shí)會(huì)指到接收寄存器,在寫時(shí)會(huì)指到發(fā)送寄存器,接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒(méi)有及時(shí)的被響應(yīng),數(shù)據(jù)沒(méi)有被取走,下一幀數(shù)據(jù)已到來(lái),而造成的數(shù)據(jù)重疊問(wèn)題。發(fā)送器則不需要用到雙緩沖,一般情況下在寫發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作SBUF寄存器的方法則很簡(jiǎn)單,只要把這個(gè)99H地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對(duì)其進(jìn)行讀寫操作了,如sfrSBUF=0x99;當(dāng)然也可以用其它的名稱。通常在標(biāo)準(zhǔn)的reg51.h或at89x51.h等頭文件中已對(duì)其做了定義,只要用#include引用就可以了。(6)SCON串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51芯片串行口的工作狀態(tài)。51芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON寄存器。其它各個(gè)位的具體定義如表1:表1串口控制寄存器SCON(MSB)(LSB)SM0SM1SM2RENTB8RB8TIRISM0、SM1為串行口工作模式設(shè)置位,兩位可以進(jìn)行四種模式的設(shè)置:表2串口工作模式設(shè)置SM0SM1模式功能波特率000同步移位寄存器fosc/120118位UART可變1029位UARTfosc/32或fosc/641139位UART可變表中的fosc代表振蕩器的頻率,也就是晶振的頻率。UART為(UniversalAsynchronousReceiver)的英文縮寫。SM2在模式2、模式3中為多處理機(jī)通信使能位。在模式0中要求該位為0。REM為允許接收位,REM置1時(shí)串口允許接收,置0時(shí)禁止接收。果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來(lái)的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開始處加入REM=0來(lái)禁止接收,在子程序結(jié)束處加入REM=1再次打開串口接收。TB8發(fā)送數(shù)據(jù)位8,在模式2和3是要發(fā)送的第9位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。RB8接收數(shù)據(jù)位8,在模式2和3是已接收數(shù)據(jù)的第9位。該位可能是奇偶位,地址/數(shù)據(jù)標(biāo)識(shí)位。在模式0中,RB8為保留位沒(méi)有被使用。在模式1中,當(dāng)SM2=0,RB8是已接收數(shù)據(jù)的停止位。TI發(fā)送中斷標(biāo)識(shí)位。在模式0,發(fā)送完第8位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。TI置位后,申請(qǐng)中斷,CPU響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI都必須由軟件來(lái)清除,也就是說(shuō)在數(shù)據(jù)寫入到SBUF后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng),這時(shí)TI=1,表明發(fā)送已完成,TI不會(huì)由硬件清除,所以這時(shí)必須用軟件對(duì)其清零。RI接收中斷標(biāo)識(shí)位。在模式0,接收第8位結(jié)束時(shí),由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。RI=1,申請(qǐng)中斷,要求CPU取走數(shù)據(jù)。但在模式1中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI置位。同樣RI也必須要靠軟件清除。常用的串口模式1是傳輸10個(gè)位的,1位起始位為0,8位數(shù)據(jù)位,低位在先,1位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1或定時(shí)器2的定時(shí)值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有兩個(gè)定時(shí)器,定時(shí)器0和定時(shí)器1,而定時(shí)器2是89C52系列芯片才有的。(7)波特率在使用串口做通訊時(shí)一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。它是指每秒可以傳送9600個(gè)二進(jìn)位,而一個(gè)字節(jié)要8個(gè)二進(jìn)位,如用串口模式1來(lái)傳輸那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10個(gè)二進(jìn)位,9600波特率用模式1傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是960字節(jié)。51芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M的晶振來(lái)計(jì)算,那么它的波特率可以達(dá)到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決于PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。模式1和模式3的波特率是可變的,取決于定時(shí)器1或2(52芯片)的溢出速率。如設(shè)置了PCON寄存器中的SMOD位為1時(shí)就可以把波特率提升2倍。通常會(huì)使用定時(shí)器1工作在定時(shí)器工作模式2下,這時(shí)定時(shí)值中的TL1做為計(jì)數(shù),TH1做為自動(dòng)重裝值,這個(gè)定時(shí)模式下,定時(shí)器溢出后,TH1的值會(huì)自動(dòng)裝載到TL1,再次開始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。2.2USB轉(zhuǎn)串口PL2303芯片USB轉(zhuǎn)串口模塊全稱為USBtoSerialportModule,它可以將USB接口虛擬成一個(gè)串口,解決無(wú)串口的苦惱[11]。現(xiàn)在市面上的USB轉(zhuǎn)串品的設(shè)備可謂是琳瑯滿目,質(zhì)量也是參差不齊。造成這種現(xiàn)象的根本原因就在于控制芯片的不同?,F(xiàn)在USB轉(zhuǎn)串口橋接芯片有很多,比如CP2102、FT232、PL2303等等。但并非每一種芯片都可以用作ISP下載。經(jīng)過(guò)測(cè)試CP2102是不能下載的,而FT232可以下載,但其價(jià)格實(shí)在不菲。最為適中的就是臺(tái)灣生產(chǎn)的PL2303,可以穩(wěn)定下載,并可以支持多種操作系統(tǒng)。

PL2303HX采用28腳貼片SOIC封裝,工作頻率為12MHZ,符合USB1.1通信協(xié)議,可以直接將USB信號(hào)轉(zhuǎn)換成串口信號(hào),波特率從75~1228800,有22種波特率可以選擇,并支持5、6、7、8、16共5種數(shù)據(jù)比特位。圖1采用PL2303芯片開發(fā)的USB轉(zhuǎn)串口模塊這是用PL2303芯片開發(fā)的USB轉(zhuǎn)串口模塊,采用機(jī)器自動(dòng)焊接,都經(jīng)人工檢測(cè),電路板只有30*16*7毫米,模塊一共引出4根腳,TTL串口的引腳定義:+5V、P3.0TXD、P3.1RXD、GND地線,其中+5V電源輸出線一般情況下都不用的,不需要連接。PL2303原理圖如圖2:圖3PL2303芯片的原理圖軟件安裝:點(diǎn)擊下載PL2303.RAR解壓縮運(yùn)行SETUP.EXE進(jìn)行安裝,驅(qū)動(dòng)安裝完成后,將模塊的USB插頭插入電腦USB接口即可。鼠標(biāo)右鍵點(diǎn)擊桌面的“我的電腦”=》屬性=》硬件=》設(shè)備管理器=》端口,看是否出現(xiàn)PL2303虛擬的COM4,如果出現(xiàn)說(shuō)明模塊是好的驅(qū)動(dòng)軟件也安裝成功了。圖4安裝PL2303驅(qū)動(dòng)后設(shè)備管理器串口圖2.3DS18B20溫度傳感器2.3.1DS18B20概述DS18B20是DALLAS公司生產(chǎn)的一線制數(shù)字溫度傳感器;它具有3引腳TO-92小體積封裝形式;溫度測(cè)量范圍為-55~+125℃,電源供電范圍為3~5.5V;可編程為9~12位數(shù)字表示;測(cè)溫分辨率可達(dá)0.0625℃,被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字測(cè)量方式串行輸出;其工作電源即可在遠(yuǎn)端引入,可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3根(VDD、DQ和GND)或2根(利用DQ線供電、GND)線上,CPU只需一根端口線就能與總線上的多個(gè)串聯(lián)的DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。DS18B20的管腳排列及不用的封裝形式如圖所示,DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源接地;VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)節(jié)點(diǎn)),NC表示無(wú)連接。圖5DS18B20系列溫度傳感器(1)應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫電路。(2)測(cè)溫范圍-55~+125℃,最大精度0.0625℃。(3)只通過(guò)一條數(shù)據(jù)線即可實(shí)現(xiàn)通信。(4)每個(gè)DS1820器件上都有獨(dú)一無(wú)二的序列號(hào),所以一條數(shù)據(jù)線上可以掛接很多該傳感器。(5)內(nèi)部有溫度上、下限告警功能。DS18B20內(nèi)部結(jié)構(gòu)如圖所示,主要由4部分組成:64位ROM、溫度傳感器、非易失性存儲(chǔ)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。圖6DS18B20內(nèi)部原理圖DS18B20工作時(shí)需要接收特定的指令來(lái)完成相應(yīng)功能(指令,可以簡(jiǎn)單的理解為可以被識(shí)別并有相應(yīng)意義的一系列高低電平信號(hào)),它的指令可分為ROM指令和RAM指令;ROM指令主要對(duì)其內(nèi)部的ROM進(jìn)行操作,如查所使用DS18B20的序列號(hào)等,如果只使用一個(gè)DS18B20,ROM操作一般就可以直接跳過(guò)了;RAM指令主要是完成對(duì)其內(nèi)RAM中的數(shù)據(jù)進(jìn)行操作,如讓其開始進(jìn)行數(shù)據(jù)采集、讀數(shù)據(jù)等。DS18B20數(shù)字溫度傳感器是單總線器件,數(shù)據(jù)的讀寫只通過(guò)一條數(shù)據(jù)線進(jìn)行并且這一條線上允許掛很多該傳感器;這樣對(duì)器件進(jìn)行讀寫指令時(shí)就會(huì)麻煩一些,必須應(yīng)用特定時(shí)序來(lái)識(shí)別高低電平信號(hào)(如寫高電平1,并不是把數(shù)據(jù)線直接拉高,而是用有一定時(shí)序關(guān)系的高低電平來(lái)代表寫1),所以指令表中的0、1在寫給DS18B20時(shí)就得變成代表0、1電平的時(shí)序段序列。同樣,從DS18B20讀數(shù)據(jù)時(shí),也是由特定的時(shí)序來(lái)完成數(shù)據(jù)讀取。對(duì)DS18B20進(jìn)行讀寫的時(shí)序圖如下:圖7DS18B20進(jìn)行讀寫的時(shí)序硬件連接方式有兩種,一種是由單獨(dú)電源供電(3~5V);第二種是由數(shù)據(jù)線為DS18B20供電(工作速度相對(duì)較慢)。圖8DS18B20單獨(dú)電源供電方式圖9數(shù)據(jù)線為DS1820供電方式(1)復(fù)位操作(2)執(zhí)行ROM操作的5條指令之一:讀ROM,匹配ROM,搜索ROM,跳過(guò)ROM,報(bào)警搜索。(3)存儲(chǔ)器操作命令:溫度轉(zhuǎn)換、讀取溫度、設(shè)定上下限溫度值等指令(4)讀取溫度數(shù)據(jù):主機(jī)讀取溫度數(shù)據(jù)后進(jìn)行數(shù)據(jù)處理??梢猿跏蓟瘮?shù)據(jù)精度,按芯片手冊(cè)寫入固定指令。數(shù)據(jù)位數(shù)可設(shè)置成9、10、11、12位,其中7位為溫度整數(shù)部分,1位表示溫度正負(fù),其余位數(shù)為小數(shù)。如9位數(shù)據(jù)時(shí),有1位為小數(shù),精度為0.5。2.3.2DS18B20指令功能介紹(1)ROM操作指令:①讀ROM指令:ReadROM[33h]這個(gè)命令允許總線控制器讀到DS1820的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只有在總線上存在單只DS1820的時(shí)候才能使用這個(gè)命令。如果總上有不止一個(gè)從機(jī),當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路連在一起開成相與的效果)。②匹配ROM指令:MatchROM[55h]匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS1820只有和64位ROM序列完全匹配的DS1820才能響應(yīng)隨后的存儲(chǔ)器操作命令。所有和64位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖。這條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用。③跳過(guò)ROM指令:SkipROM[CCh]這條命令允許總線控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下右以節(jié)省時(shí)間。如果總線上不止一個(gè)從機(jī),SkipROM命令之后跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳送信號(hào),總線上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路下拉效果相當(dāng)于相與)。④搜索ROM指令:SearchROM[F0h]當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總線上有多少器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64位編碼。⑤報(bào)警搜索指令:AlarmSearch[ECh]這條命令的流程圖SearchROM相同。然而只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。DS18B20需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括幾種單線信號(hào)類型:復(fù)位脈沖、存在脈沖、寫0、寫1、讀0和讀1。所有這些信號(hào),除存在脈沖外,都是由總線控制器發(fā)出的。和DS18B20間的任何通訊都需要以初始化序列開始,初始化序列見(jiàn)上圖。一個(gè)復(fù)位脈沖跟著一個(gè)存在脈沖表明DS18B20已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)(適當(dāng)?shù)腞OM命令和存儲(chǔ)器操作命令)。DS18B20內(nèi)部對(duì)此計(jì)算的結(jié)果可提供0.5℃的分辨力。溫度以16位帶符號(hào)位擴(kuò)展的二進(jìn)制補(bǔ)碼形式讀出,表3給出了溫度值和輸出數(shù)據(jù)的關(guān)系。數(shù)據(jù)通過(guò)單線接口以串行方式傳輸。DS1820測(cè)溫范圍-55℃~+125℃,以0.5℃遞增。如用于華氏溫度,必須要用一個(gè)轉(zhuǎn)換因子查找表。讀取數(shù)據(jù)時(shí)需要讀取前16位數(shù)據(jù),低字節(jié)在前,高字節(jié)為符號(hào)為。表3溫度值和輸出數(shù)據(jù)的關(guān)系溫度℃數(shù)據(jù)輸出(二進(jìn)制)數(shù)據(jù)輸出(十六進(jìn)制)+125000000001111101000FA+2500000000001100100032+1/200000000000000010001000000000000000000000-1/21111111111111111FFFF-251111111111001110FFCE-551111111110010010FF922.3.3利用ProtelDXP設(shè)計(jì)DS18B20溫度傳感器圖10DS18B20溫度傳感器設(shè)計(jì)圖GND接地,VCC接5V電源,DQ接單片機(jī)的P37引腳,具體程序見(jiàn)程序設(shè)計(jì)部分。2.4恒壓恒流橋式2A驅(qū)動(dòng)芯片L298N2.4.1L298N介紹L298N是SGS公司的產(chǎn)品,比較常見(jiàn)的是15腳Multiwatt封裝的L298N,內(nèi)部同樣包含4通道邏輯驅(qū)動(dòng)電路??梢苑奖愕尿?qū)動(dòng)兩個(gè)直流電機(jī),或一個(gè)兩相步進(jìn)電機(jī)。L298N芯片可以驅(qū)動(dòng)兩個(gè)二相電機(jī),也可以驅(qū)動(dòng)一個(gè)四相電機(jī),輸出電壓最高可達(dá)50V,可以直接通過(guò)電源來(lái)調(diào)節(jié)輸出電壓;可以直接用單片機(jī)的IO口提供信號(hào);而且電路簡(jiǎn)單,使用比較方便。L298N可接受標(biāo)準(zhǔn)TTL邏輯電平信號(hào)VSS,VSS可接4.5~7V電壓。4腳VS接電源電壓,VS電壓范圍VIH為+2.5~46V。輸出電流可達(dá)2.5A,可驅(qū)動(dòng)電感性負(fù)載。1腳和15腳下管的發(fā)射極分別單獨(dú)引出以便接入電流采樣電阻,形成電流傳感信號(hào)。L298可驅(qū)動(dòng)2個(gè)電動(dòng)機(jī),OUT1,OUT2和OUT3,OUT4之間可分別接電動(dòng)機(jī),本實(shí)驗(yàn)裝置我們選用驅(qū)動(dòng)一臺(tái)電動(dòng)機(jī)。5,7,10,12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn)。EnA,EnB接控制使能端,控制電機(jī)的停轉(zhuǎn)。EnA為低電平時(shí),輸入電平對(duì)電機(jī)控制起作用,當(dāng)EnA為高電平,輸入電平為一高一低,控制電機(jī)正或反轉(zhuǎn)。同為低電平電機(jī)停止,同為高電平電機(jī)剎停。圖11引腳圖圖12電路設(shè)計(jì)圖1、15腳是輸出電流反饋引腳,其它與L293相同。在通常使用中這兩個(gè)引腳也可以直接接地。圖12是其與51單片機(jī)連接的電路圖。2.4.2利用ProtelDXP設(shè)計(jì)L298N部分圖13電機(jī)驅(qū)動(dòng)的原理圖①電路圖有兩個(gè)電源,一路是為L(zhǎng)298N工作需要的5V電源VCC,一路為驅(qū)動(dòng)電機(jī)用的電池電源VSS。②1腳和15教有的電路在中間串接大功率電阻,可以不加。③圖14中連接了兩路電機(jī),P2和P3是一一對(duì)應(yīng)的關(guān)系,如果只驅(qū)動(dòng)一路電機(jī)可以連接對(duì)應(yīng)的2、3腳或者13、14腳。④為了防止電機(jī)停止運(yùn)轉(zhuǎn)的產(chǎn)生的瞬間反向電流對(duì)電路板的影響,因此在電機(jī)與電路板加入八個(gè)二極管(diode),防止反向電流。⑤6腳和11腳為兩路電機(jī)通道的使能開關(guān),高電平使能,所以直接連接高電平,也可以交有單片機(jī)控制。⑥由于工作時(shí)L298N的功率消耗大,可以適當(dāng)加裝散熱片。2.5LM1117低壓差電壓調(diào)節(jié)器2.5.1LM1117器件介紹LM1117是一個(gè)低壓差電壓調(diào)節(jié)器系列。其壓差在1.2V輸出,負(fù)載電流為800mA時(shí)為1.2V。它與國(guó)家半導(dǎo)體的工業(yè)標(biāo)準(zhǔn)器件LM317有相同的管腳排列。LM1117有可調(diào)電壓的版本,通過(guò)2個(gè)外部電阻可實(shí)現(xiàn)1.25~13.8V輸出電壓范圍。另外還有5個(gè)固定電壓輸出(1.8V、2.5V、2.85V、3.3V和5V)的型號(hào)。LM1117提供電流限制和熱保護(hù),電路包含1個(gè)帶隙參考電壓以確保輸出電壓的精度在±1%以內(nèi)。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252D-PAK封裝。輸出端口需要一個(gè)至少10uF的鉭電容來(lái)改善瞬態(tài)響應(yīng)和穩(wěn)定性。提供1.8V、2.5V、2.85V、3.3V、5V和可調(diào)電壓的型號(hào)節(jié)省空間的SOT-223和LLP封裝,電流限制和熱保護(hù)功能,輸出電流可達(dá)800mA,線性調(diào)整率:0.2%(Max),負(fù)載調(diào)整率:0.4%(Max),溫度范圍:LM1117:0℃~125℃,LM1117I:-40℃~125℃。2.85V模塊可用于SCSI-2有源終端;開關(guān)DC/DC轉(zhuǎn)換器的主調(diào)壓器;高效線性調(diào)整器;電池充電器;電池供電裝置。典型原理電路圖圖15典型固定輸出電壓2.5.2利用ProtelDXP設(shè)計(jì)LM1117電壓轉(zhuǎn)換芯片在設(shè)計(jì)之初理論上使用的是LM1117,但是在購(gòu)買器件的時(shí)候沒(méi)有配得LM1117,最終使用的是AMS1117-3.3型號(hào),其原理和LM1117引腳方式相同。AMS1117-3.3左邊的引腳GND接地,中間的引腳OUT為無(wú)線模塊提供3.3V正電壓,右邊的引腳VIN接5V正電源,在GND和VIN、GND和OUT中間接兩個(gè)電容。圖16電壓轉(zhuǎn)換芯片的設(shè)計(jì)圖2.5.3設(shè)計(jì)要點(diǎn)電源是整個(gè)系統(tǒng)穩(wěn)定工作的前提,因此必須有一個(gè)合理的電源設(shè)計(jì),對(duì)于小車來(lái)說(shuō)電源設(shè)計(jì)應(yīng)注意兩點(diǎn):第一點(diǎn),與一般的穩(wěn)壓電源不同,小車的電池電源在9V,也就是6節(jié)5號(hào)電池,還需要考慮在電池?fù)p耗的情況下電壓的降低,因此常用的78系列穩(wěn)壓芯片不能夠滿足要求,因此必須采用低壓差的穩(wěn)壓芯片。第二點(diǎn),單片機(jī)必須與大電流器件分開供電,避免大電流器件對(duì)單片機(jī)造成干擾,影響單片機(jī)的穩(wěn)定運(yùn)行。2.6nRF905無(wú)線傳輸模塊設(shè)計(jì)2.6.1nRF905管腳描述圖17nRF905管腳圖表4串口工作模式設(shè)置管腳名稱管腳功能說(shuō)明1VCC電源電源+3.3~3.6VDC2TX_EN數(shù)字輸入TX_EN=1TX模式TX_EN=0RX模式3TRX_CE數(shù)字輸入使能芯片發(fā)射或接收4PWR_UP數(shù)字輸入芯片上電5uCLK時(shí)鐘輸出本模塊該腳廢棄不用,向后兼容6CD數(shù)字輸出載波檢測(cè)7AM數(shù)字輸出地址匹配8DR數(shù)字輸出接收或發(fā)射數(shù)據(jù)完成9MISOSPI接口SPI輸出10MOSISPI接口SPI輸入11SCKSPI時(shí)鐘SPI時(shí)鐘12CSNSPI使能SPI使能13GND地接地14GND地接地VCC腳接電壓范圍為3V~3.6V之間,不能在這個(gè)區(qū)間之外,超過(guò)3.6V將會(huì)燒毀模塊。推薦電壓3.3V左右。除電源VCC和接地端,其余腳都可以直接和普通的5V單片機(jī)IO口直接相連,無(wú)需電平轉(zhuǎn)換。當(dāng)然對(duì)3V左右的單片機(jī)更加適用了。硬件上面沒(méi)有SPI的單片機(jī)也可以控制本模塊,用普通單片機(jī)IO口模擬SPI不需要單片機(jī)SPI模塊介入,只需添加代碼模擬SPI時(shí)序即可。13腳、14腳為接地腳,需要和母板的邏輯地連接起來(lái)。排針間距為100mil,標(biāo)準(zhǔn)DIP插針。與51系列單片機(jī)P0口連接時(shí)候,需要加10K的上拉電阻,與其余口連接不需要。2.6.2nRF905配置方式所有配置字都是通過(guò)SPI接口送給nRF905。SPI接口的工作方式可通過(guò)SPI指令進(jìn)行設(shè)置。當(dāng)nRF905處于空閑模式或關(guān)機(jī)模式時(shí),SPI接口可以保持在工作狀態(tài)[12]。SPI接口寄存器配置SPI接口由狀態(tài)寄存器、射頻配置寄存器、發(fā)送地址寄存器、發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器5個(gè)寄存器組成。狀態(tài)寄存器包含數(shù)據(jù)準(zhǔn)備好引腳狀態(tài)信息和地址匹配引腳狀態(tài)信息;射頻配置寄存器包含收發(fā)器配置信息,如頻率和輸出功能等;SPI接口寄存器配置SPI接口由狀態(tài)寄存器、射頻配置寄存器、發(fā)送地址寄存器、發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器5個(gè)寄存器組成。狀態(tài)寄存器包含數(shù)據(jù)準(zhǔn)備好引腳狀態(tài)信息和地址匹配引腳狀態(tài)信息;射頻配置寄存器包含收發(fā)器配置信息,如頻率和輸出功能等;發(fā)送地址寄存器包含接收機(jī)的地址和數(shù)據(jù)的字節(jié)數(shù);發(fā)送數(shù)據(jù)寄存器包含待發(fā)送的數(shù)據(jù)包的信息,如字節(jié)數(shù)等;接收數(shù)據(jù)寄存器包含要接收的數(shù)據(jù)的字節(jié)數(shù)等信息。指令配置當(dāng)CSN為低,SPI接口開始等待一條指令。任何一條新指令均由CSN的由高到低的轉(zhuǎn)換開始[13]。表5SPI串行接口指令指令名稱指令格式操作W_CONFIG(WC)0000AAAA寫配置寄存器AAAAR_CONFIG(RC)0001AAAA讀配置寄存器AAAAW_TX_PAYLOAD(WTP)00100000寫TX有效數(shù)據(jù)1-32字節(jié)寫操作從0開始R_TX_PAYLOAD(RTP)00100001讀TX有效數(shù)據(jù)1-32字節(jié)讀操作從0開始W_TX_ADDRESS(WTA)00100010寫TX地址1-4字節(jié)寫操作從0開始R_TX_ADDRESS(RTA)00100011讀TX地址1-4字節(jié)讀操作從0開始R_RX_PAYLOAD(RRP)00100100讀RX有效數(shù)據(jù)1-32字節(jié)讀操作從0開始(4)SPI時(shí)序圖18SPI讀操作圖19SPI寫操作2.7上位機(jī)硬件電路設(shè)計(jì)圖20上位機(jī)硬件電路原理圖圖21上位機(jī)硬件實(shí)物圖本手工板的具體器件包括:=1\*GB3①1個(gè)STC89C52單片機(jī);=2\*GB3②1個(gè)STC89C52單片機(jī)底座;=3\*GB3③2條引腳底座;=4\*GB3④1個(gè)復(fù)位按鍵;=5\*GB3⑤3個(gè)10微法的鋁電解電容;=6\*GB3⑥2個(gè)10千歐的電阻;=7\*GB3⑦1個(gè)11.0592MHZ的晶振;=8\*GB3⑧2個(gè)33皮法的瓷片電容;=9\*GB3⑨1個(gè)ams1117貼片式三端穩(wěn)壓器(5V電壓轉(zhuǎn)換為3.3V);=10\*GB3⑩1個(gè)nRF905無(wú)線模塊;2.8下位機(jī)硬件電路設(shè)計(jì)(需改)本手工板的具體器件包括:=1\*GB3①1個(gè)STC89C52單片機(jī);=2\*GB3②1個(gè)STC89C52單片機(jī)底座;=3\*GB3③2條引腳底座;=4\*GB3④1個(gè)復(fù)位按鍵;=5\*GB3⑤3個(gè)10微法的鋁電解電容;=6\*GB3⑥2個(gè)10千歐的電阻;=7\*GB3⑦1個(gè)12.0592MHZ的晶振;=8\*GB3⑧2個(gè)33皮法的瓷片電容;=9\*GB3⑨1個(gè)ams1117貼片式三端穩(wěn)壓器(5V電壓轉(zhuǎn)換為3.3V);=10\*GB3⑩1個(gè)nRF905無(wú)線模塊;2.9手工焊接的基本操作步驟(1)元器件裝焊順序依次為:?jiǎn)纹瑱C(jī)座、復(fù)位電路、無(wú)線模塊、LM1117、二極管、控制信號(hào)引腳、L298等其它元器件,每個(gè)模塊的元器件的焊接順序?yàn)橄刃『蟠?。?)芯片與底座都是有方向的,焊接時(shí),要嚴(yán)格按照手工板上的缺口所指的方向,使芯片底座與手工板三者的缺口都對(duì)應(yīng)。(3)焊接時(shí),要使焊點(diǎn)周圍都有錫,將其牢牢焊住,防止虛焊。(4)在焊接圓形的極性電容器時(shí)(一般電容值都是比較大的),其電容器的引腳是分長(zhǎng)短的,以長(zhǎng)腳對(duì)應(yīng)“+”號(hào)所在的孔。(5)芯片在安裝前最好先兩邊的針腳稍稍彎曲,使其有利于插入底座對(duì)應(yīng)的插口中。(6)電位器也是有方向的,其旋鈕要與手工板上凸出方向相對(duì)應(yīng)。(7)取電阻時(shí),找到所需電阻后,拿剪刀剪下所需數(shù)目電阻,并寫上電阻,以便查找。(8)裝完同一種規(guī)格后再裝另一種規(guī)格,盡量使電阻器的高低一致。焊完后將露在印制電路板表面多余引腳齊根剪去。(9)焊接集成電路時(shí),先檢查所用型號(hào),引腳位置是否符合要求。焊接時(shí)先焊邊沿對(duì)腳的二只引腳,以使其定位,然后再?gòu)淖蟮接易陨隙轮饌€(gè)焊接。(10)對(duì)引腳過(guò)長(zhǎng)的電器元件(如電容器,電阻等),焊接完后要將其剪短。(11)當(dāng)電路連接完前,最好用清洗劑對(duì)電路的表面進(jìn)行清洗,以防電路板表面附著的鐵屑使電路斷路。(12)焊接上錫時(shí),錫不宜過(guò)多,當(dāng)焊點(diǎn)焊錫錐形時(shí)即為最好。(13)器件底座焊接完成后在手工板上畫出正負(fù)極或器件安裝的方向示意標(biāo)準(zhǔn),方便以后器件的安裝,尤其是正負(fù)極的標(biāo)注和溫度傳感器的方向標(biāo)注。(14)檢查所有電路線路焊接是否全部連接,是否連接正確;特別注意正極和地線的分開,切不可短路。2.10小車的組裝和調(diào)試(1)檢查手工板的焊接,按原理給小板供電+5V,用LED小燈顯示輸出控制的A1、A2、B1、B2、ENA、ENB的輸出情況,在PC端用VB編好的程序控制小板的通信。(2)組裝小車,檢查小車的機(jī)械部分,測(cè)試小車機(jī)械是否通暢,防止出現(xiàn)因機(jī)械產(chǎn)生的故障。(3)組裝手工板、L298N、電源和小車,因?yàn)閹撞糠种g沒(méi)有兼容性,所以有些連接需要自己動(dòng)手制作。(4)連接排線,檢查各部件,各模塊,和上位機(jī)端進(jìn)行通信,檢查通信協(xié)議是否正確。3智能小車無(wú)線控制系統(tǒng)軟件部分設(shè)計(jì)3.1PC端編程環(huán)境綜述VisualBasic(VB)是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動(dòng)編程語(yǔ)言。從任何標(biāo)準(zhǔn)來(lái)說(shuō),VB都是世界上使用人數(shù)最多的語(yǔ)言——不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語(yǔ)言。VB擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫(kù),或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個(gè)應(yīng)用程序。從開發(fā)個(gè)人或小組使用的小工具,到大型企業(yè)應(yīng)用系統(tǒng),甚至通過(guò)Internet遍及全球的分布式應(yīng)用軟件,都可以使用VisualBasic語(yǔ)言進(jìn)行開發(fā)[14]。VisualBasic有著廣泛的應(yīng)用,具有以下幾個(gè)主要特點(diǎn)[15]:=1\*GB3①真正的面向?qū)ο缶幊?,使開發(fā)人員在維護(hù)系統(tǒng)運(yùn)行時(shí)只需要修改很少的代碼,同時(shí)也加快了系統(tǒng)開發(fā)的速度。=2\*GB3②可視化的編程方法,以及向?qū)У墓δ?,使開發(fā)人員幾乎不用輸入太多的代碼就可以開發(fā)Windows程序。=3\*GB3③數(shù)據(jù)訪問(wèn)特性允許對(duì)包括MicrosoftSQLServer和其他企業(yè)數(shù)據(jù)庫(kù)在內(nèi)大部分?jǐn)?shù)據(jù)庫(kù)格式建立數(shù)據(jù)庫(kù)和前端應(yīng)用程序。=4\*GB3④通過(guò)ActiveX技術(shù)可以使用其他應(yīng)用程序程序提供的功能,例如,MicrosoftWord字處理軟件,MicrosoftExcel電子表格及其他Windows應(yīng)用程序,甚至可以直接使用VisualBasic創(chuàng)建應(yīng)用程序和對(duì)象。=5\*GB3⑤支持Internet,能通過(guò)Internet訪問(wèn)文檔和應(yīng)用程序。=6\*GB3⑥提供運(yùn)行時(shí)的可自由發(fā)布的動(dòng)態(tài)鏈接庫(kù)(DLL)。3.2上位機(jī)軟流程圖程序入口串口開關(guān)程序入口串口開關(guān)串口已開啟串口未開啟溫度信息采集其它信息采集無(wú)線小車控制采集信息保存系統(tǒng)時(shí)間函數(shù)圖22上位機(jī)軟件系統(tǒng)流程圖3.3上位機(jī)軟件程序設(shè)計(jì)圖23上位機(jī)軟件系統(tǒng)界面設(shè)計(jì)(1)串口參數(shù)的設(shè)定MSComm.Settings="4800,N,8,1"MSComm.InputLen=0MSComm.InBufferSize=1024MSComm.OutBufferSize=512MSComm.PortOpen=TrueMSComm.InputMode=comInputModeBinaryMSComm.SThreshold=0MSComm.InBufferCount=0MSComm.OutBufferCount=0添加串口控件后,可通過(guò)對(duì)MSComm各屬性的設(shè)置,來(lái)實(shí)現(xiàn)對(duì)串口的相關(guān)設(shè)定,本次設(shè)計(jì)所用的串口為“1”口,串口參數(shù)為“波特率4800bps,無(wú)校驗(yàn),8位數(shù)據(jù),1位停止位”,“接收緩沖區(qū)為1024字節(jié)”,“發(fā)送緩沖區(qū)為512字節(jié)”,“并且以二進(jìn)制方式進(jìn)行發(fā)送接收與發(fā)送”。(2)方向控制功能的實(shí)現(xiàn)PrivateSubCommand_tingzhi_Click()MSComm.OutBufferCount=0Forj=1To5MSComm.Output=send0Fori=1To2000NextNextEndSub以上為控制小車停止的代碼,MSComm.Output=send0,段代碼的意思為向串口輸出send0,因此若想實(shí)現(xiàn)其他的方向的控制功能主要就是把send0改為send1、send2、send3、send4,依次實(shí)現(xiàn)的是小車的前進(jìn)、后退、左拐、右拐;加上兩個(gè)循環(huán)的作用就是用來(lái)延時(shí),以防止發(fā)送速度過(guò)快影響數(shù)據(jù)的處理以及系統(tǒng)的穩(wěn)定性能。(3)燈光控制功能的實(shí)現(xiàn)PrivateSubCommand_dengguang_Click()deng1=dengMod2Ifdeng1=0ThenForj=1To5MSComm.Output=send5Fori=1To2000NextNextElseForj=1To5MSComm.Output=send6Fori=1To2000NextNextEndIfdeng=deng+1EndSub燈光函數(shù)的本質(zhì)也與方向控制函數(shù)是相同的,但是由于用來(lái)實(shí)現(xiàn)燈光控制的是一個(gè)按鍵,因此增加了一定的難度,為此加入了一個(gè)判斷函數(shù),來(lái)實(shí)現(xiàn)每次按鍵觸發(fā)的不同響應(yīng)方式。定義了deng這個(gè)變量是用來(lái)對(duì)按鍵出發(fā)次數(shù)的記錄,以此來(lái)判斷現(xiàn)在小車上光源是開啟狀態(tài)還是關(guān)閉狀態(tài);因?yàn)樾≤嚦跏嫉臓顟B(tài)光源是關(guān)閉著的,因此設(shè)定deng這個(gè)變量初始為0,當(dāng)進(jìn)行deng1=dengMod2運(yùn)算后deng1得到的為0,設(shè)定此條件下控制小車的光源開啟,其他條件控制小車的光源關(guān)閉。(4)鍵盤與鼠標(biāo)間控制功能的切換PrivateSubjianpan_gotfocus()'設(shè)置鍵盤控制按鈕--得到焦點(diǎn)jianpan.Caption="鍵盤控制已開啟"EndSubPrivateSubjianpan_lostfocus()'設(shè)置鍵盤控制按鈕--失去焦點(diǎn)jianpan.Caption="鍵盤控制已關(guān)閉"EndSubPrivateSubjianpan_KeyDown(KeyCodeAsInteger,ShiftAsInteger)SelectCaseKeyCode'選擇相應(yīng)操作CasevbKeyW CallCommand_shang_ClickCasevbKeyS CallCommand_xia_ClickCasevbKeyA CallCommand_zuo_ClickEndSelectEndSubPrivateSubjianpan_Keyup(KeyCodeAsInteger,ShiftAsInteger)SelectCaseKeyCodeCasevbKeyW CallqingkongCasevbKeyS CallqingkongCasevbKeyA CallqingkongEndSelecEndSub以上為鍵盤與鼠標(biāo)間控制切換的實(shí)現(xiàn),jianpan_gotfocus()為設(shè)置鍵盤控制按鈕屬性--得到焦點(diǎn),此函數(shù)的作用有兩個(gè),一個(gè)是為了得到焦點(diǎn),來(lái)實(shí)現(xiàn)jianpan.Caption="鍵盤控制已開啟";另一個(gè)作用是為了得到焦點(diǎn),來(lái)觸發(fā)jianpan_KeyDown函數(shù)。當(dāng)jianpan_KeyDown函數(shù)被觸發(fā)后,即可實(shí)現(xiàn)按鍵的控制,按鍵控制的實(shí)現(xiàn)就是用選擇語(yǔ)句來(lái)判斷按鍵的鍵值,并調(diào)用相應(yīng)的控制函數(shù)。對(duì)應(yīng)按鍵的功能分別為:W--上;S--下;A--左;D--右;Q--光源開關(guān);E--停止;1--采集溫度;2--采集濕度;3--采集高度;4--保存采集信息;R--清空采集信息。圖24鍵盤控制開啟視圖(5)溫度的接收與處理PrivateSubCommand_caiji1_Click()cai=cai+1cai1=caiMod2Ifcai1=0ThenCommand_caiji1.Caption="采集已終止"ElseCommand_caiji1.Caption="溫度采集中"MSComm.OutBufferCount=0Whilecai1MSComm.OutBufferCount=0DoUntilMSComm.InBufferCount>=1DoEventsLooprecive=MSComm.InputLabel6.Caption=Hex(recive(0))Label4.Caption="℃"WendEndIfEndIfEndSub圖25溫度采集視圖(6)采集信息的保存與處理PrivateSubsave_Click()'采集信息保存函數(shù)Open"c:\采集.txt"ForAppendAs1str1="當(dāng)前溫度"str2="濕度采集"str3="高度采集"str4="年"str5="月"str6="日"str7="時(shí)"str8="分"str9="秒"str10=""str11=""Y=Year(Date)'保存時(shí)間獲取mm=Month(Date)d=Day(Date)h=Hour(Time)m=Minute(Time)s=Second(Time)Print#1,Print#1,Y;str4;mm;str5;d;str6;str10;h;str7;m;str8;s;str9Print#1,str2,Text2Close#1Endsub圖26采集信息保存視圖(7)串口開關(guān)判斷IfMSComm.PortOpen=FalseThenOnErrorGoToerr1err1:IfErr.Number=8002Thenx=MsgBox("端口不存在,請(qǐng)選擇正確串口號(hào)!")kai=kai-1串口除了被打開的情況還有一個(gè)情況就是串口不存在,此錯(cuò)誤號(hào)為8002,因此可以用Error判斷函數(shù)來(lái)實(shí)現(xiàn)串口報(bào)錯(cuò)的信息。圖27串口不存在系統(tǒng)報(bào)錯(cuò)圖3.4nRF905程序設(shè)計(jì)nRF905的無(wú)線通信流程框圖如圖28:保護(hù)現(xiàn)場(chǎng)地址符合否命令分類保護(hù)現(xiàn)場(chǎng)地址符合否命令分類發(fā)向地址接收未超時(shí)接收下一字符是命令字嗎從機(jī)發(fā)送就緒發(fā)送就緒代碼與所發(fā)包數(shù)相比接收未超時(shí)將待發(fā)數(shù)據(jù)包分成每個(gè)包32個(gè)字節(jié)發(fā)送完成否發(fā)送數(shù)據(jù)包接收數(shù)據(jù)包數(shù)從機(jī)接收就緒接收數(shù)據(jù)包接收完否與接收包數(shù)相比接收數(shù)據(jù)包數(shù)發(fā)送未就緒代碼數(shù)據(jù)就緒標(biāo)識(shí)無(wú)效恢復(fù)現(xiàn)場(chǎng)數(shù)據(jù)就緒標(biāo)識(shí)仍有效發(fā)接收錯(cuò)代碼中斷返回中斷圖28nRF905的無(wú)線通信流程框圖單片機(jī)主函數(shù)流程圖如圖29:圖29單片機(jī)主函數(shù)流程圖(1)nRF905寄存器配置參數(shù)ucharRFConf[11]={0x00,0x4c,0x0c,0x44,0x04,0x04,0xCC,0xCC,0xCC,0xCC,0x58};對(duì)于頻段設(shè)置參數(shù)CH_NO,CH_NO[7:0]的值為0x4c。通過(guò)SPI接口向nRF905配置寄存器讀寫配置信息。(2)SPI寫操作voidSpiWrite(ucharsend){uchari;BUF=send;for(i=0;i<8;i++){if(DATA7) {MOSI=1;}else{MOSI=0;}SCK=1;BUF=BUF<<1;SCK=0;}}步驟一:MOSI線準(zhǔn)備好需要發(fā)送的數(shù)據(jù)位。步驟二:SCK置高,器件讀取MOSI線上的數(shù)據(jù)。步驟三:SCK置低,準(zhǔn)備發(fā)送數(shù)據(jù)的下一位以上步驟循環(huán)執(zhí)行8次,通過(guò)SPI向器件發(fā)送數(shù)據(jù)完成。數(shù)據(jù)的傳輸時(shí),高位在前,低位在后。(3)SPI讀操作SpiRead(void){ucharj;for(j=0;j<8;j++){BUF=BUF<<1;SCK=1;if(MISO) {BUF=BUF|BIT0;}else{BUF=BUF&(~BIT0);}SCK=0;}returnBUF;}步驟一:MISO線準(zhǔn)備好需要發(fā)送的數(shù)據(jù)位。步驟二:SCK置高,主機(jī)讀取MISO線上的數(shù)據(jù)。步驟三:SCK置低,準(zhǔn)備接收數(shù)據(jù)的下一位。以上步驟循環(huán)執(zhí)行8次,通過(guò)SPI從器件上讀數(shù)據(jù)完成。數(shù)據(jù)的傳輸時(shí),高位在前,低位在后。(4)主機(jī)通過(guò)SPI接口向905配置寄存器寫入信息voidConfig905(void){uchari;CSN=0; for(i=0;i<11;i++) {SpiWrite(RFConf[i]);}CSN=1;}步驟一:CSN置低電平,SPI接口開始等待第一條指令。步驟二:調(diào)用SpiWrite函數(shù),向器件配置寄存器寫配置信息。步驟三:CSN置高電平,結(jié)束SPI通訊。(5)使用nRF905發(fā)送數(shù)據(jù)voidTxPacket(uchar*TxRxBuf){uchari;CSN=0;SpiWrite(WTP); for(i=0;i<4;i++){SpiWrite(TxRxBuf[i]);}CSN=1;Delay(1); CSN=0; SpiWrite(WTA); for(i=0;i<4;i++) {SpiWrite(TxAddress[i]);}CSN=1; TRX_CE=1; Delay(1); TRX_CE=0;}步驟一:SpiWrite函數(shù)發(fā)送WTP命令,寫入TX數(shù)據(jù)。步驟二:調(diào)用SpiWrite向TX-Payload寄存器寫入TX數(shù)據(jù)。步驟三:延時(shí)。步驟四:通過(guò)SpiWrite函數(shù)發(fā)送WTA命令,寫入TX地址。步驟五:調(diào)用SpiWrite向TX-Address寄存器寫入TX地址。步驟六:TRX_CE=1;使發(fā)送數(shù)據(jù)延時(shí),nRF905數(shù)據(jù)發(fā)送完成,當(dāng)nRF905接收到一條完成的信息時(shí),會(huì)將DR引腳置高。(6)使用nRF905接收數(shù)據(jù)voidRxPacket(void) {uchari;Delay(100);TRX_CE=0;CSN=0; Delay(1);SpiWrite(RRP);for(i=0;i<4;i++){RxBuf[i]=SpiRead();}CSN=1;Delay(10);TRX_CE=1;}步驟一:TRX_CE=0;將此引腳置低,使905進(jìn)入standby。步驟二:發(fā)送RRP指令。步驟三:循環(huán)調(diào)用SpiRead函數(shù),讀取接收到的數(shù)據(jù)。步驟四:TRX_CE=1;數(shù)據(jù)包接收完成。(7)設(shè)置器件為發(fā)送模式。voidSetTxMode(void){TX_EN=1;TRX_CE=0;Delay(1);}步驟一:TX_EN=1;步驟二:TRX_CE=0;進(jìn)入發(fā)送模式。(8)設(shè)置器件為接收模式voidSetRxMode(void){TX_EN=0;TRX_CE=1;Delay(1);}步驟一:TX_EN=0;步驟二:TRX_CE=1;進(jìn)入接收模式。3.5DS18B20溫度傳感器的程序設(shè)計(jì)產(chǎn)生復(fù)位脈沖初始化溫度芯片txreset等待應(yīng)答脈沖voidrxwait產(chǎn)生復(fù)位脈沖初始化溫度芯片txreset等待應(yīng)答脈沖voidrxwait讀取數(shù)據(jù)第一位,滿足讀時(shí)隙要求讀取數(shù)據(jù)的一個(gè)字節(jié)信號(hào)的轉(zhuǎn)換convert寫一個(gè)數(shù)據(jù)字節(jié)wrbyte讀取圖30DS18B20溫度傳感器的程序的設(shè)計(jì)思路其中溫度轉(zhuǎn)換主要代碼:voidconvert() { txreset(); rxwait(); delay(1); wrbyte(0xcc); wrbyte(0x44);}Read_Temperature() {xreset(); rxwait(); delay(1); wrbyte(0xcc); wrbyte(0xbe); txbuf[11]=rdbyte();//低八位 txbuf[10]=rdbyte();//高八位}3.6串口的定義3.6.1上位機(jī)串口定義3.6.2下位機(jī)串口定義NRF905工作模式控制端口中定義引腳TXEN為P01,TRX_CE為P00,PWR為P05;NRF905數(shù)據(jù)交換端口中定義MOIS為P03,MOSI用P16口,SCK為P04,CSN為P17口;nrf905狀態(tài)端口AM為P02,DR為P07,CD為P06口;LED小燈用P36端口;溫度DQ利用P37腳,其它的引腳見(jiàn)程序://-----NRF905工作模式控制端口-----sbit TXEN=P0^1;sbit TRX_CE=P0^0;sbit PWR=P0^5;//-----LED顯示端口-----sbitLED=P3^6;//-----NRF905數(shù)據(jù)交換端口-----sbit MISO=P0^3;sbit MOSI=P1^6;sbit SCK=P0^4;sbit CSN=P1^7;//-----nrf905狀態(tài)端口-----sbit AM=P0^2;sbit DR=P0^7;sbit CD=P0^6;//-----溫度-----sbitDQ=P3^7;//-----電機(jī)控制端口-----sbit In1=P2^7;sbit In2=P2^6;sbit In3=P2^5;sbit In4=P2^4;sbit EN_A=P2^1;sbit EN_B=P2^0;4通信協(xié)議通信協(xié)議(communicationsprotocol)是指雙方實(shí)體完成通信或服務(wù)所必須遵循的規(guī)則和約定。協(xié)議定義了數(shù)據(jù)單元使用的格式,信息單元應(yīng)該包含的信息與含義,連接方式,信息發(fā)送和接收的時(shí)序,從而確保網(wǎng)絡(luò)中數(shù)據(jù)順利地傳送到確定的地方。協(xié)議主要由以下三個(gè)要素組成:語(yǔ)法:“如

溫馨提示

  • 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. 人人文庫(kù)網(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)論