版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 42 頁 共 43 頁摘 要STC89C52單片機是一款八位單片機,他的易用性和多功能性受到了廣大使用者的好評。本文提出一種智能避障,循跡小車的設計方法,利用紅外技術(shù)檢測障礙物,軌跡信息,采用STC89C52單片機進行實時控制,實現(xiàn)智能避障,循跡。再利用無線通信實現(xiàn)上位機與下位機的通信,智能小車采用前輪驅(qū)動,兩輪各用一個直流電機控制,避障,循跡用的傳感器采用紅外反射式傳感器。整個系統(tǒng)的電路結(jié)構(gòu)簡單,可靠性能較高。實驗測試結(jié)果滿足要求,本文著重介紹了該系統(tǒng)的硬件設計方法及程序設計。 采用的技術(shù)主要有:(1) PWM調(diào)速;(2) 紅外傳感器;(3) 無線通信及串口通信;(4) 上位機.(5)
2、LCD(6) 超聲波傳感器關(guān)鍵詞: 紅外; PWM; 上位機; 循跡; 避障; 無線通信;串口通信;MCUAbstractThe single-chip microcontroller STC89C52 is an eight-bit microcontroller,its ease of using and versatility receive praises from the majority of users.This paper presents a designing method of a tracking car that can be intelligent obstacle
3、 avoidance,with infrared technology to detect obstacles and the information of track. Real-time control of the microcontroller of STC89C52 performs intelligent obstacle avoidance and tracking.Reuse wireless.key words: infrared; PWM; the host computer; tracking; obstacle avoidance; radio communicatio
4、n; serial communication; MCU目錄摘要 -0前言 -2功能概述 -3 硬件設計 -3 避障電路 -3循跡電路 -5單片機電路 -7電機轉(zhuǎn)速控制電路 -8電源電路 -8電機驅(qū)動電路 -9通信系統(tǒng)-11測速模塊兒-15上位機設計-16附錄一-17附錄二-20小結(jié) -42參考文獻 -42前 言-隨著生產(chǎn)自動化的發(fā)展需要,機器人已經(jīng)越來越廣泛地應用到生產(chǎn)自動化上,隨著科學技術(shù)的發(fā)展,機器人的傳感器種類也越來越多,其中紅外傳感器已經(jīng)成為自動行走和駕駛的重要部件。紅外的典型應用領(lǐng)域為自主式智能導航系統(tǒng),機器人要實現(xiàn)自動避障功能就必須要感知障礙物,感知障礙物相當給機器人一個視覺功能
5、。智能避障是基于紅外傳感系統(tǒng),采用紅外傳感器實現(xiàn)前方障礙物檢測,并判斷障礙物遠近。而利用紅外對不同顏色物體反射強弱差別可以檢測到不同顏色的物體,從而實現(xiàn)循跡功能。由于時間和水平有限,我們暫選最基本的避障,循跡功能作為此次設計的目標。目前 ,在自動控制領(lǐng)域中 ,經(jīng)常要實現(xiàn)上位機和下位機的通信。有時甚至要求上位機和多臺下位機建立通信。因此人們常常將工控機和機結(jié)合起來構(gòu)成主從式控制系統(tǒng)。在這過程中 ,上位機主要負責人機接口管理和系統(tǒng)資源的高層控制。下位機主要完成數(shù)據(jù)采集、處理、接收,本次我們基于串口通信和VB通過NRF24L01設計了一個上位機下位機無線通信的系統(tǒng)。本設計通過小車這個載體再結(jié)合由ST
6、C89C52為核心的控制板可以達到其基本功能,再輔加由反射式光電開關(guān)E18-D80NK組成的避障電路,由TCRT5000光電對管和LM324設計的循跡電路,基于PWM技術(shù)的轉(zhuǎn)速控制、基于LM2940電源電路、基于L298N的電機驅(qū)動電路以及基于NRF24L01的無線通信系統(tǒng)就可以完成整個硬件設計。一. 功能概述智能小車采用前輪驅(qū)動,前輪左右兩邊各用一個電機驅(qū)動,分別控制兩個輪子的轉(zhuǎn)動從而達到轉(zhuǎn)向的目的,后輪是萬向輪,起支撐的作用。避障部分,將3個紅外線光電傳感器分別裝在車體的左中右,當車的左邊的傳感器檢測到障礙物時,主控芯片控制右輪電機停止左輪轉(zhuǎn)動,車向右方轉(zhuǎn)向,當車的右邊傳感器檢測到障礙物時
7、,主控芯片控制左輪電機停止轉(zhuǎn)動,車向左方轉(zhuǎn)向,當前面有障礙物時規(guī)定車右轉(zhuǎn)。而當小車同時有兩個傳感器接收到信號時,采用倒退方式轉(zhuǎn)彎以避免碰到障礙物,于此同時測定速度并顯示,在避障小車前進的同時,通過無線通信系統(tǒng),把小車的速度和路程傳到上位機顯示。循跡部分,采用七個紅外傳感器置于車身前下方,中間五個主要用于循跡普通道路,外邊兩個略比中間的靠前,主要用來檢測直角彎道。車向左偏時右拐,右偏時左拐,左右拐又分為校正和轉(zhuǎn)彎兩檔。遇到直角時極易沖出跑道,故給車施加一個反向脈沖。行駛過程中上位機顯示車速及路程。二硬件設計如下圖所示,是本次設計智能小車的電路框圖。以STC89C52為電路的中央處理器,來處理傳感
8、器采集來的數(shù)據(jù),處理完畢之后以便去控制電機驅(qū)動電路來驅(qū)動電機,并通過無線傳輸?shù)缴衔粰C。電源部分是為整個電路模塊提供電源,以便能正常工作。三. 避障電路1.障礙物探測方案的選擇方案一:脈沖調(diào)制的反射式紅外線發(fā)射接受器。由于采用該有交流分量的調(diào)制信號,則可大幅度減少外界干擾;另外紅外線接受官的最大工作電流取決于平均電流。如果采用占空比小的調(diào)制信號,再品均電流不變的情況下,順勢電流很大(50100mA),則大大提高了信噪比。并且其反應靈敏,外圍電路也很簡單。它的優(yōu)點是消除了外界光線的干擾提高了靈敏度。方案二:采用超聲波傳感器,如果傳感器接收到反射的超聲波,則通知單片機前方有障礙物,如則通知單片機可以
9、向前行駛。市場上很多紅外光電探頭也都是基于這個原理。這樣不但能準確完成測量,而且能避免電路的復雜性 由以上兩種方案比較可知。方案一要比方案二優(yōu)勢大,市場上很多紅外觀點探頭也都基于這個原理。其電路簡單,工作可靠,性能比較穩(wěn)定。從而避免了電路的復雜性,因此我先用方案二作為小車的監(jiān)測系統(tǒng)。避障電路采用漫反射式光電開關(guān)進行避障。光電開關(guān)是集發(fā)射頭和接收頭于一體的檢測開關(guān),其工作原理是根據(jù)發(fā)射頭發(fā)出的光束,被障礙物反射,接收頭據(jù)此做出判斷是否有障礙物。當有光線反射回來時,輸出低電平;當沒有光線反射回來時,輸出高電平。單片機根據(jù)接收頭電平的高低做出相應控制,避免小車碰到障礙物,由于接收管輸出TTL電平,有
10、利于單片機對信號的處理。2光電開關(guān)工作原理:光電開關(guān)是通過把光強度的變化轉(zhuǎn)換成電信號的變化來實現(xiàn)控制的。光電開關(guān)在一般情況下,有三部分構(gòu)成,它們分為:發(fā)送器、接收器和檢測電路。避障電路功能表:傳感器避障電路輸出(上升沿動作)待執(zhí)行命令左中右左轉(zhuǎn)信號(P2.1)右轉(zhuǎn)信號(P2.0)000后右轉(zhuǎn)001右轉(zhuǎn)010右轉(zhuǎn)011右轉(zhuǎn)100左轉(zhuǎn)101右轉(zhuǎn)110左轉(zhuǎn)111前進注解(“0”表示有障礙物; “1”表示無障礙物)四.循跡模塊TCRT5000傳感器小車循跡原理是小車在畫有黑線的白紙 “路面”上行駛,由于黑線和白紙對光線的反射系數(shù)不同,可根據(jù)接收到的反射光的強弱來判斷“道路”黑線。筆者在該模塊中利用了簡
11、單、應用也比較普遍的檢測方法紅外探測法。紅外探測法,即利用紅外線在不同顏色的物理表面具有不同的反射性質(zhì)的特點。在小車行駛過程中不斷地向地面發(fā)射紅外光,當紅外光遇到白色地面時發(fā)生漫發(fā)射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,則小車上的接收管接收不到信號,再通過LM324作比較器來采集高低電平,從而實現(xiàn)信號的檢測。避障亦是此原理。電路圖如圖3.4。市面上有很多紅外傳感器,在這里我選用TCRT5000型光電對管。圖3.4循跡原理圖循跡模塊兒功能表1234567左拐100000011000000100000ZZ00000小左011000000100000Z10000直走00110
12、000001000000110000Z1Z00小右0000100000011000001Z0右拐00000100000011000000100000ZZ特殊001110000001110001111右直角001111101111110ZZZ111左直角1110000111100011111001111110111ZZZ0全白0000000全黑1111111五. 單片機電路本設計的主控芯片選擇STC89C52,負責檢測傳感器的狀態(tài)并向電機驅(qū)動電路發(fā)出動作命令。復位電路采用手動復位。單片機電路如下:六. 電機轉(zhuǎn)速控制電路轉(zhuǎn)速控制采用基于PWM技術(shù)的脈沖調(diào)制技術(shù),通過單片機輸出兩列PWM信號,經(jīng)過l
13、298N對電機進行速度調(diào)控。 PWM(脈沖寬度調(diào)制)控制,通常配合橋式驅(qū)動電路實現(xiàn)直流電機調(diào)速,非常簡單,且調(diào)速范圍大,它的原理就是直流斬波原理。如圖1所示,若S3、S4關(guān)斷,S1、S2受PWM控制,假設高電平導通,忽略開關(guān)管損耗,則在一個周期內(nèi)的導通時間為t,周期為T,波形如圖6,則電機兩端的平均電壓為: U=Vcc t/T=Vcc ,其中,=t/T稱為占空比,Vcc為電源電壓(電源電壓減去兩個開關(guān)管的飽和壓降)。 電機的轉(zhuǎn)速與電機兩端的電壓成比例,而電機兩端的電壓與控制波形的占空比成正比,因此電機的速度與占空比成比例,占空比越大,電機轉(zhuǎn)得越快,當占空比1時,電機轉(zhuǎn)速最大。PWM控制波形的實
14、現(xiàn)可以通過模擬電路或數(shù)字電路實現(xiàn),例如用555搭成的觸發(fā)電路,但是,這種電路的占空比不能自動調(diào)節(jié),不能用于自動控制小車的調(diào)速。而目前使用的大多數(shù)單片機都可以直接輸出這種PWM波形,或通過時序模擬輸出,最適合小車的調(diào)速。我們使用的是STC89C52單片機,它是8位單片機,內(nèi)部設有3個獨立的計數(shù)器,完全可以模擬任意頻率、占空比隨意調(diào)節(jié)的PWM信號輸出,用以控制電機調(diào)速。在小車行進的過程中,占空比不應該太高,在直線前進和轉(zhuǎn)彎的時候應該區(qū)別對待。若車速太快,則在轉(zhuǎn)彎的時候,方向不易控制;而車速太慢,則很浪費時間。這時可以根據(jù)具體情況慢慢調(diào)節(jié)七. 電源電路 本系統(tǒng)所有芯片都需要+5V的工作電壓,而干電池
15、只能提供的電壓為15V的倍數(shù)的電壓,并且隨著使用時間的延長,其電壓會逐漸下降,故采用了一個12v蓄電池,再用LM2940穩(wěn)壓芯片。LM2940具有紋波小、電路結(jié)構(gòu)簡單的優(yōu)點,對于單片機,需要提供穩(wěn)定的5V電源,由于LM2940的穩(wěn)壓的線性度非常好,所以選用LM2940-5對其進行供電;能提供最大1A的電流,足以滿足芯片供電的要求。雖然微處理器和微控制器不需要支持電路,功耗也很低,但必須要加以考慮。 電源電路擬定為:八.電機驅(qū)動電路 市場上用很多種類的小電壓直流電動機,很方便的選擇到。主要有普通電動機、和步進電動機。方案一:采用步進電機,步進電動機的一個顯著的特點就是具有快速啟動和停止能力,能夠
16、達到我們所要求的標準。如果負荷不超過步進電機所能提供的動態(tài)轉(zhuǎn)矩值,就能夠立即是步進電機啟動或反轉(zhuǎn)。其轉(zhuǎn)換靈敏度比較高。正轉(zhuǎn)、反轉(zhuǎn)控制靈活。但是步進電機的價格比較昂貴,對于我們的現(xiàn)狀相差太遠。方案二:采用普通的直流電機。直流電機具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便。調(diào)整范圍廣;過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)頻繁的無極快速啟動、制動和反轉(zhuǎn)。能滿足各種不容的特殊運行要求。由于普通直流電機價格適宜,更易于購買,并且電路相對簡單,因此采用直流電機作為動力源本設計采用L298N驅(qū)動使電機正反轉(zhuǎn)從而做到前進,左轉(zhuǎn)驅(qū)動電路(參考文獻4)電機驅(qū)動一般采用H橋式驅(qū)動電路,L298N內(nèi)部集成了H橋式驅(qū)動電路
17、,從而可以采用L298N電路來驅(qū)動電機。通過單片機給予L298N電路PWM信號來控制小車的速度,起停。其引腳圖如3.2,驅(qū)動原理圖如圖3.3。圖3.2 L298N引腳圖 圖3.3 電機驅(qū)動電路九.通信系統(tǒng)1NRF24L01工作原理簡介:發(fā)射數(shù)據(jù)時,首先將nRF24L01配置為發(fā)射模式,接著把地址TX_ADDR和數(shù)據(jù)TX_PLD按照時序由SPI口寫入nRF24L01緩存區(qū),TX_PLD必須在CSN為低時連續(xù)寫入,而TX_ADDR在發(fā)射時寫入一次即可,然后CE置為高電平并保持至少10s,延遲130s后發(fā)射數(shù)據(jù);若自動應答開啟,那么nRF24L01在發(fā)射數(shù)據(jù)后立即進入接收模式,接收應答信號。如果收到
18、應答,則認為此次通信成功,TX_DS置高,同時TX_PLD從發(fā)送堆棧中清除;若未收到應答,則自動重新發(fā)射該數(shù)據(jù)(自動重發(fā)已開啟),若重發(fā)次數(shù)(ARC_CNT)達到上限,MAX_RT置高,TX_PLD不會被清除;MAX_RT或TX_DS置高時,使IRQ變低,以便通知MCU。最后發(fā)射成功時,若CE為低,則nRF24L01進入待機模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且CE為高,則進入待機模式2。接收數(shù)據(jù)時,首先將nRF24L01配置為接收模式,接著延遲130s進入接收狀態(tài)等待數(shù)據(jù)的到來。當接收方檢測到有效的地址和CRC時,就將數(shù)據(jù)包存儲在接收堆棧中,同時中斷標志
19、位RX_DR置高,IRQ變低,以便通知MCU去取數(shù)據(jù)。若此時自動應答開啟,接收方則同時進入發(fā)射狀態(tài)回傳應答信號。最后接收成功時,若CE變低,則nRF24L01進入空閑模式1。模式PWR_UPPRIM_RXCEFIFO寄存器狀態(tài)接收模式111-發(fā)射模式1011數(shù)據(jù)存儲在FIFO寄存器中,發(fā)射所有數(shù)據(jù)發(fā)射模式10012數(shù)據(jù)存儲在FIFO寄存器中,發(fā)射一個數(shù)據(jù)待機模式II101TX FIFO為空待機模式I1-0無正在傳輸?shù)臄?shù)據(jù)掉電模式0-2. SPI介紹同步串行外設接口(SPI)是由摩托羅拉公司開發(fā)的全雙工同步串行總線,該總線大量用在與EEPROM、ADC、FRAM和顯示驅(qū)動器之類的慢速外設器件通信
20、。SPI(Serial Peripheral Interface)是一種串行串行同步通訊協(xié)議,由一個主設備和一個或多個從設備組成,主設備啟動一個與從設備的同步通訊,從而完成數(shù)據(jù)的交換。SPI 接口由SDI(串行數(shù)據(jù)輸入),SDO(串行數(shù)據(jù)輸出),SCK(串行移位時鐘),CS(從使能信號)四種信號構(gòu)成,CS 決定了唯一的與主設備通信的從設備,如沒有CS 信號,則只能存在一個從設備,主設備通過產(chǎn)生移位時鐘來發(fā)起通訊。通訊時,數(shù)據(jù)由SDO 輸出,SDI 輸入,數(shù)據(jù)在時鐘的上升或下降沿由SDO 輸出,在緊接著的下降或上升沿由SDI 讀入,這樣經(jīng)過8/16 次時鐘的改變,完成8/16 位數(shù)據(jù)的傳輸。總線
21、協(xié)議該總線通信基于主-從(所有的串行的總線均是這樣,USB,IIC,SPI等)配置,而且下面提到的方向性的操作合指代全部從主設備的角度說得。它有以下4個信號:MOSI:主出/從入MISO:主入/從出SCK:串行時鐘SS:從屬選擇;芯片上“從屬選擇”(slave-select)的引腳數(shù)決定了可連到總線上的器件數(shù)量。在SPI傳輸中,數(shù)據(jù)是同步進行發(fā)送和接收的。數(shù)據(jù)傳輸?shù)臅r鐘基于來自主處理器的時鐘脈沖(也可以是IO上的電平的模擬時鐘),摩托羅拉沒有定義任何通用SPI的時鐘規(guī)范。然而,最常用的時鐘設置基于時鐘極性(CPOL)和時鐘相位(CPHA)兩個參數(shù),CPOL定義SPI串行時鐘的活動狀態(tài),而CPH
22、A定義相對于SO-數(shù)據(jù)位的時鐘相位。CPOL和CPHA的設置決定了數(shù)據(jù)取樣的時鐘沿。數(shù)據(jù)方向和通信速度SPI傳輸串行數(shù)據(jù)時首先傳輸最高位。波特率可以高達5Mbps,具體速度大小取決于SPI硬件。例如,Xicor公司的SPI串行器件傳輸速度能達到5MHz。SPI總線接口及時序SPI總線包括1根串行同步時鐘信號線以及2根數(shù)據(jù)線。SPI模塊為了和外設進行數(shù)據(jù)交換,根據(jù)外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選
23、擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設音時鐘相位和極性應該一致。SPI讀寫時序見下面兩圖。在寫寄存器之前,一定要進入待機模式或掉電模式。其中,CnSPI指令位;Sn狀態(tài)寄存器位;Dn數(shù)據(jù)位(低字節(jié)在前,高字節(jié)在后;每個字節(jié)中高位在前)SPI讀時序SPI寫時序3.串口通信串口是計算機上一種非常通用的設備通信協(xié)議(不要與通用串行總線Universal SerialBus或者USB混淆)。大多數(shù)計算機包含兩個基于RS232的串口。
24、串口同時也是儀器儀表設備通用的通信接口;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設備的數(shù)據(jù)。串口通信的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設備線總長不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上
25、發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是比特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配:a,比特率:這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個數(shù)。例如300波特表示每秒鐘發(fā)送300個bit。當我們提到時鐘周期時,就是指比特率,例如如果協(xié)議需要4800波特率,那么時鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的比特率為14400,28800和36600。比特率可以遠遠大于這些值,但是波特率和距離成反比。高比特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設備的通
26、信。b,數(shù)據(jù)位:這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標準的值是5、7和8位。如何設置取決于你想傳送的信息。比如,標準的ASCII碼是0127(7位)。擴展的ASCII碼是0255(8位)。如果數(shù)據(jù)使用簡單的文本(標準ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。c,停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停
27、止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。d,奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了
28、通信或者是否傳輸和接收數(shù)據(jù)是否不同步。十測速模塊兒測速原理與循跡原理類似,當有遮擋時紅外接收管接收不到紅外光,輸出低電平,無遮擋時輸出高電平。利用此原理實現(xiàn)轉(zhuǎn)速的測量,再通過單片機處理轉(zhuǎn)換為小車的速度與路程。有遮擋,輸出高電平;無遮擋,輸出低電平。有遮擋,輸出高電平;無遮擋,輸出低電平。十一.上位機(基于VB)Visual Basic是一種由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動編程語言。從任何標準來說,VB都是世界上使用人數(shù)最多的語言不僅是盛贊VB的開發(fā)者還是抱怨VB的開發(fā)者的數(shù)量。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用D
29、AO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個應用程序。該設計通過調(diào)用VB的mscomm控件timer控件以及其它基本控件,實現(xiàn)了基于查詢方式的串口通信。可將從下位機采集的小車速度,路程等信息實時顯示附一:上位機程序: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 C
30、ombo1.Text = com3 Then MSComm1.CommPort = 3If Combo1.Text = com4 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
31、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 Command12_Click()a = 0Text1.T
32、ext = 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 SubPrivate Sub Command4_Click()MSComm1.InputMode = comInputModeBinaryEnd SubPr
33、ivate Sub Command5_Click()Text1.Text = Text2.Text = Text3.Text = End SubPrivate Sub Command6_Click()Dim IntR As IntegerIntR = MsgBox(確認要退出程序嗎?, vbYesNo, 退出確認)If IntR = vbYes Then EndEnd SubPrivate Sub Command7_Click()MsgBox 正在開發(fā)中!End SubPrivate Sub Command8_Click()MsgBox 正在開發(fā)中!End SubPrivate Sub Com
34、mand9_Click()MsgBox 這是李根的軟件End SubPrivate Sub Form_Load()Combo1.AddItem com1Combo1.AddItem com2Combo1.AddItem com3Combo1.AddItem com4Combo1.AddItem com5Combo1.AddItem com6Combo1.AddItem com7Combo1.AddItem com8Combo1.AddItem com9Timer1.Enabled = Timer1.Enableda = 0MSComm1.CommPort = 3Picture1.Picture
35、 = LoadPicture(C:UsersAdministratorDesktop4.jpg) End SubPrivate Sub Form_Unload(Cancel As Integer)Dim IntR As IntegerIntR = MsgBox(確認要退出程序嗎?, vbYesNo, 確認退出)If IntR = vbNo Then Cancel = -1End SubPrivate Sub Timer1_Timer()Dim indata As StringDim bte(0) As IntegerDim kong As Stringa = 0If MSComm1.InBuf
36、ferCount 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(indata): Text3.Text = bte(0
37、): 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 1 If a = 0 Then Text3.Tex
38、t = 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.Text = Text2.Text + MSComm1.Input : a = 0 End If Next a End I
39、f End IfEnd IfEnd Sub附二:小車部分源程序:#include#include #include /*NRF24L01 IO端口定義*/sbitCE =P00;sbitCSN=P01;sbitSCK =P02;sbit MOSI=P03;sbit MISO=P04;sbitIRQ=P05;sbit LLT=P06;/避障口sbit RLT=P34;sbit MLT=P27;sbit S1=P10; /傳感器信號輸入端口sbit S2=P11;sbit S3=P13;/INTsbit S4=P15;/LLTsbit S5=P16;/RLTsbit S6=P12;sbit S7=
40、P14;/OUTsbit LH=P23; /電機1左輪sbit LL=P24;sbit RH=P25; /電機2右輪sbit RL=P26;sbit ENA=P36;/電機左輪使能sbit ENB=P37;/電機右輪使能sbit key1=P30;sbit key2=P31; sbit key3=P32;sbit key4=P33;#define uchar unsigned char#define TX_ADR_WIDTH 5 / 5個字節(jié)的TX地址長度#define RX_ADR_WIDTH 5 / 5個字節(jié)的TX地址長度#define TX_PLOAD_WIDTH 5 / 20個字節(jié)的T
41、X數(shù)據(jù)長度#define RX_PLOAD_WIDTH 5 / 20個字節(jié)的TX數(shù)據(jù)長度/*NRF24L01寄存器指令*/#define READ_REG 0x00 / 讀寄存器指令#define WRITE_REG 0x20 / 寫寄存器指令#define RD_RX_PLOAD 0x61 / 讀取接收數(shù)據(jù)指令#define WR_TX_PLOAD 0xA0 / 寫待發(fā)數(shù)據(jù)指令#define FLUSH_TX 0xE1 / 沖洗發(fā)送 FIFO指令#define FLUSH_RX 0xE2 / 沖洗接收 FIFO指令#define REUSE_TX_PL 0xE3 / 定義重復裝載數(shù)據(jù)指令#d
42、efine NOP 0xFF / 保留/*SPI(nRF24L01)寄存器地址*/#define CONFIG 0x00 / 配置收發(fā)狀態(tài),CRC校驗模式以及收發(fā)狀態(tài)響應方式#define EN_AA 0x01 / 自動應答功能設置#define EN_RXADDR 0x02 / 可用信道設置#define SETUP_AW 0x03 / 收發(fā)地址寬度設置#define SETUP_RETR 0x04 / 自動重發(fā)功能設置#define RF_CH 0x05 / 工作頻率設置#define RF_SETUP 0x06 / 發(fā)射速率、功耗功能設置#define STATUS 0x07 / 狀態(tài)寄
43、存器#define OBSERVE_TX 0x08 / 發(fā)送監(jiān)測功能#define CD 0x09 / 地址檢測 #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 / 頻道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ù)長度#define RX_PW_P1 0x12 / 接收頻道0接收數(shù)據(jù)長度#define RX_PW_P2 0x13 / 接收頻道0接收數(shù)據(jù)長度#define RX_PW_P3 0x14 / 接收頻道0接收數(shù)據(jù)長度#define RX_PW_P4 0x15 / 接收頻道0接收數(shù)據(jù)長度#define RX_PW_P5 0x16 / 接收頻道0接收數(shù)據(jù)長度#define FIFO_STATUS 0x17 / FIFO棧入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度畜牧業(yè)養(yǎng)殖廢棄物處理設施建設合同3篇
- 二零二四年建筑施工合同標的為住宅小區(qū)建設的合同3篇
- 二零二五年度農(nóng)業(yè)種植項目知識產(chǎn)權(quán)保護合同
- 臨建施工合同范本模板(2025版)專業(yè)定制服務2篇
- 肌少癥與中老年男性2型糖尿病患者骨密度的相關(guān)性研究
- 2025年度沖孔樁施工安全防護及教育培訓合同4篇
- 二零二四年度學校教師教學團隊建設與協(xié)作合同3篇
- 洛陽市孟津區(qū)休閑農(nóng)業(yè)發(fā)展現(xiàn)狀及影響因素分析
- 企業(yè)綠色化轉(zhuǎn)型對融資約束的影響研究
- 晶格應變工程調(diào)控鈣鈦礦氧化物薄膜鐵電性及關(guān)聯(lián)磁電性
- 二零二五版電力設施維修保養(yǎng)合同協(xié)議3篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設計與授權(quán)使用3篇
- 公務攝影拍攝技巧分享
- 倉儲中心退貨管理制度
- 豐田鋒蘭達說明書
- 典范英語8-15Here comes trouble原文翻譯
- 六安市葉集化工園區(qū)污水處理廠及配套管網(wǎng)一期工程環(huán)境影響報告書
- 運動技能學習與控制課件第一章運動技能學習與控制概述
- 清華大學考生自述
- 人機工程學與眼鏡
- 中層后備干部培訓心得體會范本
評論
0/150
提交評論