循跡避障帶上位機(jī)紅外超聲波功能智能小車_第1頁
循跡避障帶上位機(jī)紅外超聲波功能智能小車_第2頁
循跡避障帶上位機(jī)紅外超聲波功能智能小車_第3頁
循跡避障帶上位機(jī)紅外超聲波功能智能小車_第4頁
循跡避障帶上位機(jī)紅外超聲波功能智能小車_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 物理實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)報(bào)告青島濱海學(xué)院項(xiàng)目設(shè)計(jì)報(bào)告項(xiàng)目:超聲波避障小車的設(shè)計(jì)與制作 專 業(yè) 計(jì)算機(jī)應(yīng)用技術(shù) 學(xué)生姓名 劉少鵬 班 級(jí) 14微高 學(xué) 號(hào) 20141080523 指導(dǎo)教師 郭志卓 完成日期 2015.05.12 摘 要STC89C52單片機(jī)是一款八位單片機(jī),他的易用性和多功能性受到了廣大使用者的好評(píng)。本文提出一種智能避障,循跡小車的設(shè)計(jì)方法,利用紅外技術(shù)檢測(cè)障礙物,軌跡信息,采用STC89C52單片機(jī)進(jìn)行實(shí)時(shí)控制,實(shí)現(xiàn)智能避障,循跡。再利用無線通信實(shí)現(xiàn)上位機(jī)與下位機(jī)的通信,智能小車采用前輪驅(qū)動(dòng),兩輪各用一個(gè)直流電機(jī)控制,避障,循跡用的傳感器采用紅外反射式傳感器。整個(gè)系統(tǒng)的電路結(jié)構(gòu)簡(jiǎn)單

2、,可靠性能較高。實(shí)驗(yàn)測(cè)試結(jié)果滿足要求,本文著重介紹了該系統(tǒng)的硬件設(shè)計(jì)方法及程序設(shè)計(jì)。 采用的技術(shù)主要有:(1) PWM調(diào)速;(2) 紅外傳感器;(3) 無線通信及串口通信;(4) 上位機(jī).(5) LCD(6) 超聲波傳感器目錄摘要 -0前言 -2功能概述 -3 硬件設(shè)計(jì) -3 避障電路 -3循跡電路 -5單片機(jī)電路 -7電機(jī)轉(zhuǎn)速控制電路 -8電源電路 -8電機(jī)驅(qū)動(dòng)電路 -9通信系統(tǒng)-11測(cè)速模塊兒-15上位機(jī)設(shè)計(jì)-16附錄一-17附錄二-20小結(jié) -42參考文獻(xiàn) -42前 言-隨著生產(chǎn)自動(dòng)化的發(fā)展需要,機(jī)器人已經(jīng)越來越廣泛地應(yīng)用到生產(chǎn)自動(dòng)化上,隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人的傳感器種類也越來越多,

3、其中紅外傳感器已經(jīng)成為自動(dòng)行走和駕駛的重要部件。紅外的典型應(yīng)用領(lǐng)域?yàn)樽灾魇街悄軐?dǎo)航系統(tǒng),機(jī)器人要實(shí)現(xiàn)自動(dòng)避障功能就必須要感知障礙物,感知障礙物相當(dāng)給機(jī)器人一個(gè)視覺功能。智能避障是基于紅外傳感系統(tǒng),采用紅外傳感器實(shí)現(xiàn)前方障礙物檢測(cè),并判斷障礙物遠(yuǎn)近。而利用紅外對(duì)不同顏色物體反射強(qiáng)弱差別可以檢測(cè)到不同顏色的物體,從而實(shí)現(xiàn)循跡功能。由于時(shí)間和水平有限,我們暫選最基本的避障,循跡功能作為此次設(shè)計(jì)的目標(biāo)。目前 ,在自動(dòng)控制領(lǐng)域中 ,經(jīng)常要實(shí)現(xiàn)上位機(jī)和下位機(jī)的通信。有時(shí)甚至要求上位機(jī)和多臺(tái)下位機(jī)建立通信。因此人們常常將工控機(jī)和機(jī)結(jié)合起來構(gòu)成主從式控制系統(tǒng)。在這過程中 ,上位機(jī)主要負(fù)責(zé)人機(jī)接口管理和系統(tǒng)資源

