RDA5807的數(shù)控收音機(jī)#(精選.)_第1頁
RDA5807的數(shù)控收音機(jī)#(精選.)_第2頁
RDA5807的數(shù)控收音機(jī)#(精選.)_第3頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要 現(xiàn)在人們常使用的收音機(jī)為手動(dòng)調(diào)頻收臺(tái), 使用較為麻煩, 而且由于接收靈 敏度不高,所接收的頻段較窄。為了解決這些問題,本次采用RDA5807攵音模塊 與單片機(jī)相結(jié)合,實(shí)現(xiàn)FM收音并顯示頻率。單片機(jī)自20世紀(jì)70年代問世以來, 以極其高的性能價(jià)格比受到人們的重視和關(guān)注, 所以應(yīng)用很廣, 發(fā)展很快。 單片 機(jī)的特點(diǎn)是體積小、集成度高、重量輕、抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格 低廉,可靠性高,靈活性好,開發(fā)較為容易,所以本次采用 stc89c52 單片機(jī)。 此外,RDA5807模塊具有65-108MHZ全球FM接收頻段相容的效果,具備噪聲消 除、軟靜音、低音增強(qiáng),靈敏度高、噪聲小、抗干擾能力

2、強(qiáng)等功能,還可以具備 頻率顯示功能,所以使用本模塊很容易實(shí)現(xiàn)。目錄引言11. 方案選擇 .21.1 方案一 .1.2 方案二 .1.3 方案確定2. 系統(tǒng)方案設(shè)計(jì)及各模塊原理2.1 STC89C5孩心模塊2.1.1 STC89C5單片機(jī)簡(jiǎn)介2.1.2 STC89C5主要性能2.2 RDA5807模塊2.2.1 RDA5807模塊特點(diǎn)2.2.2 RDA5807模塊使用2.3 顯示模塊2.3.1 1602液晶簡(jiǎn)介2321602引腳說明2.4 IIC 通信2.4.1 IIC 簡(jiǎn)介2.4.2 IIC 時(shí)序3系統(tǒng)程序設(shè)計(jì)4 印刷電路板的設(shè)計(jì)與制作4.1印刷電路板的布線設(shè)計(jì)4.2印刷電路板的制作5電路板的

3、調(diào)試6 結(jié)論謝 辭參考文獻(xiàn)附 錄 引言本設(shè)計(jì)研究 FM 收音機(jī)分為硬件電路和程序設(shè)計(jì)兩個(gè)方面。從硬件電路來說, 主要是實(shí)現(xiàn)所需電壓值、 穩(wěn)壓、搜臺(tái)、控制和頻率顯示等方面; 從系統(tǒng)程序來說, 主要是通過軟件來實(shí)現(xiàn) RDA5807莫塊的功能,使用IIC總線方式調(diào)臺(tái),并且得到 當(dāng)前的頻率,處理并實(shí)現(xiàn)頻率轉(zhuǎn)換、顯示。1. 方案選擇1.1 方案一使用分立元件來搭接電路, 實(shí)現(xiàn)莫塊的功能, 收發(fā)信號(hào), 對(duì)信號(hào)調(diào)頻或者調(diào) 幅,從而得到可以處理的信號(hào),實(shí)現(xiàn)收聽功能。呢 1空BG30G49C1B901B90149013*30X201由于本方案,調(diào)試極為復(fù)雜,很難成功,而且接收頻率范圍小,工作也很不 穩(wěn)定,很容易

4、受外界影響。1.2方案二采用RDA5807莫塊,實(shí)現(xiàn)接收信號(hào),并處理功能,并于單片機(jī)相結(jié)合,實(shí) 現(xiàn)數(shù)控,操作簡(jiǎn)單。由于RDA5807模塊高度的集成,很多功能都集成在內(nèi)部,所以工作穩(wěn)定,不 容易受外界影響,而且需要的外部東西少,使用IIC總線與單片機(jī)相連接, 使 用的線少,模塊簡(jiǎn)單,操作方便,并且接收頻率范圍很廣。2 系統(tǒng)方案設(shè)計(jì)及各模塊原理本方案采用STC89C5單片機(jī)與RDA模塊連接,從而實(shí)現(xiàn)數(shù)控收音機(jī), STC89C5單片機(jī)在這方面的設(shè)計(jì)為我們提供了極大的方便,用它實(shí)現(xiàn)的好處在 于,外圍電路極其簡(jiǎn)單,另外在 STC89C5洋片機(jī)的編程方面又提供及其便利的 編程環(huán)境。外圍電路的設(shè)計(jì)包括兩大部

