基于RDA5807的收音機(jī)_第1頁(yè)
基于RDA5807的收音機(jī)_第2頁(yè)
基于RDA5807的收音機(jī)_第3頁(yè)
基于RDA5807的收音機(jī)_第4頁(yè)
基于RDA5807的收音機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、編號(hào): 課程設(shè)計(jì)說(shuō)明書(shū)(信息系統(tǒng)綜合實(shí)訓(xùn))題 目: 立體聲調(diào)頻收音機(jī) 院 (系): 信息與通信學(xué)院 專(zhuān) 業(yè): 電子信息工程 學(xué)生姓名: 峰之使者 學(xué) 號(hào): 指導(dǎo)教師: 2016年 1 月 8 日摘 要本系統(tǒng)為立體聲調(diào)頻收音機(jī),設(shè)計(jì)采用RDA5807收音模塊,與單片機(jī)相結(jié)合,使收音解調(diào)電路設(shè)計(jì)變的簡(jiǎn)單,實(shí)現(xiàn)FM收音并顯示頻率。我們通過(guò)矩陣鍵盤(pán)設(shè)定我們需要的頻段,并設(shè)置音量大小,通過(guò)諾基亞5110液晶屏顯示出來(lái),并根據(jù)所顯示接收信號(hào)的強(qiáng)度等級(jí),判斷收音所在地的信號(hào)強(qiáng)度。RDA5807模塊具有65-108MHz全球FM接收頻段相容的效果,具備噪聲消除、軟靜音、低音增強(qiáng)、靈敏度高、噪聲小、抗干擾能力強(qiáng)

2、等功能,所以使用本模塊很容易實(shí)現(xiàn),且系統(tǒng)可靠穩(wěn)定。關(guān)鍵詞:?jiǎn)纹瑱C(jī);RDA5807收音模塊;FM收音;目錄引言11 任務(wù)要求與設(shè)計(jì)的背景11.1 設(shè)計(jì)任務(wù)要求11.2 課題背景12 調(diào)頻收音機(jī)的分析和設(shè)計(jì)思路12.1 系統(tǒng)設(shè)計(jì)原理12.2 系統(tǒng)框圖分析和設(shè)計(jì)23 硬件設(shè)計(jì)23.1 單片機(jī)最小系統(tǒng)23.1.1 時(shí)鐘電路23.1.2 復(fù)位電路33.2 RDA5807模塊33.2.1 RDA5807模塊管腳33.2.2 RDA5807模塊特點(diǎn)43.2.3 RDA5807模塊與單片機(jī)接口43.3原理圖53.4 PCB圖54 軟件設(shè)計(jì)54.1 IIC通信54.2 IIC時(shí)序64.3軟件流程圖75 調(diào)試過(guò)程

3、95.1 電路板制作95.2 硬件調(diào)試95.3 軟件調(diào)試105.4 實(shí)物圖116 總結(jié)11謝 辭13參考文獻(xiàn)14附 錄15引言隨著科學(xué)技術(shù)的發(fā)展,調(diào)頻收音機(jī)的應(yīng)用十分廣泛,尤其消費(fèi)類(lèi)占有相當(dāng)?shù)氖袌?chǎng)。從分離元件組成的收音機(jī)到由集成電路組成的收音機(jī),調(diào)頻收音機(jī)技術(shù)已達(dá)到十分成熟的地步。本次設(shè)計(jì)采用RDA5807收音模塊與單片機(jī)相結(jié)合,實(shí)現(xiàn)FM收音并顯示頻率。單片機(jī)自20世紀(jì)70年代問(wèn)世以來(lái),以極其高的性能價(jià)格比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的特點(diǎn)是體積小、集成度高、重量輕、抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開(kāi)發(fā)較為容易,所以本次采用STC89c52單

4、片機(jī)。此外,RDA5807模塊具有65-108MHz全球FM接收頻段相容的效果,具備噪聲消除、軟靜音、低音增強(qiáng)、靈敏度高、噪聲小、抗干擾能力強(qiáng)等功能,還可以具備頻率顯示功能。1 任務(wù)要求與設(shè)計(jì)的背景1.1 設(shè)計(jì)任務(wù)要求本論文的任務(wù)是根據(jù)調(diào)頻收音機(jī)的特點(diǎn)和應(yīng)用情況,結(jié)合新一代高性能芯片設(shè)計(jì)一種使用簡(jiǎn)單、性能優(yōu)良的收音機(jī)。整個(gè)系統(tǒng)以單片機(jī)STC89S52控制,RDA5807芯片為核心,配置相應(yīng)的外設(shè)及接口電路。接收頻率可設(shè)置、輸出音量可數(shù)控、顯示信號(hào)強(qiáng)度和設(shè)置靜音,用C語(yǔ)言開(kāi)發(fā),組成一個(gè)多功能的程控?cái)?shù)字收音機(jī)。1.2 課題背景隨著科學(xué)技術(shù)的不斷發(fā)展,新穎的調(diào)頻收音機(jī)的不斷出現(xiàn),技術(shù)不斷的提高,設(shè)計(jì)

