![2022年RDA5807m+IIC收音機51單片機C程序上課講義_第1頁](http://file4.renrendoc.com/view/9ea5160025f966c4b1beb2d0b3320130/9ea5160025f966c4b1beb2d0b33201301.gif)
![2022年RDA5807m+IIC收音機51單片機C程序上課講義_第2頁](http://file4.renrendoc.com/view/9ea5160025f966c4b1beb2d0b3320130/9ea5160025f966c4b1beb2d0b33201302.gif)
![2022年RDA5807m+IIC收音機51單片機C程序上課講義_第3頁](http://file4.renrendoc.com/view/9ea5160025f966c4b1beb2d0b3320130/9ea5160025f966c4b1beb2d0b33201303.gif)
![2022年RDA5807m+IIC收音機51單片機C程序上課講義_第4頁](http://file4.renrendoc.com/view/9ea5160025f966c4b1beb2d0b3320130/9ea5160025f966c4b1beb2d0b33201304.gif)
![2022年RDA5807m+IIC收音機51單片機C程序上課講義_第5頁](http://file4.renrendoc.com/view/9ea5160025f966c4b1beb2d0b3320130/9ea5160025f966c4b1beb2d0b33201305.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、RDA5807m+I I C 收 音 機 51 單 片 機 C 程 序RDA5807m 驅動程序 + IIC 程序/* * 介紹 : RD5807M 收音機程序 供電 3.3v 主控使用 51單片機 顯示使用LCD1602 * 作者 : 胖子* 時間 : 2022-1-5 * 地點 :桂林電子科技高校* */ #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; / 矩陣鍵盤掃描使用/RDA 的寄存器地址#define RDA_R00 0X00 /讀出 16 個位的 ID =0X5800 #define RDA_R02 0X02 /DHIZ15,DMUTE14 靜音,MONO13 聲道,BASS12重低音 ,SEEKUP9,SEEK8,SKMODE7,CLK_MODE6:4 時鐘源挑選 ,SOFTRESET1軟復位 ,ENABLE0 電源使能#define RDA_R03 0
3、X03 /CHAN15:6,TUNE4,BAND3:2,SPACE1:0 設置頻率 帶寬 步長#define RDA_R04 0X04 /STCIEN14,DE11,I2Senable6, #define RDA_R05 0X05 /INT_MODE15,SEEKTH14:8 設定自動搜索信號強度閥值,LNA_PORT_SEL7:6=0b10,LNA_ICSEL_BIT5:4,VOLUME3:0 音量 ; #define RDA_R0A 0X0A /STC14seek complete SF13seek fail readchan9:0當前頻道#define RDA_R0B 0X0B /RSS
4、I15:9,FM TRUE8 當前頻道是一個節(jié)目臺#define RDA_READ 0X23 / 讀 RDA5807 #define RDA_WRITE 0X22 /寫 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-; /* 矩陣鍵盤程序*/ uchar ScanKey /矩陣鍵盤掃描返回值是當前按鍵數(shù)值 如沒按下就 返回值為零 uint x,y; forx=0;x250 CloseIIC; return 1; SCL=0; return 0; void IIC_Ackvoid /發(fā)送應答信號 SCL=0; SDA=0; /0 .|e IIC_delayms; SCL=1; IIC_delayms; SCL=0; void IIC_NAckvoid /IIC 非應答信號 SCL=0; SDA=1; IIC_delayms; SCL=1; IIC_delayms; SCL=
6、0; void IICsendByteuchar txd /IIC 寫一個字節(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讀一個字節(jié) unsigned char i,receive=0; SDA=1; /51 單片機講引腳置高可設為輸入引腳 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ā)送芯片地址 方向為寫IIC_Wait_Ack; IICsendByteregAddr; /發(fā)送寄存器地址IIC_Wait_Ack; OpenIIC; IICsendByteRDA_READ; / 發(fā)送芯片地址 方向為讀IIC_Wait_Ack; buf = IICReadByte1; buf
8、= buf8; IIC_Wait_Ack; IICsendByteval&0XFF; IIC_Wait_Ack; CloseIIC; void Vol_Setuchar vol /音量設置 015 uint temp=0; temp=ReadRegRDA_R05; temp&=0 xfff0; WriteReg0 x05,vol|temp ; void Mute_Setuchar mute /靜音設置 1 為靜音 0 為不靜音 uint temp=0; temp=ReadReg0X02; if.mutetemp|=114; else temp&=114; WriteReg0X02,temp ;
9、 void Bass_Setuchar bass /頻帶設置 uint temp=0; temp=ReadReg0X02; ifbasstemp|=112; else temp&=19&0 x7f; return temp; void Seekth_Setuint rssi /自動搜臺信號閾值強度015 默認為 8 數(shù)值越低搜到的臺越多 uint temp; rssi = rssi & 0 xf; temp=ReadReg0X05; temp&=0 xf8; temp|= rssi8; WriteReg0X05,temp ; void Seek_directionuchar direction
10、 /搜臺方向 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 /半自動搜臺 unsigned long temp; temp=ReadRegRDA_R02; temp |= 18; WriteRegRDA_R02,temp ; /SEEK 位置一 使能自動搜臺while ReadRegRDA_R0A&114 = 0 / 等待 STC 位置一 表示搜索完成 delayms10; /. 10
12、ms temp = ReadRegRDA_R0A&0 x3FF * 100000 + 87000000/10000 ; /獲取當前頻率return temp; /返回搜到電臺頻率 單位是: 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; /軟復位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; /自動搜臺信號閾值強度搜到的臺越多 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; /顯示信號強度 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: /電臺減 但是必需先按 9 進行電臺搜尋while0.=ScanKey; /按鍵釋放 Seek_direction0; /向下搜尋RXFreq = seek_channel; /搜尋下一個頻道Freq_SetRXFreq; DisplayFrqRXFreq/100.0; break; case 1
17、0: /電臺加但是必需先按 11 進行電臺搜尋while0.=ScanKey; /按鍵釋放Seek_direction1; /向上搜尋RXFreq = seek_channel; /搜尋下一個頻道Freq_SetRXFreq; DisplayFrqRXFreq/100.0; break; default:break; / case 9: /電臺減 但是必需先按 11 進行電臺搜尋/ / / / / / / ifstation=0break; ifNum0Num-=1; else Num=station-1; Freq_SetDiantaiNum; DisplayFrqDiantaiNum/100.0; RXFreq=DiantaiNum; Display_now1 ; /顯示當前電臺號/ while0.=ScanKey; /按鍵釋放/ break; / / case 10: ifstation=0break; /電臺加 但是必需先按 11進行電臺搜尋/ / / / / / ifNum
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025小學五年級少先隊工作計劃(5篇)
- 2024-2025學年第16課中國賦稅制度的演變-勤徑學升高中歷史選擇性必修1同步練測(統(tǒng)編版2019)
- 2025年雙方共同撫養(yǎng)孩子的離異協(xié)議書
- 2025年姿態(tài)敏感器項目立項申請報告模范
- 2025年中藥材供應協(xié)議書
- 2025年醫(yī)用手器械租賃合同
- 2025年會員服務權益轉移協(xié)議
- 2025年銅基記憶合金材料項目申請報告模板
- 2025年螺旋錐齒輪項目提案報告模板
- 2025年沙發(fā)項目規(guī)劃申請報告模稿
- 新教科版三年級下冊科學 第二單元重點題型練習課件
- 新概念英語第三冊課后習題答案詳解
- 寧夏回族自治區(qū)地圖矢量動態(tài)PPT模板(圖文)
- 靜脈中等長度導管臨床應用專家共識-
- 中小學教師教育法律法規(guī)培訓PPT頁
- 事故隱患報告和舉報獎勵制度
- 陶行知教育名篇讀書分享ppt
- 學前兒童數(shù)學教育高職全套完整教學課件
- 高考百日誓師教師誓詞
- 2023年河南省開封市中考一模數(shù)學試題
- 菲斯特轉子秤的
評論
0/150
提交評論