聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì)論文_第1頁
聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì)論文_第2頁
聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì)論文_第3頁
聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì)論文_第4頁
聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連理工大學(xué)城市學(xué)院 本科生畢業(yè)設(shè)計(jì)(論文)學(xué) 院: 電子與自動(dòng)化學(xué)院 專 業(yè): 電子信息工程 學(xué) 生: 馮 傳 指導(dǎo)教師: 馬 彧 完成日期: 2010年5月30日 大連理工大學(xué)城市學(xué)院本科生畢業(yè)設(shè)計(jì)(論文)聲音導(dǎo)引系統(tǒng)的軟件設(shè)計(jì) 總計(jì) 畢業(yè)設(shè)計(jì)(論文) 49 頁表 格 7 表插 圖 14 幅聲音引導(dǎo)系統(tǒng)的軟件設(shè)計(jì)摘 要做為一套完整的電子設(shè)計(jì)系統(tǒng)不可缺少的一部分,軟件設(shè)計(jì)成為了實(shí)現(xiàn)系統(tǒng)智能化的靈魂。一段合理、高效的程序代碼,可使整套系統(tǒng)在運(yùn)作過程中利用最少的硬件資源完成最高效率的動(dòng)作響應(yīng)。在聲音引導(dǎo)系統(tǒng)中,通過軟件的對(duì)信號(hào)的分析和對(duì)硬件的控制,完成了一系列判斷、分析、執(zhí)行的動(dòng)作,最后使整套系

2、統(tǒng)有序的運(yùn)行。本軟件的設(shè)計(jì),基于以單片機(jī)89C511為控制核心、以RF24L01為通信模塊、以蜂鳴器為音源、以mic頭為聲音接收裝置等硬件的系統(tǒng)而設(shè)計(jì)?;A(chǔ)的硬件部分分為可移動(dòng)聲源部分和聲源引導(dǎo)部分,兩者均以89C51為控制核心。移動(dòng)聲源部分由可運(yùn)動(dòng)的小車、蜂鳴發(fā)聲裝置、無線數(shù)據(jù)收發(fā)裝置等組成;聲音引導(dǎo)部分由3只聲音接收裝置、無線數(shù)據(jù)收發(fā)裝置等組成。整套系統(tǒng)通過一系列有序數(shù)據(jù)的處理,分析出聲源離各個(gè)聲音接收裝置的時(shí)間差來判斷移動(dòng)聲源與指定位置間距離的誤差信號(hào),并通過無線發(fā)射模塊將此誤差信號(hào)發(fā)送至可移動(dòng)聲源,并對(duì)可移動(dòng)聲源進(jìn)行控制和引導(dǎo)。實(shí)現(xiàn)了可移動(dòng)聲源(小車)在規(guī)定時(shí)間內(nèi),到達(dá)指定位置的要求。

3、此外,為了擁有更好的人機(jī)交互,本系統(tǒng)增加了點(diǎn)陣式液晶顯示器1602。關(guān)鍵詞:聲音引導(dǎo) 無線收發(fā) 誤差信號(hào) 微控制處理器 聲音探測AbstractAs a complete electronics design system is an integral part, software designed to be intelligent to realize the system, then the soul.A reasonable, efficient code, make the entire system in operation during the use of hardware r

4、esources to complete at least the most efficient action to respond.The voice guidance system, through the software, the signal analysis and control hardware to complete a series of judgments, analysis, implementation of the action, the final running order so that the entire system.The software desig

5、n, based on the 89C51 microcontroller as the control center to RF24L01 for the communications module to the buzzer as the sound source to mic head for the sound receiving device such as hardware-based systems are designed.Hardware-based moving sound source can be divided into some parts of sound sou

6、rce guide.89C51 to control both to the core: move the sound source in part by the movement of the car can be, beep sound devices, wireless data transceiver device etc; voice guided in part by the three sound receiver, wireless data transmitters and receivers and other components.The entire system th

7、rough a series of ordered data processing, analysis of the various sounds from the sound source receiving device to determine the time difference and specify the location of moving sound between the distance of the error signal, and the wireless transmitter module by this error signal can be sent to

8、 the mobile soundsource, and mobile source control and guidance.Achieve mobile source (car) within a specified time, to reach the designated position requirements.In addition, in order to have better human-computer interaction, the system increased the 1602 dot-matrix liquid crystal displays.Keyword

9、s: Voice guidance;Wireless transceiver;Different signal;Micro Control Unit(MCU)目 錄摘 要I第1章 緒 論11.1 課題背景11.2 課題任務(wù)及要求21.3 基本要求41.4 課題內(nèi)容及安排4第2章 物聯(lián)網(wǎng)簡介62.1 軟件的發(fā)展史62.2 軟件的重要作用82.3 通用語言之父-c語言92.4 軟件的常用模型11第3章 物聯(lián)網(wǎng)的應(yīng)用133.1 系統(tǒng)模型設(shè)計(jì)133.2 系統(tǒng)誤差信號(hào)的分析143.3 控制理論與誤差計(jì)算153.4 系統(tǒng)組成163.5 整體方案論證與分析17第4章 不停車收費(fèi)系統(tǒng)在物聯(lián)網(wǎng)中的應(yīng)用184.1

10、 總體思路流程184.2 聲音引導(dǎo)部分程序設(shè)計(jì)204.3 可移動(dòng)聲源部分程序設(shè)計(jì)234.4 無線部分程序設(shè)計(jì)254.4.1 無線模塊方案分析254.4.2 nRF24L01概述254.4.3 nRF24L01引腳功能及描述264.4.4 nRF241L01工作模式274.4.5 nRF241L01工作原理284.4.6 nRF241L01配置字284.4.7 nRF24L01程序設(shè)計(jì)314.5 顯示部分程序設(shè)計(jì)344.5.1 顯示模塊方案分析344.5.2 1602簡介344.5.3 LCD1602管腳功能344.5.4 LCD1602字符集374.5.5 LCD1602顯示地址394.5.6

11、 LCD1602程序設(shè)計(jì)414.5.7 主要程序示意42第5章 結(jié)合硬件部分的整體調(diào)試455.1 測試原理與方法455.2 測試使用儀器與型號(hào)455.3 測試數(shù)據(jù)455.4 測試結(jié)果分析46第6章 聲音定位其他方法的介紹476.1 方法介紹476.2 聲源定位常見三種方法的應(yīng)用48第7章 結(jié) 論49致 謝50參考文獻(xiàn)51附件一:1602液晶顯示部分程序52附件二:無線收發(fā)部分程序56附件三:小車電機(jī)控制部分程序64III聲音引導(dǎo)系統(tǒng)的軟件設(shè)計(jì)第1章 緒 論1.1 課題背景聲音引導(dǎo)系統(tǒng)的設(shè)計(jì),是基于今年來新興的聲音定位系統(tǒng)相關(guān)課題而提出的一種移動(dòng)聲源在一定區(qū)域范圍內(nèi)尋找某一特定目標(biāo)的設(shè)計(jì)。在現(xiàn)實(shí)

