基于51單片機的數(shù)控調(diào)頻收音機_第1頁
基于51單片機的數(shù)控調(diào)頻收音機_第2頁
基于51單片機的數(shù)控調(diào)頻收音機_第3頁
基于51單片機的數(shù)控調(diào)頻收音機_第4頁
基于51單片機的數(shù)控調(diào)頻收音機_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 課程設計論文 題 目:基于RDA5807的數(shù)控FM收音機 院 (系): 信息與通信學院 專 業(yè): 電子信息工程 學生姓名: 杜俊峰 學 號: 1100220509 指導教師: 蔡曉東 2013 年 12月15日摘 要此收音機基于RDA5807收音模塊,通過STC89C52單片機來控制頻率顯示、音量控制,單片機與收音模塊之間通過IIC通信協(xié)議來進行通信控制。該數(shù)控收音機具有噪音消除、軟靜音、低音增強,而且靈敏度高、噪聲小,抗干擾能力強,能夠在液晶屏上實時顯示頻率和聲音。并且體積小、方便攜帶。關鍵詞:RDA5807,STC89C52.IIC通信AbstractThis radio radio m

2、odule based RDA5807 by STC89C52 microcontroller to control the frequency display, through IIC communication protocol for communication between the control volume control, microcontroller and radio module. The digital radio with noise cancellation, soft mute, bass boost, and high sensitivity, low noi

3、se, strong anti-interference ability to display the frequency and sound in real time on the LCD screen. And small, easy to carry.Key words:RDA5807,STC89C52 、IIC目 錄引言11 設計要求及方案選擇11.1 設計要求11.2 方案選擇11.2.1 方案對比11.2.2 方案構圖21.2.3 各部分作用22 理論分析與設計32.1 單片機最小系統(tǒng)設計32.1.1 STC89C52特性32.1.2 STC89C521引腳功能32.2 收音模塊及

4、存儲芯片電路設計43 電路設計63.1 硬件電路設計63.1.1單片機最小系統(tǒng)電路63.1.2 模塊電路設計64 軟件設計74.1 IIC通信協(xié)議分析74.2 程序流程圖95系統(tǒng)調(diào)試105.1 調(diào)試結果105.2 結果分析106 結論10謝 辭11參考文獻12附錄.13 桂林電子科技大學課程設計(論文) 第27頁 共29頁引言 收音機在日常生活中必不可少,在信息化的今天,數(shù)字化已經(jīng)成為時代潮流,數(shù)控收音機越來越受到人們的青睞,相比于傳統(tǒng)收音機,數(shù)控收音機以良好的人機互動、操作簡單化更符合人們的要求1 設計要求及方案選擇1.1 設計要求(1)65-108MHz全球FM接收頻段相容(包括日本76-

5、91MHz和歐美87.5-108MHz)(2)具備噪聲消除、軟靜音、低音增強等功能(3)靈敏度高、噪聲小、抗干擾能力強(4)具備頻率顯示功能1.2 方案選擇 在如今這個信息化時代,信息的接收和處理顯得越發(fā)重要,收音機作為傳統(tǒng)接受信息的工具,已經(jīng)深入到人們的日常生活中。在電子領域,對于制作調(diào)頻收音機,有以下兩種方法。一是用分立元件設計收音機。二是運用集成模塊用數(shù)控來做收音機。1.2.1 方案對比方案一:分立元件所做的收音機,其缺點顯而易見,調(diào)試難度大,音質(zhì)差,成本相比集成收音機高很多,在現(xiàn)在基本上已經(jīng)被淘汰了。方案二:用集成模塊做收音機。集成模塊做的收音機有以下特點:(1)體積和功耗小。一片集成

6、電路放大器可具有數(shù)十個晶體管、二極管、電阻和電容等所組成電路的功能。但其體積和功耗僅相當于一個小功率晶體管。     (2)可靠性高。由于集成電路外部連線和焊點極少,減小了出故障的可能性,故可靠性高。      (3)保真度好。由于集成電路是把所有晶體管都制在一塊片子上,晶體管的配對和靜態(tài)電流等都可處于最佳狀態(tài),所以失真度很小,一般都小于1。故用它制作的收音機保真度較好。     (4)靈敏度高。這是因為集成電路可以在其內(nèi)部多制一些晶體管,從而提高整機的靈敏度。&#