5、分,分別是液晶的顯示和鍵盤控制電路的 設(shè)計(jì)。這里采用一個(gè)復(fù)位按鍵,來實(shí)現(xiàn)對(duì)RDA5807模塊的初始化。設(shè)計(jì)的特點(diǎn)是 全面采用數(shù)字電路方案,因而工作穩(wěn)定可靠。利用單片機(jī)控制管理,使設(shè)置及調(diào) 整操作準(zhǔn)確。STC89C5最小系統(tǒng)原理圖RDA5807攵音模塊2.1 STC89C52核心模塊STC89C52是 STC公司生產(chǎn)的一種低功耗、高性能 CMOS位微控制器,具有 8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很 多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的 8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用

6、系統(tǒng)提 供高靈活、超有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM 32位I/O 口線,看門狗定時(shí)器,內(nèi)置4KBEEPRO,MMAX81(復(fù)位電路,3 個(gè)16位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng) 51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外STC89C52可降至0Hz靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。2.1.1 STC89C52單片機(jī)簡(jiǎn)介其引腳結(jié)構(gòu)及說明如下:VCC :電源GND:地P0 口: P0 口是一個(gè)8位漏極開路的雙向I/O 口。作為輸出口,每位能驅(qū)動(dòng) 8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),弓I腳用作高阻抗輸入。當(dāng)訪問

7、外部程 序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。在flash編程時(shí),P0 口也用來接收指令字節(jié);在程序校驗(yàn) 時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。P1 口 : P1 口是一個(gè)具有內(nèi)部上拉電阻的 8位雙向I/O 口,pl輸出緩沖器 能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P1端口寫“ T時(shí),內(nèi)部上拉電阻把端口拉高, 此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的 原因,將輸出電流(IIL )。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部 計(jì)數(shù)輸入(P1.0/T2 )和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入P1.1/T2EX)。

8、在flash編程 和校驗(yàn)時(shí),P1 口接收低8位地址字節(jié)。P2 口 : P2 口是一個(gè)具有內(nèi)部上拉電阻的 8位雙向I/O 口,P2輸出緩沖器 能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫“ T時(shí),內(nèi)部上拉電阻把端口拉高, 此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的 原因,將輸出電流(IIL )。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù) 存儲(chǔ)器(例如執(zhí)行MOVXDPRR時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVR)訪問外部數(shù)據(jù)存 儲(chǔ)器時(shí),P2 口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2 口也接收高8 位

9、地址字節(jié)和一些控制信號(hào)。P3 口 : P3 口是一個(gè)具有內(nèi)部上拉電阻的 8位雙向I/O 口,p2輸出緩沖器 能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫“ T時(shí),內(nèi)部上拉電阻把端口拉高, 此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的 原因,將輸出電流(IIL )。P3 口亦作為AT89S52特殊功能(第二功能)使用, 如下所示。P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INTO(外部中斷0)P3.3外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀

10、選通)在 flash 編程和校驗(yàn)時(shí), P3 口也接收一些控制信號(hào)。RST:復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2個(gè)機(jī)器周期高電平將使單片機(jī) 復(fù)位??撮T狗計(jì)時(shí)完成后,RST 腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器AUXR地址8EH上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高 電平有效。ALE/PROG地址鎖存控制信號(hào)(ALE是訪問外部程序存儲(chǔ)器時(shí),鎖存低8位 地址的輸出脈沖。在flash編程時(shí),此引腳(PROG也用作編程輸入脈沖。在一 般情況下, ALE 以晶振六分之一的固定頻率輸出脈沖, 可用來作為外部定時(shí)器或 時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),A

11、LE脈沖將會(huì)跳過。 如果需要,通過將地址為8EH的SFR的第0位置“1”,ALE操作將無效。這一位 置“1”,ALE僅在執(zhí)行MOVX或MOVC旨令時(shí)有效。否則,ALE將被微弱拉高。 這個(gè)ALE使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對(duì)微控制器處于外 部執(zhí)行模式下無效。PSEN外部程序存儲(chǔ)器選通信號(hào)(PSEN是外部程序存儲(chǔ)器選通信號(hào)。當(dāng) AT89S52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次, 而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。EA/VPP訪問外部程序存儲(chǔ)器控制信號(hào)。 為使能從0000H到FFFFH的外部程 序存儲(chǔ)器讀取指令,EA必須接GND為了執(zhí)行內(nèi)

12、部程序指令,EA應(yīng)該接VCC在 flash編程期間,EA也接收12伏VPP電壓。XTAL1振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2振蕩器反相放大器的輸出端。2.1.2 STC89C52 主要性能-與MCS-51單片機(jī)產(chǎn)品兼容-8K 字節(jié)在系統(tǒng)可編程 Flash 存儲(chǔ)器-1000 次擦寫周期-全靜態(tài)操作:0Hz33Hz- 三級(jí)加密程序存儲(chǔ)器-32 個(gè)可編程 I/O 口線- 三個(gè) 16 位定時(shí)器 /計(jì)數(shù)器- 八個(gè)中斷源-全雙工UART串行通道- 低功耗空閑和掉電模式- 掉電后中斷可喚醒- 看門狗定時(shí)器-雙數(shù)據(jù)指針-掉電標(biāo)志位-內(nèi)帶2K字節(jié)EEPRO存儲(chǔ)空間-可直接使用串口下載-512

13、字節(jié)數(shù)據(jù)存儲(chǔ)空間2.2 RDA5807 模塊“ RRD-1O2V2.0 立體聲收音模塊(FM Stereo radio Module) 高靈敏度、低功耗、超小體積的調(diào)頻立體聲收音模組。采用RDA Microelectro nics的RDA5807M或RDA5802NM,此電路外圍元件少、噪聲系數(shù)極小。具有體積小、 低功耗、低成本、應(yīng)用簡(jiǎn)單、使用范圍廣等優(yōu)點(diǎn)。是一款簡(jiǎn)單易用且具極高性價(jià) 比的單芯片F(xiàn)M立體聲收音模組。09*02H ZZlnO L-TOP View -91夢(mèng)號(hào)4IM1f2Rh列(CfJt裁林號(hào) 側(cè)CLOOL !' -* 1 : .131-iHTl ! -人:.-GP1 NC

14、49-P- NC5FM It七八貯-14VDD -AOVDC模塊的引腳及外圍電路圖B,八用if!簾:221 RDA5807模塊特點(diǎn)A、采用通用的102BC模塊的封裝,用戶可直接替換使用,無需更改電路設(shè)計(jì)。B、靈敏度高、噪聲小、抗干擾能力強(qiáng)、外接元件極少、體積?。?1*11.2MMMaX、 使用極其簡(jiǎn)單。C、76-108MHZ全球FM頻段兼容(包括日本 76-91MHZ和歐美)。D I2C串行數(shù)據(jù)總線接口通訊,支持外部基準(zhǔn)時(shí)鐘輸入方式。E、完全整合的COM工藝單晶片集成電路,功耗極小。F、內(nèi)置高精度A/D (模數(shù)轉(zhuǎn)換器)及數(shù)字頻率合成器。G 內(nèi)置LDO調(diào)整、低功耗、超寬電壓使用范圍()。H、內(nèi)置

15、噪聲消除、軟靜音、低音增強(qiáng)電路設(shè)計(jì)。I、高功率32Q負(fù)載音頻輸出,直接耳機(jī)駁接,無需外接音頻驅(qū)動(dòng)放大。J、應(yīng)用簡(jiǎn)便、成本低,性價(jià)比高。2.2.2 RDA5807模塊使用說明A、模塊供電濾波電容設(shè)計(jì)是應(yīng)盡量靠近模塊電源輸入腳。B、I2C DAT, CLK芯片內(nèi)部已經(jīng)包含47k的上拉電阻;C、如用耳機(jī)的地線做天線,則參照上圖應(yīng)用大原理圖D為了模塊能良好的可靠的工作,F(xiàn)M模塊供電電壓一般應(yīng)大于2.7V以上。E、此模塊內(nèi)部已集成LDO電源輸入端可使用簡(jiǎn)單的LC電源濾波網(wǎng)絡(luò)即可。F、使用時(shí)應(yīng)做好ESDI電防護(hù)工作。G模塊可串電容后直接驅(qū)動(dòng)32ohm耳機(jī),如需推動(dòng)更大功率喇叭請(qǐng)外加功放;2.3顯示模塊顯示

16、模塊由1602液晶電路構(gòu)成。2.3.1 1602液晶簡(jiǎn)介1602液晶是工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。(16列2行)。2.3.2 1602引腳說明1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線 是背光電源線。VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全 一樣,其中:引腳功能說明tVSS般接地2VDD接電源(3V0釀晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最 藹接地電源時(shí)對(duì)上UE最高(肘比度過高時(shí)會(huì)產(chǎn)生'鬼,使用時(shí)可以通過一個(gè)代K的電位器調(diào)整 對(duì)比度).4RS沖寄苻器選擇*咼電平t時(shí)選擇數(shù)據(jù)寄存器、低 電平0時(shí)選擇

17、指令寄存甌5R/WRA療礙寫信號(hào)緝 高電平(肋進(jìn)行讀操隹,低 電平e)w進(jìn)行寫操作口6E巳或匚M端為曲也的則£滯,下曜沿淒融7DB0底4位三態(tài)、J5!向魏據(jù)總黠Ofc (SfStt)8DB1底4位三蕊 收向數(shù)據(jù)總線1fc9DB2底4位三總27向數(shù)據(jù)總線1 10DB3底4位三忑歡向數(shù)揖總線3位11DB4高也位三態(tài)、戲向數(shù)據(jù)息線4位pt2DB5高4位二產(chǎn)、雙向壩據(jù)思統(tǒng)5位| 13DB6局4位二態(tài);収向數(shù)據(jù)總搓G&14DB7高4位三態(tài)、雙向數(shù)據(jù)總袪7位(最高位)也 量busy flag)| 15BLA背光電源正極I16BLK背免電源負(fù)極.1602液晶引腳說明2.4 IIC通信根據(jù)R

18、DA5807莫塊的要求,使用IIC通信,與單片機(jī)相連接,實(shí)現(xiàn)數(shù)控。2.4.1 IIC 簡(jiǎn)介IIC是由菲利浦半導(dǎo)體公司在八十年代初設(shè)計(jì)出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個(gè)芯片可以連接到同一總 線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)施數(shù)據(jù)傳輸?shù)目刂圃础?這種方式簡(jiǎn)化了信 號(hào)輸總線。IIC串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA另一根是時(shí)鐘 線SCL所有接到IIC總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備 的時(shí)鐘線SCL接到總線的SCL上。243 IIC 時(shí)序在IIC總線傳輸過程中,將兩種特定的情況定義為開始和停止條件:當(dāng)SCL保持“高

19、”時(shí),SDA由 “高”變?yōu)椤暗汀睘殚_始條件;當(dāng) SCL保持“高”且SDA 由“低”變?yōu)椤案摺睍r(shí)為停止條件。 開始和停止條件均由主控制器產(chǎn)生。 使用硬 件接口可以很容易地檢測(cè)到開始和停止條件, 沒有這種接口的微機(jī)必須以每時(shí)鐘 周期至少兩次對(duì)SDA取樣,以檢測(cè)這種變化。SDA線上的數(shù)據(jù)在時(shí)鐘“高”期間必須是穩(wěn)定的,只有當(dāng)SCL線上的時(shí)鐘信號(hào)為低時(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ā)送

