版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 本科畢業(yè)設計(論文)</p><p> 題 目:基于nRF24l01的無線音樂播放器設計 </p><p><b> 摘 要</b></p><p> 本文介紹了一種基于nRF24l01的無線音樂播放器設計方案。本設計方案結合了單片機技術和無線通信技術,設計的電路以單片機和無線通信模塊為核心,并輔以外圍電路。其
2、工作過程是按鍵選擇后,通過無線模塊發(fā)射相應的數據,由另一無線模塊接收的數據后播放不同的音樂。該系統實現了無線控制音樂播放器的歌曲播放選擇和歌曲名的顯示。本系統的優(yōu)點是電路簡單,性能可靠,實時性好,操作簡單,編程容易等。</p><p> 關鍵詞:單片機;無線模塊nRF24l01;模擬SPI </p><p><b> Abstract</b></p>
3、<p> This article introduced one kind based on the nRF24l01 wireless music player design proposal. The design proposal unified the monolithic integrated circuit technology and the wireless communication technology
4、, the design electric circuit take the monolithic integrated circuit and the wireless communication module as a core, and auxiliary by peripheral circuit. After its work process is the pressed key choice, through wireles
5、s module launch corresponding data, after another wireless module receiv</p><p> Key Words:single chip microcomputer; wireless module nRF24l01;simulation SPI</p><p><b> 目 錄</b><
6、;/p><p> 1 緒論- 1 -</p><p> 1.1 前言- 1 -</p><p> 1.2 背景與意義- 1 -</p><p> 1.3 設計任務- 1 -</p><p> 2 系統總體設計方案- 3 -</p><p> 3 無線通信系統的介紹- 4 -
7、</p><p> 3.1無線通信系統的構成- 4 -</p><p> 3.2無線通信工作方式- 5 -</p><p> 4 系統硬件設計- 7 -</p><p> 4.1 芯片介紹- 7 -</p><p> 4.1.1 51芯片介紹- 7 -</p><p> 4
8、.1.2 nRF24l01無線模塊介紹- 8 -</p><p> 4.1.3 LM386芯片介紹- 10 -</p><p> 4.2硬件模塊設計- 10 -</p><p> 4.2.1單片機最小系統電路- 10 -</p><p> 4.2.2音頻電路- 11 -</p><p> 4.2.3
9、按鍵電路- 12 -</p><p> 4.2.4顯示電路- 12 -</p><p> 5 系統軟件設計- 13 -</p><p> 5.1概述- 13 -</p><p> 5.2主程序設計- 14 -</p><p> 5.3無線通信程序- 15 -</p><p&g
10、t; 5.4音樂程序- 17 -</p><p> 5.5鍵盤輸入程序- 20 -</p><p> 5.6 LCD顯示程序設計- 20 -</p><p> 6 系統調試- 21 -</p><p> 6.1硬件調試- 21 -</p><p> 6.2軟件調試- 21 -</p>
11、;<p> 7 總結總結與展望- 22 -</p><p><b> 致謝- 23 -</b></p><p> 參考文獻- 24 -</p><p> 附錄Ⅰ 原理圖- 25 -</p><p> 附錄Ⅱ 元器件清單- 26 -</p><p> 附錄Ⅲ 源
12、程序清單- 27 -</p><p><b> 1 緒論</b></p><p><b> 1.1 前言</b></p><p> 隨著生活水平的提高,人們對娛樂要求越來越高,音樂播放器就是一個典型的產品,產品設計的越來越小,功能越來越強大,價格又要降下來。而單片機因其優(yōu)越的性價比和靈活性的功能配置而被廣泛的應用于
13、各種領域,且基于無線設計,使音樂播放器擺脫有線的束縛,更加方便、更具娛樂性。</p><p> 1.2 背景與意義 </p><p> 隨著社會的發(fā)展,人們期望著能隨時隨地、不受時空限制地進行信息交換。當今的各種智能化控制系統也離不開數據信息的傳輸。其中,無線數據傳輸區(qū)別于傳統的有線傳輸的新型傳輸方式,系統不需要傳輸的線纜、成本低廉、施工簡單。無線數據傳輸如下的優(yōu)點使其日益得到廣泛的應
14、用:1)省去了通信設備之間的連線,特別是在不易接線或接線費用較高區(qū)域(如有歷史意義的建筑物、河流、山脈等障礙)更具優(yōu)勢,甚至某些場合只能采用無線數據傳輸方式(如民航飛機的導航);2)設備的可移動性、安裝的方便性、組網的靈活性等。</p><p> 目前,藍牙、IEEE802.11等無線局域網協議及其技術的研究、開發(fā)和應用正如火如荼地進行,也預示著無線通信在未來的信息交換中將發(fā)揮出更大的作用。</p>
15、<p> 隨著計算機、通信和無線技術的逐漸地融合,在傳統的有線通信的基礎上,無線通信技術應運而生,它具有快捷、方便、可移動和安全等優(yōu)勢,所以廣泛應用到遙控玩具、汽車電子、環(huán)境監(jiān)測和電氣自動化等。</p><p> 現在,有很多的電器產品(如一些家用電器)的操作控制也都采用了無線數據傳輸方式,一些無線數據傳輸功能相對簡單的電器產品,其無線數據傳輸信號的識別與譯碼大多采用單片機。如今,大部分編碼調制
16、芯片配套的譯碼芯片都內置到無線通信模塊里,從而可使單片機做更多復雜的任務。</p><p> 在數字音樂播放器發(fā)展方面,功能越來越強大,但價格也隨之上漲。用單片機設計音樂播放器,則性價比較高,但基于無線通信的音樂播放器就很少。</p><p> 在一些應用場合中,音樂播放器受到有線通信的束縛,不便使用,這時就需要無線數據傳輸,本設計就是基于無線收發(fā)模塊來實現無線音樂播放系統。</
17、p><p><b> 1.3 設計任務</b></p><p> 本設計主要任務是制作一個基于nRF24l01的無線音樂播放器設計,此系統能夠實現無線控制音樂的播放。先用單片機設計一個音樂播放器,再用無線模塊nRF24l01實現無線控制。</p><p><b> 主要設計要求:</b></p><
18、p> ?。?)學會并掌握單片機的硬件電路設計;</p><p> ?。?)理解無線通信nRF24l01的編寫方法和程序流程;</p><p> ?。?)設計單片機間無線數據傳輸的硬件原理圖;</p><p> ?。?)編寫軟件程序,包含單片機間無線通信的軟件設計和音樂播放器的設計;</p><p> ?。?)調試并實現單片機的無線音樂播
19、放器系統的設計;</p><p> 2 系統總體設計方案</p><p> 本文設計的基本內容是以單片機間的通信為核心,并輔以音頻電路和無線模塊外圍電路,通過對單片機的編程來設計出單片機無線音樂播放器系統。由于</p><p> 系統模塊如圖2-1所示:</p><p> 無線技術方案有以下幾種選擇:</p><
20、p> 紅外技術,紅外技術有效接收距離短,且無法支持多位傳輸;電力消耗大,抗干擾性能差。</p><p> 27MHz射頻技術,接收距離短,傳輸速率較低,抗干擾能力一般,只能進行單向信號傳輸,容易出現信號中斷金額無線頻段互相干擾的現象。</p><p> 調頻技術,傳輸距離較長,可全方位接收信號,抗干擾能力較高,僅支持單向信號傳遞。</p><p> 藍
21、牙技術,在傳輸距離、速度等方面具有絕對優(yōu)勢,但在微處理器和協議使用許可方面的高要求,使得產品價格一直居高不下。</p><p> 2.4GHz技術,傳輸速率可媲美藍牙,功耗卻大大降低;采用完全開放式的網絡協議,在價格上具有絕對優(yōu)勢;傳輸距離可達10米。</p><p> 通過性價比選擇工作于2.4 GHz~2.5 GHz ISM頻段的無線模塊nRF24Ll01較為合適,</p&g
22、t;<p> 其傳輸距離也足夠日常的音樂欣賞。</p><p> 軟件部分為單片機程序設計,主要是對無線模塊軟件設計、音頻模塊軟件設計和案件控制軟件。其通過KEIL軟件,用C語言來實現相應的功能,并通過U-EC5下載程序。</p><p> 3 無線通信系統的介紹</p><p> 3.1 無線通信系統的構成</p><p&
23、gt; 無線通信(Wireless communication)是利用電磁波信號可以在自由空間中傳播的特性進行信息交換的一種通信方式。近些年信息通信領域中,發(fā)展最快、應用最廣的就是無線通信技術。</p><p> 利用電磁波作為傳輸介質的通信系統稱為無線通信系統。典型的無線通信系統的組成框圖如圖3-1:</p><p> 圖3-1 無線通信系統結構框圖 </p>&l
24、t;p> 可見,無線通信系統一般有發(fā)信機、收信機以及與其相連的天線(含饋線)構成。</p><p><b> 1.發(fā)信機</b></p><p> 發(fā)信機的主要作用是將所要傳送的信號首先對載波信號進行調制,形成已調載波;</p><p> 已調載波信號經過變頻(有的發(fā)射機不經過這一步驟)成為射頻載波信號,送至功率放大器,經功率放大
25、后送至天(饋)線。圖3-2是一種短波發(fā)信機的組成框圖。</p><p> 圖3-2一種短波發(fā)信機的組成框圖</p><p><b> 2.天線</b></p><p> 天線是無線通信系統的重要組成部分。其主要作用:是把射頻載波信號變成電磁波或者把電磁波變成射頻載波信號。按照規(guī)范性的定義,“天線就是把導行模式的射頻電流變成擴散模式的空間電
26、磁波的傳輸模式轉換器,及其逆變換的傳輸模式轉換器”。饋線的主要作用:是把發(fā)射機輸出的射頻載波信號高效地送至天線。這一方面要求饋線的衰耗要??;另一方面其阻抗應盡可能與發(fā)射機的輸出阻抗和天線的輸入的阻抗相匹配。</p><p><b> 3.收信機</b></p><p> 收信機的主要作用是把天線接收下來的射頻載波信號首先進行低噪聲放大,然后經過變頻(一次、兩次甚至
27、三次變頻)、中頻放大和解調后還原出原始信號,最后經低頻放大器放大后輸出。圖3-3是一種短波收信機的組成框圖。</p><p> 圖3-3 一種短波收信機的組成框圖 </p><p> 3.2 無線通信工作方式</p><p> 無線通信的工作方式可分為單向通信方式和雙向通信方式兩大類別,而后者又分為單工通信方式、雙工通信方式和半雙工通信方式三種。</
28、p><p><b> 1.單向通信方式</b></p><p> 所謂單向通信方式就是通信雙方中的一方只能接收信號,而另一方只能發(fā)送信號,不能互逆。收信方不能對發(fā)信方直接進行信息反饋。例如:陸地移動通信系統中的無線尋呼系統就采用這種工作方式。BP機(或BB機)只能收信而不能發(fā)信,反饋信息只能通過“打電話”間接地來完成。</p><p><
29、b> 2.雙向通信方式</b></p><p> (1) 單工通信方式</p><p> 通信雙方只能交替地進行發(fā)信和收信,不能同時進行。如圖3-4所示。</p><p> 圖3-4 單工通信方式示意圖</p><p> 例如:常用的對講機就采用這種通信方式,平時天線與收信機相連接,發(fā)信機也不工作。當一方用戶講話
30、時,接通信時,接通“按-講”開關,天線與發(fā)信機相連(發(fā)信機開始工作)。另一方的天線接至收信機,因而可收到對方發(fā)來的信號。</p><p> (2) 全雙工通信方式</p><p> 通信雙方可同時發(fā)信與收信,即雙方同時處于收信與發(fā)信狀態(tài)。這時收信與發(fā)信必須采用不同的工作頻率。用戶使用時與“打電話”時的情況一樣。這時通信雙方的設備一般通過雙工器來完成這種功能。如下圖3-5所示。</
31、p><p> 圖3-5 全雙工通信方式示意圖</p><p> (3) 半雙工通信方式</p><p> 通信雙方可同時發(fā)信和收信。但發(fā)信時要按下“按-講”開關。如圖3-6所示。</p><p> 圖3-6 半雙工通信方式示意圖</p><p><b> 4 系統硬件設計</b><
32、;/p><p> 系統設計的初步設想:在設計系統時先設計基于單片機的音樂播放器,另一塊單片機通過無線模塊控制音樂播放器的音樂播放。</p><p><b> 4.1 芯片介紹</b></p><p> 4.1.1 51芯片介紹</p><p> 單片機的全稱是單片微型計算機(Single Chip Microcomp
33、uter)。為了使用方便,它把組成計算機的主要功能部件:中央處理器(CPU)、數據存儲器(RAM)、程序存儲器(ROM、EPROM、E2PROM或FLASH)、定時/計數器和各種輸入/輸出接口電路等都集成在一塊半導體芯片上,構成了一個完整的計算機系統。與通用的計算機不同,單片機的指令功能是按照工業(yè)控制的要求設計,因此它又被稱為微控制器(Microcontroller)。</p><p> MCS是Intel公司
34、單片機系列的符號。Intel公司推出有MCS-48、MCS-51、MCS-96系列單片機。其中MCS-51系列單片機典型機型包括51和52兩個子系列。</p><p> 52子系列的主要功能為:</p><p><b> 1、8位CPU。</b></p><p> 2、片內帶振蕩器及時鐘電路。</p><p>
35、3、256B片內數據存儲器。</p><p> 4、8KB片內程序存儲器。</p><p> 5、程序存儲器的尋址范圍為64KB。</p><p> 6、片外數據存儲器的尋址范圍為64KB。</p><p> 7、21B特殊功能寄存器。</p><p> 8、4×8根I/O線。</p>
36、<p> 9、1個全雙工串行I/O接口,可多機通信。</p><p> 10、3個16位定時器/計數器。</p><p> 11、中斷系統有8個中斷源,可編程為兩個優(yōu)先級。</p><p> 12、111條指令,含乘法指令和除法指令。</p><p><b> 13、布爾處理器。</b></p
37、><p> 14、使用單+5V電源。</p><p> MCS-51具有比較大的尋址空間,地址線寬達16條,即外部數據存儲器和程序存儲器的尋址范圍達216=64kB,這作為單片機控制來說已是比較大的,這同時具備對I/O口的訪問能力。此外,MCS-51采用模塊化結構,可方便地增刪一個模塊就可引腳和指令兼容的新產品,從而容易使產品形成系列化。由于MCS-51集成了幾乎完善的8位中央處理單元,處
38、理功能強,中央處理單元中集成了方便靈活的專用寄存器,硬件的加、減、乘、除法器和布爾處理機及各種邏輯運算和轉移指令,這給應用提供了極大的便利。MCS-51的指令系統近乎完善,指令系統中包含了全面的數據傳送指令、完善的算術和邏輯運算指令、方便的邏輯操作和控制指令,對于編程者來說,使用起來相當地靈活和方便。MCS-51單片機的工作頻率為2~12MHz,當振蕩頻率為12MHz時,一個機器周期為1μs,這個速度應該說是比較快的。MCS-51中集成
39、了完善的各種中斷源,用戶可十分方便地控制和使用其功能,使得它的應用范圍加大,可以說它可以滿足絕大部分的應用場合。</p><p> MCS-51系列單片機優(yōu)異的性能/價格比使得它從面世以來就獲得用戶的認可。本設計的應用電路中采用了STC公司的STC89C52RC芯片,它與MCS-51單片機指令集兼容,同時它的內部包含用作程序存儲器的8KB的基于FLASH技術的只讀存儲器。采用這款芯片既克服了采用8031需要添加
40、外部程序存儲器導致電路復雜的缺點,又克服了采用8751導致電路制作成本高的缺點。</p><p> 52系列I/O腳使用簡單,但高電平時無輸出能力,可謂有利有弊。故其他系列的單片機(如PIC系列、AVR系列等)對I/O口進行了改進,增加了方向寄存器以確定輸入或輸出,但使用也變得復雜。</p><p> 圖4-1 單片機芯片引腳圖</p><p> 4.1.2
41、nRF24l01無線模塊介紹</p><p> nRF24l01是一款新型單片射頻收發(fā)器件,工作于2.4GHz~2.5GHz ISM頻段。內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合了增強型ShockBurst技術,其中輸出功率和通信頻道可通過程序進行配置。nRF24L01功耗低,在以-6dBm的功率發(fā)射時,工作電流也只有9mA;接收時,工作電流只有12.3 mA,多種低功率工作模式(掉電模
42、式和空閑模式)使節(jié)能設計更方便。</p><p> (1)主要特點:2.4Ghz全球開放ISM頻段免許可證使用;最高工作速率2Mbps,高效GFSK調制,抗干擾能力強,特別適合工業(yè)控制場合;125頻道,滿足多點通信和跳頻通信需要;內置硬件CRC檢錯和點對多點通信地址控制;低功耗1.9-3.6V工作,待機模式下狀態(tài)僅為1uA;內置2.4Ghz天線,體積小巧;模塊可軟件設地址,只有收到本機地址時才會輸出數據(提供中
43、斷指示),可直接接各種單片機使用,軟件編程非常方便。</p><p> ?。?)應用領域:遙控、遙測、無線抄表、門禁系統、小區(qū)傳呼、工業(yè)數據采集系統、無線標簽、身份識別、非接觸RF 智能卡、小型無線數據終端、安全防火系統、無線遙控系統、生物信號采集、無線232、無線422/485 數據通信等。</p><p><b> (3)接口定義</b></p>
44、<p> 表4-1無線模塊端口定義</p><p> 圖4-2 無線模塊PCB圖</p><p><b> 圖4-3 無線模塊</b></p><p> 4.1.3 LM386芯片介紹</p><p> LM386是美國國家半導體公司生產的音頻功率放大器,主要應用于低電壓消費類產品。為使外圍元件最少
45、,電壓增益內置為20。但在1腳和8腳之間增加一只外接電阻和電容,便可將電壓增益調為任意值,直至200。輸入端以地位參考,同時輸出端被自動偏置到電源電壓的一半,在6V電源電壓下,它的靜態(tài)功耗僅為24mW,使得LM386特別適用于電池供電的場合。</p><p> 特性:靜態(tài)功耗低,約為4mA,可用于電池供電;工作電壓范圍寬4-12V或5-18V;電壓增益可調20-200;低失真度。</p><
46、p> 圖4-4 LM386引腳圖</p><p> 4.2 硬件電路模塊設計</p><p> 單片機硬件電路模塊包括單片機最小系統電路、音頻電路、按鍵電路和顯示電路。</p><p> 4.2.1 單片機最小系統電路</p><p> STC89C51RC單片機內部自帶一個構成振蕩回路的高增益反相放大器,引腳XTAL1和XT
47、AL2分別是該放大器的輸入端和輸出端。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容器(電容一般取30pF)。石英晶體為一感性元件,與電容構成振蕩回路,為片內放大器提供正反饋和振蕩所需的相移條件,從而構成一個穩(wěn)定的自激振蕩器。復位電路包括片內,外兩部分。這里我們只要考慮片外復位部分,它主要有電平方式和脈沖方式兩類,我則采用了按鍵電平復位方式,通過按鍵RESET,使單片機復位端經電阻R1與電源VCC接通而實現對單片機系統的復位。其中電
48、阻R2的取值范圍為1~3KΩ,電容C3容量為10~30uF。由于單片機P0口內部沒有上拉電阻,需要外接10K的上拉電阻。這樣,就構成單片機最小系統了。</p><p> 圖4-5 單片機最小系統電路</p><p> 4.2.2 音頻電路</p><p> 音頻電路由放大器LM386、喇叭部分等組成,電路如下圖3-5所示。</p><p&g
49、t; 圖4-6 音頻電路原理圖</p><p> LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點,這里我查找了相關資料,采用了其典型的連接方法,即電壓增益20。程序上通過控制單片機端口輸出一個高低電位信號,經過放大后輸出至喇叭,從而產生報警功能?;瑒与娮杵鸬较蘖髯饔?,決定輸入信號的強弱。固定電阻和電容一起構成一個濾波模塊,消除干擾 。</p&
50、gt;<p> 4.2.3 按鍵電路</p><p> 在鍵盤接口設計上,可通過觸點式開關把機械上的通斷轉換成為電氣上的邏輯關系,在按鍵的按下或者釋放時,由于機械彈性作用,通常伴隨有一定的觸點抖動。消除抖動引起的誤判,有2方法,一種采用硬件電路,如采用RC、雙穩(wěn)態(tài)觸發(fā)器或者單穩(wěn)態(tài)觸發(fā)器等。但會增加硬件成本及硬件電路的體積。另一種就是采用軟件延時消除抖動,其原理是當CPU檢測到有按鍵按下時,延時1
51、0~20ms,再一次查詢確認該鍵是否按下。</p><p> 單片機與鍵盤連接的方式有4種:直接輸入方式、矩陣輸入方式、A/D輸入方式、譯碼器輸入擴展方式。由于本設計就4個按鍵,單片機IO也較多,采用直接輸入方式,即每個按鍵對應一個IO口,用軟件延時消除抖動。</p><p> 4.2.4 顯示電路</p><p> 液晶LCD1602已很普遍,這里就不具體說
52、了,本設計需要顯示歌曲目錄,用數碼管不好顯示,用液晶LCD12864會使顯示屏幕太大,用LCD1602可顯示歌曲,顯示模塊也不會太大。</p><p> 表4-2 LCD1602接口</p><p><b> 5 系統軟件設計</b></p><p><b> 5.1 概述</b></p><p
53、> 系統軟件設計總體思路是根據按鍵選擇,再無線發(fā)送數據來控制音樂器播播放和歌曲的顯示,主要程序模塊有無線通信模塊、音樂播放模塊、顯示模塊和按鍵模塊。</p><p> 在設計各個程序模塊時,需要對各個模塊進行劃分。模塊的劃分有很大的靈活性,但也不能隨意劃分,模塊劃分時應遵循以下原則:(1)每個模塊應具有獨立的功能,能產生明確的結果,這就是單模塊功能的高內聚性。(2)模塊間的控制耦合應盡量簡單,模塊間的數
54、據耦合應盡量少,這就是模塊間的低耦合性。(3)模塊長度適中,模塊語句的長度通常在20~100條的范圍較合適。</p><p> 模塊化程序設計是按自上而下的過程進行的,主模塊即為總模塊,然后是多層次的子模塊。在進行模塊劃分時,應首先弄清楚每個模塊所需完成的功能、數據結構以及與其它模塊之間的關系。其次是對主要任務再進一步細化,把一些專用的子任務再劃分給下一級即第二級子模塊去完成,這時也需要清楚它們間的相互關系。按
55、這種方法一直細分成易于理解和實現的小模塊為止。</p><p> 模塊說明應包括實現模塊功能所用的基本算法,模塊入口算法、出口參數,模塊的數據結構及調用子程序等。一般有了層次圖和模塊說明后,劃分模塊的工作也就算完成了。</p><p> 實際的應用程序一般都由一個主程序(包括若干個功能模塊)和多個子程序構成,每個功能程序模塊都能完成某一明確的任務,實現具體的某一功能,如顯示、打印等。采
56、用這種模塊化的程序設計方法,有下述優(yōu)點:(1)單一模塊結構的程序功能單一,因而易于編寫、調試和修改。(2)便于分工,可有多個程序員同時編寫、調試,加快軟件研制進度。(3)程序可讀性好,便于功能擴充和版本升級。(4)程序的修改可局部進行,而其它部分則可相對保持不變。(5)使用頻繁的子程序可以匯編成子程序庫,以便于多個模塊調用。5.2 主程序設計</p><p> 開始時,按發(fā)射部分的開始按鍵才能開始真正工作,顯示
57、模塊則會顯示welcome,再按上翻鍵或者下翻鍵,播放上一首歌或者下一首歌,顯示模塊則會顯示英文歌曲名。</p><p> 單片機發(fā)射部分以此調用鍵盤掃描子程序,無線發(fā)射程序,數據發(fā)射成功后再返回程序開頭循環(huán)運行,其發(fā)射程序流程圖如下:</p><p> 圖4-7 發(fā)射程序流程圖</p><p> 單片機接收部分先調用無線接收程序,數據收到后產生一個外部中斷,
58、由單片機的主程序讀取接收數據,再做判斷是否要調用音樂程序、顯示程序。其中斷程序主要是接收到數據后,把數據寫入接收緩沖區(qū),再開外部中斷。其接收部分流程圖如下:</p><p> 圖4-8 接收程序流程圖</p><p> 5.3 無線通信程序</p><p> 兩個模塊要通信時,一個要設為發(fā)送,另一個接收。無線通信模塊與單片機之間的數據傳輸是模擬SPI總線的。&
59、lt;/p><p> SPI總線系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。外圍設置FLASHRAM、LCD顯示驅動器、A/D轉換器和MCU等。SPI總線系統可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線SS(有的SPI接口芯片帶有中斷信號
60、線INT、有的SPI接口芯片沒有主機輸出/從機輸入數據線MOSI)。</p><p> SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(用于單向傳輸時,也就是半雙工方式)。也是所有基于SPI的設備共有的,它們是MOSI(數據輸入),MSIO(數據輸出),SCK(時鐘),CSN(片選)。</p><p> ?。?)MO
61、SI– 主設備數據輸出,從設備數據輸入</p><p> ?。?)MISO– 主設備數據輸入,從設備數據輸出</p><p> ?。?)SCLK – 時鐘信號,由主設備產生</p><p> ?。?)CSN – 從設備使能信號,由主設備控制</p><p> 其中CSN是控制芯片是否被選中的,也就是說只有片選信號為預先規(guī)定的使能信
62、號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備成為可能。</p><p> 接下來就負責通訊的3根線了。通訊是通過數據交換完成的,這里先要知道SPI是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,MOSI,MISO則基于此脈沖完成數據傳輸。數據輸出通過 MISO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被
63、讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。下兩副圖為SPI的讀寫操作。</p><p> 圖4-9 SPI讀操作</p><p> 圖4-10 SPI寫操作</p><p> 通信程序基本上是將單片機數據寫入無線模塊或者讀取無線模塊內的數據,在接收部分,無線模塊接收到數據后其I
64、RQ引腳產生一個低電平,這樣,把IRQ引腳接到單片機外部中斷腳就可以利用中斷法來讀取數據,提高單片機工作效率。下面為中斷設置,詳細程序說明見附錄程序。</p><p> EA=1; //中斷開啟</p><p> ET0=1; //允許定時器TO<
65、/p><p> IT0=0; //外部中斷為低電平觸發(fā)</p><p> EX0=1; //允許外部中斷0</p><p> PX0=1; //外部中斷0為高優(yōu)先級&l
66、t;/p><p><b> 5.4 音樂程序</b></p><p> 要產生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期的時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。利用STC80C52RC的內部定時器使其工作在計數器模式1下
67、,改變計數值TH0及TL0以產生不同頻率的方法如下:</p><p> 例如,頻率為523Hz,其周期為1/523 s=1912us,因此只要令計數器計時956us/1us=956,在每計數956次時就將I/O反接,就可得到中音DO(532Hz)。</p><p> 計數脈沖值與頻率的關系公式如下:</p><p> N=Fi/2/Fr </p>
68、<p> (N:計數值,Fi:內部計時一次為1uS,故其頻率為1MHz,Fr:要產生的頻率 )</p><p> 其計數值的求法如下:</p><p> T=65536-N=65536-Fi/2/Fr</p><p> C調個音符頻率與計數值T的對照表如下表所示:</p><p> 表4-3 C調個音符頻率與計數值T的
69、對照表</p><p> 每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,下表為節(jié)拍碼的對照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設定延遲時間就可求得節(jié)拍的時間。假設1/4節(jié)拍為1DELAY,則1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節(jié)拍就是它的倍數,如下表為1/4和1/8節(jié)拍的時間設定及各調節(jié)拍的時間設定表。</p><
70、p> 表4-4 節(jié)拍碼對照表</p><p> 表4-5各調節(jié)拍的時間設定表</p><p> 下面再說明如何建立音樂代碼庫:</p><p> ?。?)先建立頻率-半周期數據表,即單片機定時器的取值表,如下:</p><p> 定時器高八位的取值表 </p><p> code unsigned ch
71、ar FREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, //低音1234567</p><p> 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7</p><p> 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, //高音 234567</p>
72、<p> 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, //超高音 1234567</p><p><b> } ;</b></p><p> 定時器低八位的取值表</p><p> code unsigned char FREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,
73、0xB6,//低音1234567</p><p> 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7</p><p> 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,//高音 234567</p><p> 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,//
74、超高音 1234567</p><p><b> };</b></p><p> ?。?)再建立音樂數據表</p><p> 以世上只有媽媽好為例來說明,如下:</p><p> code unsigned char sszymmh[] = {</p><p> 6, 2, 3, 5, 2
75、, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2, 1, </p><p> //一個音符有三個數字。前為第幾個音、中為第幾個八度、后為時長(以半拍為單位)。</p><p> //6, 2, 3代表:6, 中音, 3個半拍;</p><p><b> ···</b>
76、</p><p> 0, 0, 0};//0,0,0,代表歌曲播放結束;</p><p> (3)通過公式設定就可讀出頻率值,從而發(fā)出聲音。如下所示:</p><p> k = sszymmh[i] + 7 * sszymmh[i + 1] + 6 //第i個是音符, 第i+1個是第幾個八度</p><p> timer0
77、h = FREQH[k]; //從數據表中讀出頻率數值</p><p> timer0l = FREQL[k]; //實際上, 是定時的時間長度 time = sszymmh[i + 2]; //讀出時
78、間長度數值</p><p> i += 3; </p><p> song(); //發(fā)出一個音符</p><p> 該song()
79、就是把頻率數值表賦值給計數,計數一到就中斷即可。下圖為音樂程序流程圖。</p><p> 圖4-11 音樂程序流程圖 </p><p><b> 5.5鍵盤輸入程序</b></p><p> 在本設計中,發(fā)射模塊電路開始工作時,不斷地掃描P2口判斷是否有鍵按下,圖4-2為鍵盤程序流
80、程圖。</p><p> 圖4-12 鍵盤程序流程圖</p><p> 5.6 LCD顯示程序設計 </p><p> 作為人機借口的顯示設備LCD,在本設計中可以顯示歌曲名稱,由于1602只能同時顯示16x2即32個字符,而且顯示中文字體也不好,所以本設計就直接顯示歌曲的拼音,且調用也方面。</p><p><b> 6
81、系統調試</b></p><p> 調試工作可分硬件調試和軟件調試兩個部分,調試方法如下:</p><p> 首先,硬件調試主要是先制作硬件電路板,然后用萬用表等工具對電路檢查,最后應用程序進行功能調試。硬件調試比較費時,需要細心和耐心,也需要熟練掌握電路原理。</p><p> 然后,用仿真軟件進行軟件調試,比如單片機C51編輯軟件KEIL,該軟
82、件提供一個集成開發(fā)環(huán)境uVision,它包括C編輯器、宏編輯器、連接器、庫管理和一個功能強大的仿真調試器。通過編譯、運行,可以檢查程序錯誤。但應用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。</p><p><b> 6.1 硬件調試</b></p><p> 主要包括對單片機STC89C52RC、輔助電源電路、顯示電路、鍵盤電路、無線通信模塊和音
83、頻電路的調試。檢查線路故障和其他硬件故障,以防出現電路短路、斷路,并測試各個點的各項測試是否滿足課題的要求。在顯示電路要注意電源是否接反,是否很容易燒掉1602模塊,而且1602顯示模塊的三腳一定要接上10K的滑動變阻器來調節(jié)字體的亮度。作為驅動晶體管的三級管8550是否在焊接過程中由于焊接方式的不當而被燒壞。接到無線模塊的電壓先要經過測試是否達到要求,否則由于高電壓而燒壞無線模塊。</p><p><b&
84、gt; 6.2 軟件調試</b></p><p> 主要檢查軟件的語法錯誤、無線通信的正確性、顯示是否正常和歌曲正確播放,如表6-1所示。在本次設計中,起先對無線模塊不是很了解,設置通信不對導致無法建立無線通信。</p><p> 表6-1 調試各按鍵功能表及調試結果</p><p><b> 7 總結與展望</b><
85、/p><p> 實現無線音樂播放的方法有很多,這個設計只是其中的一種。而且市場上的音樂播放器種類繁多,再加上顯示的硬件電路越來越人性化。所以這個無線音樂播放系統還可以更加的人性化,更加的智能化,可以增加其他的模塊用于生活需要,比如時鐘模塊、音樂無線下載、接收與發(fā)射自由轉換等等。</p><p> 本文所設計的系統,采用了性能較為強勁的STC89C52RC單片機和增強型的無線模塊nRF24L
86、01,其無線模塊含有增強型ShockBurst技術,其中輸出功率和通信頻道可通過程序進行配置,總系統具有以下優(yōu)點:</p><p> 1)反應快,從按鍵功能選擇到播放顯示,基本是實時性。</p><p> 2)通用性好,能夠較為容易插入不同的音樂代碼。</p><p> 3)可拓展性強,設計軟件程序時,使用模塊化設計,便以日后升級。</p>&l
87、t;p><b> 4)良好經濟性。</b></p><p> 由于時間和作者本身知識水平的限制,沒有更好的發(fā)揮各個芯片的性能,相互間的無線模塊接收、發(fā)送還不能轉換,也還暫時不能使歌曲代碼完全發(fā)送。本系統僅完成了基本的功能,希望在能在未來的時間里,進一步深入地改善系統的設計,使系統在多個模塊間可以方便快捷的傳輸音樂內容代碼。還可以添加存儲容量和錄音功能,這樣更能表達一個完整的無線音樂
88、播放器。</p><p> 通過本次設計,對單片機的內部模塊更加熟悉,使用上也更加的清晰,對于今后用單片機設計產品提供了極大的幫助,并且培養(yǎng)了良好的編程習慣,對子程序命名的規(guī)范,和對寄存器的使用上,有了一定的良好意識,也鍛煉了我的自學能力和動手實踐能力。</p><p><b> 致謝</b></p><p> 在畢業(yè)設計的時間里,從開始
89、的一無措,到現在完成整個系統的設計和仿真。在整個過程中,不僅是一次所學知識的整理,更是一次動手能力的提升。</p><p> 在論文完成之際,我要特別感謝我的指導老師謝勝利老師的熱情關懷和悉心指導。從開始的一無措,到現在完成整個系統的設計和撰寫論文的過程中,謝老師傾注了大量的心血和汗水,無論是在論文的選題、構思和資料的收集方面,還是在論文的研究方法以及成文定稿方面,我都得到了謝老師悉心細致的教誨和無私的幫助,特
90、別是他廣博的學識、深厚的學術素養(yǎng)、嚴謹的治學精神和一絲不茍的工作作風使我終生受益,在此表示真誠地感謝和深深的謝意。</p><p> 最后,感謝對本文成文給與過幫助的所有老師、同學和朋友。</p><p><b> 參考文獻</b></p><p> [1] 朱益,運呂楊.基于CC2430的智能家居ZigBee無線數傳設計與實
91、現[J].云南大學學報(自然科學版),2009,31(1):114~115.</p><p> [2] 魏克新,馬中原,冷建偉.基于無線數傳的海上采油平臺監(jiān)控系統[J].電氣傳動,2009,10(39):67~71.</p><p> [3] 施雯,王暢.基于nRF2401的發(fā)動機轉速測量系統[J].公路與汽運,2008,6:5~8.</p><
92、;p> [4] 周鴻福.Wireless Communication Design in Water Factory Monitor System by Sockets[J].WiCOM'08.4th International Conference.2008:1~5.</p><p> [5] 黃振杰,盧小冰.基于AT89S52 單片機的多功能音樂播放器.電子設計工程[J],2
93、009,2:17~21.</p><p> [6] 劉斌,熊光潔,吳雪等.基于單片機無線通信的應急交通控制研究[J] .微計算機信息,2009,32(25):115~117.</p><p> [7] HE Jinghan,REN Yingli ,BO Zhiqian, Klimek Adrew.Advanced Communication System in Substa
94、tion for Integrated Protection[J].Transactions of Tianjin University.2008,14:128~133. </p><p> [8] 鄭啟忠,朱宏輝,耿四軍等.系統級RF芯片nRF24E1收發(fā)原理與應用編程 [J].新器件新技術,2004,07:42~45.</p><p> [9] 陳麗娟,
95、常丹華.基于nRF2401芯片的無線數據通信[J].電子器件,2006,03:249~250.</p><p> [10] 張崇,于曉琳,劉建平.單片2.4GHz無線收發(fā)一體芯片nRF2401 及其應用[J].國外電子元器件,2004,06:34~36.</p><p> [11] 喻金錢,喻斌.段距離無線通信[M].北京航空航天大學出版社,2009:120~1
96、48.</p><p> [12] Long Hainan,Liu Zhiqiang.Design Wireless Data Transmission System for Small Hydropower Stations Based on nRF24L01[J].The 1st International Conference on Information Science and Engine
97、ering</p><p> , 2009, 4008~4010.</p><p><b> 附錄Ⅰ 原理圖</b></p><p><b> 附錄Ⅱ 元器件清單</b></p><p><b> 附錄Ⅲ 源程序清單</b></p><p>
98、1. 發(fā)送程序代碼:</p><p> #include <reg51.h></p><p> #include <intrins.h></p><p> #include "api.h"</p><p> #define uint unsigned int</p><p
99、> #define uchar unsigned char</p><p> #define TX_ADR_WIDTH 5 // 5 字節(jié) TX(RX) 地址寬度</p><p> #define TX_PLOAD_WIDTH 1 // 1字節(jié)發(fā)送數據寬度 </p><p> uchar const TX_ADDRESS[TX_ADR_
100、WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定義一個靜態(tài)發(fā)送地址 TX_address</p><p> uchar rx_buf[TX_PLOAD_WIDTH];</p><p> uchar tx_buf[TX_PLOAD_WIDTH]={0x00};</p><p> /***********************
101、****nrf24l01管腳設置********************************/</p><p> sbit CE = P1^0;</p><p> sbit SCK= P1^1;</p><p> sbit MISO= P1^2;</p><p> sbit IRQ = P1^3;</p><
102、;p> sbit MOSI= P1^4;</p><p> sbit CSN= P1^5;</p><p> /******************狀態(tài)標志********************************/</p><p> uchar bdata sta;</p><p> sbitRX_DR=sta
103、^6; </p><p> sbitTX_DS=sta^5;</p><p> sbitMAX_RT=sta^4;</p><p> /**************************************************/</p><p><b> /*功能描述</b></p>
104、<p> 芯片使能(準備發(fā)送或接收模式)****************/</p><p> /**************************************************/</p><p> void init_io(void)</p><p><b> {</b></p><
105、p> CE=0;// 芯片使能</p><p> CSN=1;// 片選</p><p> SCK=0;// 啟動時鐘</p><p><b> }</b></p><p> /*****************************毫秒延時***************/</p
106、><p> void delay_ms(unsigned int x)</p><p><b> {</b></p><p> unsigned int i,j;</p><p> for(i=0;i<x;i++)</p><p><b> {</b></p
107、><p><b> j=108;</b></p><p> while(j--);</p><p><b> }</b></p><p><b> }</b></p><p> /**********************************
108、*****************************************/函數: SPI_RW();NRF24L01的SPI寫時序</p><p><b> 功能:</b></p><p> 根據SPI協議向nRF24L01寫入一個字節(jié)數據,并在寫數據時返回讀取的nRF24L01的數據</p><p> /***********
109、*****************************************************************/</p><p> uchar SPI_RW(uchar byte)</p><p><b> {</b></p><p> uchar bit_ctr;</p><p> for(
110、bit_ctr=0;bit_ctr<8;bit_ctr++) </p><p><b> {</b></p><p> MOSI = (byte & 0x80); </p><p> byte = (byte << 1); </p><p> SCK
111、= 1; </p><p> byte |= MISO; </p><p> SCK = 0; </p><p><b> }</b></p><p> return(byte); </p>
112、;<p><b> }</b></p><p> /**************************************************</p><p> 函數: SPI_RW_Reg();</p><p><b> 功能:</b></p><p> 把val
113、ue 值寫入reg寄存器</p><p> /**************************************************/</p><p> uchar SPI_RW_Reg(uchar reg, uchar value)</p><p><b> {</b></p><p> ucha
114、r status;</p><p> CSN = 0; // CSN低, SPI使能</p><p> status = SPI_RW(reg); //選擇寄存器</p><p> SPI_RW(value); // 寫入value值</p><p> CSN =
115、1; // CSN為高,SPI關閉</p><p> return(status); // 返回 nRF24L01狀態(tài)寄存器的值</p><p><b> }</b></p><p> /***********************************************
116、***</p><p> 函數: SPI_Write_Buf();</p><p><b> 功能:</b></p><p> 用于寫數據,reg為寄存器地址,pBuf為待寫入數據地址,bytes待入寫數據個數</p><p> /*****************************************
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于nrf24l01的無線音樂播放器設計
- 基于nrf24l01無線測溫系統的設計【畢業(yè)論文】
- 畢業(yè)論文基于nrf24l01模塊的無線通信系統設計
- 基于NRF24L01無線監(jiān)控系統的設計.pdf
- 畢業(yè)論文(設計)基于nrf24l01的單片機無線通信研究
- 畢業(yè)論文-基于51單片機和nrf24l01的無線溫度監(jiān)控
- 基于nrf24l01的無線接收與發(fā)送系統【畢業(yè)設計】
- 基于nRF24L01的無線溫度采集系統設計.pdf
- 基于nrf24l01的無線傳感器網絡研究
- 畢業(yè)論文(設計)research of microcontrollers wireless communication based on nrf24l01
- 基于nRF24L01的礦用搜救器設計.pdf
- 基于nrf24l01無線測溫系統的設計[開題報告]
- 基于nRF24L01的無線傳感器網絡研究.pdf
- 基于nrf24l01無線測溫系統的設計[任務書]
- 開題報告--基于nrf24l01的無線溫度采集系統設計
- NRF24l01無線232通信.rar
- 基于nRF24L01的無線振動檢測系統.pdf
- 基于nRF24L01的無線心音遙測系統的研究.pdf
- NRF24L01模塊.rar
- NRF24L01模塊.rar
評論
0/150
提交評論