7、160;    (5)功率大、音質(zhì)優(yōu)美。用集成電路和大功率晶體管共同組裝的收音機能達到幾十瓦以上的不失真功率輸出,功率余量大。因此,聲音洪亮,音質(zhì)優(yōu)美。       (6)頻響寬。集成電路放大器的開環(huán)增益非常高,接成閉環(huán)后能減小失真和加寬頻響。其頻響范圍可從40赫到20千赫,比分立元件組裝的收音機頻響寬。     (7)穩(wěn)定性好、性能指標高。集成電路工作穩(wěn)定,為提高整機性能,電路可設計成分立元件難以實現(xiàn)的高性能電路。    &

8、#160; (8)集成電路中相鄰元件的參數(shù)匹配優(yōu)良,故放大器的零點漂移和共模抑制比等直流參數(shù)得到改善。在輸入端無信號時,功率輸出級的中點始終保持零電位,不會因溫漂而燒揚聲器。這是目前元件所達不到的。      (9)裝配和調(diào)試比較簡單。用集成元件組成的功放電路,只要焊接無誤,幾乎不需調(diào)整,即能保證放音。對于變頻和中放集成電路,則不必調(diào)整靜態(tài)工作點。用集成元件組成的組合式收音機,只要調(diào)準中頻頻率,完成三點統(tǒng)調(diào)即可。     (10)價格便宜。即在整機性能和功能相同的情況下,成本比分立元件收音機低很多,這樣有

9、利于收音機的推廣普及。此外,集成電路的應用,為收音機的多功能創(chuàng)造了必備的條件。例如,自動選臺、預選節(jié)目、頻率的數(shù)字顯示等性能,已隨著集成電路的應用而相繼實現(xiàn)。所以我最終選擇了方案二,選用RDA5807收音模塊做調(diào)頻收音機。1.2.2 方案構圖基于RDA5807的數(shù)控收音機,在電子領域有許多相關的方案和設計思路,在仔細考量現(xiàn)有的條件和本身的專業(yè)能力后我選擇用STC89C52單片機作為控制系統(tǒng)來驅(qū)動RDA5807收音模塊。由于5807的工作電壓只要3.3V,而單片機的工作電壓是5V,所以我選用AS1117降壓芯片來將5V的電壓降到3.3V來給收音模塊供電,因為擔心內(nèi)存不夠,我外加一塊24C02存儲

10、芯片,與RDA5807一起通過IIC串口通信與單片機最小系統(tǒng)相連。我用四個按鍵分別控制音量的加減和上下搜索頻道,并且用1602液晶來顯示當前頻道頻率和音量大小。因為都是模塊化的器件,所以本次的作品體積小,攜帶方便,有實用價值。方案利用的是單片機最小系統(tǒng)、液晶顯示部分、按鍵控制和收音模塊與存儲芯片部分共同等組成的系統(tǒng),下圖為方案系統(tǒng)框圖。液晶顯示STC89C52單片機控制系統(tǒng)收音模塊及存儲芯片 按鍵控制 1-1 方案系統(tǒng)框圖1.2.3 各部分的作用(1)液晶顯示。液晶顯示用1602液晶屏來顯示頻率和音量信息。單片機最小系統(tǒng)將收到的頻率和音量數(shù)據(jù)發(fā)送給液晶,讓其顯示出來。(2)按鍵控制。四個按鍵分

11、別用來控制音量大小和頻率搜索,提供人機互動,通過單片機來控制收音模塊(3)單片機最小系統(tǒng)。用STC89C52單片機來實現(xiàn)數(shù)控,接受按鍵信息來控制收音模塊,再將收音模塊反饋的信息傳給液晶。(4)收音模塊。通過和最小系統(tǒng)進行信息交換,按要求完成用戶的指令2. 理論分析與設計2.1 單片機最小系統(tǒng)電路設計2.1.1 STC89C52特性 STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程