20、器進(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ù)倪^程中,在用到主控接收器的情況下, 主控接收器必須發(fā)出一數(shù)據(jù)結(jié)束信號(hào)給被控發(fā)送器,從而使被控發(fā)送器釋放數(shù)據(jù)線,以允許主控器產(chǎn)生停止條件。3系統(tǒng)程序設(shè)計(jì)程序框圖初始化液晶顯示初始值檢測(cè)是否有按 、鍵按下-10 - / 26word.模塊進(jìn)行搜索頻道和音量的相關(guān)變化液晶顯示當(dāng)前頻率和音L結(jié)束具體程序詳見

21、附錄4.1印刷電路板的布線設(shè)計(jì)此過程是用Altium Designer來完成。布線設(shè)計(jì)按以下流程實(shí)現(xiàn)。圖4.1布線流程布線時(shí)的注意事項(xiàng):(1)在擺放元件時(shí)先按原理圖擺放,再細(xì)調(diào)位置。 所用的為單面板,故布線時(shí)應(yīng)在底層 Button Layer上。 布線區(qū)域應(yīng)在禁止布線層 Keep Out Layer上圈定。(4)兩根線之間的距離不能太小,在線拐彎處不能用成直角,一般用45度角為宜。(5) 線寬設(shè)置在 0.8 1.0 毫米,在一些拐角的地方還可以適當(dāng)?shù)匮a(bǔ)線,以 防止腐蝕的時(shí)候?qū)⒕€腐蝕掉或是因?yàn)榫€太細(xì)而對(duì)電路造成不良的影響。4.2 印刷電路板的制作首先,把PCB合打印出來,用砂紙把銅板除去外層的氧

