基于RDA5807的收音机讲解Word文档格式.docx
- 文档编号:20591950
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:33
- 大小:1.25MB
基于RDA5807的收音机讲解Word文档格式.docx
《基于RDA5807的收音机讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于RDA5807的收音机讲解Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
1.2课题背景
随着科学技术的不断发展,新颖的调频收音机的不断出现,技术不断的提高,设计出来的收音机外型精致和小巧。
从分离元件到集成电路,这标志着收音机的内部电路简单。
用一个集成块就能完成所有的工作。
从早期的调幅收音机到现在的调频收音机,我们可以想象收音机的不断的改进和不断创新,使收音机的发展空间愈来愈大。
现在,出现了新一代高科技产品——数字调频收音机,功能强大,性能优良,设计精巧耐用。
2调频收音机的分析和设计思路
2.1系统设计原理
本文提出的采用RDA5807模块作为解调的核心器件的全数控调频收音机设计方案,根据接收频率可设置、输出音量可数控、显示信号强度和设置静音等要求,本设计外置一根天线,信号从天线进入RDA5807模块,因为内部有一放大器,所以不需要外加放大器,内部AD对信号进行采样,通过单片机的I/O口与RDA5807的IIC总线相连,经过程序控制进行对收音芯片内部的寄存器读写,改写这些寄存器,则可输出对应的频率和音量的信号。
控制电路采用4*4的矩阵键盘,输入的数字信息经STC89C52控制的诺基亚5110液晶屏显示。
2.2系统框图分析和设计
系统结构组成如图2.1所示,主要由单片机控制模块、键盘与显示模块、收音机解调模块、天线组成。
其中,信号接收由单片机控制模块、收音机解调模块和天线实现,键盘与显示模块则用来实现人机交互的功能,通过外接的喇叭或者耳机可以接收到对应频道的信息。
图2.1收音机系统框图
3硬件设计
3.1单片机最小系统
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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
一般单片机需外接一个时钟电路和一个复位电路,如图3.1和图3.2所示。
3.1.1时钟电路
图3.1时钟电路
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
STC89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。
片外石英晶体或者陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,这里采用电容22pF,晶振采用12MHz。
3.1.2复位电路
STC89C52的外部复位电路有上电自动复位和手动按键复位。
上电复位电容充电来实现。
手动按键复位又分为按键电平复位和按键脉冲复位。
按键电平复位电路是在普通RC复位电路的基础上接一个有下拉电阻10K、上拉电容10μf接VCC,电源由开关接至复位脚(和上拉电容并联),上拉电容支路负责在“上电”瞬间实施复位;
开关通过10K下拉电阻分压器,保证对单片机实施按键电平复位。
电路图如下图3.2所示:
图3.2复位电路
3.2RDA5807模块
3.2.1RDA5807模块管脚
“RRD-102V2.0”立体声收音模块(FMStereoradioModule)高灵敏度、低功耗、超小体积的调频立体声收音模组。
采用RDAMicroelectronics的RDA5807M(或RDA5802NM),此电路外围元件少、噪声系数极小。
具有体积小、低功耗、低成本、应用简单、使用范围广等优点。
是一款简单易用且具极高性价比的单芯片FM立体声收音模组,管脚如图3.3所示,管脚功能如表3.1。
表3.1管脚功能
图3.3RAD5807模块管脚示意图
3.2.2RDA5807模块特点
(1)采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。
(2)、灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小(11*11.2MMMax)、使用极其简单。
(3)、76-108MHz全球FM频段兼容(包括日本76-91MHz和欧美87.5-108.5MHz)。
(4)、I2C串行数据总线接口通讯,支持外部基准时钟输入方式。
(5)、完全整合的COMS工艺单晶片集成电路,功耗极小。
(6)、内置高精度A/D(模数转换器)及数字频率合成器。
(7)、内置LDO调整、低功耗、超宽电压使用范围(2.7-3.6VDC)。
(8)、内置噪声消除、软静音、低音增强电路设计。
(9)、高功率32Ω负载音频输出,直接耳机驳接,无需外接音频驱动放大。
3.2.3RDA5807模块与单片机接口
RDA5807是以I2C协议为通信方式的芯片,通过CLK时钟总线和SDA数据总线与单片机相连,如图3.3所示。
图3.4RAD5807与单片机接口
3.3原理图
本原理图是实现一个收音功能的电路,通过天线接收广播,并利用RDA5807收音模块,解调出音频信号,通过耳机播放出来,如图3.5所示。
图3.5系统原理图
3.4PCB图
利用软件DXP,将原理图导入进行制作PCB图,通过白色线的指引,把各个部分的电路连接起来,如图3.6所示。
图3.6PCB图
4软件设计
4.1IIC通信
IIC是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS)
,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。
这种方式简化了信号输总线。
IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。
所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
4.2IIC时序
在IIC总线传输过程中,将两种特定的情况定义为开始和停止条件:
当SCL保持“高”时,SDA由“高”变为“低”为开始条件;
当SCL保持“高”且SDA由“低”变为“高”时为停止条件。
开始和停止条件均由主控制器产生。
使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDA取样,以检测这种变化。
SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。
输出到SDA线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK。
如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;
当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。
I2C数据总线传送时序。
数据传送具有应答是必须的。
与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SDA线。
当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。
在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。
图4.1为RDA5807寄存器写时序,图4.2为RDA5807寄存器读时序。
图4.1I2C写时序
图4.2I2C读时序
4.3软件流程图
在应用系统中,系统软件的设计是建立在具体硬件电路基础之上,根据系统功能要求可靠地实现系统的各种功能。
好的软件设计能够充分发挥微控制器的运算和逻辑控制功能,从而提高仪器的精度和使用的方便性。
先初始化接收频率,并实现对频率和音量步进的控制。
处理用户由键盘键入的频率值和音量值,判断是否超出范围,生成频率和音量控制字,经I2C方式送入解调模块并改写寄存器数据,设置用户所需的接收频段和音量,并通过程序实现频率、音量和信号强度的显示,程序流程图如图4.3所示。
图4.3总程序流程图
根据图4.3的总程序流程图。
程序从main函数开始,先对LCD5110液晶屏进行初始化,主要对液晶屏进行忙或不忙检测,当液晶屏忙时,程序等待中;
当液晶屏不忙时,程序继续。
再对LCD清屏,为显示作准备。
再显示我们需要的信息。
最后初始设置频率和音量,初始化程序如下:
LCD_init();
//lcd初始化
LCD_clear();
//清屏
xianshi();
//显示初始化
RDA_Init();
//RDA5807初始化
Freq_Set(8830);
//频率初始设置为88.30MHZ
Vol_Set(10);
//音量初始设置为10
矩阵键盘扫描程序,当按键按下时,程序执行对应功能;
当键盘没有按下时,程序结束且这个过程不断循环。
键盘扫描程序如下:
keyscan();
//键盘不断扫描
当键1被按下时,频率值加100KHZ
RXFreq+=10;
//频率加,步进100KHZ
Freq_Set(RXFreq);
//频率设置
当键2被按下时,频率值减100KHZ
RXFreq-=10;
//频率减,步进100KHZ
当键3被按下时,音量值加1
Vol+=1;
//音量加
Vol_Set(Vol);
//音量设置0~15
当键4被按下时,音量值减1
Vol-=1;
//音量减
当键5被按下时,设置静音成功;
当键5再次按下时静音取消
Mute_Set(mute);
//设置静音
mute++;
键盘不断扫描时,也不断的显示,分别对频率、音量、信号强度和静音标志进行显示,显示程序如下:
display_2(RXFreq);
//显示频率
display_1(Vol);
//显示音量
display_3(Rssi_Get());
//显示信号强度
display_4(mute);
//显示是否静音,1为否,0为是
以上步骤不断的循环。
5调试过程
5.1电路板制作
画图:
根据原理图画PCB图,画封装。
打印PCB:
通过转印机把PCB转印到电路板上。
腐蚀:
把电路板放进腐蚀液里腐蚀掉没有被保护的铜。
钻孔:
根据洞口大小选择合适的钻针钻孔。
清洗:
把导线表面的油墨打磨清洗干净。
涂松香:
把松香和天那水的混合液涂在打磨清洗后的板子上,防止铜线被氧化和有助于焊接。
插器件,焊接:
等松香干了,插元器件,并且焊接好。
5.2硬件调试
刚开始调试的时候,我是根据一个文档上写的,耳机接口的公共端可以用作天线,并通过一个磁珠与地隔开,当时一个劲的怀疑软件问题,没有认真检查硬件,经过仔细查阅资料,了解到耳机接口的公共端为地,所以不能用作天线。
解决;
天线端与耳机公
共端断路,耳机公共端直接接地。
如图5.1所示。
图5.1解决后电路
还有一个问题,芯片RDA5807的输出口有两个声道,之前我是用两个磁珠相连,因为磁珠是电感,具有隔交流信号的作用,音频信号为交流信号,磁珠滤除掉了音频信号,所以耳机端不可能接收到音频信号,解决:
移除两个磁珠,用导线把两端连接起来。
如图5.3所示红色框原为两个磁珠,现在为两导线相连.如图5.2所示。
图5.2解决后电路
5.3软件调试
软件遇到的主要问题是RDA5807的I2C协议通信的时序问题,I2C协议通过时钟总线CLK和数据总线SDA与单片机相连,我们所用的单片机没有I2C接口,给我们造成了很大的不便,我们是根据I2C时序,通过拉低或拉高总线和延时函数模拟I2C。
在写I2C
读一个字节的数据时,数据只能读出16位数据的高8位,而不能读出数据的低8位,。
解决:
在读数据前,将SDA总线拉高,因为51单片机讲引脚置高可设为输入引脚,即可读出数据。
部分程序如下:
ucharIICReadByte(unsignedcharack)//IIC读一个字节
{unsignedchari,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();
else
IIC_Ack();
returnreceive;
}
5.4实物图
如图5.3所示,调试出来的电路由矩阵键盘、诺基亚5110液晶屏、RDA5807模块组成。
可以显示接收频率、音量、信号强度,如图5.3所示。
图5.3无线发射控制电路
6总结
本次信息系统综合实训,我用了两个星期,在第一个星期我查阅关于收音机的资料和学习一些单片机的基础,第二个星期我做板并调试程序,这两星期可以说是充实,紧张而又愉快的。
在这两个星期的实训中,我学到了很多东西,不管是在知识架构上,还是在动手动脑能力上都起着潜移默化的影响。
刚开始做收音机,脑袋里面没有一点头绪,通过几天的查阅资料和班里面的同学交流,了解到了FM是如今的一种收音机常用的调制解调方式,这也是我本次实训的芯片RDA5807里面的调制解调方式。
硬件做出来后,调试软件遇到了不少的问题,刚开始把5110液晶屏点亮,费了一段时间,通过查找网上一些关于5110液晶屏的驱动和参考别人的一些程序,终于可以在屏幕上随意读写数据,并且可以显示汉字。
关于RDA5807的程序,我也是上网找了一堆资料,其实它的驱动程序有点难写,特别是I2C协议读写数据,但我们参考别人的程序,对照时序图,可以很快写好RDA5807的驱动程序,通过调用里面的子函数,设置所需的接收频段和音量。
关于矩阵键盘的程序,按键扫描是单片机的一个基本的知识,不过矩阵键盘扫描比较困难,它是8个IO口控制16个键盘,在观看郭天祥的十天学会单片机后,对矩阵有了一定了解,最后能运用矩阵键盘实现对频率设置的功能。
这次实训不仅巩固了以前所学过的知识,锻炼自己动手制作能力,更是让我深刻认识到我对理论知识所学欠缺,理论知识的重要性,这些我会在以后得学习总补习回来,做到理论与实践相结合,更好的提高自己的实际动手能力和独立思考的能力。
谢辞
首先,感谢为我们安排了这次单片机设计实训。
非常感谢学院领导和老师给我们提供硬件条件和在理论知识方面的帮助。
还要感谢老师的授课和实训操作指导,在任务开始前,老师首先就全面的为我们讲注意事项,让我们在实训过程中少犯了不少错,节约了宝贵的时间。
特别感谢老师,是她在整个实训过程中对我们严格要求,耐心指导,反复为我们讲解要点,给与我们极大的帮助以及鼓励,使得我最终完成实训。
参考文献
[1]郭天祥.51单片机C语言教程:
电子工业出版社,2008
[2]李欧儒主编.短波单边带收发信机原理与调制.北京:
人民邮电出版社,1985
[3]董在望.陈雅琴,雷有华,肖华庭.通信电路原理.第二版.北京:
高等教育出版社,2002
[4]孙育才.MCS-51系列单片机及应用(第4版):
东南大学出版社,2004
[5]阎石.数字电子技术基础(第5版):
清华大学出版社,2005
[6]谭浩强.C语言程序设计(第3版):
[7]郑学坚、周斌.微型计算机的原理及应用:
清华大学出版社,2002
[8]胡伟、季晓衡.单片机c程序设计及应用实例:
北京人民邮电出版社.2003
附录
#include<
reg51.h>
string.h>
intrins.h>
lcd5110.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulintunsignedlongint
#definelintlongint
unsignedintRXFreq=8980;
//RDA的寄存器地址
#defineRDA_R000X00//读出16个位的ID=0X5800
#defineRDA_R020X02//DHIZ[15],DMUTE[14]静音,MONO[13]声道,BASS[12]重低音,SEEKUP[9],SEEK[8],SKMODE[7],CLK_MODE[6:
4]时钟源选择,SOFTRESET[1]软复位,ENABLE[0]电源使能
#defineRDA_R030X03//CHAN[15:
6],TUNE[4],BAND[3:
2],SPACE[1:
0]设置频率带宽步长
#defineRDA_R040X04//STCIEN[14],DE[11],I2Senable[6],
#defineRDA_R050X05//INT_MODE[15],SEEKTH[14:
8](设定自动搜索信号强度阀值),LNA_PORT_SEL[7:
6]=0b10,LNA_ICSEL_BIT[5:
4],VOLUME[3:
0]音量;
#defineRDA_R0A0X0A//STC[14]seekcompleteSF[13]seekfailreadchan[9:
0]当前频道
#defineRDA_R0B0X0B//RSSI[15:
9],FMTRUE[8]当前频道是一个节目台
#defineRDA_READ0X23//读RDA5807
#defineRDA_WRITE0X22//写RDA5807
sbitSDA=P0^1;
//IIC接口
sbitSCL=P0^0;
uchar*table[]={"
0"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
};
uchartemp,key,Vol=8,mute=1;
uintDiantai[20]={8830};
voiddelay(ucharz)
{
uchari,j;
for(i=z;
i>
0;
i--)
for(j=110;
j>
j--);
}
/*----------------------------------------IIC通信程序---------------------------------------------------*/
voidIIC_delayms()//用于IIC延时
_nop_();
_nop_();
voidOpenIIC()//IIC启动信号
SCL=1;
IIC_delayms();
SDA=0;
SCL=0;
voidCloseIIC()//IIC停止信号
{
ucharIIC_Wait_Ack(void)//IIC发送字节后等待从机发送响应信
ucharucErrTime=0;
while(SDA==1)
{
ucErrTime++;
if(ucErrTime>
250)
{
CloseIIC();
return1;
}
return0;
}
voidIIC_Ack(void)//发送应答信号
//0±
í
ê
?
ó
|′e
voidIIC_NAck(void)//IIC非应答信号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 RDA5807 收音机 讲解