基于RDA的收音机

合集下载

基于RDA5807的收音机

基于RDA5807的收音机

编号:课程设计说明书(信息系统综合实训)题目:立体声调频收音机院(系):信息与通信学院专业:电子信息工程学生姓名:峰之使者学号:指导教师:2016年 1 月 8 日摘要本系统为立体声调频收音机,设计采用RDA5807收音模块,与单片机相结合,使收音解调电路设计变的简单,实现FM收音并显示频率。

我们通过矩阵键盘设定我们需要的频段,并设置音量大小,通过诺基亚5110液晶屏显示出来,并根据所显示接收信号的强度等级,判断收音所在地的信号强度。

RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,所以使用本模块很容易实现,且系统可靠稳定。

关键词:单片机;RDA5807收音模块;FM收音;目录引言随着科学技术的发展,调频收音机的应用十分广泛,尤其消费类占有相当的市场。

从分离元件组成的收音机到由集成电路组成的收音机,调频收音机技术已达到十分成熟的地步。

本次设计采用RDA5807收音模块与单片机相结合,实现FM收音并显示频率。

单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用STC89c52单片机。

此外,RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,还可以具备频率显示功能。

1 任务要求与设计的背景1.1 设计任务要求本论文的任务是根据调频收音机的特点和应用情况,结合新一代高性能芯片设计一种使用简单、性能优良的收音机。

整个系统以单片机STC89S52控制,RDA5807芯片为核心,配置相应的外设及接口电路。

接收频率可设置、输出音量可数控、显示信号强度和设置静音,用C语言开发,组成一个多功能的程控数字收音机。

基于RDA5820的芯片功能扩展(DOC)

基于RDA5820的芯片功能扩展(DOC)

成都信息工程学院基于RDA5820芯片功能扩展班级:技术人员:文档整理:指导老师:日期:年月号摘要该项目是以收音机芯片为核心,进行一系列功能扩展(扩展功能自定)。

其中采用收音机芯片(RDA5820)进行无线电的接收。

同时以TI芯片(MSP430F5529)作为主控芯片进行显示与控制。

最后是以芯片(TDA2822)作为功放模块进行音量调节。

显示包括时钟显示和收音机频段显示。

关键词:RDA5820;MSP430F5529;TDA2822AbstractA series of function extension is based on the radio chip, in which uses the radio chip (RDA5820) to carry out radio reception. At the same time, with TI chip (MSP430F5529) as the master control chip for display and control. Finally based on chip (TDA2822) as a power amplifier module which can adjust the volume. Display including the clock display and the radio spectrum.Key Words:RDA5820; MSP430F5529; TDA282目录1 引言 (1)1.1 背景 (1)1.2 研究内容提要 (1)2 系统框图 (2)3 主控模块 (3)3.1 芯片选择 (3)3.2 主控芯片 (4)3.3 JTAG接口 (5)3.4 液晶显示模块 (6)3.5 晶振 (6)3.6 变压模块 (7)3.7 MSP430F5529芯片介绍 (7)3.7.1 MSP430系列 (8)3.7.2 部分功能介绍 (9)4 收音机模块 (10)4.1 RDA5820概述 (10)4.2 应用范围 (10)4.3 功能特点 (11)4.4 电气特性 (11)5 功率放大模块 (11)5.1 功率放大电路说明 (11)5.2 TDA2822芯片介绍 (12)5.2.1 概述与特点 (12)5.2.2 引出端功能 (12)5.3 应用电路 (13)5.3.1 TDA2822立体声应用线路 (13)5.3.2 TDA2822单声道桥式(BTL)应用线路 (14)6 部分程序及代码 (14)7 总结 (15)参考文献 (16)1引言1.1背景从1923年1月23日第一批收音机的问世到现今,收音机经历了翻天覆地的“改革”,从矿石收音机、电子管收音机、晶体管收音机、集成电路收音机到如今的DSP收音机(全球收音机数字化),可谓日新月异。

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图

* 晶振:8M*/#include <reg52.h>#include <string.h>#define ChannelCount 50 //最多支持多少个台,因为常驻内存,多了RAM放不下#define uchar unsigned char#define uint unsigned inttypedef struct{uchar Freq;uchar Rssi;}ChannelInfo;sbit SDA = P2^0;sbit SCL = P2^1;sbit key1 = P3^4;sbit key2 = P2^7;sbit key3 = P2^6;sbit key4 = P2^5; // P3^7;sbit LcdEn = P3^4;sbit LcdRs = P3^5;uchar Channel = 0;uchar FreqTune = 0;const uint MinFreq = 870; //起始频率* 100KHzconst uint MaxFreq = 1080; //最高频率* 100KHzconst uchar FmAddr = 0×22; //FM模块IIC 地址const uchar EpAddr = 0xA0; //24C02 EPPRom 的地址uchar RSSI = 0; //信号强度uchar ChannelTune[ChannelCount];uchar code LevlChar[5][8] ={{0x1F,0×11,0x0A,0×04,0×04,0×04,0×04,0×04},{0×00,0×00,0×00,0×00,0×00,0×00,0×06,0x1E},{0×00,0×00,0×00,0×00,0×06,0x1E,0x1E,0x1E}, //显示型号强度的自定义字符{0×00,0×00,0×06,0x1E,0x1E,0x1E,0x1E,0x1E},{0×06,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E}};uchar vol = 0×8; //音量0~0xFuchar Func = 0×0; //当前功能号bit AutoScan = 0; //标记当前是不是在自动搜台bit Mute = 0; //标记是否被静音uchar KeyNumber = 0;void OpenIIC();void CloseIIC();void IICWrite(uchar uaddr, uchar romaddr, uint rdata,bit _i6b);void IICWriteByte( uchar byte );uint IICRead(uchar uaddr, uchar romaddr,bit _i6b);uchar IICReadByte(bit next);void FM_SetFreq();void FM_SetVolume();uint FM_ReadReg(uchar regAddr); //读取FM模块的寄存器void FM_WriteReg(uchar regAddr,uint dat); //写FM模块的寄存器uchar FM_GetRSSI(); //获取当前的信号强大void Delay(uint c);bit KeyScan();void BeginScan();void Lcd_DispNumber(uint number);void Lcd_Init();void Lcd_Comm(uchar cmd);void Lcd_Data(uchar dat);void Lcd_String(char* dat);void Lcd_DispRssi();void Lcd_DispFreq();void Lcd_Refresh();void Lcd_DispDiscript();void Eprom_LoadInitData();uint Eprom_Read(uchar addr,bit _16bit);void Eprom_Write(uchar addr,uint dat,bit _16bit);void main(){P3 = 0xff;P2 = 0xff;Delay(10000); //延时,等待外部FM模块的启动Eprom_LoadInitData(); //从EppRom 加载频道音量等信息 FM_WriteReg(2,0xd281); //启动FM模块FM_SetVolume(); //设置启动音量FM_SetFreq(); //设置默认频道的频率Lcd_Init();Lcd_Refresh();while(1){if( KeyScan()){Lcd_Refresh();}}}void Eprom_LoadInitData(){uint result = 0;int i=0;result =Eprom_Read(0,0);if(result>0){ vol = (uchar)result –1;}result =Eprom_Read(1,0);Channel = (uchar)result;for(i=0;i<ChannelCount;i++){result =Eprom_Read(i * 2 + 2,1);ChannelTune[i] = result;}FreqTune = ChannelTune[Channel];}void Eprom_Write(uchar addr,uint dat,bit _16bit) {IICWrite(EpAddr,addr,dat,_16bit);}uint Eprom_Read(uchar addr,bit _16bit){return IICRead(EpAddr,addr,_16bit);}uint FM_ReadReg(uchar regAddr){return IICRead(FmAddr,regAddr,1);}void FM_WriteReg(uchar regAddr,uint dat) {IICWrite(FmAddr,regAddr,dat,1);}void FM_SetFreq(){FM_WriteReg(3,(FreqTune<<6) | 0×10);}void FM_SetVolume(){uint reg2H;if(vol>0){if(Mute){reg2H = FM_ReadReg(2);reg2H |= 0×4000;FM_WriteReg(2,reg2H);}FM_WriteReg(5,vol);}else{Mute = 1;reg2H = FM_ReadReg(2);reg2H &= 0xBFFF;FM_WriteReg(2,reg2H);}Eprom_Write(0,vol+1,0);}void Lcd_Init(){uchar CGRamAddr = 0×40;int i,j;LcdEn = 0;Lcd_Comm(0×38);Lcd_Comm(0x0c);Lcd_Comm(0×06);Lcd_Comm(0×01);for(j=0;j<5;j++){Lcd_Comm(CGRamAddr + 8 * j); //建立自定义字符(显示信号强度的) for(i=0;i<8;i++){Lcd_Data(LevlChar[j][i]);Delay(510);}}}void Lcd_Comm(uchar cmd){LcdRs =0;P0 = cmd;Delay(50);LcdEn = 1;Delay(50);LcdEn = 0;}void Lcd_Data(uchar dat){LcdRs = 1;P0 = dat;LcdEn = 1;Delay(50);LcdEn = 0;}void Lcd_String(char* dat){char *p;int j, i=strlen(dat);for(j=0;j<i;j++){p=dat + j;Lcd_Data(*p);}}void Lcd_DispRssi(){int i;Lcd_Comm(0×80);for(i=0;i<5;i++){Lcd_Data(‘‘);}RSSI = FM_GetRSSI();Lcd_Comm(0×80);Lcd_Data(0×00);if(RSSI>=1) Lcd_Data(0×01);if(RSSI>=2) Lcd_Data(0×02);if(RSSI>=3) Lcd_Data(0×03);if(RSSI>=4) Lcd_Data(0×04);}void Lcd_DispFreq(){uint curFreq = MinFreq + FreqTune;int i;Lcd_Comm(0×85);for(i=5;i<16;i++){Lcd_Data(‘‘);}Lcd_Comm(0×80+6);if(curFreq>=1000)Lcd_Data(48 +curFreq /1000 % 10); Lcd_Data(48 +curFreq /100 % 10);Lcd_Data(48 +curFreq /10 % 10);Lcd_Data(‘.’);Lcd_Data(48 + curFreq % 10);Lcd_Data(‘M’);Lcd_Data(‘H’);Lcd_Data(‘Z’);}void Lcd_DispDiscript(){int i;Lcd_Comm(0×80+0×40);for(i=0;i<15;i++){Lcd_Data(‘‘);}Lcd_Comm(0×80+0×40);switch(Func){case 0:Lcd_String(“Channel:”);Lcd_DispNumber(Channel+1);break;case 1:Lcd_String(“Volume:”);Lcd_DispNumber(vol);break;case 2:Lcd_String(“Tune”);break;case 3:Lcd_String(“Auto Scan”);}}void Lcd_Refresh(){Lcd_DispRssi();Lcd_DispFreq();Lcd_DispDiscript();}void Lcd_DispNumber(uint number){int i=0,len;char str[6]={‘\0′,’\0′,’\0′,’\0′,’\0′,’\0′}; char temp;dostr[i++] = ’0′+ (number % 10); number /= 10;}while(number) ;len = strlen(str);for(i=0;i<len/2;i++){temp = str[i];str[i] = str[len-i-1];str[len-i-1] = temp;}Lcd_String(str);}bit KeyScan(){bit keyRel = 0; //按键释放检测char value=0;int i;uint temp;if(AutoScan) return 0;if(KeyNumber==0){if(key3==0){Delay(50);if(key3==0){KeyNumber =3;}}if(key4==0){Delay(50);if(key4==0){KeyNumber=4;}}if(key2==0){Delay(50);if(key2==0)KeyNumber=2;}}return 0;}else{switch(KeyNumber){case 1:if(key1==1)keyRel = 1; break;case 2:if(key2==1)keyRel = 1; break;case 3:if(key3==1)keyRel = 1; break;case 4:if(key4==1)keyRel = 1; break;}if(keyRel){switch(KeyNumber){case 2:Func++;if(Func>3) Func = 0;break;case 3:value = -1;break;case 4:value = 1;break;}if(KeyNumber>2){if(Func==0){if((value > 0 && Channel<ChannelCount) || (value<0 && Channel > 0)) {Channel+=value;FreqTune= ChannelTune[Channel];FM_SetFreq();Eprom_Write(1,Channel, 0);}else if(Func==1){if((value > 0 && vol<0xF) || (value<0 && vol > 0)){vol+=value;FM_SetVolume();}}else if(Func==2){if((value > 0 && FreqTune<0xd2) || (value<0 && FreqTune > 0)) {FreqTune+=value;ChannelTune[Channel] = FreqTune;FM_SetFreq();Eprom_Write(Channel * 2 + 2 ,FreqTune,1);}}else if(Func==3) //开始自动扫描{AutoScan = 1;BeginScan();AutoScan = 0;Channel = 0;FreqTune = ChannelTune[0];Func = 0;FM_SetFreq();//覆盖EppRom中的所有的频道for(i=0;i<ChannelCount;i++){temp = ChannelTune[i];Eprom_Write(i * 2+2,temp,1);}Eprom_Write(0×01,0,0); //重置EPPROM中的频道号为0}}KeyNumber=0;}return keyRel;}}//全自动搜索void BeginScan(){uint state;int i=0,count=0;bit cmp = 0;uint seekth = 0×8; //灵敏度0~127,默认为8 灵敏度越低越可能搜索到假台,高了可能一些信号弱一点的频道被跳过。