22、化銅,在預(yù)熱熨斗后, 把PCB放到板上,把線熨至銅板上。待銅板冷卻后再將紙從銅板撕下, 檢查銅板 上有沒有斷線的地方, 若有少量, 則用油性筆把線合補(bǔ)上! 太多的話就用砂紙把 線去除之后再重新燙過。然后,盡快把熨好的銅板放到氯化鐵溶液中。第三,腐蝕完后先進(jìn)行打孔,再把銅線上的墨去掉。這樣打孔比較方便。 第四,就是裝元件,在此過程中一定要注意有正負(fù)極性的元件,比如 LED 燈、電解電容等。最后進(jìn)行焊接。5 電路板的調(diào)試調(diào)試過程是一個(gè)非常重要的環(huán)節(jié),這是整個(gè)電路板成功與否的關(guān)鍵。首先應(yīng)斷開電源, 用數(shù)字萬用表認(rèn)真檢查電路連線是否有誤, 是否有短路或 者斷路和虛焊等的現(xiàn)象。 經(jīng)過初步檢查以后, 方可

23、接通電源。 此時(shí)還不應(yīng)該把芯 片裝上。接上電源時(shí)應(yīng)該明確電源的正負(fù)極性, 切不可接反, 一接反則馬上可能會(huì)出 現(xiàn)燒毀重要元件的情況! 時(shí)刻用手觸摸各元件有沒有發(fā)熱現(xiàn)象, 并注意其是否冒 煙等。待過一段時(shí)間穩(wěn)定后,如沒有出現(xiàn)不良的現(xiàn)象,則電路基本上正常,可依 次用數(shù)字萬用表檢查各點(diǎn)的工作電壓情況, 各點(diǎn)工作穩(wěn)定, 并且確認(rèn)芯片插座兩 端的電壓符合芯片的工作電壓時(shí),則可以關(guān)閉電源,把芯片裝上。 附錄主程序#include "reg52.h"#include "intrins.h"#include "lcd.h"#include "

24、;IIC.h"#include "delay.h"sbit K1 = P2A0;sbit K2 = P2A1;sbit K3 = P2A2;sbit K4 = P2A3;unsigned long frequency;/ RDA5807 寄存器 unsigned char RDA_reg_data8 =0xd0,0x00, / 02H0x00,0x00, / 03H0x00,0x40, / 04H0x90,0x88, / 05H;unsigned char code cdis1 = "FM cui's RADIO "unsigned c