12、生活中,這種聲音定位的技術(shù)能在軍事、商務(wù)、偵查等場所得以運(yùn)用。在軍事方面,一種名叫“反狙擊手探測系統(tǒng)”的裝置,在近來的武器產(chǎn)品展上平凡亮相。這種反狙擊手聲測定位系統(tǒng)確定狙擊手的位置,是通過接收并測量狙擊步槍的膛口激波和彈丸行產(chǎn)生的沖擊波或聲波來實(shí)現(xiàn)的,系統(tǒng)的關(guān)鍵部件是可以感應(yīng)到爆炸并能測出爆炸聲的準(zhǔn)確位置,來幫助戰(zhàn)斗中的戰(zhàn)士快速的找到敵方狙擊手的所在。 如圖1-1所示為軍用反狙擊手探測系統(tǒng)。圖1-1 反狙擊手探測系統(tǒng)在商務(wù)領(lǐng)域,一種根據(jù)發(fā)言人聲音來源的不同自動(dòng)辨別發(fā)言者的“會(huì)議系統(tǒng)麥克風(fēng)與攝像機(jī)的智能聯(lián)動(dòng)跟蹤”1裝置,正在不斷的完善當(dāng)中。這種視像跟蹤是指與會(huì)人員按下麥克風(fēng)發(fā)言時(shí),聯(lián)動(dòng)觸發(fā)高速攝

13、像機(jī),調(diào)用其預(yù)置位指向當(dāng)前發(fā)言者,將其面部表情特寫圖像輸送到投影大屏幕或監(jiān)視器或錄像設(shè)備,特別是輸送給遠(yuǎn)程視像會(huì)議系統(tǒng),通過網(wǎng)絡(luò)傳送到遠(yuǎn)方會(huì)場,讓不在同一地點(diǎn)的兩方人員實(shí)現(xiàn)面對(duì)面零距離會(huì)談。這些領(lǐng)域的應(yīng)用都與聲音的定位密不可分,當(dāng)然,聲音引導(dǎo)系統(tǒng)的設(shè)計(jì)也如此,我們只需在聲音定位的基礎(chǔ)上再加上位置的移動(dòng),便可實(shí)現(xiàn)引導(dǎo)。1.2 課題任務(wù)及要求設(shè)計(jì)并制作一聲音導(dǎo)引系統(tǒng),如圖1-2所示。圖1-2 聲音引導(dǎo)系統(tǒng)圖中,AB與AC垂直,Ox是AB的中垂線,O'y是AC的中垂線,W是Ox和O'y的交點(diǎn)。 聲音導(dǎo)引系統(tǒng)有一個(gè)可移動(dòng)聲源S,三個(gè)聲音接收器A、B和C,聲音接收器之間可以有線連接。聲音

14、接收器能利用可移動(dòng)聲源和接收器之間的不同距離,產(chǎn)生一個(gè)可移動(dòng)聲源離Ox線(或O'y線)的誤差信號(hào),并用無線方式將此誤差信號(hào)傳輸至可移動(dòng)聲源,引導(dǎo)其運(yùn)動(dòng)。 可移動(dòng)聲源運(yùn)動(dòng)的起始點(diǎn)必須在Ox線右側(cè),位置可以任意指定。 1.3 基本要求 (1)制作可移動(dòng)的聲源。可移動(dòng)聲源產(chǎn)生的信號(hào)為周期性音頻脈沖信號(hào),如圖2所示,聲音信號(hào)頻率不限,脈沖周期不限。 (2)可移動(dòng)聲源發(fā)出聲音后開始運(yùn)動(dòng),到達(dá)Ox線并停止,這段運(yùn)動(dòng)時(shí)間為響應(yīng)時(shí)間,測量響應(yīng)時(shí)間,用下列公式計(jì)算出響應(yīng)的平均速度,要求平均速度大于 5cm/s。 (3)可移動(dòng)聲源停止后的位置與Ox線之間的距離為定位誤差,定位誤差小于3cm。 (4)可移動(dòng)

15、聲源在運(yùn)動(dòng)過程中任意時(shí)刻超過Ox線左側(cè)的距離小于5cm。 (5)可移動(dòng)聲源到達(dá)Ox線后,必須有明顯的光和聲指示。 (6)功耗低,性價(jià)比高。 (7)其他:在可移動(dòng)聲源兩側(cè)必須有明顯的定位標(biāo)志線,標(biāo)志線寬度0.3cm且垂直于地面;誤差信號(hào)傳輸采用的無線方式、頻率不限;可移動(dòng)聲源的平臺(tái)形式不限;可移動(dòng)聲源開始運(yùn)行的方向應(yīng)和Ox線保持垂直;不得依靠其他非聲音導(dǎo)航方式;移動(dòng)過程中不得人為對(duì)系統(tǒng)施加影響;接收器和聲源之間不得使用有線連接。 1.4 課題內(nèi)容及安排本設(shè)計(jì)主要針對(duì)聲音引導(dǎo)系統(tǒng)的軟件設(shè)計(jì),主要分為:移動(dòng)聲源發(fā)聲模塊的程序設(shè)計(jì),聲音檢測模塊的誤差處理設(shè)計(jì),用于led點(diǎn)陣屏1602顯示模塊的程序設(shè)計(jì)

16、,以及用于無線數(shù)據(jù)傳輸?shù)臒o線收發(fā)模塊的程序設(shè)計(jì)。本文主要完成各部分模塊的程序設(shè)計(jì),以幫助相配套的硬件部分的正常運(yùn)行。本文安排如下:第一章:緒論,概述論文寫作背景。第二章:闡述軟件在整個(gè)電子產(chǎn)品設(shè)計(jì)過程中的重要作用。第三章:聲音引導(dǎo)系統(tǒng)的總體方案的論證。第四章:分模塊的介紹各部分功能的軟件的實(shí)現(xiàn)。第五章:結(jié)合硬件系統(tǒng)聯(lián)合調(diào)試,包括出現(xiàn)的問題和解決方案以及調(diào)試結(jié)果第六章:結(jié)論第七章:其他聲音定位方法的介紹第2章 軟件在電子產(chǎn)品中的重要作用2.1 軟件的發(fā)展史軟件的產(chǎn)生始于早期的機(jī)械式計(jì)算機(jī)的開發(fā)10。從19世紀(jì)起,隨著機(jī)械式計(jì)算機(jī)的更新,出現(xiàn)了穿孔卡片,這種卡片可以指導(dǎo)計(jì)算機(jī)進(jìn)行工作。但是直到20