RDA5800收音机芯片工作原理与应用

RDA5800收音机芯片工作原理与应用

RDA5800收音机芯片工作原理与应用近几年,随着手机应用的多功能化以及MP3/MP4媒体播放器的普及,FM接收已经成了必备的功能。

有业内人士曾经乐观表示,到2008年,FM手机可以占到总量的40%以上,这样大的终端市场势必导致对FM接收芯片(FM Tuner)的需求也越来越大。

而与此同时,伴随着集成电路设计和制造技术的快速发展,FM Tuner开始从模块化时代向SoC时代演进。

单芯片FM Tuner技术日臻完善,性能也相比于以前有了很大的提高,具备了高接收灵敏度,能够支持单声道(mono)和立体声(stereo)切换,并且开始支持无线数据服务 (RDS)/无线广播数据服务(RBDS)。

RDA5800芯片是锐迪科微电子(RDA Micro)公司独立开发的一颗全集成CMOS FM Tuner芯片,具有高集成度、高性能、低成本、低功耗等方面的优势,是目前极具市场竞争优势的一款产品,受到业内专家和应用工程师的普遍关注。

下面就来讨论一下此款芯片的功能特性及设计技巧。

RDA5800芯片基本特性它采用中芯国际(SMIC)0.18微米 RF CMOS先进工艺,射频部分采用了低中频结构,FM立体声解码则由数字DSP来实现,驱动部分将语音功放集成到了芯片中,这些都有效地提高了芯片性能,降低了解决成本,并具有非常好的集成度。

芯片采用4×4mm 24脚QFN封装,内部集成了LDO和晶体振荡电路,总的工作电流为16mA,具有自动搜台,柔软静音,重低音,噪声抑制,直接驱动耳塞等优异的性能。

RDA5800芯片的主要性能指标如表1所示。

RDA5800芯片工作原理RDA5800主要分成模拟和数字两大部分。

模拟部分包括支持所有FM频段(76~108M Hz)的低噪声放大器(LNA)、限幅器(Limiter)、正交镜像抑制混频器(MIXER)、可调增益放大器(PGA)、高精度模数转换器(ADC)、高精度数模转换器(DAC)、频率合成器(Synthesizer)以及电源用的LDO。

rda5807收音机工作原理

rda5807收音机工作原理

rda5807收音机工作原理
RDA5807是一种集成电路芯片,主要用于FM收音机应用。

它采用了单芯片收音机解决方案,包括了FM调谐器、收音机频率锁定环路(PLL)、数字信号处理(DSP)等功能。

以下是RDA5807收音机的工作原理的基本概述:
1.FM调谐器:RDA5807内置了一个FM调谐器,负责接收广播
频道。

用户可以通过控制芯片的寄存器来设置所需的FM频率。

2.PLL(频率锁定环路):频率锁定环路用于确保FM调谐器锁定
在所需的频率上。

这是通过将数字控制信号传递给PLL来实现的。

3.天线输入:天线连接到芯片,用于接收无线电信号。

4.模拟前端:芯片内置了模拟前端,用于处理来自天线的模拟FM
信号。

这个阶段通常包括放大、混频和滤波等功能。

5.数字信号处理(DSP):芯片通过DSP处理模拟信号,进行解
调和去噪等数字信号处理操作,以提高音频质量。

6.数字音频输出:处理后的音频信号通过芯片的数字音频输出端
口传递给连接的音频放大器或扬声器。

7.控制接口:芯片提供了一个控制接口,通常使用I2C或SPI等
协议,用于与微控制器或其他控制设备进行通信,以调整频率、音量、搜索电台等功能。

8.电源管理:RDA5807通常还包括一些电源管理功能,以实现
低功耗操作,例如通过进入睡眠模式来减小功耗。

总体而言,RDA5807采用了集成的设计,将许多FM收音机所需的功能整合在一个芯片中,提供了一种方便、低成本的解决方案。

通过合适的控制,用户可以调谐到不同的FM频道,并享受收音机广播。

基于RDA5807P芯片的遥控收音机设计和制作

基于RDA5807P芯片的遥控收音机设计和制作

基于RDA5807P芯片的遥控收音机设计和制作
 早期的数字FM处理芯片TEA5767由Philips公司开发并被广泛地使用,但该芯片需要外加音频放大电路才能驱动耳机。

鉴于此,国内锐迪科微电子公司独立开发了一颗具备高接收灵敏度的FM立体声数字芯片RDA5807P,具有自动搜台、重低音、静音、休眠、直接驱动耳机等优异的性能。

本文介绍用RDA5807P芯片设计和制作了一款带遥控功能的收音机。

1 收音机总体设计方案
 收音机的总体设计框图如图1所示。