12、Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結構(兼容傳統(tǒng)51的5向量2級中斷結構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為

13、止。最高運作頻率35MHz,6T/12T可選。STC89C52實物圖2.1.2 STC89C52引腳功能1電源:VCC - 芯片電源,接+5V; VSS - 接地端; 2.時鐘: XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 3.控制線: 控制線共有4根:  ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖  ALE功能:用來鎖存P0口送出的低8位地址  PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號。 RST

14、/VPD:復位/備用電源。  RST(Reset)功能:復位信號輸入端。  VPD功能:在Vcc掉電情況下,接備用電源。 EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。  EA功能:內(nèi)外ROM選擇端。  Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 4.I/O口線:P0、P1、P2、P3共四個八位口。     P0口是三態(tài)雙向口,通稱數(shù)據(jù)總線口,因為只有該口能直接用于對外部存儲器的讀/寫操作。P0口也用以輸出外部存儲器的低8位地圖1址。由于是分時輸出,故應在外部加

15、鎖存器將此地址數(shù)據(jù)鎖存,地址鎖存,信號用ALE。     P1口是專門供用戶使用的I/O口,是準雙向口。     P2口是從系統(tǒng)擴展時作高8位地址線用。不擴展外部存儲器時,P2口也可以作為用戶I/O口線使用,P2口也是準雙向口。     P3口是雙功能口,該口的每一位均可獨立地定義為第一I/O功能或第二I/O功能。作為第一功能使用時操作同P1口。STC89C52的引腳圖2.2 收音模塊及存儲芯片電路設計 “RRD-102V2.0”立體聲收音模塊( FM Stereo radio Module) 高靈敏度、

16、低功耗、超小體積的調(diào)頻立體聲收音模組。采用RDA Microelectronics的RDA5807M(或RDA5802NM),此電路外圍元件少、噪聲系數(shù)極小。具有體積小、低功耗、低成本、應用簡單、使用范圍廣等優(yōu)點。是一款簡單易用且具極高性價比的單芯片F(xiàn)M立體聲收音模組。它能很好的完成課設要求。由于它只需要3V電壓工作,我用as1117線性穩(wěn)壓芯片將5v的單片機工作電壓降到3V。模塊的引腳及外圍電路圖AS1117應用電路3. 電路設計3.1 硬件電路的設計 本次課設的硬件電路主要分成兩大塊來做板,一塊是單片機最小系統(tǒng)和液晶及按鍵的部分;另一部分是以收音模塊為主的模塊部分。3.1.1 單片最小系統(tǒng)

17、部分電路圖 單片機最小系統(tǒng)外圍電路只需要接復位電路及震蕩電路就行,而顯示及按鍵只需要接到I/O口就行了。下面是其原理圖:3.1.2 模塊電路設計 由單片機給1117芯片和24C02供電,再將降壓得到的3V電壓供給RDA5807模塊,由于模塊和芯片的外圍電路都資料上都已經(jīng)給出來了,所以只需要將其連接到一起就可以了。J1接單片機電源,J3接單片機I/O口模塊原理圖4. 軟件設計4.1 IIC通信協(xié)議分析 本次課程設計硬件電路設計比較簡單,但是程序比較難,它的難度在于RDA5807采用的是IIC通信模式,這種通信模式對時序要求很嚴格。IIC通信協(xié)議有以下特點:(1)只要求兩條總線線路 一條串行數(shù)據(jù)線

18、SDA 一條串行時鐘線SCL (2) 每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機/從機關系軟件設定地址;主機可以作為主發(fā)送器或主機接收器 (3)它是一個真正的多主機總線,如果兩個或更多主機同時初始化數(shù)據(jù)傳輸可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞 (4)串行的 8 位雙向數(shù)據(jù)傳輸位速率在標準模式下可達 100kbit/s 快速模式下可達 400kbit/s 高速模式下可達.4Mbit/s (5)片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整(6) 連接到相同總線的IC數(shù)量只受到總線的最大電容400pF 限制I2C協(xié)議總線信號時序分析1 .數(shù)據(jù)的有效性:SDA線上的數(shù)據(jù)必須

19、在時鐘的高電平周期保持穩(wěn)定數(shù)據(jù)線的高或低電平狀態(tài)只有在 SCL線的時鐘信號是低電平時才能改變。2 .起始和停止條件當SCL線是高電平時,SDA線從高電平向低電平切換,這個情況表示起始條件。當SCL線是高電平時,SDA線由低電平向高電平切換表示停止條件。3. 總線空閑狀態(tài)SDA和SCL兩條信號線都處于高電平,即總線上所有的器件都釋放總線,兩條信號線各自的上拉電阻把電平拉高; 4 .數(shù)據(jù)傳輸與應答信號ACK發(fā)送到SDA線上的數(shù)據(jù)必須是8位的。每次傳輸可以發(fā)送的數(shù)據(jù)不受限制。每個字節(jié)后必須在時鐘的第9個脈沖期間釋放數(shù)據(jù)總線(SDA為高),由接收器發(fā)送一個ACK(把數(shù)據(jù)總線的電平拉低)來表示數(shù)據(jù)成功接

20、收。 首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB)。如果從機要完成一些其他功能后(例如一個內(nèi)部中斷服務程序)才能接收或發(fā)送下一個完整的數(shù)據(jù)字節(jié),可以使時鐘SCL保持低電平迫使主機進入等待狀態(tài)。當從機準備好接收下一個數(shù)據(jù)字節(jié)并釋放時鐘線SCL后,數(shù)據(jù)傳輸繼續(xù)。4. 地址格式數(shù)據(jù)的傳輸遵循如圖4.1 完整的數(shù)據(jù)傳送所示,在起始條件之后,發(fā)送一個7位的從機地址,緊接著第8位是數(shù)據(jù)方向(R/ W),0-表示發(fā)送數(shù)據(jù)(寫),1-表示接收數(shù)據(jù)(讀)。數(shù)據(jù)傳輸一般由主機產(chǎn)生的停止位(P)終止。但是如果主機仍希望在總線上通訊,它可以產(chǎn)生重復起始條件(Sr),和尋址另一個從機,而不是首先產(chǎn)生一個停止條件。在這種傳輸中,可