17、世紀(jì)中期現(xiàn)代化的電子計(jì)算機(jī)出現(xiàn)之后,軟件才真正得以飛速發(fā)展。在世界上第一臺(tái)計(jì)算機(jī)ENIAC上使用的也是穿孔卡片,在卡片上使用的是專家們才能理解的語言,由于它與人類語言的差別極大,所以我們稱之為機(jī)器語言。也就是第一代計(jì)算機(jī)語言。這種語言本質(zhì)上是計(jì)算機(jī)能識(shí)別的唯一語言,但人類卻很難理解它,以后的計(jì)算機(jī)語言就是在這個(gè)基礎(chǔ)上,將機(jī)器語言越來越簡化到人類能夠直接理解的、近似于人類語言的程度,但最終送入計(jì)算機(jī)的工作語言,還是這種機(jī)器語言。高級(jí)語言的任務(wù)就是將它翻譯成易懂的語言,而這個(gè)翻譯工作可以由計(jì)算速度越來越高、工作越來越可靠的計(jì)算機(jī)自己來完成。計(jì)算機(jī)語言發(fā)展到第二代,出現(xiàn)了匯編語言。比起機(jī)器語言,匯編

18、語言大大前進(jìn)了一步,盡管它還是太復(fù)雜,人們?cè)谑褂脮r(shí)很容易出錯(cuò)誤,但畢竟許多數(shù)碼已經(jīng)開始用字母來代替。簡單的“0、1”數(shù)碼誰也不會(huì)理解,但字母是人們能夠閱讀并拼寫的。第二代計(jì)算機(jī)語言仍然是“面向機(jī)器”的語言,但它已注定要成為機(jī)器語言向更高級(jí)語言進(jìn)化的橋梁。當(dāng)計(jì)算機(jī)語言發(fā)展到第三代時(shí),就進(jìn)入了“面向人類”的語言階段。你可以閱讀、并直接用人類的語言來輸入。對(duì)我們漢語來說,目前還不能用中文漢字來輸入指令,這主要是因?yàn)橹形牡妮斎脒€沒有一個(gè)非常好的手段。第三代語言也被人們稱之為“高級(jí)語言”。高級(jí)語言是一種接近于人們使用習(xí)慣的程序設(shè)計(jì)語言。它允許用英文寫解題的計(jì)算程序,程序中所使用的運(yùn)算符號(hào)和運(yùn)算式子,都和

19、我們?nèi)粘S玫臄?shù)學(xué)式子差不多。例如用BASIC高級(jí)語言,要想計(jì)算7×6的結(jié)果,只需寫出 PRINT7*6即可,送入計(jì)算機(jī)后將自動(dòng)進(jìn)行計(jì)算并打印出結(jié)果。一般人都能很快學(xué)會(huì)使用計(jì)算機(jī),并且完全可以不了解機(jī)器指令,也可以不懂計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,就能編寫出應(yīng)用計(jì)算機(jī)進(jìn)行科學(xué)計(jì)算和事務(wù)管理的程序。高級(jí)語言容易學(xué)習(xí),通用性強(qiáng),書寫出的程序比較短,便于推廣和交流,是很理想的一種程序設(shè)計(jì)語言。高級(jí)語言發(fā)展于50年代中葉到70年代,有些流行的高級(jí)語言已經(jīng)被大多數(shù)計(jì)算機(jī)廠家采用,固化在計(jì)算機(jī)的內(nèi)存里。如 BASIC語言,現(xiàn)在已有128種不同的 BASIC語言在流行,當(dāng)然其基本特征是相同的。除了BA

20、SIC語言外,還有FORTRAN(公式翻譯)語言、 COBOL(通用商業(yè)語言)、 C語言、 DL/I語言、 PASCAC語言、ADA語言等250多種高級(jí)語言。高級(jí)語言是一種動(dòng)用語言,要完成某一個(gè)簡單的計(jì)算步驟,你必須詳細(xì)準(zhǔn)確地給出每一條指令。如解決經(jīng)營管理活動(dòng)中天天都要碰到的財(cái)務(wù)清賬、庫存等問題,就須編無數(shù)條程序,而情況一經(jīng)變化,原有的設(shè)計(jì)程序則要修改,這樣就使錯(cuò)誤的可能性增大,工作效率大大降低。為了解決這個(gè)問題,第四代計(jì)算機(jī)語言,即“實(shí)用語言”出現(xiàn)了。第四代語言是使用第二代第三代語言編制而成的,每一種語言都有其特定的應(yīng)用范圍。實(shí)際上,實(shí)用語言發(fā)展到今天已出現(xiàn)了一些有運(yùn)用性質(zhì)的第四代語言,如“

21、LO- TOS123”。第四代語言的特點(diǎn)就是它們只需要操作人員輸入原始數(shù)據(jù),并命令它們執(zhí)行。至于怎樣執(zhí)行則由它們本身來決定的,它已經(jīng)在相當(dāng)程度上替代了人腦的工作。第四代語言的特點(diǎn)還在于:操作者幾乎不需要經(jīng)過特殊訓(xùn)練,幾乎所有的“實(shí)用語言”都有“幫助(Help)”功能,你可以遵照計(jì)算機(jī)給出的指示來完成你的工作,第二次就完全不用幫助了!計(jì)算機(jī)語言是人與計(jì)算機(jī)進(jìn)行對(duì)話的最重要的手段。目前人們對(duì)計(jì)算機(jī)發(fā)出的命令幾乎都是通過計(jì)算機(jī)語言進(jìn)行的。人與人之間的交流不僅僅依靠語言,還有一些其它的方式,比如人的手勢、眼神等。由此我們可以推測,在不久的將來,計(jì)算機(jī)與人類的交流將是全方位的,而不再僅僅依靠計(jì)算機(jī)語言。

22、那時(shí),人們將更方便、更容易地操縱和使用計(jì)算機(jī)?,F(xiàn)代電子計(jì)算機(jī)技術(shù)的飛速發(fā)展,離不開人類科技知識(shí)的積累,離不開許許多多熱衷于此并嘔心瀝血的科學(xué)家門的探索,正是這一代代的積累才構(gòu)筑了今天的“信息大廈”。下面這個(gè)按時(shí)間順序展現(xiàn)的計(jì)算機(jī)發(fā)展簡史,雖然不是很詳細(xì)的描述這一輝煌歷程,但我們同樣可以從中感受到科技發(fā)展的艱辛及科學(xué)技術(shù)的巨大推動(dòng)力。2.2 軟件的重要作用電子產(chǎn)品系統(tǒng)的設(shè)計(jì),已經(jīng)從單純的硬件設(shè)計(jì),轉(zhuǎn)變?yōu)橐杂布檩d體的軟硬件同步設(shè)計(jì)過程,而且各種復(fù)雜功能借助軟件設(shè)計(jì)實(shí)現(xiàn)的比重正在日益加大,系統(tǒng)芯片區(qū)別于一般芯片的標(biāo)志性特點(diǎn)是內(nèi)嵌了一個(gè)或多個(gè)CPU,CPU在芯片中扮演的角色也已經(jīng)從單純的芯片總控,發(fā)