5、出來(lái)的收音機(jī)外型精致和小巧。從分離元件到集成電路,這標(biāo)志著收音機(jī)的內(nèi)部電路簡(jiǎn)單。用一個(gè)集成塊就能完成所有的工作。從早期的調(diào)幅收音機(jī)到現(xiàn)在的調(diào)頻收音機(jī),我們可以想象收音機(jī)的不斷的改進(jìn)和不斷創(chuàng)新,使收音機(jī)的發(fā)展空間愈來(lái)愈大?,F(xiàn)在,出現(xiàn)了新一代高科技產(chǎn)品數(shù)字調(diào)頻收音機(jī),功能強(qiáng)大,性能優(yōu)良,設(shè)計(jì)精巧耐用。2 調(diào)頻收音機(jī)的分析和設(shè)計(jì)思路2.1 系統(tǒng)設(shè)計(jì)原理本文提出的采用RDA5807模塊作為解調(diào)的核心器件的全數(shù)控調(diào)頻收音機(jī)設(shè)計(jì)方案, 根據(jù)接收頻率可設(shè)置、輸出音量可數(shù)控、顯示信號(hào)強(qiáng)度和設(shè)置靜音等要求,本設(shè)計(jì)外置一根天線,信號(hào)從天線進(jìn)入RDA5807模塊,因?yàn)閮?nèi)部有一放大器,所以不需要外加放大器,內(nèi)部AD對(duì)

6、信號(hào)進(jìn)行采樣,通過(guò)單片機(jī)的I/O口與RDA5807的IIC總線相連,經(jīng)過(guò)程序控制進(jìn)行對(duì)收音芯片內(nèi)部的寄存器讀寫(xiě),改寫(xiě)這些寄存器,則可輸出對(duì)應(yīng)的頻率和音量的信號(hào)??刂齐娐凡捎?*4的矩陣鍵盤(pán),輸入的數(shù)字信息經(jīng)STC89C52控制的諾基亞5110液晶屏顯示。2.2 系統(tǒng)框圖分析和設(shè)計(jì)系統(tǒng)結(jié)構(gòu)組成如圖2.1所示,主要由單片機(jī)控制模塊、鍵盤(pán)與顯示模塊、收音機(jī)解調(diào)模塊、天線組成。其中,信號(hào)接收由單片機(jī)控制模塊、收音機(jī)解調(diào)模塊和天線實(shí)現(xiàn),鍵盤(pán)與顯示模塊則用來(lái)實(shí)現(xiàn)人機(jī)交互的功能,通過(guò)外接的喇叭或者耳機(jī)可以接收到對(duì)應(yīng)頻道的信息。天線收音解調(diào)模塊4x4矩陣鍵盤(pán)單片機(jī)5110液晶顯示模塊圖2.1 收音機(jī)系統(tǒng)框圖3

7、 硬件設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用STC公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案。STC89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash、256字節(jié)RAM、32 位I/O 口線、看門(mén)狗定時(shí)器、2個(gè)數(shù)據(jù)指針、二個(gè)16 位定時(shí)器/計(jì)數(shù)器、一個(gè)6向量2級(jí)中斷結(jié)構(gòu)、全雙工串行口、片

8、內(nèi)晶振及時(shí)鐘電路。另外,STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。一般單片機(jī)需外接一個(gè)時(shí)鐘電路和一個(gè)復(fù)位電路,如圖3.1和圖3.2所示。3.1.1 時(shí)鐘電路 圖3.1 時(shí)鐘電路XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶

9、振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。STC89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一起構(gòu)成自激振蕩器。片外石英晶體或者陶瓷諧振器及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2雖然沒(méi)有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,這里采用電容22pF,晶振采用12MHz。3.1.2 復(fù)位電路 STC89C52的外部復(fù)位電路有上電自動(dòng)復(fù)位和手動(dòng)按鍵復(fù)位。上電復(fù)