21、能有不同的讀/寫格式結合?,F(xiàn)代電子系統(tǒng)中,有為數(shù)眾多的IC需要進行相互之間以及與外界的通信。為了提供硬件的效率和簡化電路的設計,PHILIPS開發(fā)了一種用于內(nèi)部IC控制的簡單的雙向兩線串行總線I2C。I2C總線支持任何一種IC制造工藝,并且PHILIPS和其他廠商提供了種類非常豐富的I2C兼容芯片。作為一個專利的控制總線,I2C已經(jīng)成為世界性的工業(yè)標準。 每個器件都有一個唯一的地址,而且可以是單接收的器件(例如:LCD驅(qū)動器)或者可以接收也可以發(fā)送的器件(例如:存儲器)。發(fā)送器或接收器可以在主模式或從模式下操作,這取決于芯片是否必須啟動數(shù)據(jù)的傳輸還是僅僅被尋址。I2C是一個多主總線,即它可以由

22、多個連接的器件控制?;镜腎2C總線規(guī)范于20年前發(fā)布,其數(shù)據(jù)傳輸速率最高為100Kbits/s,采用7位尋址。但是由于數(shù)據(jù)傳輸速率和應用功能的迅速增加,I2C總線也增強為快速模式(400Kbits/s)和10位尋址以滿足更高速度和更大尋址空間的需求。I2C總線始終和先進技術保持同步,但仍然保持其向下兼容性。并且最近還增加了高速模式,其速度可達3.4Mbits/s。它使得I2C總線能夠支持現(xiàn)有以及將來的高速串行傳輸應用,例如EEPROM和Flash存儲器。 IIC通信協(xié)議一般的過程: 1-先向總線發(fā)出芯片地址 2-如果有芯片地址正確的芯片,會產(chǎn)生一個SDA上應答。 3-接著主機再發(fā)出應答過的芯