23、展到負(fù)責(zé)各種應(yīng)用功能的軟件實(shí)現(xiàn),既實(shí)現(xiàn)了對(duì)芯片硬件資源共享的最大化,又實(shí)現(xiàn)對(duì)各種不同標(biāo)準(zhǔn)和個(gè)性化需求的靈活應(yīng)對(duì),軟件將逐步扮演系統(tǒng)芯片靈魂的角色。軟件可以被稱作電子產(chǎn)品的靈魂。軟件的附加價(jià)值一直是通過硬件來實(shí)現(xiàn)的,無論是普通家電、辦公機(jī)器、數(shù)碼相機(jī)還是某些汽車發(fā)動(dòng)機(jī)的控制部分、超薄電視的圖像處理芯片,嵌入式其中的軟件都發(fā)揮著靈魂的作用。我門生活中隨處可見的電子產(chǎn)品中,稍帶人性化的設(shè)備中,無處不見軟件的身影。一方面,它作為人機(jī)交互界面的一部分,充當(dāng)這翻譯官的作用。不論是我們手里的遙控器,還是幾乎人手一部的手機(jī)。如果沒有軟件的存在,我們無法與底層的硬件做到一個(gè)友善的溝通。假若沒有軟件的存在,我們不

24、知用什么來告訴硬件我們想要做什么,也無法知道硬件在做什么。假若擁有軟件在硬件與你之間充當(dāng)橋梁,那么,一切都變得更加顯而易見。當(dāng)我們需要選臺(tái)的時(shí)候,只要通過軟件進(jìn)行交互,就能很快的找到我們喜歡的電視節(jié)目。也是因?yàn)檐浖拇嬖?,才有了我們現(xiàn)在如此人性化的手機(jī)操作界面。對(duì)比5年前的普通手機(jī),和現(xiàn)在普遍受人青睞的智能手機(jī),我們不難發(fā)現(xiàn),一款擁有優(yōu)良軟件血統(tǒng)的手機(jī),能給我們帶來多么便捷的使用。另一方面,軟件是人類賦予機(jī)器智能的必要手段。它還控制著整個(gè)電子設(shè)備的有序的運(yùn)行,沒有核心的軟件,再完美的硬件也很難實(shí)現(xiàn)復(fù)雜的工作。如果沒有軟件存在,我們所做的電子產(chǎn)品智能單一的完成某項(xiàng)機(jī)械的動(dòng)作,假若要讓你的產(chǎn)品擁有

25、更智能化的反映,那么,只有通過軟件才能讓這一切實(shí)現(xiàn)的更加容易??傊?,在現(xiàn)今高度智能的電子產(chǎn)品中,軟件以它獨(dú)有的價(jià)值貫穿其中,成為每個(gè)電子設(shè)計(jì)者門手中不可或缺的一項(xiàng)技術(shù)。軟件不軟,唯有將其硬置于產(chǎn)品中時(shí),才能讓原本死寂的機(jī)器聰明的運(yùn)動(dòng)起來。2.3 通用語言之父-c語言在程序設(shè)計(jì)的發(fā)展過程中,出現(xiàn)了各種各樣的計(jì)算機(jī)的語言。最早期的語言是二進(jìn)制語言,程序設(shè)計(jì)人員只能用計(jì)算機(jī)直接識(shí)別和執(zhí)行的二進(jìn)制代碼來編寫程序。為了減輕程序設(shè)計(jì)人員的負(fù)擔(dān),很快出現(xiàn)了匯編語言,這種語言是用符號(hào)來代表二進(jìn)制代碼,所以稱為符號(hào)語言。用這種語言編寫的程序需要通過一種軟件翻譯后才能執(zhí)行,所以又稱為匯編語言。不同的計(jì)算機(jī)上提供不

26、同的二進(jìn)制語言或匯編語言,所編寫的程序一般只能在同類型的計(jì)算機(jī)上運(yùn)行,所以這種語言又稱為“面向機(jī)器的語言”。在電子產(chǎn)品軟件的開發(fā)設(shè)計(jì)當(dāng)中,匯編和C語言起到了最為重要的作用。然而,C語言以其特有的作用,肩負(fù)起了90%的軟件控制的任務(wù)??梢哉f,除了啟動(dòng)代碼和必須高效運(yùn)行的部分程序段外,很少有程序員會(huì)拿匯編來實(shí)現(xiàn)復(fù)雜的功能。C語言的靈活與高效,得到了人們的親睞,為此,我們來看看C語言的發(fā)展。程序設(shè)計(jì)的關(guān)鍵是將問題及解決問題的算法過程描述出來,設(shè)計(jì)人員很快就提供了一種描述算法過程很方便,同時(shí)脫離對(duì)機(jī)型的要求,能在任何計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)語言。程序設(shè)計(jì)人員可以利用這種語言直接寫出各種表達(dá)式來描述簡單的計(jì)

27、算過程。專家們將這種語言稱為“高級(jí)語言”,而將二進(jìn)制語言和匯編語言統(tǒng)稱為“低級(jí)語言”。由于高級(jí)語言是面向問題和算法過程描述的,所以又將高級(jí)語言稱“面向問題的語言”。高級(jí)語言編寫的程序稱為“源程序”。源程序不能在計(jì)算機(jī)上直接運(yùn)行的,必須將其翻譯成二進(jìn)制程序后才能執(zhí)行。翻譯過程有兩種方式:一種是翻譯一句執(zhí)行一句,稱為“解釋程序”方式;另一種是全部翻譯成二進(jìn)制代碼后再執(zhí)行,承擔(dān)翻譯工作的程序就稱為“編譯程序”,編譯后的二進(jìn)制程序稱為“目標(biāo)程序”。世界上第一個(gè)高級(jí)語言是“ALGOL語言”,也叫算法語言。第二個(gè)高級(jí)語言是“FORTRAN語言”,也叫公式翻譯語言。以后陸續(xù)出現(xiàn)了很多種高級(jí)語言,使用面大的有