4、的高層控制。下位機(jī)主要完成數(shù)據(jù)采集、處理、接收,本次我們基于串口通信和VB通過NRF24L01設(shè)計(jì)了一個(gè)上位機(jī)下位機(jī)無線通信的系統(tǒng)。本設(shè)計(jì)通過小車這個(gè)載體再結(jié)合由STC89C52為核心的控制板可以達(dá)到其基本功能,再輔加由反射式光電開關(guān)E18-D80NK組成的避障電路,由TCRT5000光電對(duì)管和LM324設(shè)計(jì)的循跡電路,基于PWM技術(shù)的轉(zhuǎn)速控制、基于LM2940電源電路、基于L298N的電機(jī)驅(qū)動(dòng)電路以及基于NRF24L01的無線通信系統(tǒng)就可以完成整個(gè)硬件設(shè)計(jì)。一. 功能概述智能小車采用前輪驅(qū)動(dòng),前輪左右兩邊各用一個(gè)電機(jī)驅(qū)動(dòng),分別控制兩個(gè)輪子的轉(zhuǎn)動(dòng)從而達(dá)到轉(zhuǎn)向的目的,后輪是萬向輪,起支撐的作用。

5、避障部分,將3個(gè)紅外線光電傳感器分別裝在車體的左中右,當(dāng)車的左邊的傳感器檢測(cè)到障礙物時(shí),主控芯片控制右輪電機(jī)停止左輪轉(zhuǎn)動(dòng),車向右方轉(zhuǎn)向,當(dāng)車的右邊傳感器檢測(cè)到障礙物時(shí),主控芯片控制左輪電機(jī)停止轉(zhuǎn)動(dòng),車向左方轉(zhuǎn)向,當(dāng)前面有障礙物時(shí)規(guī)定車右轉(zhuǎn)。而當(dāng)小車同時(shí)有兩個(gè)傳感器接收到信號(hào)時(shí),采用倒退方式轉(zhuǎn)彎以避免碰到障礙物,于此同時(shí)測(cè)定速度并顯示,在避障小車前進(jìn)的同時(shí),通過無線通信系統(tǒng),把小車的速度和路程傳到上位機(jī)顯示。循跡部分,采用七個(gè)紅外傳感器置于車身前下方,中間五個(gè)主要用于循跡普通道路,外邊兩個(gè)略比中間的靠前,主要用來檢測(cè)直角彎道。車向左偏時(shí)右拐,右偏時(shí)左拐,左右拐又分為校正和轉(zhuǎn)彎兩檔。遇到直角時(shí)極易

6、沖出跑道,故給車施加一個(gè)反向脈沖。行駛過程中上位機(jī)顯示車速及路程。二硬件設(shè)計(jì)如下圖所示,是本次設(shè)計(jì)智能小車的電路框圖。以STC89C52為電路的中央處理器,來處理傳感器采集來的數(shù)據(jù),處理完畢之后以便去控制電機(jī)驅(qū)動(dòng)電路來驅(qū)動(dòng)電機(jī),并通過無線傳輸?shù)缴衔粰C(jī)。電源部分是為整個(gè)電路模塊提供電源,以便能正常工作。三. 避障電路1. 障礙物探測(cè)方案的選擇 方案一:脈沖調(diào)制的反射式紅外線發(fā)射接受器。由于采用該有交流分量的調(diào)制信號(hào),則可大幅度減少外界干擾;另外紅外線接受官的最大工作電流取決于平均電流。如果采用占空比小的調(diào)制信號(hào),再品均電流不變的情況下,順勢(shì)電流很大(50100mA),則大大提

7、高了信噪比。并且其反應(yīng)靈敏,外圍電路也很簡(jiǎn)單。它的優(yōu)點(diǎn)是消除了外界光線的干擾提高了靈敏度。方案二:采用超聲波傳感器,如果傳感器接收到反射的超聲波,則通知單片機(jī)前方有障礙物,如則通知單片機(jī)可以向前行駛。市場(chǎng)上很多紅外光電探頭也都是基于這個(gè)原理。這樣不但能準(zhǔn)確完成測(cè)量,而且能避免電路的復(fù)雜性  由以上兩種方案比較可知。方案一要比方案二優(yōu)勢(shì)大,市場(chǎng)上很多紅外觀點(diǎn)探頭也都基于這個(gè)原理。其電路簡(jiǎn)單,工作可靠,性能比較穩(wěn)定。從而避免了電路的復(fù)雜性,因此我先用方案二作為小車的監(jiān)測(cè)系統(tǒng)。避障電路采用漫反射式光電開關(guān)進(jìn)行避障。光電開關(guān)是集發(fā)射頭和接收頭于一體的檢測(cè)開關(guān),其工作原理是根據(jù)發(fā)射頭發(fā)出的光束