23、片發(fā)出將要所進行操作的片內(nèi)地址。 4-芯片地址正確的芯片,會再產(chǎn)生一個SDA上應答。 5-此時如果是讀操作,從芯片將輸出數(shù)據(jù)到SDA上。如果是寫操作,主機會將數(shù)據(jù)寫到SDA上。4.2 程序流程圖:根據(jù)以上資料,結合單片機知識,編出了相關程序,這是程序流程圖:程序框圖初始化液晶顯示初始值檢測是否有按鍵按下模塊進行搜索頻道和音量的相關變化液晶顯示當前頻率和音量結束具體程序詳見附錄5. 系統(tǒng)測試5.1 調(diào)試結果:所能接受的頻率87.0MHZ87.1MHZ88.0M88.3M89.8M90.0M94.1M95.0M96.0M97.799.0M100.0101.1101.4101.51021041051

24、061085.2 結果分析: 根據(jù)結果可知,其滿足了87108MHZ(歐美)頻率接受要求,并且具有良好的噪音消除和抗干擾能力。液晶顯示頻率和音量,完全符合課設題目要求,因此,此作品達到老師所給要求,是成功的。6. 總結通過這段時間的辛苦努力,在老師和大家的幫助下,終于把這個課程設計題目完成了,也能夠滿足課設題目所定的要求,具有頻率顯示功能,并且能夠搜索到相應范圍內(nèi)的頻率,采用數(shù)字控制,操作簡單,攜帶方便。謝 辭 本論文設計在老師的悉心指導和嚴格要求下業(yè)已完成,從課題選擇到具體的寫作過程,論文初稿與定稿無不凝聚著心血和汗水,在我的課程設計期間,老師為我提供了種種專業(yè)知識上的指導和一些富于創(chuàng)造性的

25、建議,老師一絲不茍的作風,嚴謹求實的態(tài)度使我深受感動,沒有這樣的幫助和關懷和熏陶,我不會這么順利的完成課程設計。在此向老師表示深深的感謝和崇高的敬意!同時,在論文寫作過程中,我還參考了有關的書籍和論文,在這里一并向有關的作者表示謝意。我還要感謝同組的各位同學以及我的各位室友,在課程設計的這段時間里,你們給了我很多的啟發(fā),提出了很多寶貴的意見,對于你們幫助和支持,在此我表示深深地感謝!參考文獻1 康華光. 電子技術基礎M.北京:高等教育出版,2006,68(3):4057.2 李強. 51系列單片機應用軟件編程技術M.北京:北京航空航天大學,2009:7790.3 譚浩強. C語言程序設計教程M

26、.北京:高等教育出版社,1991:3032.4  樊昌信通信原理(第6版)M.北京:國防工業(yè)出版社,2006:20655 宋樹祥,周冬梅.高頻電子線路.M北京大學出版社,2007年2月 6 陳邦媛.射頻通信電子線路學習指導.M科學出版社,2007年6月  7 吳慎山.高頻電子線路.M電子工業(yè)出版社,2007年1月 8 謝沅清.通信電子線路.M電子工業(yè)出版社,2007年7月 9 曾興雯.高頻電子線路.M高等教育出版社,2004年1月 10 楊翠娥.高頻實驗與課程設計.

27、M哈爾濱工程大學出版社,2005年1月 11 于洪珍.通信電子線路.M清華大學出版社,2006年1月 12 陳利永.電子電路基礎.M中國鐵道出版社,2006年7月 附 錄附錄一程序/*主程序*/#include "reg52.h"#include "intrins.h"#include "lcd.h"#include "IIC.h"#include "delay.h"sbit K1 = P21;sbit K2 = P22;sbit K3 = P2

28、3;sbit K4 = P24; unsigned long frequency;/ RDA5807 寄存器unsigned char RDA_reg_data8 = 0xd0,0x00, / 02H 0x00,0x00, / 03H 0x00,0x40, / 04H 0x90,0x88, / 05H;unsigned char code cdis1 = "XiaoDU's RADIO "unsigned char code cdis2 = "FM VOL "char code reserve3_at_ 0x3b; /保留0x3b開始的3個字節(jié)/