本收音机采用单节3.7 V、容量1500 mAh的锂电池作力电源,在使用寿命期内可以用手机充电器反复对它进行充电,使用非常方便。

采用低功耗的AVR单片机ATmega8L作为微控制器,负责处理和协调各模块电路的工作,ATmega8L的工作电压为2.7~5.5 V,片内有512字节的EEPROM,不用专门外接EEPROM芯片就可以将掉电前接收电台的频道和音量信息保存起来,重新开机后又可以恢复原来的信息。

调频收音机模块采用国产芯片RDA5807P加上少量的外围元件组成,由微控制器通过I2C总线接口对芯片内部寄存器进行写/读操作。

通过键盘或红外遥控发射器可以进行自动搜台、手动选台、音量调节、静音操作。

LCD用于显示当前收听电台的频率、音量等级等信息。

音频功率放大器放大当前收听电台的音频信号,驱动扬声器发出声音。

基于RDA5807的数控FM收音机实训论文

基于RDA5807的数控FM收音机实训论文

电子线路综合实训论文题目:基于RDA5820的数控FM收音机院(系):信息与通信学院专业:电子信息工程摘要现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。

为了解决这些问题,本次采用RDA5807收音模块与单片机相结合,实现FM收音并显示频率。

单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用stc89c52单片机。

此外,RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强,灵敏度高、噪声小、抗干扰能力强等功能,还可以具备频率显示功能,所以使用本模块很容易实现。

关键词:单片机;RDA5807;FM收音机AbstractNow people often use radio FM radio station manually, using the more cumbersome, and because the receiver sensitivity is not high, narrow band received. To solve these problems, this time using RDA5807 radio module and microcontroller combined to achieve FM radio and display frequency. SCM since the 1970s came to an extremely high cost people's attention and concern, it is very wide application, developed rapidly. SCM is characterized by small, highly integrated, light weight, strong anti-interference ability, less demanding on the environment, low cost, high reliability, flexibility, and development easier, so this uses stc89c52 microcontroller. In addition, RDA5807 module has 65-108MHz band FM receiver compatible global effect, with noise reduction, soft mute, bass boost, high sensitivity, low noise, strong anti-interference ability and other functions, can also have a frequency display, so the use of the modules can be easily achieved.Key words:SCM; RDA5807; FM Radio目录引言 (1)1.方案选择 (2)1.1方案一………………………………………………………….. 1.2方案二………………………………………………………….1.3方案确定………………………………………………………2.系统方案设计及各模块原理……………………………………2.1STC89C52核心模块………………………………………………2.1.1STC89C52单片机简介…………………………………………2.1.2STC89C52主要性能………………………………………….2.2RDA5807模块…………………………………………………….2.2.1RDA5807模块特点……………………………………………2.2.2RDA5807模块使用…………………………………………2.3显示模块……………………………………………………………2.3.11602液晶简介…………………………………………………2.3.21602引脚说明…………………………………………………2.4IIC通信…………………………………………………………2.4.1IIC简介……………………………………………………….2.4.2IIC时序………………………………………………………3系统程序设计……………………………………………………4印刷电路板的设计与制作………………………………………4.1印刷电路板的布线设计…………………………………………4.2印刷电路板的制作………………………………………………5 电路板的调试……………………………………………………6 结论………………………………………………………………谢辞………………………………………………………………. 参考文献………………………………………………………………附录…………………………………………………………………引言本设计研究FM收音机分为硬件电路和程序设计两个方面。

基于rda的收音机

基于rda的收音机

编号:课程设计说明书(信息系统综合实训)题目:立体声调频收音机院(系):信息与通信学院专业:电子信息工程学生姓名:峰之使者学号:指导教师:2016年 1 月8 日摘要本系统为立体声调频收音机,设计采用RDA5807收音模块,与单片机相结合,使收音解调电路设计变的简单,实现FM收音并显示频率。

我们通过矩阵键盘设定我们需要的频段,并设置音量大小,通过诺基亚5110液晶屏显示出来,并根据所显示接收信号的强度等级,判断收音所在地的信号强度。

RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,所以使用本模块很容易实现,且系统可靠稳定。

关键词:单片机;RDA5807收音模块;FM收音;目录引言 (1)1 任务要求与设计的背景 (1)1.1 设计任务要求 (1)1.2 课题背景 (1)2 调频收音机的分析和设计思路 (1)2.1 系统设计原理 (1)2.2 系统框图分析和设计 (2)3 硬件设计 (2)3.1 单片机最小系统 (2)3.1.1 时钟电路 (3)3.1.2 复位电路 (3)3.2 RDA5807模块 (3)3.2.1 RDA5807模块管脚 (3)3.2.2 RDA5807模块特点 (4)3.2.3 RDA5807模块与单片机接口 (4)3.3原理图 (5)3.4 PCB图 (5)4 软件设计 (5)4.1 IIC通信 (5)4.2 IIC时序 (5)4.3软件流程图 (6)5 调试过程 (9)5.1 电路板制作 (9)5.2 硬件调试 (9)5.3 软件调试 (10)5.4 实物图 (11)6 总结 (11)谢辞 (13)参考文献 (14)附录 (15)引言随着科学技术的发展,调频收音机的应用十分广泛,尤其消费类占有相当的市场。

从分离元件组成的收音机到由集成电路组成的收音机,调频收音机技术已达到十分成熟的地步。

用msp430单片机和RDA5807实现收音机的原理图、代码

用msp430单片机和RDA5807实现收音机的原理图、代码

RDA5807的MSP430代码、原理图说明:这是我用MSP430G2553单片机实现RDA5807收音芯片实现自动搜台收音机功能的代码(附原理图)。

这个收音机有两个按键,一个用于向上搜台,另一个用于向下搜台。

用耳机做天线。

亲测能用,工作正常,在这里与大家分享。