8、,被障礙物反射,接收頭據(jù)此做出判斷是否有障礙物。當(dāng)有光線反射回來時(shí),輸出低電平;當(dāng)沒有光線反射回來時(shí),輸出高電平。單片機(jī)根據(jù)接收頭電平的高低做出相應(yīng)控制,避免小車碰到障礙物,由于接收管輸出TTL電平,有利于單片機(jī)對(duì)信號(hào)的處理。2光電開關(guān)工作原理:光電開關(guān)是通過把光強(qiáng)度的變化轉(zhuǎn)換成電信號(hào)的變化來實(shí)現(xiàn)控制的。光電開關(guān)在一般情況下,有三部分構(gòu)成,它們分為:發(fā)送器、接收器和檢測(cè)電路。避障電路功能表:傳感器避障電路輸出(上升沿動(dòng)作)待執(zhí)行命令左中右左轉(zhuǎn)信號(hào)(P2.1)右轉(zhuǎn)信號(hào)(P2.0)000后右轉(zhuǎn)001右轉(zhuǎn)010右轉(zhuǎn)011右轉(zhuǎn)100左轉(zhuǎn)101右轉(zhuǎn)110左轉(zhuǎn)111前進(jìn)注解(“0”表示有障礙物; “1”表

9、示無障礙物)四.循跡模塊TCRT5000傳感器小車循跡原理是小車在畫有黑線的白紙 “路面”上行駛,由于黑線和白紙對(duì)光線的反射系數(shù)不同,可根據(jù)接收到的反射光的強(qiáng)弱來判斷“道路”黑線。筆者在該模塊中利用了簡(jiǎn)單、應(yīng)用也比較普遍的檢測(cè)方法紅外探測(cè)法。紅外探測(cè)法,即利用紅外線在不同顏色的物理表面具有不同的反射性質(zhì)的特點(diǎn)。在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色地面時(shí)發(fā)生漫發(fā)射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,則小車上的接收管接收不到信號(hào),再通過LM324作比較器來采集高低電平,從而實(shí)現(xiàn)信號(hào)的檢測(cè)。避障亦是此原理。電路圖如圖3.4。市面上有很多紅外傳感器,在這里

10、我選用TCRT5000型光電對(duì)管。圖3.4循跡原理圖循跡模塊兒功能表1234567左拐100000011000000100000ZZ00000小左011000000100000Z10000直走00110000001000000110000Z1Z00小右0000100000011000001Z0右拐00000100000011000000100000ZZ特殊001110000001110001111右直角001111101111110ZZZ111左直角1110000111100011111001111110111ZZZ0全白0000000全黑1111111五. 單片機(jī)電路本設(shè)計(jì)的主控芯片選擇ST

11、C89C52,負(fù)責(zé)檢測(cè)傳感器的狀態(tài)并向電機(jī)驅(qū)動(dòng)電路發(fā)出動(dòng)作命令。復(fù)位電路采用手動(dòng)復(fù)位。單片機(jī)電路如下:六. 電機(jī)轉(zhuǎn)速控制電路轉(zhuǎn)速控制采用基于PWM技術(shù)的脈沖調(diào)制技術(shù),通過單片機(jī)輸出兩列PWM信號(hào),經(jīng)過l298N對(duì)電機(jī)進(jìn)行速度調(diào)控。    PWM(脈沖寬度調(diào)制)控制,通常配合橋式驅(qū)動(dòng)電路實(shí)現(xiàn)直流電機(jī)調(diào)速,非常簡(jiǎn)單,且調(diào)速范圍大,它的原理就是直流斬波原理。如圖1所示,若S3、S4關(guān)斷,S1、S2受PWM控制,假設(shè)高電平導(dǎo)通,忽略開關(guān)管損耗,則在一個(gè)周期內(nèi)的導(dǎo)通時(shí)間為t,周期為T,波形如圖6,則電機(jī)兩端的平均電壓為: U=Vcc t/T=Vcc ,其中,=t/T稱為占空