10、位電容充電來(lái)實(shí)現(xiàn)。手動(dòng)按鍵復(fù)位又分為按鍵電平復(fù)位和按鍵脈沖復(fù)位。按鍵電平復(fù)位電路是在普通RC復(fù)位電路的基礎(chǔ)上接一個(gè)有下拉電阻10K、上拉電容10f接VCC,電源由開(kāi)關(guān)接至復(fù)位腳(和上拉電容并聯(lián)),上拉電容支路負(fù)責(zé)在“上電”瞬間實(shí)施復(fù)位;開(kāi)關(guān)通過(guò)10K下拉電阻分壓器,保證對(duì)單片機(jī)實(shí)施按鍵電平復(fù)位。電路圖如下圖3.2所示:圖3.2復(fù)位電路3.2 RDA5807模塊3.2.1 RDA5807模塊管腳“RRD-102V2.0”立體聲收音模塊( FM Stereo radio Module) 高靈敏度、低功耗、超小體積的調(diào)頻立體聲收音模組。采用RDA Microelectronics的RDA5807M(

11、或RDA5802NM),此電路外圍元件少、噪聲系數(shù)極小。具有體積小、低功耗、低成本、應(yīng)用簡(jiǎn)單、使用范圍廣等優(yōu)點(diǎn)。是一款簡(jiǎn)單易用且具極高性?xún)r(jià)比的單芯片F(xiàn)M立體聲收音模組,管腳如圖3.3所示,管腳功能如表3.1。表3.1 管腳功能圖3.3 RAD5807模塊管腳示意圖3.2.2 RDA5807模塊特點(diǎn) (1)采用通用的102BC模塊的封裝,用戶(hù)可直接替換使用,無(wú)需更改電路設(shè)計(jì)。 (2)、 靈敏度高、噪聲小、抗干擾能力強(qiáng)、外接元件極少、體積?。?1*11.2MM Max)、使用極其簡(jiǎn)單。 (3)、 76-108MHz全球FM頻段兼容(包括日本76-91MHz和歐美87.5-108.5MHz)。 (4

12、)、 I2C串行數(shù)據(jù)總線接口通訊,支持外部基準(zhǔn)時(shí)鐘輸入方式。 (5)、 完全整合的COMS工藝單晶片集成電路,功耗極小。 (6)、 內(nèi)置高精度A/D(模數(shù)轉(zhuǎn)換器)及數(shù)字頻率合成器。 (7)、 內(nèi)置LDO調(diào)整、低功耗、超寬電壓使用范圍(2.7-3.6VDC)。 (8)、 內(nèi)置噪聲消除、軟靜音、低音增強(qiáng)電路設(shè)計(jì)。 (9)、 高功率32負(fù)載音頻輸出,直接耳機(jī)駁接,無(wú)需外接音頻驅(qū)動(dòng)放大。 3.2.3 RDA5807模塊與單片機(jī)接口 RDA5807是以I2C協(xié)議為通信方式的芯片,通過(guò)CLK時(shí)鐘總線和SDA數(shù)據(jù)總線與單片機(jī)相連,如圖3.3所示。圖3.4 RAD5807與單片機(jī)接口3.3原理圖本原理圖是實(shí)現(xiàn)

13、一個(gè)收音功能的電路,通過(guò)天線接收廣播,并利用RDA5807收音模塊,解調(diào)出音頻信號(hào),通過(guò)耳機(jī)播放出來(lái),如圖3.5所示。圖3.5系統(tǒng)原理圖3.4 PCB圖利用軟件DXP,將原理圖導(dǎo)入進(jìn)行制作PCB圖,通過(guò)白色線的指引,把各個(gè)部分的電路連接起來(lái),如圖3.6所示。圖3.6 PCB圖4 軟件設(shè)計(jì)4.1 IIC通信 IIC是由菲利浦半導(dǎo)體公司在八十年代初設(shè)計(jì)出來(lái)的,主要是用來(lái)連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說(shuō)多個(gè)芯片可以連接到同一總線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)施數(shù)據(jù)傳輸?shù)目刂圃?。這種方式簡(jiǎn)化了信號(hào)輸總線。 IIC串行總線一般有兩根信號(hào)線,一根

14、是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到IIC總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。 4.2 IIC時(shí)序在IIC總線傳輸過(guò)程中,將兩種特定的情況定義為開(kāi)始和停止條件:當(dāng)SCL保持“高”時(shí),SDA由“高”變?yōu)椤暗汀睘殚_(kāi)始條件;當(dāng)SCL保持“高”且SDA由“低”變?yōu)椤案摺睍r(shí)為停止條件。開(kāi)始和停止條件均由主控制器產(chǎn)生。使用硬件接口可以很容易地檢測(cè)到開(kāi)始和停止條件,沒(méi)有這種接口的微機(jī)必須以每時(shí)鐘周期至少兩次對(duì)SDA取樣,以檢測(cè)這種變化。  SDA線上的數(shù)據(jù)在時(shí)鐘“高”期間必須是穩(wěn)定的,只有當(dāng)SCL線上的時(shí)鐘信號(hào)

15、為低時(shí),數(shù)據(jù)線上的“高”或“低”狀態(tài)才可以改變。輸出到SDA線上的每個(gè)字節(jié)必須是8位,每次傳輸?shù)淖止?jié)不受限制,但每個(gè)字節(jié)必須要有一個(gè)應(yīng)答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時(shí),它可以保持時(shí)鐘線SCL為低,以促使發(fā)送器進(jìn)入等待狀態(tài);當(dāng)接收器準(zhǔn)備好接受數(shù)據(jù)的其它字節(jié)并釋放時(shí)鐘SCL后,數(shù)據(jù)傳輸繼續(xù)進(jìn)行。I2C數(shù)據(jù)總線傳送時(shí)序。  數(shù)據(jù)傳送具有應(yīng)答是必須的。與應(yīng)答對(duì)應(yīng)的時(shí)鐘脈沖由主控制器產(chǎn)生,發(fā)送器在應(yīng)答期間必須下拉SDA線。當(dāng)尋址的被控器件不能應(yīng)答時(shí),數(shù)據(jù)保持為高并使主控器產(chǎn)生停止條件而終止傳輸。在傳輸?shù)倪^(guò)程中,在用到主控接收器的情況