目录MAIN.C (3)INITG2553.C (6)G2553I2C.C (8)G2553I2C.H (11)INITG2553.H (12)原理图 (13)MAIN.C#include<msp430.h>#include"InitG2553.H"#include"G2553I2C.H"/** main.c*/#define CHIP_ADDR_STD 0x11#define CHIP_ADDR_SQE 0x10#define REG02 0x02#define REG03 0x03#define REG0A 0x0A#define REG0B 0x0B#define R02_SEEK 0x0100#define R02_SEEKUP 0x0200#define R03_TUNE 0x0010#define R0A_STC 0x4000#define R0A_SF 0x2000void RDA5807_init();unsignedint RDA5807_seek();unsignedint RDA5807_readfreq();unsignedint RDA5807_readRSSI();int freq;int rssi;int main(void) {unsignedint i;volatileunsignedint R0a,R0b;WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer init_clk();init_I2C();init_IO();RDA5807_init();_BIS_SR(GIE);while(1);return 0;}// Port 1 interrupt service routine#pragma vector=PORT1_VECTOR__interruptvoid Port_1(void){unsignedint i;unsignedint reg02_temp;for(i=0; i<=60000; i++);for(i=0; i<=60000; i++);if(P1IFG & BIT4)//S2按下{P1IFG=0;if(P1IN & BIT4) return;//向上调台reg02_temp=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG02);reg02_temp |= R02_SEEKUP;WriteI2C_ADDR_WORD(CHIP_ADDR_STD, REG02, reg02_temp);freq=RDA5807_seek();rssi=RDA5807_readRSSI();return;}if(P1IFG & BIT5)//S3按下{P1IFG=0;if(P1IN & BIT5) return;//向下调台reg02_temp=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG02);reg02_temp &= ~R02_SEEKUP;WriteI2C_ADDR_WORD(CHIP_ADDR_STD, REG02, reg02_temp);freq=RDA5807_seek();rssi=RDA5807_readRSSI();return;}}void RDA5807_init(){unsignedint i;for(i=0; i<=60000; i++);for(i=0; i<=60000; i++);for(i=0; i<=60000; i++);for(i=0; i<=60000; i++);WriteI2C_ADDR_WORD(CHIP_ADDR_STD, 0x02, 0x0002);for(i=0; i<=60000; i++);WriteI2C_ADDR_WORD(CHIP_ADDR_STD, 0x02, 0xC201);for(i=0; i<=60000; i++);WriteI2C_ADDR_WORD(CHIP_ADDR_STD, 0x03, 0x0000);WriteI2C_ADDR_WORD(CHIP_ADDR_STD, 0x04, 0x0400);WriteI2C_ADDR_WORD(CHIP_ADDR_STD, 0x05, 0x86B0);RDA5807_seek();}unsignedint RDA5807_seek(){unsignedint i;unsignedint reg02_temp;unsignedint reg03_temp;unsignedint reg0a_temp;//清除调谐位reg03_temp=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG03);reg03_temp &= ~R03_TUNE;WriteI2C_ADDR_WORD(CHIP_ADDR_STD, REG03, reg03_temp);//置seek位reg02_temp=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG02);reg02_temp |= R02_SEEK;WriteI2C_ADDR_WORD(CHIP_ADDR_STD, REG02, reg02_temp);//开始搜台do{for(i=0; i<=60000; i++);reg0a_temp=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG0A);}while(!(reg0a_temp & R0A_STC));return RDA5807_readfreq();}unsignedint RDA5807_readfreq(){unsignedint freq;freq=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG0A);freq&= 0x03ff;freq = 8700+freq*10;return freq;}unsignedint RDA5807_readRSSI(){unsignedint rssi;rssi=ReadI2C_ADDR_WORD(CHIP_ADDR_STD, REG0B);rssi&= 0xfe00;rssi>>= 9;return rssi;}INITG2553.C/** InitG2553.c** Created on: 2014-6-23* Author: Huaqing* 修订于2015年4月5日*//** 适用于MSP430G2553的初始化代码*/#include<msp430.h>void init_clk(){if (CALBC1_16MHZ==0xFF) // If calibration constant erased{while(1); // do not load, trap CPU!!}DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_16MHZ; // Set DCODCOCTL = CALDCO_16MHZ;//DCO频率16MHz// BCSCTL2 |= DIVS_2;//将SMCLK4分频,4MHz}void init_TA(){TA0CTL=TASSEL_2+MC_1+TAIE;//TASSEL_2表示时钟源是SMCLK,MC_1表示UP模式,TAIE开中断TA0CCR0=800;//设定这个值是中断设为20kHzP1DIR |= BIT6;P1SEL |= BIT6;//将PWM从P1.6引出TA0CCTL1 = OUTMOD_7;TA0CCR1=200;TA1CTL=TASSEL_2+MC_1;//TASSEL_2表示时钟源是SMCLK,MC_1表示UP模式,TAIE开中断TA1CCR0=800;//设定这个值是中断设为20kHzP2DIR |= BIT1;P2SEL |= BIT1;//将PWM从P2.1引出TA1CCTL1 = OUTMOD_7;TA1CCR1=200;}void init_I2C(){P1SEL |= BIT6 + BIT7; // Assign I2C pins to USCI_B0P1SEL2|= BIT6 + BIT7; // Assign I2C pins to USCI_B0//初始化引脚功能,P1.6是SCL,P1.7是SDAUCB0CTL1 |= UCSWRST; // Enable SW resetUCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode UCB0CTL1 = UCSSEL_2 + UCSWRST; // Use SMCLK, keep SW resetUCB0BR0=160;UCB0BR1=0;//设定分频UCB0CTL1 &= ~UCSWRST; // Clear SW reset, resume operation }void init_IO(){P1DIR&=~(BIT3+BIT4+BIT5);//P1.345用作按键输入P1REN|=(BIT3+BIT4+BIT5);P1OUT|=(BIT3+BIT4+BIT5);//设定P1.345上拉P1IE|=(BIT3+BIT4+BIT5);//使能P1.345的中断P1IES|=(BIT3+BIT4+BIT5);//P1.345下降沿触发中断P1IFG = 0;P2DIR |= BIT1+BIT2;//test}G2553I2C.C/** i2c.c** Created on: 2014-6-28* Author: Huaqing* 修订于2015年4月5日*/#include<msp430.h>void WriteI2C1(int devaddr,unsignedchar data){UCB0CTL1|=UCTR;//发送模式UCB0I2CSA=devaddr;//地址UCB0CTL1|=UCTXSTT;//起始位while(!(IFG2 & UCB0TXIFG));//在发送中断产生后写缓存UCB0TXBUF=data;while(!(IFG2 & UCB0TXIFG));//在中断标志产生前不能发送停止位UCB0CTL1|=UCTXSTP;//发送停止位IFG2 &= ~UCB0TXIFG;//清除中断标志位}unsignedchar ReadI2C1(int devaddr){UCB0CTL1&=~UCTR;//接收模式UCB0I2CSA=devaddr;//地址UCB0CTL1|=UCTXSTT;while(UCB0CTL1 & UCTXSTT);UCB0CTL1|=UCTXSTP;//发送停止位while(!(IFG2 & UCB0RXIFG));IFG2 &= ~UCB0TXIFG;//中断标志位复位return UCB0RXBUF;}void WriteI2C_ADDR_BYTE(int addr,unsignedchar regaddr,unsignedchar data) {int n=2;UCB0CTL1|=UCTR;//发送模式UCB0I2CSA=addr;//地址UCB0CTL1|=UCTXSTT;//起始位while(n){if(IFG2 & UCB0TXIFG){if(n==2){UCB0TXBUF=regaddr;}if(n==1){UCB0TXBUF=data;while(!(IFG2 & UCB0TXIFG));//在中断标志产生前不能发送停止位UCB0CTL1|=UCTXSTP;//发送停止位IFG2 &= ~UCB0TXIFG;//清除中断标志位}n--;}}}void WriteI2C_ADDR_WORD(unsignedchar addr,unsignedchar regaddr,unsignedint data) {UCB0CTL1|=UCTR;//发送模式UCB0I2CSA=addr;//地址UCB0CTL1|=UCTXSTT;//起始位//发送寄存器地址while(!(IFG2 & UCB0TXIFG));//等待中断,中断标志位表示可以向UCB0TXBUF中写入数据IFG2 &= ~UCB0TXIFG;UCB0TXBUF=regaddr;//发送高字节while(!(IFG2 & UCB0TXIFG));//等待中断,中断标志位表示可以向UCB0TXBUF中写入数据IFG2 &= ~UCB0TXIFG;UCB0TXBUF=(data>>8);//发送低字节while(!(IFG2 & UCB0TXIFG));//等待中断,中断标志位表示可以向UCB0TXBUF中写入数据IFG2 &= ~UCB0TXIFG;UCB0TXBUF=(data & 0x00FF);//发送停止位while(!(IFG2 & UCB0TXIFG));//在中断标志产生前不能发送停止位UCB0CTL1|=UCTXSTP;//发送停止位IFG2 &= ~UCB0TXIFG;//清除中断标志位}void ReadI2C(int devaddr,unsignedchar regaddr, unsignedchar * dataarray, int n) {/* UCB0CTL1|=UCTR;//发送模式UCB0I2CSA=addr;//地址UCB0CTL1|=UCTXSTT;//起始位//先发送一个寄存器地址UCB0TXBUF=regaddr;while(!(IFG2 & UCB0TXIFG));//在中断标志产生前不能发送停止位UCB0CTL1|=UCTXSTP;//发送停止位IFG2 &= ~UCB0TXIFG;//清除中断标志位UCB0CTL1&=~UCTR;//接收模式UCB0CTL1|=UCTXSTT;while(UCB0CTL1 & UCTXSTT);UCB0CTL1|=UCTXSTP;//发送停止位while(!(IFG2 & UCB0RXIFG));IFG2 &= ~UCB0TXIFG;//中断标志位复位*/int iN=n;WriteI2C1(devaddr, regaddr);UCB0CTL1&=~UCTR;//接收模式UCB0I2CSA=devaddr;//地址UCB0CTL1|=UCTXSTT;//发送起始位、芯片地址while(n){if(n==1) UCB0CTL1|=UCTXSTP;//发送停止位while(!(IFG2 & UCB0RXIFG));dataarray[iN-n]=UCB0RXBUF;IFG2 &= ~UCB0TXIFG;n--;}}unsignedint ReadI2C_ADDR_WORD(unsignedchar devaddr,unsignedchar regaddr) {unsignedint i=0;UCB0CTL1|=UCTR;//发送模式UCB0I2CSA=devaddr;//地址UCB0CTL1|=UCTXSTT;//起始位//发送寄存器地址while(!(IFG2 & UCB0TXIFG));UCB0TXBUF=regaddr;//发送转接收while(!(IFG2 & UCB0TXIFG));//确保发送已经完成UCB0CTL1&=~UCTR;//接收模式IFG2 &= ~UCB0TXIFG;//清除中断标志位UCB0CTL1|=UCTXSTT;//发送起始位的同时还发送器件地址//接收高位while(!(IFG2 & UCB0RXIFG));IFG2 &= ~UCB0RXIFG;//中断标志位复位i |= UCB0RXBUF; i<<=8;UCB0CTL1 |= UCTXSTP;//接收低位while(!(IFG2 & UCB0RXIFG));IFG2 &= ~UCB0RXIFG;//中断标志位复位i |= UCB0RXBUF;while(UCB0CTL1 & UCTXSTP);//确保停止位发送return i;}#ifndef __G2553I2C_H#define __G2553I2C_Hvoid WriteI2C_ADDR_BYTE(int addr,unsignedchar regaddr,unsignedchar data);void ReadI2C(int devaddr,unsignedchar regaddr, unsignedchar * dataarray, int n); void WriteI2C1(int devaddr,unsignedchar data);unsignedchar ReadI2C1(int addr);void WriteI2C_ADDR_WORD(unsignedchar addr,unsignedchar regaddr,unsignedint data); unsignedint ReadI2C_ADDR_WORD(unsignedchar devaddr,unsignedchar regaddr);#endif#ifndef __INITG2553 #define __INITG2553 void init_clk(); void init_TA();void init_I2C(); void init_IO();#endif原理图。

最简单的数字收音机

最简单的数字收音机