28、BASIC語言、COBOL語言、FOXBASE語言、PASCAL語言和C語言。C語言的前身是ALGOL語言。1960年ALGOL60版本推出后,很受程序設(shè)計(jì)人員的歡迎。用ALGOL60來描述算法很方便,但是它離開計(jì)算機(jī)硬件系統(tǒng)很遠(yuǎn),不宜用來編寫系統(tǒng)程序。1963年英國劍橋大學(xué)在ALGOL語言基礎(chǔ)上增添了處理硬件的能力,并命名為“CPL(復(fù)合程序設(shè)計(jì)語言)”。CPL由于規(guī)模大,學(xué)習(xí)和掌握困難,沒有流行開來。1967年劍橋大學(xué)的馬丁·理查德對(duì)CPL語言進(jìn)行了簡化,推出“BCPL(基本復(fù)合程序設(shè)計(jì)語言)”。1970年美國貝爾實(shí)驗(yàn)室的肯·湯普遜對(duì)BCPL進(jìn)行了進(jìn)一步的簡化,突出了硬

29、件處理能力,并取了“BCLP”的第一個(gè)字母“B”作為新語言的名稱。同時(shí)用B語言編寫了UNIX操作系統(tǒng)程序。1972年貝爾實(shí)驗(yàn)室的布朗·W·卡尼漢和丹尼斯·M·利奇對(duì)B語言進(jìn)行了完善和擴(kuò)充,在保留B語言強(qiáng)大硬件處理能力的基礎(chǔ)上,擴(kuò)充了數(shù)據(jù)類型,恢復(fù)了通用性,并取了“BCPL”的第二個(gè)字母作為新語言的名稱。此后,兩人合作,重寫了UNIX操作系統(tǒng)。C語言伴隨著UNIX操作系統(tǒng)成為一種很受歡迎的計(jì)算機(jī)語言。1977年。為了讓C語言脫離UNIX操作系統(tǒng),成為任何計(jì)算機(jī)上都能運(yùn)行的通用計(jì)算機(jī)語言,卡尼漢和利奇撰寫了C程序設(shè)計(jì)語言一書,對(duì)C語言的語法進(jìn)行了規(guī)范化的描述

30、,成為當(dāng)時(shí)的標(biāo)準(zhǔn)。隨著微型機(jī)的普及,出現(xiàn)了不同的C語言版本,為了統(tǒng)一標(biāo)準(zhǔn),美國標(biāo)準(zhǔn)化協(xié)會(huì)于1987年制定了C語言的標(biāo)準(zhǔn),稱為“ANSI C”。通常將K&R的標(biāo)準(zhǔn)稱為舊標(biāo)準(zhǔn),將“ANSI C”稱為新標(biāo)準(zhǔn)。C語言的主要特點(diǎn)可以概括成如下幾條:1、比其它高級(jí)語言更接近硬件,比低級(jí)語言更接近算法,程序易編、易讀、易查、易改??梢哉f是兼有高級(jí)語言和低級(jí)語言的優(yōu)點(diǎn)。2、數(shù)據(jù)類型和運(yùn)算符十分豐富,程序設(shè)計(jì)和算法描述更為簡單和方便。3、語法結(jié)構(gòu)十分簡單,語句數(shù)目十分少,簡單易學(xué)。4、它是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,提供了完整的程序控制語句,很適合結(jié)構(gòu)化的程序設(shè)計(jì)方法。5、它是一種模塊化程序設(shè)計(jì)語言,適合大

31、型軟件的研制和調(diào)試。6、它提供了大量的庫函數(shù)供調(diào)用,簡化了程序設(shè)計(jì)工作。2.4 軟件的常用模型通常的,當(dāng)我們拿到一個(gè)設(shè)計(jì)課題的時(shí)候,總是把選型、模型設(shè)計(jì)等放在設(shè)計(jì)的首要位置,但是對(duì)于軟件卻很少討論,對(duì)于架構(gòu)這個(gè)基本問題更是無人問津,甚至有的人不話流程圖就開始左手寫軟件。個(gè)人認(rèn)為,要做一個(gè)完善的自動(dòng)化產(chǎn)品的開發(fā),軟件非常重要,假若有個(gè)好的軟件架構(gòu)是寫好代碼的基礎(chǔ),可以使后期的調(diào)式工作事半功倍。在寫軟件的時(shí)候,通常我們會(huì)采用這四種結(jié)構(gòu):a)順序執(zhí)行代碼定義:按照順序逐行執(zhí)行的代碼優(yōu)點(diǎn):是思路簡單,代碼可靠不易被干擾。缺點(diǎn):占用資源用途:只用來各種變量、函數(shù)的定義,硬件的初始化程序位置:main.c

32、的開始一直到main函數(shù)的while函數(shù)之前b)空閑執(zhí)行代碼定義:在CPU空閑的時(shí)候才執(zhí)行的代碼優(yōu)點(diǎn):不占用資源缺點(diǎn):執(zhí)行的實(shí)時(shí)性不能保證用途:非實(shí)時(shí)任務(wù),調(diào)試信息輸出,不重要的狀態(tài)指示位置:main.c的main函數(shù)的while函數(shù)內(nèi)部c)中斷執(zhí)行代碼定義:由軟硬件事件打斷整個(gè)程序而執(zhí)行的代碼優(yōu)點(diǎn):可以保證實(shí)時(shí)性,各種中斷可以安排優(yōu)先順序缺點(diǎn):關(guān)系相對(duì)復(fù)雜,互相之間容易干擾用途:觸發(fā)性的代碼,比如接收數(shù)據(jù),響應(yīng)外部設(shè)備,按鈕的相應(yīng)位置:stm32f10x_it.c內(nèi)部d)循環(huán)執(zhí)行代碼定義:按照時(shí)間周期執(zhí)行的代碼優(yōu)點(diǎn):定期自動(dòng)執(zhí)行缺點(diǎn):實(shí)時(shí)性不好用途:需要周期執(zhí)行的任務(wù),狀態(tài)檢查及相關(guān)信息輸出