25、har code cdis2 = "FM VOL "char code reserve3_at_ 0x3b; / 保留 0x3b 開始的 3 個(gè)字節(jié) 連續(xù)寫寄存器子函數(shù)void RDA5807_write_reg(void)uchar i;I2C_start();/收音模塊寫入操作I2C_write_byte(0x20);/寄存器連續(xù)寫操作for(i=0; i<8; i+)I2C_write_byte(RDA_reg_datai);I2C_stop();連續(xù)讀寄存器子函數(shù)void RDA5807_read_reg(uchar *reg_buf)I2C_start();

26、/ 收音模塊讀取操作I2C_write_byte(0x21);/ 寄存器連續(xù)讀操作reg_buf0 = I2C_read_byte(I2C_ACK); reg_buf1 = I2C_read_byte(I2C_ACK); reg_buf2 = I2C_read_byte(I2C_ACK);reg_buf3 = I2C_read_byte(I2C_NACK);I2C_stop();模塊上電初始化子函數(shù)void RDA5807_power(void)delayms(50);/ 發(fā)送軟件復(fù)位指令RDA_reg_data0 = 0x00;RDA_reg_data1 = 0x02;RDA5807_wri

27、te_reg();delayms(10);/ 收音模塊默認(rèn)參數(shù)RDA_reg_data0 = 0xd0;RDA_reg_data1 = 0x01;RDA5807_write_reg(); 功能描述:收音模塊自動(dòng)尋臺(tái)模式void RDA5807_FM_seek(void)uint chan;uchar reg_data4 = 0x00, 0x00, 0x00, 0x00;RDA_reg_data3 &= (1 << 4); / 調(diào)諧禁用/ 內(nèi)部自動(dòng)尋臺(tái)使能RDA_reg_data0 |= (1 << 0); /SEEK 位置 1 RDA5807_write_reg

28、();/ 等待 STC 標(biāo)志置位while(0 = (reg_data0 & 0x40)delayms(20);/ 讀取內(nèi)部狀態(tài)RDA5807_read_reg(reg_data);/ 獲取當(dāng)前工作頻點(diǎn)chan = reg_data0 & 0x03;chan = reg_data1 | (chan << 8);chan = chan << 6;/ 保存當(dāng)前工作頻點(diǎn)RDA_reg_data2 = (chan >> 8) & 0xff;RDA_reg_data3 = (chan & 0xff);頻率顯示子函數(shù)void show_f

29、requency(void)unsigned char i,display5;unsigned int temp;計(jì)算temp = (RDA_reg_data2*256)+(RDA_reg_data3&0xc0); /temp = temp>>6;frequency = (unsigned long)(100*temp+87000)/100;for(i=0; i<5; i+) / displayi = 0x00;清顯存單元display0 = (frequency)/1000 ; / display1 = (frequency%1000)/100; display2

30、= (frequency%100)/10;display3 = 0x2e;/display4 = (frequency%10);數(shù)據(jù)轉(zhuǎn)換小數(shù)點(diǎn)if(display0 = 0)display0 = display1+0x30; display1 = display2+0x30; display2 = display3;display3 = display4+0x30; display4 = 0x20;elsedisplay0 += 0x30;display1 += 0x30;display2 += 0x30;display4 += 0x30;lcd_pos_xy(3,2); /lcd_wdat(

31、display0);lcd_wdat(display1);lcd_wdat(display2);lcd_wdat(display3);lcd_wdat(display4);頻率顯示如果高位為 0低位顯存內(nèi)容進(jìn)入高位顯存低位不顯示音量值顯示 音量顯示子函數(shù) void show_volume()unsigned char temp,display2;temp = RDA_reg_data7 & 0x0f; / 取音量值display0 = temp/10;display1 = temp%10;if(display0 = 0) /display0 = display1; / display1

32、 = 0x20;/ elsedisplay1 += 0x30;display0 += 0x30;lcd_pos_xy(13,2); /lcd_wdat(display0);lcd_wdat(display1);主函數(shù)void main(void)P0 = 0xff;P1 = 0xff;P2 = 0xff;lcd_init();lcd_w_string(0,1,cdis1,0);lcd_w_string(0,2,cdis2,0);RDA5807_power();while(1)if(K1 = 0)delayms(20);if(K1 = 0)RDA_reg_data0 |= (1 <<

33、 1);/SEEK UPRDA5807_FM_seek();while(K1 = 0);if(K2 = 0) delayms(20); if(K2 = 0) RDA_reg_data0 &= (1 << 1); /SEEK DOWNRDA5807_FM_seek(); while(K2 = 0);if(K3 = 0) delayms(20); if(K3 = 0) if(RDA_reg_data7 & 0x0f) < 0x0f)RDA_reg_data0 = 0xd0;RDA_reg_data1 = 0x01;RDA_reg_data3 &= (1 &

34、lt;< 4);RDA_reg_data7+; /RDA5807_write_reg();while(K3 = 0);if(K4 = 0)delayms(20);if(K4 = 0)if(RDA_reg_data7 & 0x0f) > 0x00)RDA_reg_data0 = 0xd0;RDA_reg_data1 = 0x01;RDA_reg_data3 &= (1 << 4);RDA_reg_data7-;/RDA5807_write_reg();while(K4 = 0);show_volume();show_frequency();音量遞增音量遞減