12、比,Vcc為電源電壓(電源電壓減去兩個(gè)開關(guān)管的飽和壓降)。     電機(jī)的轉(zhuǎn)速與電機(jī)兩端的電壓成比例,而電機(jī)兩端的電壓與控制波形的占空比成正比,因此電機(jī)的速度與占空比成比例,占空比越大,電機(jī)轉(zhuǎn)得越快,當(dāng)占空比1時(shí),電機(jī)轉(zhuǎn)速最大。PWM控制波形的實(shí)現(xiàn)可以通過模擬電路或數(shù)字電路實(shí)現(xiàn),例如用555搭成的觸發(fā)電路,但是,這種電路的占空比不能自動(dòng)調(diào)節(jié),不能用于自動(dòng)控制小車的調(diào)速。而目前使用的大多數(shù)單片機(jī)都可以直接輸出這種PWM波形,或通過時(shí)序模擬輸出,最適合小車的調(diào)速。我們使用的是STC89C52單片機(jī),它是8位單片機(jī),內(nèi)部設(shè)有3個(gè)獨(dú)立的計(jì)數(shù)器,完全可以模擬任意頻

13、率、占空比隨意調(diào)節(jié)的PWM信號(hào)輸出,用以控制電機(jī)調(diào)速。在小車行進(jìn)的過程中,占空比不應(yīng)該太高,在直線前進(jìn)和轉(zhuǎn)彎的時(shí)候應(yīng)該區(qū)別對(duì)待。若車速太快,則在轉(zhuǎn)彎的時(shí)候,方向不易控制;而車速太慢,則很浪費(fèi)時(shí)間。這時(shí)可以根據(jù)具體情況慢慢調(diào)節(jié)七. 電源電路 本系統(tǒng)所有芯片都需要+5V的工作電壓,而干電池只能提供的電壓為15V的倍數(shù)的電壓,并且隨著使用時(shí)間的延長(zhǎng),其電壓會(huì)逐漸下降,故采用了一個(gè)12v蓄電池,再用LM2940穩(wěn)壓芯片。LM2940具有紋波小、電路結(jié)構(gòu)簡(jiǎn)單的優(yōu)點(diǎn),對(duì)于單片機(jī),需要提供穩(wěn)定的5V電源,由于LM2940的穩(wěn)壓的線性度非常好,所以選用LM2940-5對(duì)其進(jìn)行供電;能提供最大1A的電流,足以滿

14、足芯片供電的要求。雖然微處理器和微控制器不需要支持電路,功耗也很低,但必須要加以考慮。 電源電路擬定為:八.電機(jī)驅(qū)動(dòng)電路  市場(chǎng)上用很多種類的小電壓直流電動(dòng)機(jī),很方便的選擇到。主要有普通電動(dòng)機(jī)、和步進(jìn)電動(dòng)機(jī)。    方案一:采用步進(jìn)電機(jī),步進(jìn)電動(dòng)機(jī)的一個(gè)顯著的特點(diǎn)就是具有快速啟動(dòng)和停止能力,能夠達(dá)到我們所要求的標(biāo)準(zhǔn)。如果負(fù)荷不超過步進(jìn)電機(jī)所能提供的動(dòng)態(tài)轉(zhuǎn)矩值,就能夠立即是步進(jìn)電機(jī)啟動(dòng)或反轉(zhuǎn)。其轉(zhuǎn)換靈敏度比較高。正轉(zhuǎn)、反轉(zhuǎn)控制靈活。但是步進(jìn)電機(jī)的價(jià)格比較昂貴,對(duì)于我們的現(xiàn)狀相差太遠(yuǎn)。    方案二:采用普通

15、的直流電機(jī)。直流電機(jī)具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便。調(diào)整范圍廣;過載能力強(qiáng),能承受頻繁的沖擊負(fù)載,可實(shí)現(xiàn)頻繁的無極快速啟動(dòng)、制動(dòng)和反轉(zhuǎn)。能滿足各種不容的特殊運(yùn)行要求。由于普通直流電機(jī)價(jià)格適宜,更易于購買,并且電路相對(duì)簡(jiǎn)單,因此采用直流電機(jī)作為動(dòng)力源本設(shè)計(jì)采用L298N驅(qū)動(dòng)使電機(jī)正反轉(zhuǎn)從而做到前進(jìn),左轉(zhuǎn)驅(qū)動(dòng)電路(參考文獻(xiàn)4)電機(jī)驅(qū)動(dòng)一般采用H橋式驅(qū)動(dòng)電路,L298N內(nèi)部集成了H橋式驅(qū)動(dòng)電路,從而可以采用L298N電路來驅(qū)動(dòng)電機(jī)。通過單片機(jī)給予L298N電路PWM信號(hào)來控制小車的速度,起停。其引腳圖如3.2,驅(qū)動(dòng)原理圖如圖3.3。圖3.2 L298N引腳圖 圖3.3 電機(jī)驅(qū)動(dòng)電路九.通信系統(tǒng)1