33、,數(shù)據(jù)記錄位置:stm32f10x_it.c的SysTickHandler內(nèi)部e)DMA自動(dòng)代碼定義:不需要主程序干預(yù),外設(shè)自動(dòng)執(zhí)行優(yōu)點(diǎn):自動(dòng)刷新數(shù)據(jù),不占用CPU資源缺點(diǎn):不能控制用途:數(shù)據(jù)通信存儲(chǔ),AD轉(zhuǎn)換位置:不作要求第3章 聲音引導(dǎo)系統(tǒng)總體方案的論證3.1 系統(tǒng)模型設(shè)計(jì)聲音導(dǎo)引系統(tǒng)有一個(gè)可移動(dòng)聲源S,三個(gè)聲音接收器A、B和C,聲音接收器之間可以有線連接。聲音接收器能利用可移動(dòng)聲源和接收器之間的不同距離,產(chǎn)生一個(gè)可移動(dòng)聲源離Ox線(或O'y線)的誤差信號(hào),并用無線方式將此誤差信號(hào)傳輸至可移動(dòng)聲源,引導(dǎo)其運(yùn)動(dòng)??梢苿?dòng)聲源運(yùn)動(dòng)的起始點(diǎn)必須在Ox線右側(cè),位置可以任意指定。系統(tǒng)模型為,坐

34、標(biāo)軸上A(0、1)、B(0、0)、C(1、0)為三個(gè)聲音接收器,S為移動(dòng)聲源所在位置,其坐標(biāo)為(x,y)。Ox和Oy分別為AB、AC中垂線,W為這兩條中垂線的交點(diǎn)。移動(dòng)聲源需要從S點(diǎn)開始運(yùn)動(dòng),先到達(dá)Ox,再移動(dòng)到W。在實(shí)現(xiàn)過程中,載體小車以垂直于Ox方向放置,為了讓聲源到達(dá)AB中垂線Ox上,將A和B處的聲音接收器作為參考點(diǎn),計(jì)算運(yùn)動(dòng)聲源當(dāng)前位置和指定地點(diǎn)的誤差信號(hào),實(shí)現(xiàn)小車的引導(dǎo)。小車放置的方向可能被旋轉(zhuǎn)180°,所以在運(yùn)動(dòng)的初始時(shí)刻,小車按照自己的車頭方向行駛一小段距離,通過誤差信號(hào)的變化,可以判斷小車擺放的位置。如果誤差信號(hào)變小,說明小車行駛方向正確,此后就按照這一方向運(yùn)動(dòng)下去,

35、如果誤差信號(hào)變大,說明小車被反向,步進(jìn)電機(jī)需要向相反的方向旋轉(zhuǎn)。在小車到達(dá)Ox后,為了到達(dá)圖中的W點(diǎn),先讓小車在原地旋轉(zhuǎn)90°,再次通過發(fā)聲模塊發(fā)出聲音信號(hào)。將兩聲音接收點(diǎn)A、C作為參考點(diǎn)得到可移動(dòng)聲源距離W點(diǎn)的誤差信號(hào)。以此控制小車運(yùn)動(dòng)的方向,直到聲源到達(dá)W點(diǎn)。3.2 系統(tǒng)誤差信號(hào)的分析可移動(dòng)聲源以小車為載體進(jìn)行運(yùn)動(dòng),如圖3-1所示,A、B兩點(diǎn)放置了聲音接收器,并在A點(diǎn)處設(shè)置一主控單片機(jī)。該單片機(jī)發(fā)出的控制指令,通過無線通信的方式傳送給小車上的單片機(jī),讓移動(dòng)聲源鳴叫。由于可移動(dòng)聲源距離A、B兩點(diǎn)中垂線距離為d,且聲音在空氣中的傳播速度有限,因此,A、B兩處的接收器會(huì)在不同的時(shí)刻接收

36、到聲音信號(hào)。系統(tǒng)軟件通過一高頻脈沖對(duì)這一時(shí)間差值進(jìn)行填充,可以得到確切的時(shí)間差,這一時(shí)間差與聲音在空氣中的傳播速度相乘,可計(jì)算出小車位置與B、A兩點(diǎn)間距離之差k。當(dāng)計(jì)算出的距離之差小于一定門限時(shí),可認(rèn)為小車到達(dá)了指定位置,故可將k作為誤差信號(hào)。 圖 3-1 誤差信號(hào)產(chǎn)生原理 3.3 控制理論與誤差計(jì)算為使聲源移動(dòng)到接收器A和B的中垂線Ox上,在主控制器的控制下,可移動(dòng)聲源以一定的周期控制蜂鳴器發(fā)出聲音信號(hào),假設(shè)信號(hào)周期為T。因?yàn)槁曉淳嚯xA、B兩點(diǎn)的距離不同,所以接收器A和接收器B會(huì)在不同的時(shí)刻接收到聲音信號(hào)。將其整形成為方波信號(hào)送入FPGA。在軟件控制蜂鳴器發(fā)出聲音信號(hào)的同時(shí),F(xiàn)PGA開啟兩個(gè)

37、中斷口監(jiān)控接收器A和接收器B。在接收器B上產(chǎn)生中斷時(shí),利用高頻脈沖進(jìn)行填充計(jì)數(shù),當(dāng)接收器A產(chǎn)生中斷時(shí),停止計(jì)數(shù),通過這種方式可以得到可移動(dòng)聲源與兩個(gè)聲音接收模塊間距離的差值。當(dāng)可移動(dòng)聲源到達(dá)接收器A、B中垂線處,可移動(dòng)聲源與兩聲音接收模塊的距離之差最小,也即高頻脈沖數(shù)最少。通過軟件設(shè)置一個(gè)計(jì)數(shù)量的最低門限,當(dāng)計(jì)到的高頻脈沖量少于該門限時(shí),即可認(rèn)為可移動(dòng)聲源到達(dá)了指定地點(diǎn)。詳情如圖3-2所示。 若發(fā)送周期性聲音信號(hào)的周期間隔越小,可以實(shí)現(xiàn)的小車定位誤差將會(huì)越小,對(duì)于基本要求而言,要求的小車最小的運(yùn)動(dòng)速度v1=5cm/s,最大的定位誤差d1=3cm,所以蜂鳴器發(fā)出的周期性聲音信號(hào)的時(shí)間周期Td1/

38、v1=600ms。對(duì)于發(fā)揮部分而言,要求的小車最小的運(yùn)動(dòng)速度v2=10cm/s,最大的定位誤差d2=1cm,所以蜂鳴器發(fā)出的周期性聲音信號(hào)的時(shí)間周期Td2/v2=100ms。因此,若要減小小車定位誤差,應(yīng)該適當(dāng)降低蜂鳴器的發(fā)聲周期。圖3-2 聲音信號(hào)發(fā)射與接收示意圖3.4 系統(tǒng)組成系統(tǒng)由可移動(dòng)聲源部分和聲源指引部分組成,其中聲源部分又可分為:無線接收模塊、電機(jī)控制模塊、聲音信號(hào)產(chǎn)生模塊;聲源引導(dǎo)部分可分為:人機(jī)交互界面、聲音接收裝置、聲音信號(hào)處理模塊??梢苿?dòng)聲源以小車作為載體進(jìn)行移動(dòng),聲源指引部分包括聲音接收器和無線收發(fā)模塊。蜂鳴器作為聲源發(fā)出聲音信號(hào),在接收端接收到聲音信號(hào)以后通過單片機(jī)的分