16、下,主控接收器必須發(fā)出一數(shù)據(jù)結(jié)束信號(hào)給被控發(fā)送器,從而使被控發(fā)送器釋放數(shù)據(jù)線,以允許主控器產(chǎn)生停止條件。圖4.1為RDA5807寄存器寫(xiě)時(shí)序,圖4.2為RDA5807寄存器讀時(shí)序。圖4.1 I2C寫(xiě)時(shí)序圖4.2 I2C讀時(shí)序4.3軟件流程圖在應(yīng)用系統(tǒng)中,系統(tǒng)軟件的設(shè)計(jì)是建立在具體硬件電路基礎(chǔ)之上,根據(jù)系統(tǒng)功能要求可靠地實(shí)現(xiàn)系統(tǒng)的各種功能。好的軟件設(shè)計(jì)能夠充分發(fā)揮微控制器的運(yùn)算和邏輯控制功能,從而提高儀器的精度和使用的方便性。先初始化接收頻率,并實(shí)現(xiàn)對(duì)頻率和音量步進(jìn)的控制。處理用戶(hù)由鍵盤(pán)鍵入的頻率值和音量值,判斷是否超出范圍,生成頻率和音量控制字,經(jīng)I2C方式送入解調(diào)模塊并改寫(xiě)寄存器數(shù)據(jù),設(shè)置用

17、戶(hù)所需的接收頻段和音量,并通過(guò)程序?qū)崿F(xiàn)頻率、音量和信號(hào)強(qiáng)度的顯示,程序流程圖如圖4.3所示。開(kāi)始RDA5807初始化5110液晶初始化鍵盤(pán)掃描改寫(xiě)當(dāng)前頻率、音量顯示當(dāng)前頻率、音量結(jié)束圖4.3 總程序流程圖根據(jù)圖4.3的總程序流程圖。程序從main函數(shù)開(kāi)始,先對(duì)LCD5110液晶屏進(jìn)行初始化,主要對(duì)液晶屏進(jìn)行忙或不忙檢測(cè),當(dāng)液晶屏忙時(shí),程序等待中;當(dāng)液晶屏不忙時(shí),程序繼續(xù)。再對(duì)LCD清屏,為顯示作準(zhǔn)備。再顯示我們需要的信息。最后初始設(shè)置頻率和音量,初始化程序如下:LCD_init(); /lcd初始化LCD_clear(); /清屏xianshi(); /顯示初始化RDA_Init(); /RD

18、A5807初始化Freq_Set(8830); /頻率初始設(shè)置為88.30MHZVol_Set(10); /音量初始設(shè)置為10矩陣鍵盤(pán)掃描程序,當(dāng)按鍵按下時(shí),程序執(zhí)行對(duì)應(yīng)功能;當(dāng)鍵盤(pán)沒(méi)有按下時(shí),程序結(jié)束且這個(gè)過(guò)程不斷循環(huán)。鍵盤(pán)掃描程序如下:keyscan();/鍵盤(pán)不斷掃描當(dāng)鍵1被按下時(shí),頻率值加100KHZRXFreq+=10; /頻率加,步進(jìn)100KHZFreq_Set(RXFreq); /頻率設(shè)置當(dāng)鍵2被按下時(shí),頻率值減100KHZRXFreq-=10; /頻率減,步進(jìn)100KHZFreq_Set(RXFreq); /頻率設(shè)置當(dāng)鍵3被按下時(shí),音量值加1Vol+=1; /音量加Vol_Se

