2022年RDA5807m+IIC收音機(jī)51單片機(jī)C程序上課講義_第1頁(yè)
2022年RDA5807m+IIC收音機(jī)51單片機(jī)C程序上課講義_第2頁(yè)
2022年RDA5807m+IIC收音機(jī)51單片機(jī)C程序上課講義_第3頁(yè)
2022年RDA5807m+IIC收音機(jī)51單片機(jī)C程序上課講義_第4頁(yè)
2022年RDA5807m+IIC收音機(jī)51單片機(jī)C程序上課講義_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、RDA5807m+I I C 收 音 機(jī) 51 單 片 機(jī) C 程 序RDA5807m 驅(qū)動(dòng)程序 + IIC 程序/* * 介紹 : RD5807M 收音機(jī)程序 供電 3.3v 主控使用 51單片機(jī) 顯示使用LCD1602 * 作者 : 胖子* 時(shí)間 : 2022-1-5 * 地點(diǎn) :桂林電子科技高校* */ #include #include #include #define uchar unsigned char #define uint unsigned int #define ulint unsigned long int #define lint long int uchar cod

2、e xian44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; uchar code hang=0 xfe,0 xfd,0 xfb,0 xf7; / 矩陣鍵盤(pán)掃描使用/RDA 的寄存器地址#define RDA_R00 0X00 /讀出 16 個(gè)位的 ID =0X5800 #define RDA_R02 0X02 /DHIZ15,DMUTE14 靜音,MONO13 聲道,BASS12重低音 ,SEEKUP9,SEEK8,SKMODE7,CLK_MODE6:4 時(shí)鐘源挑選 ,SOFTRESET1軟復(fù)位 ,ENABLE0 電源使能#define RDA_R03 0

3、X03 /CHAN15:6,TUNE4,BAND3:2,SPACE1:0 設(shè)置頻率 帶寬 步長(zhǎng)#define RDA_R04 0X04 /STCIEN14,DE11,I2Senable6, #define RDA_R05 0X05 /INT_MODE15,SEEKTH14:8 設(shè)定自動(dòng)搜索信號(hào)強(qiáng)度閥值,LNA_PORT_SEL7:6=0b10,LNA_ICSEL_BIT5:4,VOLUME3:0 音量 ; #define RDA_R0A 0X0A /STC14seek complete SF13seek fail readchan9:0當(dāng)前頻道#define RDA_R0B 0X0B /RSS

4、I15:9,FM TRUE8 當(dāng)前頻道是一個(gè)節(jié)目臺(tái)#define RDA_READ 0X23 / 讀 RDA5807 #define RDA_WRITE 0X22 /寫(xiě) RDA5807 /IO 操作函數(shù)sbit SDA=P21; sbit SCL=P20; sbit RW =P11; sbit RS=P10; sbit EN=P25; uchar code a=FM: . ; uchar code b=Vol: RSSI: ; uchar code shu=0123456789; uchar num ; void delaymsuint x /推遲程序 uint i,j; fori=x;i0;

5、i- forj=113;j0;j-; /* 矩陣鍵盤(pán)程序*/ uchar ScanKey /矩陣鍵盤(pán)掃描返回值是當(dāng)前按鍵數(shù)值 如沒(méi)按下就 返回值為零 uint x,y; forx=0;x250 CloseIIC; return 1; SCL=0; return 0; void IIC_Ackvoid /發(fā)送應(yīng)答信號(hào) SCL=0; SDA=0; /0 .|e IIC_delayms; SCL=1; IIC_delayms; SCL=0; void IIC_NAckvoid /IIC 非應(yīng)答信號(hào) SCL=0; SDA=1; IIC_delayms; SCL=1; IIC_delayms; SCL=

6、0; void IICsendByteuchar txd /IIC 寫(xiě)一個(gè)字節(jié) uchar t; SCL=0; fort=0;t7=1 SDA=1; else SDA=0; txd=1; IIC_delayms; SCL=1; IIC_delayms; SCL=0; IIC_delayms; uchar IICReadByteunsigned char ack /IIC讀一個(gè)字節(jié) unsigned char i,receive=0; SDA=1; /51 單片機(jī)講引腳置高可設(shè)為輸入引腳 fori=0;i8;i+ SCL=0; IIC_delayms; SCL=1; receive=1; ifS

7、DA=1receive+; IIC_delayms; if .ack IIC_NAck; else IIC_Ack; return receive; uint ReadReguchar regAddr /芯片讀寄存器 uint buf; OpenIIC; IICsendByteRDA_WRITE; / 發(fā)送芯片地址 方向?yàn)閷?xiě)IIC_Wait_Ack; IICsendByteregAddr; /發(fā)送寄存器地址IIC_Wait_Ack; OpenIIC; IICsendByteRDA_READ; / 發(fā)送芯片地址 方向?yàn)樽xIIC_Wait_Ack; buf = IICReadByte1; buf

8、= buf8; IIC_Wait_Ack; IICsendByteval&0XFF; IIC_Wait_Ack; CloseIIC; void Vol_Setuchar vol /音量設(shè)置 015 uint temp=0; temp=ReadRegRDA_R05; temp&=0 xfff0; WriteReg0 x05,vol|temp ; void Mute_Setuchar mute /靜音設(shè)置 1 為靜音 0 為不靜音 uint temp=0; temp=ReadReg0X02; if.mutetemp|=114; else temp&=114; WriteReg0X02,temp ;