39、析判斷,得到一個(gè)反映聲源位置和指定地點(diǎn)偏差的誤差信號(hào)。利用接收部分的無線發(fā)射模塊,將該信息傳送給小車上的無線接收器,使得車上的單片機(jī)以此為標(biāo)準(zhǔn)控制小車的運(yùn)動(dòng),直到小車到達(dá)指定的地點(diǎn)。系統(tǒng)的總體構(gòu)思如圖3-3所示:圖3-3 系統(tǒng)總體框圖3.5 整體方案論證與分析方案一:根據(jù)聲強(qiáng)檢測來對(duì)小車定位,不同距離的聲源傳到聲音接收器的信號(hào)強(qiáng)度不同,根據(jù)對(duì)信號(hào)強(qiáng)度進(jìn)行AD采樣,可以判斷出聲源距離。方案二:根據(jù)聲音傳輸時(shí)間差來對(duì)小車定位,聲音從聲源傳到不同接收器的時(shí)間不同,針對(duì)不同接收時(shí)間進(jìn)行定時(shí)計(jì)數(shù),做差值,可以判斷出聲源距離不同接收器的位置差,進(jìn)而對(duì)小車位置行進(jìn)控制。比較以上兩種方案,方案二簡單靈活、容易

40、控制,能達(dá)到題目的設(shè)計(jì)要求,因此采用方案二來實(shí)現(xiàn)。具體方案如下:本系統(tǒng)共用到三個(gè)聲音接收器(A、B、C),這三個(gè)器件通過電線連接在接收端的單片機(jī)上。根據(jù)接收器原理電路分析可知,該電路在沒有接收到聲音信號(hào)時(shí),輸出高電平;在接收到聲音信號(hào)時(shí),輸出低電平,非常穩(wěn)定。接收器接收到聲音信號(hào),輸出低電平用來觸發(fā)單片機(jī)的外部中斷,通過計(jì)數(shù)器計(jì)數(shù),算出小車離接收器的距離。經(jīng)單片機(jī)比較、分析、處理后,產(chǎn)生一個(gè)可移動(dòng)聲源離指定位置的誤差信號(hào),并用無線方式將此誤差信號(hào)傳輸至小車,引導(dǎo)小車運(yùn)動(dòng),實(shí)現(xiàn)小車的定位控制。第4章 聲音引導(dǎo)系統(tǒng)的軟件設(shè)計(jì)4.1 總體思路流程結(jié)合移動(dòng)音源部分和聲音引導(dǎo)部分,整套系統(tǒng)的流程圖如圖4

41、-1所示:圖4-1 總流程圖幾個(gè)主要的通用函數(shù):void Inituart(void)/使用串口方式傳送數(shù)據(jù)TMOD = 0x20;/timer1工作模式1TL1 = 0xfd;/9600 TH1 = 0xfd;/.fd=19200 晶振選11.0592mhzSCON = 0xd8;/串口模式3PCON = 0x80;/smod=0TR1 = 1;/啟動(dòng) timer1void init_int0(void)/啟動(dòng)中斷EA=1;EX0=1;/ Enable int0 interrupt.void delay_ms(unsigned int x)/1ms延時(shí)程序 unsigned int i,j;

42、 i=0; for(i=0;i<x;i+) j=108; ; while(j-); 4.2 聲音引導(dǎo)部分程序設(shè)計(jì)聲音引導(dǎo)部分程序流程圖如圖4-2所示。圖4-2 聲源引導(dǎo)部分流程圖聲音引導(dǎo)模塊分析基于常見的聲音接收裝置為mic5頭,故聲音引導(dǎo)部分由三個(gè)mic頭組成。將三個(gè)mic頭連接至單片機(jī)12的io口,用于檢測聲音來領(lǐng)時(shí)的第一個(gè)方波,既能比較出三個(gè)接收器上接收到聲音的時(shí)間差。主要示意程序:gettime()time = nowtime();/從中斷中讀取return time;main()while(1)/記錄下每個(gè)mic頭首次聲音到來時(shí)的時(shí)間if(P0.0 = 1 &&

43、 buf_0 = 0)time_a = gettime();buf_0 = 1;if(P0.1 = 1 && buf_1 = 0)time_b = gettime();buf_1 = 1;if(P0.2 = 1 && buf_2 = 0)time_c = gettime();buf_2 = 1;if(time_0 != 0) && (time_1 != 0) && (time_2 != 0)break;if(fabs(time_a - time_b) <= truetime)/若A、B點(diǎn)的時(shí)間小于允許范圍內(nèi)的時(shí)間,證明到A、

44、B兩點(diǎn)的距離相等stop();/小車停止else if(time_a - time_b) > 0 )/離a遠(yuǎn),離b近,向a方行進(jìn)goon();else if(time_a - time_b) < 0 )/離b遠(yuǎn),離a近,向b方行進(jìn)back();4.3 可移動(dòng)聲源部分程序設(shè)計(jì)可移動(dòng)聲源部分程序流程圖如圖4-3所示:圖4-3 可移動(dòng)聲源部分軟件流程圖可移動(dòng)聲源模塊方案分析方案一:使用揚(yáng)聲器用揚(yáng)聲器產(chǎn)生聲源,其音調(diào)不好控制,驅(qū)動(dòng)電路較復(fù)雜,成本較高。用麥克接收聲音信號(hào),但是此方案抗干擾性差,不適合本題目。方案二:使用電子蜂鳴器用蜂鳴器做聲源,有聲音清晰宏亮、重量輕、體積小、耗電省、壽命長

45、、價(jià)格低,具能在各種惡劣環(huán)境中工作等優(yōu)點(diǎn)。綜上所述,我們決定采用方案二。主要示意程序:bell()unsigned char i;.for(i=0;i+;i<3)/發(fā)出三次定位信號(hào)BELL = 1;/蜂鳴開始delay(1000);BELL = 0;/蜂鳴結(jié)束.main().while(stop != 0 && receive != 0)/當(dāng)小車停止且告知聲音接收裝置開始接收聲音時(shí)開始蜂鳴bell();.4.4 無線部分程序設(shè)計(jì)4.4.1 無線模塊方案分析方案一:采用2262發(fā)送芯片,2272接收芯片。通過編碼芯片PT2262發(fā)出編碼信號(hào),解碼芯片PT2272接收到信號(hào)后

46、,進(jìn)行數(shù)據(jù)處理。但由該芯片所做成的無線模塊不穩(wěn)定,所需的電壓大,功耗高,抗干擾能力差。方案二:采用NRF24L01模塊15。此模塊,可以實(shí)現(xiàn)數(shù)據(jù)的精確傳輸,應(yīng)用起來比較方便,傳輸距離遠(yuǎn),且其有空閑模式,大大的降低了模塊的功耗考慮到比賽題目的要求,需要對(duì)聲源進(jìn)行定位,我們決定選擇方案二。4.4.2 nRF24L01概述 nRF24L01是一款新型單片射頻收發(fā)器件,工作于2.4 GHz2.5 GHz ISM頻段。內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,并融合了增強(qiáng)型ShockBurst技術(shù),其中輸出功率和通信頻道可通過程序進(jìn)行配置。nRF24L01功耗低,在以-6 dBm的功率發(fā)