16、NRF24L01工作原理簡(jiǎn)介:發(fā)射數(shù)據(jù)時(shí),首先將nRF24L01配置為發(fā)射模式,接著把地址TX_ADDR和數(shù)據(jù)TX_PLD按照時(shí)序由SPI口寫入nRF24L01緩存區(qū),TX_PLD必須在CSN為低時(shí)連續(xù)寫入,而TX_ADDR在發(fā)射時(shí)寫入一次即可,然后CE置為高電平并保持至少10s,延遲130s后發(fā)射數(shù)據(jù);若自動(dòng)應(yīng)答開啟,那么nRF24L01在發(fā)射數(shù)據(jù)后立即進(jìn)入接收模式,接收應(yīng)答信號(hào)。如果收到應(yīng)答,則認(rèn)為此次通信成功,TX_DS置高,同時(shí)TX_PLD從發(fā)送堆棧中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開啟),若重發(fā)次數(shù)(ARC_CNT)達(dá)到上限,MAX_RT置高,TX_PLD不會(huì)被清

17、除;MAX_RT或TX_DS置高時(shí),使IRQ變低,以便通知MCU。最后發(fā)射成功時(shí),若CE為低,則nRF24L01進(jìn)入待機(jī)模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且CE為高,則進(jìn)入待機(jī)模式2。接收數(shù)據(jù)時(shí),首先將nRF24L01配置為接收模式,接著延遲130s進(jìn)入接收狀態(tài)等待數(shù)據(jù)的到來。當(dāng)接收方檢測(cè)到有效的地址和CRC時(shí),就將數(shù)據(jù)包存儲(chǔ)在接收堆棧中,同時(shí)中斷標(biāo)志位RX_DR置高,IRQ變低,以便通知MCU去取數(shù)據(jù)。若此時(shí)自動(dòng)應(yīng)答開啟,接收方則同時(shí)進(jìn)入發(fā)射狀態(tài)回傳應(yīng)答信號(hào)。最后接收成功時(shí),若CE變低,則nRF24L01進(jìn)入空閑模式1。模式PWR_UPPRIM_RXC

18、EFIFO寄存器狀態(tài)接收模式111-發(fā)射模式1011數(shù)據(jù)存儲(chǔ)在FIFO寄存器中,發(fā)射所有數(shù)據(jù)發(fā)射模式10012數(shù)據(jù)存儲(chǔ)在FIFO寄存器中,發(fā)射一個(gè)數(shù)據(jù)待機(jī)模式II101TX FIFO為空待機(jī)模式I1-0無正在傳輸?shù)臄?shù)據(jù)掉電模式0-2. SPI介紹同步串行外設(shè)接口(SPI)是由摩托羅拉公司開發(fā)的全雙工同步串行總線,該總線大量用在與EEPROM、ADC、FRAM和顯示驅(qū)動(dòng)器之類的慢速外設(shè)器件通信。SPI(Serial Peripheral Interface)是一種串行串行同步通訊協(xié)議,由一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備組成,主設(shè)備啟動(dòng)一個(gè)與從設(shè)備的同步通訊,從而完成數(shù)據(jù)的交換。SPI 接口由SDI(

19、串行數(shù)據(jù)輸入),SDO(串行數(shù)據(jù)輸出),SCK(串行移位時(shí)鐘),CS(從使能信號(hào))四種信號(hào)構(gòu)成,CS 決定了唯一的與主設(shè)備通信的從設(shè)備,如沒有CS 信號(hào),則只能存在一個(gè)從設(shè)備,主設(shè)備通過產(chǎn)生移位時(shí)鐘來發(fā)起通訊。通訊時(shí),數(shù)據(jù)由SDO 輸出,SDI 輸入,數(shù)據(jù)在時(shí)鐘的上升或下降沿由SDO 輸出,在緊接著的下降或上升沿由SDI 讀入,這樣經(jīng)過8/16 次時(shí)鐘的改變,完成8/16 位數(shù)據(jù)的傳輸??偩€協(xié)議該總線通信基于主-從(所有的串行的總線均是這樣,USB,IIC,SPI等)配置,而且下面提到的方向性的操作合指代全部從主設(shè)備的角度說得。它有以下4個(gè)信號(hào):MOSI:主出/從入MISO:主入/從出SCK:

20、串行時(shí)鐘SS:從屬選擇;芯片上“從屬選擇”(slave-select)的引腳數(shù)決定了可連到總線上的器件數(shù)量。在SPI傳輸中,數(shù)據(jù)是同步進(jìn)行發(fā)送和接收的。數(shù)據(jù)傳輸?shù)臅r(shí)鐘基于來自主處理器的時(shí)鐘脈沖(也可以是IO上的電平的模擬時(shí)鐘),摩托羅拉沒有定義任何通用SPI的時(shí)鐘規(guī)范。然而,最常用的時(shí)鐘設(shè)置基于時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)兩個(gè)參數(shù),CPOL定義SPI串行時(shí)鐘的活動(dòng)狀態(tài),而CPHA定義相對(duì)于SO-數(shù)據(jù)位的時(shí)鐘相位。CPOL和CPHA的設(shè)置決定了數(shù)據(jù)取樣的時(shí)鐘沿。數(shù)據(jù)方向和通信速度SPI傳輸串行數(shù)據(jù)時(shí)首先傳輸最高位。波特率可以高達(dá)5Mbps,具體速度大小取決于SPI硬件。例如,Xic

21、or公司的SPI串行器件傳輸速度能達(dá)到5MHz。SPI總線接口及時(shí)序SPI總線包括1根串行同步時(shí)鐘信號(hào)線以及2根數(shù)據(jù)線。SPI模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對(duì)傳輸協(xié)議沒有重大的影響。如果CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的

22、外設(shè)音時(shí)鐘相位和極性應(yīng)該一致。SPI讀寫時(shí)序見下面兩圖。在寫寄存器之前,一定要進(jìn)入待機(jī)模式或掉電模式。其中,CnSPI指令位;Sn狀態(tài)寄存器位;Dn數(shù)據(jù)位(低字節(jié)在前,高字節(jié)在后;每個(gè)字節(jié)中高位在前)SPI讀時(shí)序SPI寫時(shí)序3.串口通信串口是計(jì)算機(jī)上一種非常通用的設(shè)備通信協(xié)議(不要與通用串行總線Universal SerialBus或者USB混淆)。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信接口;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)

23、(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總長(zhǎng)不得超過20米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過2米;而對(duì)于串口而言,長(zhǎng)度可達(dá)1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是比特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配:a,比特率:這是一個(gè)衡量通信速度的參數(shù)。它

24、表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),就是指比特率,例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的比特率為14400,28800和36600。比特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高比特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。b,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0127(7位)。擴(kuò)展的ASC

25、II碼是0255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn)ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。c,停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。d,奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶

26、、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。十測(cè)速模塊兒測(cè)速原理與循跡原理類似,當(dāng)有遮擋時(shí)紅外接收管接收不到紅外光,輸出低電平,無遮擋時(shí)輸出高電平。利用此原理實(shí)現(xiàn)轉(zhuǎn)速的測(cè)量,再通過單片機(jī)處理轉(zhuǎn)換為小車的速度與路程

27、。有遮擋,輸出高電平;無遮擋,輸出低電平。有遮擋,輸出高電平;無遮擋,輸出低電平。十一.上位機(jī)(基于VB)Visual Basic是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動(dòng)編程語言。從任何標(biāo)準(zhǔn)來說,VB都是世界上使用人數(shù)最多的語言不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個(gè)應(yīng)用程序。該設(shè)計(jì)通過調(diào)用VB的mscomm控件timer控件以及其它基本控件,實(shí)現(xiàn)了基于查詢方

28、式的串口通信??蓪南挛粰C(jī)采集的小車速度,路程等信息實(shí)時(shí)顯示附一:上位機(jī)程序:Dim com As IntegerDim a As IntegerPrivate Sub Combo1_Click()If Combo1.Text = "com1" Then MSComm1.CommPort = 1If Combo1.Text = "com2" Then MSComm1.CommPort = 2If Combo1.Text = "com3" Then MSComm1.CommPort = 3If Combo1.Text = "c