19、t(Vol); /音量設(shè)置 015當(dāng)鍵4被按下時(shí),音量值減1Vol-=1; /音量減Vol_Set(Vol); /音量設(shè)置 015當(dāng)鍵5被按下時(shí),設(shè)置靜音成功;當(dāng)鍵5再次按下時(shí)靜音取消Mute_Set(mute);/設(shè)置靜音mute+;鍵盤(pán)不斷掃描時(shí),也不斷的顯示,分別對(duì)頻率、音量、信號(hào)強(qiáng)度和靜音標(biāo)志進(jìn)行顯示,顯示程序如下:display_2(RXFreq); /顯示頻率display_1(Vol); /顯示音量display_3(Rssi_Get(); /顯示信號(hào)強(qiáng)度display_4(mute); /顯示是否靜音,1為否,0為是以上步驟不斷的循環(huán)。5 調(diào)試過(guò)程5.1 電路板制作畫(huà)圖:根據(jù)原

20、理圖畫(huà)PCB圖,畫(huà)封裝。打印PCB:通過(guò)轉(zhuǎn)印機(jī)把PCB轉(zhuǎn)印到電路板上。腐蝕:把電路板放進(jìn)腐蝕液里腐蝕掉沒(méi)有被保護(hù)的銅。鉆孔:根據(jù)洞口大小選擇合適的鉆針鉆孔。清洗:把導(dǎo)線表面的油墨打磨清洗干凈。涂松香:把松香和天那水的混合液涂在打磨清洗后的板子上,防止銅線被氧化和有助于焊接。插器件,焊接:等松香干了,插元器件,并且焊接好。5.2 硬件調(diào)試剛開(kāi)始調(diào)試的時(shí)候,我是根據(jù)一個(gè)文檔上寫(xiě)的,耳機(jī)接口的公共端可以用作天線,并通過(guò)一個(gè)磁珠與地隔開(kāi),當(dāng)時(shí)一個(gè)勁的懷疑軟件問(wèn)題,沒(méi)有認(rèn)真檢查硬件,經(jīng)過(guò)仔細(xì)查閱資料,了解到耳機(jī)接口的公共端為地,所以不能用作天線。解決;天線端與耳機(jī)公共端斷路,耳機(jī)公共端直接接地。如圖5.

21、1所示。圖5.1解決后電路還有一個(gè)問(wèn)題,芯片RDA5807的輸出口有兩個(gè)聲道,之前我是用兩個(gè)磁珠相連,因?yàn)榇胖槭请姼?,具有隔交流信?hào)的作用,音頻信號(hào)為交流信號(hào),磁珠濾除掉了音頻信號(hào),所以耳機(jī)端不可能接收到音頻信號(hào),解決:移除兩個(gè)磁珠,用導(dǎo)線把兩端連接起來(lái)。如圖5.3所示紅色框原為兩個(gè)磁珠,現(xiàn)在為兩導(dǎo)線相連. 如圖5.2所示。圖5.2解決后電路5.3 軟件調(diào)試軟件遇到的主要問(wèn)題是RDA5807的I2C協(xié)議通信的時(shí)序問(wèn)題,I2C協(xié)議通過(guò)時(shí)鐘總線CLK和數(shù)據(jù)總線SDA與單片機(jī)相連,我們所用的單片機(jī)沒(méi)有I2C接口,給我們?cè)斐闪撕艽蟮牟槐?,我們是根?jù)I2C時(shí)序,通過(guò)拉低或拉高總線和延時(shí)函數(shù)模擬I2C。在

22、寫(xiě)I2C讀一個(gè)字節(jié)的數(shù)據(jù)時(shí),數(shù)據(jù)只能讀出16位數(shù)據(jù)的高8位,而不能讀出數(shù)據(jù)的低8位,。解決:在讀數(shù)據(jù)前,將SDA總線拉高,因?yàn)?1單片機(jī)講引腳置高可設(shè)為輸入引腳,即可讀出數(shù)據(jù)。部分程序如下:uchar IICReadByte(unsigned char ack) /IIC讀一個(gè)字節(jié)unsigned char i,receive=0;SDA=1; /51單片機(jī)講引腳置高可設(shè)為輸入引腳,缺少此語(yǔ)句,不能正常讀出數(shù)據(jù) for(i=0;i<8;i+ )SCL=0; IIC_delayms(); SCL=1; receive<<=1;if(SDA=1) receive+; IIC_de

23、layms(); if (!ack) IIC_NAck();else IIC_Ack(); return receive; 5.4 實(shí)物圖如圖5.3所示,調(diào)試出來(lái)的電路由矩陣鍵盤(pán)、諾基亞5110液晶屏、RDA5807模塊組成??梢燥@示接收頻率、音量、信號(hào)強(qiáng)度,如圖5.3所示。圖5.3無(wú)線發(fā)射控制電路6 總結(jié) 本次信息系統(tǒng)綜合實(shí)訓(xùn),我用了兩個(gè)星期,在第一個(gè)星期我查閱關(guān)于收音機(jī)的資料和學(xué)習(xí)一些單片機(jī)的基礎(chǔ),第二個(gè)星期我做板并調(diào)試程序,這兩星期可以說(shuō)是充實(shí),緊張而又愉快的。在這兩個(gè)星期的實(shí)訓(xùn)中,我學(xué)到了很多東西,不管是在知識(shí)架構(gòu)上,還是在動(dòng)手動(dòng)腦能力上都起著潛移默化的影響。剛開(kāi)始做收音機(jī),腦袋里面沒(méi)