35、Lcd 程序#include "reg52.h"#include "intrins.h"#include "lcd.h"#include "delay.h"#define uchar unsigned char#define uint unsigned int#define DATA_PORT P1sbit LCD_RS = P2A6;sbit LCD_RW =卩2八5;sbit LCD_EN = P2A4;檢查L(zhǎng)CD忙狀態(tài)lcd_busy 為 1時(shí),忙,等待。 lcd-busy 為 0 時(shí),閑,可寫指令與數(shù)據(jù) b

36、it lcd_busy()bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(DATA_PORT&0x80);LCD_EN = 0;return(result);寫指令數(shù)據(jù)到 LCDRS=L , RW=L E=S脈沖,D0-D7=f 令碼。Check=1 ,進(jìn)行忙檢測(cè)。void lcd_wcmd(uchar cmd, bit Check)if(Check)while(lcd_busy();LCD_RS = 0; LCD_RW = 0;LCD_EN = 0; delayNOP();DATA_PORT

37、= cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0;寫顯示數(shù)據(jù)到 LCDRS=H, RW=L 丘=高脈沖,D0-D7=t據(jù)。void lcd_wdat(uchar dat) while(lcd_busy(); / 進(jìn)行忙檢測(cè)LCD_RS = 1; LCD_RW = 0;LCD_EN = 0;DATA_PORT = dat; delayNOP();LCD_EN = 1; delayNOP();LCD_EN = 0;delayms(50); lcd_wcmd(0x38,0); /16*2 delayms(5);LCD 初始化設(shè)定 void l

38、cd_init() 顯示, 5*7 點(diǎn)陣, 8位數(shù)據(jù)lcd_wcmd(0x38,0); / delayms(5);lcd_wcmd(0x38,0);delayms(5);不進(jìn)行忙檢測(cè),強(qiáng)制執(zhí)行進(jìn)行忙檢測(cè)顯示開,關(guān)光標(biāo)移動(dòng)光標(biāo)清除LCD的顯示內(nèi)容lcd_wcmd(0x38,1); / delayms(5); lcd_wcmd(0x0c,1); / delayms(5); lcd_wcmd(0x06,1); / delayms(5); lcd_wcmd(0x01,1); / delayms(5);設(shè)定顯示位置void lcd_pos_xy(uchar pos_x,uchar pos_y) uchar pos_temp;pos_temp=pos_x & 0x0f; pos_y &= 0x0f;if(pos_y=0x01) pos_temp |= 0x80; else if(pos_y=0x02) pos_temp |= 0xc0;lcd_wcmd(pos_temp,1);寫字符串子函數(shù)void lcd_w_string(uchar pos_x,uchar pos_y,uchar code *str,

溫馨提示

  • 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. 人人文庫(kù)網(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)論