29、om4" Then MSComm1.CommPort = 4If Combo1.Text = "com5" Then MSComm1.CommPort = 5If Combo1.Text = "com6" Then MSComm1.CommPort = 6If Combo1.Text = "com7" Then MSComm1.CommPort = 7If Combo1.Text = "com8" Then MSComm1.CommPort = 8If Combo1.Text = "com9&q

30、uot; Then MSComm1.CommPort = 9End SubPrivate Sub Command1_Click()If MSComm1.PortOpen = True ThenMsgBox "串口已經(jīng)打開!"ElseMSComm1.PortOpen = TrueEnd IfEnd SubPrivate Sub Command10_Click()MsgBox "這是由李根制作的"End SubPrivate Sub Command11_Click()MSComm1.Output = Text1.TextEnd SubPrivate Sub

31、Command12_Click()a = 0Text1.Text = ""Text2.Text = ""Text3.Text = ""End SubPrivate Sub Command2_Click()If MSComm1.PortOpen = False ThenMsgBox "串口還未打開!"ElseMSComm1.PortOpen = FalseEnd IfEnd SubPrivate Sub Command3_Click()MSComm1.InputMode = comInputModeTextEnd S

32、ubPrivate Sub Command4_Click()MSComm1.InputMode = comInputModeBinaryEnd SubPrivate Sub Command5_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""End SubPrivate Sub Command6_Click()Dim IntR As IntegerIntR = MsgBox("確認(rèn)要退出程序嗎?", vbYesNo, "退出確認(rèn)")If In

33、tR = vbYes Then EndEnd SubPrivate Sub Command7_Click()MsgBox "正在開發(fā)中!"End SubPrivate Sub Command8_Click()MsgBox "正在開發(fā)中!"End SubPrivate Sub Command9_Click()MsgBox "這是李根的軟件"End SubPrivate Sub Form_Load()Combo1.AddItem "com1"Combo1.AddItem "com2"Combo1.A