24、有一點(diǎn)頭緒,通過(guò)幾天的查閱資料和班里面的同學(xué)交流,了解到了FM是如今的一種收音機(jī)常用的調(diào)制解調(diào)方式,這也是我本次實(shí)訓(xùn)的芯片RDA5807里面的調(diào)制解調(diào)方式。硬件做出來(lái)后,調(diào)試軟件遇到了不少的問(wèn)題,剛開(kāi)始把5110液晶屏點(diǎn)亮,費(fèi)了一段時(shí)間,通過(guò)查找網(wǎng)上一些關(guān)于5110液晶屏的驅(qū)動(dòng)和參考別人的一些程序,終于可以在屏幕上隨意讀寫(xiě)數(shù)據(jù),并且可以顯示漢字。關(guān)于RDA5807的程序,我也是上網(wǎng)找了一堆資料,其實(shí)它的驅(qū)動(dòng)程序有點(diǎn)難寫(xiě),特別是I2C協(xié)議讀寫(xiě)數(shù)據(jù),但我們參考別人的程序,對(duì)照時(shí)序圖,可以很快寫(xiě)好RDA5807的驅(qū)動(dòng)程序,通過(guò)調(diào)用里面的子函數(shù),設(shè)置所需的接收頻段和音量。關(guān)于矩陣鍵盤(pán)的程序,按鍵掃描是

25、單片機(jī)的一個(gè)基本的知識(shí),不過(guò)矩陣鍵盤(pán)掃描比較困難,它是8個(gè)IO口控制16個(gè)鍵盤(pán),在觀看郭天祥的十天學(xué)會(huì)單片機(jī)后,對(duì)矩陣有了一定了解,最后能運(yùn)用矩陣鍵盤(pán)實(shí)現(xiàn)對(duì)頻率設(shè)置的功能。這次實(shí)訓(xùn)不僅鞏固了以前所學(xué)過(guò)的知識(shí),鍛煉自己動(dòng)手制作能力,更是讓我深刻認(rèn)識(shí)到我對(duì)理論知識(shí)所學(xué)欠缺,理論知識(shí)的重要性,這些我會(huì)在以后得學(xué)習(xí)總補(bǔ)習(xí)回來(lái),做到理論與實(shí)踐相結(jié)合,更好的提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。謝 辭首先,感謝為我們安排了這次單片機(jī)設(shè)計(jì)實(shí)訓(xùn)。非常感謝學(xué)院領(lǐng)導(dǎo)和老師給我們提供硬件條件和在理論知識(shí)方面的幫助。還要感謝老師的授課和實(shí)訓(xùn)操作指導(dǎo),在任務(wù)開(kāi)始前,老師首先就全面的為我們講注意事項(xiàng),讓我們?cè)趯?shí)訓(xùn)過(guò)程中

26、少犯了不少錯(cuò),節(jié)約了寶貴的時(shí)間。特別感謝老師,是她在整個(gè)實(shí)訓(xùn)過(guò)程中對(duì)我們嚴(yán)格要求,耐心指導(dǎo),反復(fù)為我們講解要點(diǎn),給與我們極大的幫助以及鼓勵(lì),使得我最終完成實(shí)訓(xùn)。參考文獻(xiàn)1 郭天祥.51單片機(jī)C語(yǔ)言教程:電子工業(yè)出版社,20082 李歐儒主編.短波單邊帶收發(fā)信機(jī)原理與調(diào)制.北京:人民郵電出版社,19853 董在望.陳雅琴,雷有華,肖華庭.通信電路原理.第二版.北京:高等教育出版社,20024 孫育才. MCS-51系列單片機(jī)及應(yīng)用(第4版):東南大學(xué)出版社,20045 閻石. 數(shù)字電子技術(shù)基礎(chǔ)(第5版):清華大學(xué)出版社,20056 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第3版):清華大學(xué)出版社,20057 鄭

27、學(xué)堅(jiān)、周斌. 微型計(jì)算機(jī)的原理及應(yīng)用:清華大學(xué)出版社,20028 胡偉、季曉衡單片機(jī)c程序設(shè)計(jì)及應(yīng)用實(shí)例:北京人民郵電出版社2003附 錄#include <reg51.h>#include <string.h>#include <intrins.h>#include <lcd5110.h>#define uchar unsigned char#define uint unsigned int#define ulint unsigned long int#define lint long intunsigned int RXFreq=8980;/

28、RDA 的寄存器地址#define RDA_R000X00 /讀出16個(gè)位的ID =0X5800#define RDA_R020X02 /DHIZ15,DMUTE14靜音,MONO13聲道,BASS12重低音,SEEKUP9,SEEK8,SKMODE7,CLK_MODE6:4時(shí)鐘源選擇,SOFTRESET1軟復(fù)位,ENABLE0電源使能#define RDA_R030X03 /CHAN15:6,TUNE4,BAND3:2,SPACE1:0 設(shè)置頻率 帶寬 步長(zhǎng)#define RDA_R040X04 /STCIEN14,DE11,I2Senable6,#define RDA_R050X05 /I

29、NT_MODE15,SEEKTH14:8(設(shè)定自動(dòng)搜索信號(hào)強(qiáng)度閥值),LNA_PORT_SEL7:6=0b10,LNA_ICSEL_BIT5:4,VOLUME3:0音量;#define RDA_R0A0X0A /STC14seek complete SF13seek fail readchan9:0當(dāng)前頻道#define RDA_R0B0X0B /RSSI15:9,FM TRUE8當(dāng)前頻道是一個(gè)節(jié)目臺(tái)#define RDA_READ 0X23 /讀RDA5807#define RDA_WRITE0X22 /寫(xiě)RDA5807sbit SDA=P01;/IIC接口sbit SCL=P00;ucha