9、 void Bass_Setuchar bass /頻帶設(shè)置 uint temp=0; temp=ReadReg0X02; ifbasstemp|=112; else temp&=19&0 x7f; return temp; void Seekth_Setuint rssi /自動(dòng)搜臺(tái)信號(hào)閾值強(qiáng)度015 默認(rèn)為 8 數(shù)值越低搜到的臺(tái)越多 uint temp; rssi = rssi & 0 xf; temp=ReadReg0X05; temp&=0 xf8; temp|= rssi8; WriteReg0X05,temp ; void Seek_directionuchar direction

10、 /搜臺(tái)方向 1 向上搜尋 0 向下搜尋 uint temp; temp=ReadRegRDA_R02; temp&=19; ifdirection = 1 temp|= 19; / ifdirection = 0 / temp|= 02&0 x03; spc=temp&0 x03; ifspc=0spc=10; else ifspc=1spc=20; else spc=5; ifband=0fbtm=8700; else ifband=1|band=2fbtm=7600; else fbtm=ReadReg0X53; fbtm*=10; iffreqfbtmreturn; chan=freq

11、-fbtm/spc; chan&=0X3FF; temp|=chan6; temp|=14; WriteRegRDA_R03,temp ; delayms20; / whileReadReg0X0B&17=0; unsigned int seek_channelvoid /半自動(dòng)搜臺(tái) unsigned long temp; temp=ReadRegRDA_R02; temp |= 18; WriteRegRDA_R02,temp ; /SEEK 位置一 使能自動(dòng)搜臺(tái)while ReadRegRDA_R0A&114 = 0 / 等待 STC 位置一 表示搜索完成 delayms10; /. 10

12、ms temp = ReadRegRDA_R0A&0 x3FF * 100000 + 87000000/10000 ; /獲取當(dāng)前頻率return temp; /返回搜到電臺(tái)頻率 單位是: 10Khz void FM_enableuchar flag /1 使能芯片 0 禁用芯片 uint temp; temp=ReadRegRDA_R02; ifflag =1 temp |=1; ifflag = 0 temp &= 0 x1; WriteRegRDA_R02,temp; void RDA_Initvoid /RDA3. WriteRegRDA_R02,0 x0002; /軟復(fù)位delaym

13、s30; WriteRegRDA_R02,0 xd081; /.32.768Khz . . . . SKMODE = 1. . . WriteRegRDA_R03,0 x0000; /. .a87MHz .2.100Khz . .a87M108M WriteRegRDA_R04,0 x0040; /. . WriteRegRDA_R05,0X8882; /. .avol=2 . .a8 FM_enable1; /.D. Seekth_Set8; /自動(dòng)搜臺(tái)信號(hào)閾值強(qiáng)度搜到的臺(tái)越多 void display_1602 write_com0 x80; fornum=0;num34;num+ wri

14、te_dataanum; delayms5; write_com0 x80+0 x40; fornum=0;num1000 Display_RSSIRssi_Get; /顯示信號(hào)強(qiáng)度 Key_num=ScanKey; switchKey_num case 1: ifRXFreq=8800RXFreq=8800; / 頻率減else RXFreq-=10; Freq_SetRXFreq; DisplayFrqRXFreq/100.0; while0.=ScanKey; /按鍵釋放case 2: break; ifRXFreq=10800RXFreq=10800;/頻率加else RXFreq+=

15、10; Freq_SetRXFreq; DisplayFrqRXFreq/100.0; case 5: while0.=ScanKey; /按鍵釋放break; /聲音減ifVol=0 Vol=0; else Vol-=1; Vol_SetVol; DisplayVolVol; /顯示音量while0.=ScanKey; /按鍵釋放break; case 6: ifVol=15Vol=15; /聲音加else Vol+=1; Vol_SetVol; DisplayVolVol; /顯示音量while0.=ScanKey; /按鍵釋放break; case 7: ifmute=1 /靜音 Mut

16、e_Set1; Display_mute; /顯示靜音while0.=ScanKey; /按鍵釋放 break; mute=0; ifmute=0 Mute_Set0; DisplayVolVol; / 取消靜音 顯示音量mute=1; while0.=ScanKey; break; case 9: /電臺(tái)減 但是必需先按 9 進(jìn)行電臺(tái)搜尋while0.=ScanKey; /按鍵釋放 Seek_direction0; /向下搜尋RXFreq = seek_channel; /搜尋下一個(gè)頻道Freq_SetRXFreq; DisplayFrqRXFreq/100.0; break; case 1

17、0: /電臺(tái)加但是必需先按 11 進(jìn)行電臺(tái)搜尋while0.=ScanKey; /按鍵釋放Seek_direction1; /向上搜尋RXFreq = seek_channel; /搜尋下一個(gè)頻道Freq_SetRXFreq; DisplayFrqRXFreq/100.0; break; default:break; / case 9: /電臺(tái)減 但是必需先按 11 進(jìn)行電臺(tái)搜尋/ / / / / / / ifstation=0break; ifNum0Num-=1; else Num=station-1; Freq_SetDiantaiNum; DisplayFrqDiantaiNum/100.0; RXFreq=DiantaiNum; Display_now1 ; /顯示當(dāng)前電臺(tái)號(hào)/ while0.=ScanKey; /按鍵釋放/ break; / / case 10: ifstation=0break; /電臺(tái)加 但是必需先按 11進(jìn)行電臺(tái)搜尋/ / / / / / ifNum

溫馨提示

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