34、ddItem "com3"Combo1.AddItem "com4"Combo1.AddItem "com5"Combo1.AddItem "com6"Combo1.AddItem "com7"Combo1.AddItem "com8"Combo1.AddItem "com9"Timer1.Enabled = Timer1.Enableda = 0MSComm1.CommPort = 3Picture1.Picture = LoadPicture(&quo

35、t;C:UsersAdministratorDesktop4.jpg") End SubPrivate Sub Form_Unload(Cancel As Integer)Dim IntR As IntegerIntR = MsgBox("確認(rèn)要退出程序嗎?", vbYesNo, "確認(rèn)退出")If IntR = vbNo Then Cancel = -1End SubPrivate Sub Timer1_Timer()Dim indata As StringDim bte(0) As IntegerDim kong As Stringa =

36、0If MSComm1.InBufferCount > 0 Then kong = MSComm1.Input: bte(0) = AscB(kong) If bte(0) = 97 Then If MSComm1.InputMode = comInputModeBinary Then If a = 0 Then indata = MSComm1.Input: bte(0) = AscB(indata): Text2.Text = bte(0) & 6: a = 1 ElseIf a = 1 Then indata = MSComm1.Input: bte(0) = AscB(i

37、ndata): Text3.Text = bte(0): a = 2 ElseIf a = 2 Then indata = MSComm1.Input: bte(0) = AscB(indata): Text2.Text = 50 + bte(0): a = 3 ElseIf a = 3 Then indata = MSComm1.Input: bte(0) = AscB(indata): Text3.Text = bte(0): a = 0 End If Else If MSComm1.InputMode = comInputModeText Then For a = 0 To 4 Step

38、 1 If a = 0 Then Text3.Text = MSComm1.Input ': a = 1 ElseIf a = 1 Then Text3.Text = Text3.Text + MSComm1.Input & "." ': a = 2 ElseIf a = 2 Then Text3.Text = Text3.Text + MSComm1.Input ': a = 3 ElseIf a = 3 Then Text2.Text = MSComm1.Input ': a = 4 ElseIf a = 4 Then Text2

39、.Text = Text2.Text + MSComm1.Input ': a = 0 End If Next a End If End IfEnd IfEnd Sub附二:小車部分源程序:#include<reg52.h>#include <intrins.h>#include <string.h>/*NRF24L01 IO端口定義*/sbitCE =P00;sbitCSN=P01;sbitSCK =P02;sbit MOSI=P03;sbit MISO=P04;sbitIRQ=P05;sbit LLT=P06;/避障口sbit RLT=P34;s

40、bit MLT=P27;sbit S1=P10; /傳感器信號(hào)輸入端口sbit S2=P11;sbit S3=P13;/INTsbit S4=P15;/LLTsbit S5=P16;/RLTsbit S6=P12;sbit S7=P14;/OUTsbit LH=P23; /電機(jī)1左輪sbit LL=P24;sbit RH=P25; /電機(jī)2右輪sbit RL=P26;sbit ENA=P36;/電機(jī)左輪使能sbit ENB=P37;/電機(jī)右輪使能sbit key1=P30;sbit key2=P31; sbit key3=P32;sbit key4=P33;#define uchar unsi

41、gned char#define TX_ADR_WIDTH 5 / 5個(gè)字節(jié)的TX地址長(zhǎng)度#define RX_ADR_WIDTH 5 / 5個(gè)字節(jié)的TX地址長(zhǎng)度#define TX_PLOAD_WIDTH 5 / 20個(gè)字節(jié)的TX數(shù)據(jù)長(zhǎng)度#define RX_PLOAD_WIDTH 5 / 20個(gè)字節(jié)的TX數(shù)據(jù)長(zhǎng)度/*NRF24L01寄存器指令*/#define READ_REG 0x00 / 讀寄存器指令#define WRITE_REG 0x20 / 寫寄存器指令#define RD_RX_PLOAD 0x61 / 讀取接收數(shù)據(jù)指令#define WR_TX_PLOAD 0xA0 / 寫

42、待發(fā)數(shù)據(jù)指令#define FLUSH_TX 0xE1 / 沖洗發(fā)送 FIFO指令#define FLUSH_RX 0xE2 / 沖洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定義重復(fù)裝載數(shù)據(jù)指令#define NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*/#define CONFIG 0x00 / 配置收發(fā)狀態(tài),CRC校驗(yàn)?zāi)J揭约笆瞻l(fā)狀態(tài)響應(yīng)方式#define EN_AA 0x01 / 自動(dòng)應(yīng)答功能設(shè)置#define EN_RXADDR 0x02 / 可用信道設(shè)置#define SETUP_AW 0x03 / 收發(fā)地址寬度設(shè)置#defin

43、e SETUP_RETR 0x04 / 自動(dòng)重發(fā)功能設(shè)置#define RF_CH 0x05 / 工作頻率設(shè)置#define RF_SETUP 0x06 / 發(fā)射速率、功耗功能設(shè)置#define STATUS 0x07 / 狀態(tài)寄存器#define OBSERVE_TX 0x08 / 發(fā)送監(jiān)測(cè)功能#define CD 0x09 / 地址檢測(cè) #define RX_ADDR_P0 0x0A / 頻道0接收數(shù)據(jù)地址#define RX_ADDR_P1 0x0B / 頻道1接收數(shù)據(jù)地址#define RX_ADDR_P2 0x0C / 頻道2接收數(shù)據(jù)地址#define RX_ADDR_P3 0x0D

44、 / 頻道3接收數(shù)據(jù)地址#define RX_ADDR_P4 0x0E / 頻道4接收數(shù)據(jù)地址#define RX_ADDR_P5 0x0F / 頻道5接收數(shù)據(jù)地址#define TX_ADDR 0x10 / 發(fā)送地址寄存器#define RX_PW_P0 0x11 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define RX_PW_P1 0x12 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define RX_PW_P2 0x13 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define RX_PW_P3 0x14 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define RX_PW_P4 0x15 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define RX_PW_P5 0x16 / 接收頻道0接收數(shù)據(jù)長(zhǎng)度#define FIFO_STATUS 0x17 / FIFO棧入棧出狀態(tài)寄存器設(shè)置/*狀態(tài)標(biāo)志*/uchar bdata sta;sbitRX_DR=sta6;sbitTX_DS=sta5;sbitMAX_RT=sta4;/*發(fā)送緩沖區(qū)*/uchar TxBuf5=51,52,53,54,55;uchar rx_buf3=0;/發(fā)送的數(shù)據(jù)用數(shù)字存儲(chǔ)uchar const TX_ADDRESST

溫馨提示

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