30、r *table="0","1","2","3","4","5","6","7","8","9"uchar temp,key,Vol=8,mute=1;uint Diantai20=8830;void delay(uchar z)uchar i,j;for(i=z;i>0;i-)for(j=110;j>0;j-);/*-IIC通信程序-*/void IIC_delayms() /用于I

31、IC延時(shí)_nop_();_nop_();_nop_();_nop_();void OpenIIC() /IIC啟動(dòng)信號(hào)SDA=1;SCL=1;IIC_delayms(); SDA=0;IIC_delayms(); SCL=0;void CloseIIC()/IIC停止信號(hào) SCL=0; SDA=0; IIC_delayms(); SCL=1; SDA=1; IIC_delayms(); uchar IIC_Wait_Ack(void)/IIC發(fā)送字節(jié)后 等待從機(jī)發(fā)送響應(yīng)信uchar ucErrTime=0; SDA=1;IIC_delayms(); SCL=1;IIC_delayms(); w

32、hile(SDA=1)ucErrTime+;if(ucErrTime>250)CloseIIC();return 1;SCL=0; return 0; void IIC_Ack(void) /發(fā)送應(yīng)答信號(hào)SCL=0;SDA=0; /0±íê?ó|eIIC_delayms(); SCL=1;IIC_delayms(); SCL=0; void IIC_NAck(void) /IIC 非應(yīng)答信號(hào)SCL=0;SDA=1; IIC_delayms(); SCL=1;IIC_delayms(); SCL=0; void IICsendByte(uchar t

33、xd) /IIC·寫(xiě)一個(gè)字節(jié) uchar t; SCL=0; for(t=0;t<8;t+) if(txd&0x80)>>7)=1)SDA=1;else SDA=0; txd<<=1; IIC_delayms(); SCL=1;IIC_delayms(); SCL=0;IIC_delayms(); uchar IICReadByte(unsigned char ack) /IIC讀一個(gè)字節(jié)unsigned char i,receive=0;SDA=1; /51單片機(jī)講引腳置高可設(shè)為輸入引腳 for(i=0;i<8;i+ )SCL=0; II

34、C_delayms(); SCL=1;receive<<=1;if(SDA=1)receive+; IIC_delayms(); if (!ack) IIC_NAck(); else IIC_Ack(); return receive;uint ReadReg(uchar regAddr)/芯片讀寄存器uint buf;OpenIIC();IICsendByte(RDA_WRITE); /發(fā)送芯片地址 方向?yàn)閷?xiě)IIC_Wait_Ack();IICsendByte(regAddr);/發(fā)送寄存器地址IIC_Wait_Ack();OpenIIC();IICsendByte(RDA_RE

35、AD); / 發(fā)送芯片地址 方向?yàn)樽xIIC_Wait_Ack();buf = IICReadByte(1); buf = buf<<8;buf =buf|IICReadByte(0); CloseIIC();return buf;void WriteReg(uchar regAddr,uint val) /芯片寫(xiě)寄存器OpenIIC();IICsendByte(RDA_WRITE);/發(fā)送芯片地址 方向?yàn)閷?xiě)IIC_Wait_Ack(); IICsendByte(regAddr);/發(fā)送寄存器地址IIC_Wait_Ack(); IICsendByte(val>>8);II

36、C_Wait_Ack();IICsendByte(val&0XFF);IIC_Wait_Ack();CloseIIC();void Vol_Set(uchar vol)/音量設(shè)置 015uint temp=0;temp=ReadReg(RDA_R05);temp&=0xfff0; WriteReg(0x05,vol|temp) ;void Mute_Set(uchar mute)/靜音設(shè)置 1為靜音0為不靜音uint temp=0;temp=ReadReg(0X02);if(!mute)temp|=1<<14;else temp&=(1<<14)

37、; WriteReg(0X02,temp) ;void Bass_Set(uchar bass) /頻帶設(shè)置uint temp=0;temp=ReadReg(0X02);if(bass)temp|=1<<12;else temp&=(1<<12); WriteReg(0X02,temp) ;uchar Rssi_Get(void)/信號(hào)強(qiáng)度獲取063uint temp=0;temp=ReadReg(0X0B); temp=(temp>>9)&0x7f; return temp; void Seekth_Set(uint rssi) /自動(dòng)搜臺(tái)

38、信號(hào)閾值強(qiáng)度015 默認(rèn)為8 數(shù)值越低搜到的臺(tái)越多uint temp;rssi = rssi & 0xf;temp=ReadReg(0X05);temp&=(0xf<<8);temp|= rssi<<8; WriteReg(0X05,temp) ;void Seek_direction(uchar direction) /搜臺(tái)方向 1向上搜索 0向下搜索uint temp;temp=ReadReg(RDA_R02);temp&=(1<<9);if(direction = 1) temp|= 1<<9; else if(di

39、rection = 0)temp|= 0<<9;WriteReg(0X05,temp) ;void Freq_Set(uint freq)/頻率設(shè)置 單位是:10KHz 650010800uint temp;uchar spc=0,band=0;uint fbtm,chan;temp=ReadReg(0X03);temp&=0X001F;band=(temp>>2)&0x03;spc=temp&0x03; if(spc=0)spc=10;else if(spc=1)spc=20;else spc=5;if(band=0)fbtm=8700;els