最简单的数字收音机成都信息工程学院刘建睿五个按键、一个电感,三个电容,一个晶振、一个耳机插口、一块芯片。

相信吗?只要上面的元件,再加上一块电路板,不超过10块钱,就能制作出一台数字FM调频收音机,没错收音机就是这么简单。

如果你曾经因为复杂的电路和痛苦的调试过程而对自己组装收音机望而却步,那么今天RDA7088单片DSP收音机芯片一定能实现你的梦想。

RDA7088是锐迪科微电子生产的单片收音机芯片,主要安装在MP4,手机等设备上实现收音机功能,由于不能回传频道数据,不能接收任意频道,实际使用较少,淘宝售价不到2元一片。

RDA7088相关参数:●芯片电压要求:1.8-3.6V●封装:SOP16●FM频率覆盖76MHz-108MHz●自动搜台●软开/关机功能●末组电台记忆功能●定频接收功能●全频道搜索时间:<5秒●最大工作电流20mA●立体声管脚功能:1.PDN:电源使能2.GND:地3.GND:地4.FMIN:FM信号输入5.GND:地6.VDD:电源正7.SEEK-:频道加8.SEEK+:频道减9.VOL-:声音加10.VOL+:声音减11.GND:地12.ROUT:右声道输出13.LOUT:左声道输出14.GND:地15.VDD:电源正16.RCLK:32.768k参考频率输入电路使用耳机地作为天线(很多MP4,手机等收音机都是这样做的),L1与C2组成谐振网络,旁边二极管是防止天线意外输入大信号损坏芯片的,在一般使用使用环境下可以取消,使用电池供电时,C1电容也可以取消。

使用操作: 开机:按下POWER 键开机; 搜台:按下SEEK+、SEEK- 分别为加频道和减频道; 音量调节:按下VOL+、VOL-分别是加、减音量; 关机:开机状态下按下POWER 键23412345678910111213141516JP1R DA7088Y132.768K VCCVCC S1SEEK-S5SEEK+S3VOL-S4VOL+S2POWERL1100n HC 124PC 2223R OUT LOUTR OUTLOUTC 347uF C 447uF123J2LM1117+5VCC12J3DC IN+5J1PHONEJ AC K212J42V-3VVCC原理图PCB 图。

基于RDA5820的芯片功能扩展(DOC)

基于RDA5820的芯片功能扩展(DOC)

成都信息工程学院基于RDA5820芯片功能扩展班级:技术人员:文档整理:指导老师:日期:年月号摘要该项目是以收音机芯片为核心,进行一系列功能扩展(扩展功能自定)。

其中采用收音机芯片(RDA5820)进行无线电的接收。

同时以TI芯片(MSP430F5529)作为主控芯片进行显示与控制。

最后是以芯片(TDA2822)作为功放模块进行音量调节。

显示包括时钟显示和收音机频段显示。

关键词:RDA5820;MSP430F5529;TDA2822AbstractA series of function extension is based on the radio chip, in which uses the radio chip (RDA5820) to carry out radio reception. At the same time, with TI chip (MSP430F5529) as the master control chip for display and control. Finally based on chip (TDA2822) as a power amplifier module which can adjust the volume. Display including the clock display and the radio spectrum.Key Words:RDA5820; MSP430F5529; TDA282目录1 引言 (1)1.1 背景 (1)1.2 研究内容提要 (1)2 系统框图 (2)3 主控模块 (3)3.1 芯片选择 (3)3.2 主控芯片 (4)3.3 JTAG接口 (5)3.4 液晶显示模块 (6)3.5 晶振 (6)3.6 变压模块 (7)3.7 MSP430F5529芯片介绍 (7)3.7.1 MSP430系列 (8)3.7.2 部分功能介绍 (9)4 收音机模块 (10)4.1 RDA5820概述 (10)4.2 应用范围 (10)4.3 功能特点 (11)4.4 电气特性 (11)5 功率放大模块 (11)5.1 功率放大电路说明 (11)5.2 TDA2822芯片介绍 (12)5.2.1 概述与特点 (12)5.2.2 引出端功能 (12)5.3 应用电路 (13)5.3.1 TDA2822立体声应用线路 (13)5.3.2 TDA2822单声道桥式(BTL)应用线路 (14)6 部分程序及代码 (14)7 总结 (15)参考文献 (16)1引言1.1背景从1923年1月23日第一批收音机的问世到现今,收音机经历了翻天覆地的“改革”,从矿石收音机、电子管收音机、晶体管收音机、集成电路收音机到如今的DSP收音机(全球收音机数字化),可谓日新月异。

RDA5807m+IIC收音机51单片机C程序

RDA5807m+IIC收音机51单片机C程序