47、射時(shí),工作電流也只有9 mA;接收時(shí),工作電流只有12.3 mA,多種低功率工作模式(掉電模式和空閑模式)使節(jié)能設(shè)計(jì)更方便。 nRF24L01主要特性如下: GFSK調(diào)制: 硬件集成OSI鏈路層; 具有自動(dòng)應(yīng)答和自動(dòng)再發(fā)射功能; 片內(nèi)自動(dòng)生成報(bào)頭和CRC校驗(yàn)碼; 數(shù)據(jù)傳輸率為l Mb/s或2Mb/s; SPI速率為0 Mb/s10 Mb/s; 125個(gè)頻道: 與其他nRF24系列射頻器件相兼容; QFN20引腳4 mm×4 mm封裝; 供電電壓為1.9 V3.6 V。 4.4.3 nRF24L01引腳功能及描述 nRF24L01的封裝及引腳排列如圖4-4所示。各引腳功能如下: 圖4-

48、4 nRF24L01引腳圖CE:使能發(fā)射或接收; CSN,SCK,MOSI,MISO:SPI引腳端,微處理器可通過此引腳配置nRF24L01: IRQ:中斷標(biāo)志位; VDD:電源輸入端; VSS:電源地: XC2,XC1:晶體振蕩器引腳; VDD_PA:為功率放大器供電,輸出為1.8 V; ANT1,ANT2:天線接口; IREF:參考電流輸入。 4.4.4 nRF241L01工作模式 通過配置寄存器可將nRF241L01配置為發(fā)射、接收、空閑及掉電四種工作模式,見表4-1。 表4-1 nRF241L01配置真值表模式PWR_UPPRIM_RXCEFIFO寄存器狀態(tài)接收模式111-發(fā)射模式10

49、1數(shù)據(jù)在TX FIFO 寄存器中發(fā)射模式1010停留在發(fā)送模式,直至數(shù)據(jù)發(fā)送完待機(jī)模式2101TX FIFO 為空待機(jī)模式11-0無數(shù)據(jù)傳輸?shù)綦?-                       待機(jī)模式1主要用于降低電流損耗,在該模式下晶體振蕩器仍然是工作的; 待機(jī)模式2則是在當(dāng)FIFO寄存器為空且CE=1時(shí)進(jìn)入此沒收; 待機(jī)模

50、式下,所有配置字仍然保留。 在掉電模式下電流損耗最小,同時(shí)nRF24L01也不工作,但其所有配置寄存器的值仍然保留。 4.4.5 nRF241L01工作原理 發(fā)射數(shù)據(jù)時(shí),首先將nRF24L01配置為發(fā)射模式:接著把接收節(jié)點(diǎn)地址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)(自動(dòng)應(yīng)答接收地址應(yīng)該與接收節(jié)點(diǎn)地址TX_ADDR一致)。如果收到應(yīng)答,則認(rèn)

51、為此次通信成功,TX_DS置高,同時(shí)TX_PLD從TX FIFO中清除;若未收到應(yīng)答,則自動(dòng)重新發(fā)射該數(shù)據(jù)(自動(dòng)重發(fā)已開啟),若重發(fā)次數(shù)(ARC)達(dá)到上限,MAX_RT置高,TX FIFO中數(shù)據(jù)保留以便在次重發(fā);MAX_RT或TX_DS置高時(shí),使IRQ變低,產(chǎn)生中斷,通知MCU。最后發(fā)射成功時(shí),若CE為低則nRF24L01進(jìn)入空閑模式1;若發(fā)送堆棧中有數(shù)據(jù)且CE為高,則進(jìn)入下一次發(fā)射;若發(fā)送堆棧中無數(shù)據(jù)且CE為高,則進(jìn)入空閑模式2。 接收數(shù)據(jù)時(shí),首先將nRF24L01配置為接收模式,接著延遲130s進(jìn)入接收狀態(tài)等待數(shù)據(jù)的到來。當(dāng)接收方檢測到有效的地址和CRC時(shí),就將數(shù)據(jù)包存

52、儲(chǔ)在RX FIFO中,同時(shí)中斷標(biāo)志位RX_DR置高,IRQ變低,產(chǎn)生中斷,通知MCU去取數(shù)據(jù)。若此時(shí)自動(dòng)應(yīng)答開啟,接收方則同時(shí)進(jìn)入發(fā)射狀態(tài)回傳應(yīng)答信號(hào)。最后接收成功時(shí),若CE變低,則nRF24L01進(jìn)入空閑模式1。 4.4.6 nRF241L01配置字 SPI口為同步串行通信接口,最大傳輸速率為10 Mb/s,傳輸時(shí)先傳送低位字節(jié),再傳送高位字節(jié)。但針對(duì)單個(gè)字節(jié)而言,要先送高位再送低位。與SPI相關(guān)的指令共有8個(gè),使用時(shí)這些控制指令由nRF24L01的MOSI輸入。相應(yīng)的狀態(tài)和數(shù)據(jù)信息是從MISO輸出給MCU。 nRF24L0l所有的配置字都由配置寄存器定義,這些配置寄存器可通過SP

53、I口訪問。nRF24L01 的配置寄存器共有25個(gè),常用的配置寄存器見表4-2。 表4-2 常用寄存器功能說明地址(H)寄存器名稱功能00CONFIG設(shè)置24L01工作模式01EN_AA  設(shè)置接收通道及自動(dòng)應(yīng)答02EN_RXADDR使能接收通道地址03SETUP_AW設(shè)置地址寬度04SETUP_RETR設(shè)置自動(dòng)重發(fā)數(shù)據(jù)時(shí)間和次數(shù)07STATUS狀態(tài)寄存器,用來判定工作狀態(tài)0A0FRX_ADDR_P0P5設(shè)置接收通道地址10TX_ADDR設(shè)置接收接點(diǎn)地址1116RX_PW_P0P5設(shè)置接收通道的有效數(shù)據(jù)寬度移動(dòng)聲源和聲音采集部分的工作方式,采用由移動(dòng)聲源發(fā)送開始接收信號(hào)給聲

54、音檢測部分,通過對(duì)聲音的延時(shí)的分析,再將小車的行動(dòng)信號(hào)發(fā)送給移動(dòng)聲源,控制小車的移動(dòng)。該工作方式如圖4-5所示:圖4-5 無線工作方式示意圖4.4.7 nRF24L01程序設(shè)計(jì)該部分的程序流程圖如圖4-6所示:圖4-6 單個(gè)無線模塊程序流程圖主要程序示意如下:void ISR_int0(void) interrupt 0/用于24L01中的中斷響應(yīng)函數(shù)sta=SPI_Read(STATUS);/ read register STATUS's valueif(RX_DR)/ if receive data ready (RX_DR) interruptSPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);/讀取 RX_FIFO 中的數(shù)據(jù)flag=1;if(MAX_RT)SPI

溫馨提示

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