40、e if(band=1|band=2)fbtm=7600;else fbtm=ReadReg(0X53);fbtm*=10;if(freq<fbtm)return;chan=(freq-fbtm)/spc;chan&=0X3FF; temp|=chan<<6;temp|=1<<4; WriteReg(RDA_R03,temp) ;delayms(20);/while(ReadReg(0X0B)&(1<<7)=0);unsigned short seek_channel(void) /半自動(dòng)搜臺(tái)uint temp;temp=ReadReg

41、(RDA_R02);temp |= (1<<8); WriteReg(RDA_R02,temp) ; /SEEK位置一 使能自動(dòng)搜臺(tái)while( (ReadReg(RDA_R0A)&(1<<14) = 0 ) / 等待STC位置一 表示搜索完成 delayms(10); /延時(shí)10ms temp = (ReadReg(RDA_R0A)&0x3FF) * 100000 + 87000000 ; /獲取當(dāng)前頻率return temp/10000; /返回搜到電臺(tái)頻率 單位是:10Khz void FM_enable(uchar flag)/1 使能芯片 0

42、禁用芯片uint temp;temp=ReadReg(RDA_R02);if(flag =1 )temp |=1; if(flag = 0) temp &= 0x1;WriteReg(RDA_R02,temp);void RDA_Init(void) /RDA3?ê?WriteReg(RDA_R02,0x0002); /軟件復(fù)位delayms(30);WriteReg(RDA_R02,0xd281); /晶振選擇32.768Khz 向上搜索 重低音 立體聲 SKMODE = 1搜索到邊頻時(shí)停止 WriteReg(RDA_R03,0x0000); /頻率設(shè)為87MHz ,步進(jìn)1

43、00Khz 頻帶為87M108MWriteReg(RDA_R04,0x0040); /基本配置WriteReg(RDA_R05,0X8882); /音量設(shè)置為vol=2 搜索閥值為8 FM_enable(1); /給芯片上電 /*顯示初始化*/void xianshi() LCD_write_english_string(0,0,"Freq:000.00MHZ"); LCD_write_english_string(0,1,"Vol : "); LCD_write_english_string(0,2,"Rssi: "); LCD_w

44、rite_english_string(0,3,"Vol Mute: ");/*顯示音量*/void display_1(lint vv1) uchar A1,A2,A3,A4,A5,A6; A1=vv1/100000; A2=vv1%100000/10000; A3=vv1%10000/1000; A4=vv1%1000/100; A5=vv1%100/10; A6=vv1%10;/ LCD_write_english_string(30,1,tableA2);/ LCD_write_english_string(36,1,tableA3);/ LCD_write_eng

45、lish_string(42,1,tableA4); LCD_write_english_string(60,1,tableA5); LCD_write_english_string(66,1,tableA6);/ LCD_write_english_string(80,1,tableA6);/*顯示頻率*/void display_2(lint vv2) uchar A1,A2,A3,A4,A5,A6; A1=vv2/10000; A2=vv2%10000/1000; A3=vv2%1000/100; A4=vv2%100/10; A5=vv2%10; LCD_write_english_s

46、tring(30,0,tableA1); LCD_write_english_string(36,0,tableA2); LCD_write_english_string(42,0,tableA3); LCD_write_english_string(54,0,tableA4); LCD_write_english_string(60,0,tableA5);/*顯示信號(hào)強(qiáng)度*/void display_3(lint vv1) uchar A1,A2,A3,A4,A5,A6; A1=vv1/100000; A2=vv1%100000/10000; A3=vv1%10000/1000; A4=vv

47、1%1000/100; A5=vv1%100/10; A6=vv1%10;/ LCD_write_english_string(30,2,tableA2);/ LCD_write_english_string(36,2,tableA3);/ LCD_write_english_string(42,2,tableA4); LCD_write_english_string(60,2,tableA5); LCD_write_english_string(66,2,tableA6);/ LCD_write_english_string(80,1,tableA6);/*顯示靜音狀態(tài)*/void disp

48、lay_4(lint vv1) uchar A1,A2,A3,A4,A5,A6; A1=vv1/100000; A2=vv1%100000/10000; A3=vv1%10000/1000; A4=vv1%1000/100; A5=vv1%100/10; A6=vv1%10;/ LCD_write_english_string(30,2,tableA2);/ LCD_write_english_string(36,2,tableA3);/ LCD_write_english_string(42,2,tableA4);/ LCD_write_english_string(60,2,tableA5); LCD_write_english_string(66,3,tableA6);/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論