29、* 連續(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(); / 收音模塊讀取操作 I2C_write_byte(0x21); / 寄存器連續(xù)讀操作 reg_buf0 = I2C_read_

30、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ā)送軟件復位指令 RDA_reg_data0 = 0x00; RDA_reg_data1 = 0x02; RDA5807_write_reg(); delayms(10); / 收音模塊默認參數(shù) RDA_reg_data0 =

31、 0xd0; RDA_reg_data1 = 0x01; RDA5807_write_reg();/* 功能描述:收音模塊自動尋臺模式*/void RDA5807_FM_seek(void) uint chan; uchar reg_data4 = 0x00, 0x00, 0x00, 0x00; RDA_reg_data3 &= (1 << 4); /調(diào)諧禁用 / 內(nèi)部自動尋臺使能 RDA_reg_data0 |= (1 << 0); /SEEK位置1 RDA5807_write_reg(); / 等待STC 標志置位 while(0 = (reg_data0

32、& 0x40) delayms(20); / 讀取內(nèi)部狀態(tài) RDA5807_read_reg(reg_data); / 獲取當前工作頻點 chan = reg_data0 & 0x03; chan = reg_data1 | (chan << 8); chan = chan << 6; / 保存當前工作頻點 RDA_reg_data2 = (chan >> 8) & 0xff; RDA_reg_data3 = (chan & 0xff);/* 頻率顯示子函數(shù)*/void show_frequency(void) unsigne

33、d char i,display5; unsigned int temp; 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 ; /數(shù)據(jù)轉(zhuǎn)換 display1 = (frequency%1000)/100; display2 = (frequen

34、cy%100)/10; display3 = 0x2e; /小數(shù)點 display4 = (frequency%10); if(display0 = 0) display0 = display1+0x30; display1 = display2+0x30; display2 = display3; display3 = display4+0x30; display4 = 0x20; else display0 += 0x30; display1 += 0x30; display2 += 0x30; display4 += 0x30; lcd_pos_xy(3,2); /頻率顯示 lcd_wd

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

36、 = 0x20; /低位不顯示 else display1 += 0x30; display0 += 0x30; lcd_pos_xy(13,2); /音量值顯示 lcd_wdat(display0); lcd_wdat(display1); 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) RD

37、A_reg_data0 |= (1 << 1); /SEEK UP RDA5807_FM_seek(); while(K1 = 0); if(K2 = 0) delayms(20); if(K2 = 0) RDA_reg_data0 &= (1 << 1); /SEEK DOWN RDA5807_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_data

38、1 = 0x01; RDA_reg_data3 &= (1 << 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_r

39、eg(); while(K4 = 0); show_volume(); show_frequency();/*模塊子程序*lcd.c*/#include "reg52.h"#include "intrins.h"#include "lcd.h"#include "delay.h"#define uchar unsigned char#define uint unsigned int#define DATA P1sbit LCD_RS = P00; sbit LCD_RW = P01;sbit LCD_EN = P0

40、2;/* 檢查LCD忙狀態(tài) lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delay (); result = (bit)(DATA &0x80); LCD_EN = 0; return(result); /* 寫指令數(shù)據(jù)到LCD RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 Check=1,進行忙檢測。*/void lcd_wcmd(uchar cmd, bit Check) if(Check)while(lcd_

41、busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; delay (); DATA = cmd; delay (); LCD_EN = 1; delay (); LCD_EN = 0;void lcd_wdat(uchar dat) while(lcd_busy(); /進行忙檢測 LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; DATA = dat; delay (); LCD_EN = 1; delay (); LCD_EN = 0;/* LCD初始化設定*/void lcd_init() delayms(50); lcd_wcmd

42、(0x38,0); /16*2顯示,5*7點陣,8位數(shù)據(jù) delayms(5); lcd_wcmd(0x38,0); /不進行忙檢測,強制執(zhí)行。 delayms(5); lcd_wcmd(0x38,0); delayms(5);lcd_wcmd(0x38,1); /進行忙檢測 delayms(5); lcd_wcmd(0x0c,1); /顯示開,關光標 delayms(5); lcd_wcmd(0x06,1); /移動光標 delayms(5); lcd_wcmd(0x01,1); /清除LCD的顯示內(nèi)容 delayms(5);/* 設定顯示位置*/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_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論