RDA5807m驱动程序+ IIC 程序/****************************************************************************** ************ 介绍: RD5807M收音机程序供电3.3v 主控使用51单片机显示使用LCD1602** 作者: 胖子** 时间:2016-1-5** 地点:桂林电子科技大学******************************************************************************* **********/#include <reg51.h>#include <string.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define ulint unsigned long int#define lint long intuchar code xian[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};uchar code hang[]={0xfe,0xfd,0xfb,0xf7}; //矩阵键盘扫描使用//RDA 的寄存器地址#define RDA_R00 0X00 //读出16个位的ID =0X5800#define RDA_R02 0X02 //DHIZ[15],DMUTE[14]静音,MONO[13]声道,BASS[12]重低音,SEEKUP[9],SEEK[8],SKMODE[7],CLK_MODE[6:4]时钟源选择,SOFTRESET[1]软复位,ENABLE[0]电源使能#define RDA_R03 0X03 //CHAN[15:6],TUNE[4],BAND[3:2],SPACE[1:0] 设置频率带宽步长#define RDA_R04 0X04 //STCIEN[14],DE[11],I2Senable[6],#define RDA_R05 0X05 //INT_MODE[15],SEEKTH[14:8](设定自动搜索信号强度阀值),LNA_PORT_SEL[7:6]=0b10,LNA_ICSEL_BIT[5:4],VOLUME[3:0]音量;#define RDA_R0A 0X0A //STC[14]seek complete SF[13]seek fail readchan[9:0]当前频道#define RDA_R0B 0X0B //RSSI[15:9],FM TRUE[8]当前频道是一个节目台#define RDA_READ 0X23 //读RDA5807#define RDA_WRITE 0X22 //写RDA5807//IO操作函数sbit SDA=P2^1;sbit SCL=P2^0;sbit RW =P1^1;sbit RS=P1^0;sbit EN=P2^5;uchar code a[]="FM: . ";uchar code b[]="Vol: RSSI: ";uchar code shu[]="0123456789";uchar num ;void delayms(uint x) //延迟程序uint i,j;for(i=x;i>0;i--)for(j=113;j>0;j--);}/*********************************************** 矩阵键盘程序********************************************************************/uchar ScanKey() //矩阵键盘扫描返回值是当前按键数值如没按下则返回值为零{uint x,y;for(x=0;x<4;x++){uchar temp,gaowei;P3=hang[x]; //分行置零temp=P3&0xf0;if(temp!=0xf0){delayms(10);if(temp!=0xf0){gaowei=P3/16; //判断是第几列的按键按下,将数据装入高四位switch(gaowei){case 0xe:y=0; break;case 0xd:y=1; break;case 0xb:y=2; break;case 0x7:y=3; break;}while(temp!=0xf0){temp=P3&0xf0;}return xian[x][y];}}}return 0;}/******************************************************* LCD1602程序************************************************************************/void write_com(unsigned char com)RS=0;P0=com;delayms(5);EN=1;delayms(5);EN=0;}void write_data(unsigned char date){RS=1;P0=date;delayms(5);EN=1;delayms(5);EN=0;}void init_1602(){P0=0xc0;RW =0;EN=0;write_com(0x38); //éè??16*2??ê?£?5*7μ??ó£?8??êy?Y?úwrite_com(0x0c); //éèa??ê?£?2ê?1a±êwrite_com(0x06); //D′ò×?·?oóμ??·ó1write_com(0x01); //??êá?£?êy?Yá?}void DisplayFrq(float Frq) //显示频率{uint F;F=Frq*10;write_com(0x80+3);write_data(shu[F/1000]);delayms(1);write_data(shu[F/100%10]);delayms(1);write_data(shu[F/10%10]);delayms(1);write_com(0x80+7);write_data(shu[F%10]);delayms(1);}void DisplayVol(uint Vol) //显示音量{write_com(0x80+0x40+4);write_data(shu[V ol/10]);delayms(1);write_data(shu[V ol%10]);delayms(1);}void Display_mute() //显示静音{write_com(0x80+0x40+4);write_data('x');delayms(1);write_data('x');delayms(1);}void Display_RSSI(uint RSSI) //显示信号强度{write_com(0x80+0x40+14);write_data(shu[RSSI/10]);delayms(1);write_data(shu[RSSI%10]);delayms(1);}/*----------------------------------------IIC通信程序---------------------------------------------------*/ void IIC_delayms() //用于IIC延时{_nop_();_nop_();_nop_();_nop_();}void OpenIIC() //IIC启动信号{SDA=1;SCL=1;IIC_delayms();SDA=0;IIC_delayms();SCL=0;}void CloseIIC() //IIC停止信号{SCL=0;SDA=0;IIC_delayms();SCL=1;SDA=1;IIC_delayms();}uchar IIC_Wait_Ack(void) //IIC发送字节后等待从机发送响应信{uchar ucErrTime=0;SDA=1;IIC_delayms();SCL=1;IIC_delayms();while(SDA==1){ucErrTime++;if(ucErrTime>250){CloseIIC();return 1;}}SCL=0;return 0;}void IIC_Ack(void) //发送应答信号{SCL=0;SDA=0; //0±íê?ó|′eIIC_delayms();SCL=1;IIC_delayms();SCL=0;}void IIC_NAck(void) //IIC 非应答信号{SCL=0;SDA=1;IIC_delayms();SCL=1;IIC_delayms();SCL=0;}void IICsendByte(uchar txd) //IIC·写一个字节{uchar t;SCL=0;for(t=0;t<8;t++){if(((txd&0x80)>>7)==1)SDA=1;elseSDA=0;txd<<=1;IIC_delayms();SCL=1;IIC_delayms();SCL=0;IIC_delayms();}}uchar IICReadByte(unsigned char ack) //IIC读一个字节{unsigned char i,receive=0;SDA=1; //51单片机讲引脚置高可设为输入引脚for(i=0;i<8;i++ ){SCL=0;IIC_delayms();SCL=1;receive<<=1;if(SDA==1)receive++;IIC_delayms();}if (!ack)IIC_NAck();elseIIC_Ack();return receive;}uint ReadReg(uchar regAddr) //芯片读寄存器{uint buf;OpenIIC();IICsendByte(RDA_WRITE); //发送芯片地址方向为写IIC_Wait_Ack();IICsendByte(regAddr); //发送寄存器地址IIC_Wait_Ack();OpenIIC();IICsendByte(RDA_READ); // 发送芯片地址方向为读IIC_Wait_Ack();buf = IICReadByte(1);buf = buf<<8;buf =buf|IICReadByte(0);CloseIIC();return buf;}void WriteReg(uchar regAddr,uint val) //芯片写寄存器{OpenIIC();IICsendByte(RDA_WRITE); //发送芯片地址方向为写IIC_Wait_Ack();IICsendByte(regAddr); //发送寄存器地址IIC_Wait_Ack();IICsendByte(val>>8);IIC_Wait_Ack();IICsendByte(val&0XFF);IIC_Wait_Ack();CloseIIC();}void Vol_Set(uchar vol) //音量设置0~15{uint temp=0;temp=ReadReg(RDA_R05);temp&=0xfff0;WriteReg(0x05,vol|temp) ;}void Mute_Set(uchar mute) //静音设置1为静音0为不静音{uint temp=0;temp=ReadReg(0X02);if(!mute)temp|=1<<14;else temp&=~(1<<14);WriteReg(0X02,temp) ;}void Bass_Set(uchar bass) //频带设置{uint temp=0;temp=ReadReg(0X02);if(bass)temp|=1<<12;else temp&=~(1<<12);WriteReg(0X02,temp) ;}uchar Rssi_Get(void) //信号强度获取0~63{uint temp=0;temp=ReadReg(0X0B);temp=(temp>>9)&0x7f;return temp;}void Seekth_Set(uint rssi) //自动搜台信号阈值强度0~15 默认为8 数值越低搜到的台越多{uint temp;rssi = rssi & 0xf;temp=ReadReg(0X05);temp&=~(0xf<<8);temp|= rssi<<8;WriteReg(0X05,temp) ;}void Seek_direction(uchar direction) //搜台方向1向上搜索0向下搜索{uint temp;temp=ReadReg(RDA_R02);temp&=~(1<<9);if(direction == 1)temp|= 1<<9;// if(direction == 0)// temp|= 0<<9;WriteReg(0X05,temp) ;}void Freq_Set(uint freq) //频率设置单位是:10KHz 6500~10800{uint 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;else 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 int seek_channel(void) //半自动搜台{unsigned long temp;temp=ReadReg(RDA_R02);temp |= (1<<8);WriteReg(RDA_R02,temp) ; //SEEK位置一使能自动搜台while( (ReadReg(RDA_R0A)&(1<<14)) == 0 ) // 等待STC位置一表示搜索完成{delayms(10); //?óê±10ms}temp = ((ReadReg(RDA_R0A)&0x3FF) * 100000 + 87000000)/10000 ; //获取当前频率return temp; //返回搜到电台频率单位是:10Khz}void FM_enable(uchar flag) //1 使能芯片0 禁用芯片{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); //软复位delayms(30);WriteReg(RDA_R02,0xd081); //?§32.768Khz ?òé÷??μíò? á¢ì?éùSKMODE = 1÷μ?±??μê±í£?1WriteReg(RDA_R03,0x0000); //?μ?êéè?a87MHz £?2100Khz ?μ′??a87M~108MWriteReg(RDA_R04,0x0040); //?ù±WriteReg(RDA_R05,0X8882); //ò?á?éèavol=2 ÷·§?μ?a8FM_enable(1); //??Dé?μ?Seekth_Set(8); //自动搜台信号阈值强度0~15 默认为8 数值越低搜到的台越多}void display_1602(){write_com(0x80);for(num=0;num<34;num++){write_data(a[num]);delayms(5);}write_com(0x80+0x40);for(num=0;num<34;num++){write_data(b[num]);delayms(5);}}void main(){unsigned char Key_num=0,V ol=1,RSSI=0,mute=1;unsigned int RXFreq=8830,time=0;unsigned int Diantai[40]={8830};char Num=0,station=1;unsigned int test=7896;unsigned int temp=10;init_1602();display_1602();RDA_Init(); //RDA5807初始化Freq_Set(8830); //频率设置V ol_Set(2) ;DisplayFrq(88.3);DisplayVol(2); //显示音量while (1){time++;if(time>1000)Display_RSSI(Rssi_Get()); //显示信号强度Key_num=ScanKey();switch(Key_num){case 1: { if(RXFreq==8800)RXFreq=8800; //频率减else RXFreq-=10;Freq_Set(RXFreq);DisplayFrq(RXFreq/100.0);while(0!=ScanKey()); //按键释放break;}case 2:{ if(RXFreq==10800)RXFreq=10800;//频率加else RXFreq+=10;DisplayFrq(RXFreq/100.0);while(0!=ScanKey()); //按键释放break;}case 5: { //声音减if(V ol==0)V ol=0;elseV ol-=1;Vol_Set(V ol);DisplayV ol(V ol); //显示音量while(0!=ScanKey()); //按键释放break;}case 6:{ if(V ol==15)V ol=15; //声音加else V ol+=1;V ol_Set(V ol);DisplayV ol(V ol); //显示音量while(0!=ScanKey()); //按键释放break;}case 7:{ if(mute==1) //静音{Mute_Set(1);Display_mute(); //显示静音while(0!=ScanKey()); //按键释放mute=0;break;}if(mute==0){Mute_Set(0);DisplayV ol(V ol); //取消静音显示音量mute=1;}while(0!=ScanKey());break;}case 9:{ //电台减但是必须先按9进行电台搜索while(0!=ScanKey()); //按键释放Seek_direction(0); //向下搜索RXFreq = seek_channel(); //搜索下一个频道DisplayFrq(RXFreq/100.0);break;}case 10:{ //电台加但是必须先按11进行电台搜索while(0!=ScanKey()); //按键释放Seek_direction(1); //向上搜索RXFreq = seek_channel(); //搜索下一个频道Freq_Set(RXFreq);DisplayFrq(RXFreq/100.0);break;}default:break;}}}// case 9:{ //电台减但是必须先按11进行电台搜索// if(station==0)break;// if(Num>0)Num-=1;// else Num=station-1;// Freq_Set(Diantai[Num]);// DisplayFrq(Diantai[Num]/100.0);// RXFreq=Diantai[Num];// Display_now(1) ; //显示当前电台号// while(0!=ScanKey()); //按键释放// break;// }// case 10:{ if(station==0)break; //电台加但是必须先按11进行电台搜索// if(Num<(station-1))Num+=1;// else Num=0;// Freq_Set(Diantai[Num]);// DisplayFrq(Diantai[Num]/100.0);// RXFreq=Diantai[Num];// Display_now(Num); //显示当前电台号// while(0!=ScanKey()); //按键释放// break;// }//// case 11:{ //自动搜台并且存储按9 或者10 可以上下变换电台。

基于RDA5807的收音机讲解

基于RDA5807的收音机讲解

编号:课程设计说明书(信息系统综合实训)题目:立体声调频收音机院(系):信息与通信学院专业:电子信息工程学生姓名:峰之使者学号:指导教师:2016年 1 月8 日摘要本系统为立体声调频收音机,设计采用RDA5807收音模块,与单片机相结合,使收音解调电路设计变的简单,实现FM收音并显示频率。

我们通过矩阵键盘设定我们需要的频段,并设置音量大小,通过诺基亚5110液晶屏显示出来,并根据所显示接收信号的强度等级,判断收音所在地的信号强度。

RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,所以使用本模块很容易实现,且系统可靠稳定。

关键词:单片机;RDA5807收音模块;FM收音;目录引言 (1)1 任务要求与设计的背景 (1)1.1 设计任务要求 (1)1.2 课题背景 (1)2 调频收音机的分析和设计思路 (1)2.1 系统设计原理 (1)2.2 系统框图分析和设计 (2)3 硬件设计 (2)3.1 单片机最小系统 (2)3.1.1 时钟电路 (2)3.1.2 复位电路 (3)3.2 RDA5807模块 (3)3.2.1 RDA5807模块管脚 (3)3.2.2 RDA5807模块特点 (4)3.2.3 RDA5807模块与单片机接口 (4)3.3原理图 (5)3.4 PCB图 (5)4 软件设计 (5)4.1 IIC通信 (5)4.2 IIC时序 (6)4.3软件流程图 (7)5 调试过程 (9)5.1 电路板制作 (9)5.2 硬件调试 (9)5.3 软件调试 (10)5.4 实物图 (11)6 总结 (11)谢辞 (13)参考文献 (14)附录 (15)引言随着科学技术的发展,调频收音机的应用十分广泛,尤其消费类占有相当的市场。

从分离元件组成的收音机到由集成电路组成的收音机,调频收音机技术已达到十分成熟的地步。

RDA5800收音机芯片工作原理与应用

RDA5800收音机芯片工作原理与应用

RDA5800收音机芯片工作原理与应用近几年,随着手机应用的多功能化以及MP3/MP4媒体播放器的普及,FM接收已经成了必备的功能。

有业内人士曾经乐观表示,到2008年,FM手机可以占到总量的40%以上,这样大的终端市场势必导致对FM接收芯片(FM Tuner)的需求也越来越大。

而与此同时,伴随着集成电路设计和制造技术的快速发展,FM Tuner开始从模块化时代向SoC时代演进。

单芯片FM Tuner技术日臻完善,性能也相比于以前有了很大的提高,具备了高接收灵敏度,能够支持单声道(mono)和立体声(stereo)切换,并且开始支持无线数据服务 (RDS)/无线广播数据服务(RBDS)。

RDA5800芯片是锐迪科微电子(RDA Micro)公司独立开发的一颗全集成CMOS FM Tuner芯片,具有高集成度、高性能、低成本、低功耗等方面的优势,是目前极具市场竞争优势的一款产品,受到业内专家和应用工程师的普遍关注。

下面就来讨论一下此款芯片的功能特性及设计技巧。

RDA5800芯片基本特性它采用中芯国际(SMIC)0.18微米 RF CMOS先进工艺,射频部分采用了低中频结构,FM立体声解码则由数字DSP来实现,驱动部分将语音功放集成到了芯片中,这些都有效地提高了芯片性能,降低了解决成本,并具有非常好的集成度。

芯片采用4×4mm 24脚QFN封装,内部集成了LDO和晶体振荡电路,总的工作电流为16mA,具有自动搜台,柔软静音,重低音,噪声抑制,直接驱动耳塞等优异的性能。

RDA5800芯片的主要性能指标如表1所示。

RDA5800芯片工作原理RDA5800主要分成模拟和数字两大部分。

模拟部分包括支持所有FM频段(76~108M Hz)的低噪声放大器(LNA)、限幅器(Limiter)、正交镜像抑制混频器(MIXER)、可调增益放大器(PGA)、高精度模数转换器(ADC)、高精度数模转换器(DAC)、频率合成器(Synthesizer)以及电源用的LDO。

RDA5807的数控收音机教学提纲

RDA5807的数控收音机教学提纲

R D A5807的数控收音机摘要现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。

为了解决这些问题,本次采用RDA5807收音模块与单片机相结合,实现FM收音并显示频率。

单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用stc89c52单片机。

此外,RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强,灵敏度高、噪声小、抗干扰能力强等功能,还可以具备频率显示功能,所以使用本模块很容易实现。

目录引言 (1)1.方案选择 (2)1.1方案一…………………………………………………………..1.2方案二………………………………………………………….1.3方案确定………………………………………………………2.系统方案设计及各模块原理……………………………………2.1STC89C52核心模块………………………………………………2.1.1STC89C52单片机简介…………………………………………2.1.2STC89C52主要性能………………………………………….2.2RDA5807模块…………………………………………………….2.2.1RDA5807模块特点……………………………………………2.2.2RDA5807模块使用…………………………………………2.3显示模块……………………………………………………………2.3.11602液晶简介…………………………………………………2.3.21602引脚说明…………………………………………………2.4IIC通信…………………………………………………………2.4.1IIC简介……………………………………………………….2.4.2IIC时序………………………………………………………3系统程序设计……………………………………………………4印刷电路板的设计与制作………………………………………4.1印刷电路板的布线设计…………………………………………4.2印刷电路板的制作………………………………………………5 电路板的调试……………………………………………………6 结论………………………………………………………………谢辞……………………………………………………………….参考文献………………………………………………………………附录…………………………………………………………………引言本设计研究FM收音机分为硬件电路和程序设计两个方面。

RDA5820收音发射一体机论文51单片机汇编

RDA5820收音发射一体机论文51单片机汇编

编号:课程设计(论文)说明书题目:基于RDA5820的数控FM收发一体机院(系):信息通信学院专业:电子信息工程学生姓名:胖子2014 年 1 月 1 日该设计是由STC公司生产的一种低功耗、高性能CMOS8位微控制器 STC89c52单片机作为主控芯片,辅以必要电路,基于RD5820的FM收发一体机。

该收发机通过控制独立按键控制单片机驱动FM收发芯片RDA5820,能接收65M-108M频带的FM信号,也可以发射该频段的FM信号。

使用Nokia5110液晶作为显示模块,显示收发频率,音量,信号强度等。

最终完成了一个具备噪声消除、软静音、低音增强等功能、灵敏度高、噪声小、抗干扰能力强、具备收发频率显示功能的FM收发机。

关键词:RDA5820;FM;收发一体;Nokia5110液晶The design is a kind of low power, high performance CMOS8 manufactured by STC bit micro controller STC89c52 as the master chip, supplemented by the necessary circuit, FM transceiver machine based on RD5820.The transceiver control through independent key control computer to drive the FM transceiver chip RDA5820, FM signal receiving the 65M-108M band, FM signal can also launch the band. Use Nokia5110 LCD as the display module, display transceiver frequency, volume, signal strength etc.. Finally finished with a noise elimination,soft mute, bass boost function, high sensitivity, low noise, strong anti-jamming ability, have the receiving frequency display FM transceiver function.Key words:RDA5820; FM; transceiver ;Nokia5110 LCD目录引言 (1)1 方案选择 (1)2 硬件系统设计 (1)2.1 stc89c51单片机 (2)2.1.1stc89c51管脚说明 (2)2.2 Nokia5110LCD (4)2.3 RDA5820 (5)2.4 功率放大器 (7)2.5 独立按键 (9)2.6 收发机总电路图 (10)3 软件设计 (11)3.1 程序初始化 (11)3.2 按键按下判断及处理 (12)4 实验结论 (13)谢辞 (15)参考文献 (16)附录 (17)引言随着科学技术的发展,FM调频收音机的应用十分广泛,尤其消费类占有相当的市场。

RDA5820收音 发射模块PL102BH-20

RDA5820收音 发射模块PL102BH-20

3
SCLK,RCLK 接口
1
ENABLE=0
2
ENABLE=0
2
PA_GAIN[5:0]=[111111];VRF=3dBm 22.5
PA_GAIN[5:0]=[100111];VRF=0dBm 20.7
PA_GAIN[5:0]=[011100];
VRF=-3dBm
20
I
工作电流
PA_GAIN[5:0]=[000000];
九、模块实物图
十、包装说明:(参考实际物品包装)
C、 使用时模块四周应留有2MM以上的空间,不易放置组件。以方便焊接和维修。 D、 模块的电源退藕电容要尽量靠近模块引脚。 E、 模块下面和附近不易放置较强辐射或发热性元器件。 F、 FM接收天线在PCB上的走线要尽量宽,避免转弯过多或于其它电路走线交叉。 G、 数据线走线应尽量短。 H、 做好ESD静电防护措施。 I、 模块接地不需要单独隔离(模拟与数字电路部分)。 J、 因模块设计时采用的元器件精度较高,用户不可随意拆卸、更改、调整模块电路组件及参数。
二、应用范围: A: 移动DVD、TV、MP3、MP4等内置式FM全频段无线接收模块。 B:工矿、企业、校园、小区、旅游区等公共场所立体声调频广播系统。 C:无线音响及无线立体声耳机功能。 D:GPS导航、电视播音系统等无线调频收音。 E:高档游戏机及无线音频电子玩具。 F:移动电话、手机、对讲系统、移动收音装置等立体声收音。 G:PDAS及Notebook PC等周边应用。
dB
% Ohm
MHz dBm dBm
△f=22.5KHz,Mono
单声道信噪比
Limiter off
55
60
dB
SNR

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图-推荐下载

RDA5820和51单片机制作的FM数字收音机源代码及电路原理图-推荐下载
rda5820和51单片机制作的fm数字收音机源代码及电路原理图单片机原理图收音机原理图msp430单片机原理图430单片机原理图单片机收音机单片机开发板原理图8051单片机原理图蜻蜓fm收音机蜻蜓fm收音机电脑版fm收音机
* 晶振:8M
*/
#include <reg52.h>
#include <string.h>
void IICWriteByte( uchar byte );
uint IICRead(uchar uaddr, uchar romaddr,bit _i6b);
uchar IICReadByte(bit next);
void FM_SetFreq();
void FM_SetVolume();
uint FM_ReadReg(uchar regAddr); //读取 FM 模块的寄存器
void Lcd_Init();
void Lcd_Comm(uchar cmd);
void Lcd_Data(uchar dat);

void Lcd_String(char* dat);
void Lcd_DispRssi();
void Lcd_DispFreq();
void Lcd_Refresh();
void Lcd_DispDiscript();
void Eprom_LoadInitData();
uint Eprom_Read(uchar addr,bit _16bit);
void Eprom_Write(uchar addr,uint dat,bit _16bit);
void main()
{
{0×00,0×00,0×00,0×00,0×06,0x1E,0x1E,0x1E}, //显示型号强度的自定义字符
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于R D A的收音机标准化管理部编码-[99968T-6889628-J68568-1689N]编号:课程设计说明书(信息系统综合实训)题目:立体声调频收音机院(系):信息与通信学院专业:电子信息工程学生姓名:峰之使者学号:指导教师:2016年 1 月 8 日摘要本系统为立体声调频收音机,设计采用RDA5807收音模块,与单片机相结合,使收音解调电路设计变的简单,实现FM收音并显示频率。

我们通过矩阵键盘设定我们需要的频段,并设置音量大小,通过诺基亚5110液晶屏显示出来,并根据所显示接收信号的强度等级,判断收音所在地的信号强度。

RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,所以使用本模块很容易实现,且系统可靠稳定。

关键词:单片机;RDA5807收音模块;FM收音;目录引言随着科学技术的发展,调频收音机的应用十分广泛,尤其消费类占有相当的市场。

从分离元件组成的收音机到由集成电路组成的收音机,调频收音机技术已达到十分成熟的地步。

本次设计采用RDA5807收音模块与单片机相结合,实现FM收音并显示频率。

单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。

单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用STC89c52单片机。

此外,RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强、灵敏度高、噪声小、抗干扰能力强等功能,还可以具备频率显示功能。

1 任务要求与设计的背景设计任务要求本论文的任务是根据调频收音机的特点和应用情况,结合新一代高性能芯片设计一种使用简单、性能优良的收音机。

整个系统以单片机STC89S52控制,RDA5807芯片为核心,配置相应的外设及接口电路。

接收频率可设置、输出音量可数控、显示信号强度和设置静音,用C语言开发,组成一个多功能的程控数字收音机。

课题背景随着科学技术的不断发展,新颖的调频收音机的不断出现,技术不断的提高,设计出来的收音机外型精致和小巧。

从分离元件到集成电路,这标志着收音机的内部电路简单。

用一个集成块就能完成所有的工作。

从早期的调幅收音机到现在的调频收音机,我们可以想象收音机的不断的改进和不断创新,使收音机的发展空间愈来愈大。

现在,出现了新一代高科技产品——数字调频收音机,功能强大,性能优良,设计精巧耐用。

2 调频收音机的分析和设计思路系统设计原理本文提出的采用RDA5807模块作为解调的核心器件的全数控调频收音机设计方案,根据接收频率可设置、输出音量可数控、显示信号强度和设置静音等要求,本设计外置一根天线,信号从天线进入RDA5807模块,因为内部有一放大器,所以不需要外加放大器,内部AD对信号进行采样,通过单片机的I/O口与RDA5807的IIC总线相连,经过程序控制进行对收音芯片内部的寄存器读写,改写这些寄存器,则可输出对应的频率和音量的信号。

控制电路采用4*4的矩阵键盘,输入的数字信息经STC89C52控制的诺基亚5110液晶屏显示。

系统框图分析和设计系统结构组成如图所示,主要由单片机控制模块、键盘与显示模块、收音机解调模块、天线组成。

其中,信号接收由单片机控制模块、收音机解调模块和天线实现,键盘与显示模块则用来实现人机交互的功能,通过外接的喇叭或者耳机可以接收到对应频道的信息。

3 硬件设计单片机最小系统STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

使用STC公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。

STC89C52具有以下标准功能:8k字节Flash、256字节RAM、32 位I/O 口线、看门狗定时器、2个数据指针、二个16 位定时器/计数器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。

另外,STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

一般单片机需外接一个时钟电路和一个复位电路,如图和图所示。

时钟电路图时钟电路XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。

内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。

晶振的频率可以在1MHz-24MHz内选择。

电容取30PF左右。

STC89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。

这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。

片外石英晶体或者陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。

对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,这里采用电容22pF,晶振采用12MHz。

复位电路STC89C52的外部复位电路有上电自动复位和手动按键复位。

上电复位电容充电来实现。

手动按键复位又分为按键电平复位和按键脉冲复位。

按键电平复位电路是在普通RC复位电路的基础上接一个有下拉电阻10K、上拉电容10μf接VCC,电源由开关接至复位脚(和上拉电容并联),上拉电容支路负责在“上电”瞬间实施复位;开关通过10K下拉电阻分压器,保证对单片机实施按键电平复位。

电路图如下图所示:图复位电路RDA5807模块RDA5807模块管脚“”立体声收音模块( FM Stereo radio Module)高灵敏度、低功耗、超小体积的调频立体声收音模组。

采用RDA Microelectronics的RDA5807M(或RDA5802NM),此电路外围元件少、噪声系数极小。

具有体积小、低功耗、低成本、应用简单、使用范围广等优点。

是一款简单易用且具极高性价比的单芯片FM立体声收音模组,管脚如图所示,管脚功能如表。

表管脚功能图 RAD5807模块管脚示意图RDA5807模块特点(1)采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。

(2)、灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小(11*Max)、使用极其简单。

(3)、 76-108MHz全球FM频段兼容(包括日本76-91MHz和欧美)。

(4)、 I2C串行数据总线接口通讯,支持外部基准时钟输入方式。

(5)、完全整合的COMS工艺单晶片集成电路,功耗极小。

(6)、内置高精度A/D(模数转换器)及数字频率合成器。

(7)、内置LDO调整、低功耗、超宽电压使用范围()。

(8)、内置噪声消除、软静音、低音增强电路设计。

(9)、高功率32Ω负载音频输出,直接耳机驳接,无需外接音频驱动放大。

RDA5807模块与单片机接口RDA5807是以I2C协议为通信方式的芯片,通过CLK时钟总线和SDA数据总线与单片机相连,如图所示。

图 RAD5807与单片机接口原理图本原理图是实现一个收音功能的电路,通过天线接收广播,并利用RDA5807收音模块,解调出音频信号,通过耳机播放出来,如图所示。

图系统原理图PCB图利用软件DXP,将原理图导入进行制作PCB图,通过白色线的指引,把各个部分的电路连接起来,如图所示。

图 PCB图4 软件设计IIC通信IIC是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS),IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。

这种方式简化了信号输总线。

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。

所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

IIC时序在IIC总线传输过程中,将两种特定的情况定义为开始和停止条件:当SCL保持“高”时,SDA由“高”变为“低”为开始条件;当SCL保持“高”且SDA由“低”变为“高”时为停止条件。

开始和停止条件均由主控制器产生。

使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA 取样,以检测这种变化。

SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。

输出到SDA线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK。

如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。

I2C数据总线传送时序。

数据传送具有应答是必须的。

与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。

当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。

在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。

图为RDA5807寄存器写时序,图为RDA5807寄存器读时序。

图 I2C写时序图 I2C读时序软件流程图在应用系统中,系统软件的设计是建立在具体硬件电路基础之上,根据系统功能要求可靠地实现系统的各种功能。

好的软件设计能够充分发挥微控制器的运算和逻辑控制功能,从而提高仪器的精度和使用的方便性。

先初始化接收频率,并实现对频率和音量步进的控制。

处理用户由键盘键入的频率值和音量值,判断是否超出范围,生成频率和音量控制字,经I2C方式送入解调模块并改写寄存器数据,设置用户所需的接收频段和音量,并通过程序实现频率、音量和信号强度的显示,程序流程图如图所示。

LCD5110液晶屏进行初始时,程序继续。

再对LCD清屏,为显示作准备。

再显示我们需要的信息。

最后初始设置频率和音量,初始化程序如下:LCD_init(); 如图所示。

图解决后电路软件调试软件遇到的主要问题是RDA5807的I2C协议通信的时序问题,I2C协议通过时钟总线CLK和数据总线SDA与单片机相连,我们所用的单片机没有I2C接口,给我们造成了很大的不便,我们是根据I2C时序,通过拉低或拉高总线和延时函数模拟I2C。

相关文档
最新文档