RDA5807的数控收音机解析_第1页
RDA5807的数控收音机解析_第2页
RDA5807的数控收音机解析_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。为了解决这些问题,本次采用RDA5807攵音模块与单片机相结合,实现FM收音并显示频率。单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。单片机的特点是体积小、集成度高、重量轻、抗十扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用stc89c52单片机。此外,RDA5807莫块具有65-108MHZ全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强,灵敏度高、噪声小、抗十扰能力强等功能,还可以具备频率显示功

2、能,所以使用本模块很容易实现。目录1.1 引言1方案选择.2方案一.1.2 方案二.1.3 方案确定系统方案设计及各模块原理STC89C5锻心模块1.3.1 STC89C52I片机简介1.3.2 STC89C5注要性能.1.4 RDA580模块.1.4.1 RDA5807I块特点1.5 RDA5807I块使用显示模块1.5.1 1602液晶简介1.6 1602引脚说明IIC通信1.6.1 IIC简介.IIC时序3系统程序设计4印刷电路板的设计与制作4.1印刷电路板的布线设计4.2印刷电路板的制作电路板的调试结论谢辞.参考文献附录引言本设计研究FM收音机分为硬件电路和程序设计两个方面。从硬件电路

3、来说,主要是实现所需电压值、稳压、搜台、控制和频率显示等方面;从系统程序来说,主要是通过软件来实现RDA580才莫块的功能,使用IIC总线方式调台,并且得到当前的频率,处理并实现频率转换、显示。1.方案选择1.1方案一使用分立元件来搭接电路,实现模块的功能,收发信号,对信号调频或者调幅,从而得到可以处理的信号,实现收听功能。吨1BG30G4BGtJS9C1B901B90149013*30X201由丁本方案,调试极为复杂,彳艮难成功,而且接收频率范围小,工作也很不稳定,很容易受外界影响。1 .2方案二采用RDA5807莫块,实现接收信号,并处理功能,并丁单片机相结合,实现数控,操作简单。由丁RD

4、A5807莫块高度的集成,很多功能都集成在内部,所以工作稳定,不容易受外界影响,而且需要的外部东西少,使用IIC总线与单片机相连接,使用的线少,模块简单,操作方便,并且接收频率范围很广。2 系统方案设计及各模块原理本方案采用STC89C5穿片机与RDA莫块连接,从而实现数控收音机,STC89C52I片机在这方面的设计为我们提供了极大的方便,用它实现的好处在丁,外围电路极其简单,另外在STC89C5夺片机的编程方面乂提供及其便利的编程环境。外围电路的设计包括两大部分,分别是液晶的显示和键盘控制电路的设计。这里采用一个复位按键,来实现对RDA5807莫块的初始化。设计的特点是全面采用数字电路方案,

5、因而工作稳定可靠。利用单片机控制管理,使设置及调整操作准确。STC89C5笊小系统原理图RDA5807攵音模块2.1 STC89C52核心模块STC89C5迎STS司生产的一种低功耗、高性能CMOS8微控制器,具有8K在系统可编程Flash存储器。STC89C5独用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52J众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM32位I/O口线,看门狗定时器,内置4KBEEPRO,MMAX81(

6、g位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工申行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。STC89C52单片机简介其引脚结构及说明如下:VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,弓I脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上

7、拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由丁内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入

8、使用时,被外部拉低的引脚由丁内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVRJ访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由丁内部电阻的原因,将输出电流(IIL)

9、。P3口亦作为AT89S52特殊功能(第二功能)使用,如下所示。P3.0RXD(申行输入口)P3.1TXD(申行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)在flash编程和校验时,P3口也接收一些控制信号。RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR地址8EH止的DISRTCa可以使此功能无效。DISRTOR认状态下,复位高电平有效

10、。ALE/PROG地址锁存控制信号(ALB是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR勺第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVXEMOV(J旨令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处丁外部执行模式下无效。PSEN外部程序存储器选通信号(PSEN是外部程序

11、存储器选通信号。当AT89S5纨外部程序存储器执行外部代码时,PSENft每个机器周期被激活两次,而在访问外部数据存储器时,PSEN务不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH勺外部程序存储器读取指令,EA必须接GND为了执行内部程序指令,EA应该接VCC在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.1.1 STC89C52主要性能-与MCS-51单片机产品兼容-8K字节在系统可编程Flash存储器-1000次擦写周期-全静态操作:0Hz33Hz-二级加

12、形'程序存储器-32个可编程I/O口线-三个16位定时器/计数器-八个中断源-全双工UAR砰行通道-低功耗空闲和掉电模式-掉电后中断可唤醒-看门狗定时器-双数据指针-掉电标志位-内带2K字节EEPROM储空间-可直接使用申口下载2.2 -512字节数据存储空间RDA5807模块“RRD-102V2.O立体声收音模块(FMStereoradioModule)高灵敏度、低功耗、超小体积的调频立体声收音模组。采用RDAMicroelectronics的RDA5807M或RDA5802NM,此电路外围元件少、噪声系数极小。具有体积小、低功耗、低成本、应用简单、使用范围广等优点。是一款简单易用且

13、具极高性价比的单芯片FM立体声收音模组。56nFon¥-fi一9)-00Nn吼nw41房冉船棒建WR功吒推雄1g.*!<-jtJHk*-l;tS'1ARwiR-出,CLOCK短明9此(时时L'E断I"1GTNCJCXrJi1NC回NT'5FMWD耍PCA>模块的引脚及外围电路图B、的用电林:RDA5807模块特点A、采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。B、灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小(11*11.2MMMa、使用极其简单。C、76-108MHZ全球FM段兼容(包括日本76-91MH

14、妹日欧美87.5-108.5MHz)。DKI2C申行数据总线接口通讯,支持外部基准时钟输入方式。E、完全整合的COMS:艺单晶片集成电路,功耗极小。F、内置高精度A/D(模数转换器)及数字频率合成器。G内置LDO®整、低功耗、超宽电压使用范围(2.7-3.6VDC)。H、内置噪声消除、软静音、低音增强电路设计。I、高功率32Q负载音频输出,直接耳机驳接,无需外接音频驱动放大。J、应用简便、成本低,性价比高。RDA5807模块使用说明A、模块供电滤波电容设计是应尽量靠近模块电源输入脚。B、I2CDAT,CLK芯片内部已经包含47k的上拉电阻;C、如用耳机的地线做天线,则参照上图应用大原

15、理图口为了模块能良好的可靠的工作,F硬块供电电压一般应大丁2.7V以上E、此模块内部已集成LDO电源输入端可使用简单的LC电源滤波网络即可F、使用时应做好ES®电防护工作。G模块可申电容后直接驱动32ohm耳机,如需推动更大功率喇叭请外加功放;2.3显示模块显示模块由1602液晶电路构成。2.3.1 1602液晶简介1602液晶是工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)。2.3.2 1602引脚说明1602字符型LCD®常有14条引脚线或16条引脚线的LCD多出来的2条线是背光电源线。VCC(15脚)和地线GND(16脚),其控制原理与14脚的LC

16、DI全一样,其中:引脚砂功能说明1VSS2VDD接醐源(+5V)3V0示器对比度调整聒接正电源时对比度最弱,接地电源时的比度最蒿(对比度过高时会产生°鬼费产,使用时可以通过一个"K的电位器调整对比度)。4RSRS为存器选格高电平1时选择数据寄存雷,低电平U时选择指令寄存器5R/WRM为读与信号簇,高也平(1加进行读操作,低电平3网进行写操作。&.EE(或EN谎为便能.团邪间端,下降沿使能.DB0底4位三态、双向鼓据总线。位(最低位)3DB1底4位三态、双向敌据总线十位9DB2底4位三态、戏向敬据总线2位10DB3底4位三态、11DB4高耳位三态、双向数据总线4位12

17、DB5部位三态、双向数据总线5位13DB6高0位三态、双向数据总线6位14DB7高4位三态、双向教据总线7位(最高位)也是bgyflag)15BLA背光电源正极16BLK背光电源负租2.4 1602液晶引脚说明IIC通信根据RDA580才莫块的要求,使用IIC通信,与单片机相连接,实现数控。2.4.1 IIC简介IIC是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS),IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。这种方式简化了信号输总线。IIC申行总线一般有两根信号线,一根是双向的数据线SDA另一根是

18、时钟线SCL所有接到IIC总线设备上的申行数据SDMK接到总线的SDA±,各设备的时钟线SCL接到总线的SCL上。1.6.2 IIC时序在IIC总线传输过程中,将两种特定的情况定义为开始和停止条件:当SCL保持“高”时,SDA由“高”变为“低”为开始条件;当SCL保持“高”且SDA由“低”变为“高”时为停止条件。开始和停止条件均由主控制器产生。使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对SDAt样,以检测这种变化。SDA线上的数据在时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到

19、SDAa上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。I2C数据总线传送时序。数据传送具有应答是必须的。与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉SD故。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允

20、许主控器产生停止条件。3系统程序设计程序框图初始化液晶显示初始值检测是否有按具体程序详见附录4.1印刷电路板的布线设计此过程是用AltiumDesigner来完成。布线设计按以下流程实现。图4.1布线流程布线时的注意事项:(1) 在摆放元件时先按原理图摆放,再细调位置。(2) 所用的为单面板,故布线时应在底层ButtonLayer上。布线区域应在禁止布线层KeepOutLayer上圈定。(4) 两根线之间的距离不能太小,在线拐弯处不能用成直角,一般用45度角为宜。(5) 线宽设置在0.81.0毫米,在一些拐角的地方还可以适当地补线,以防止腐蚀的时候将线腐蚀掉或是因为线太细而对电路造成不良的影响

21、。4.2印刷电路板的制作首先,把PCB合打印出来,用砂纸把铜板除去外层的氧化铜,在预热熨斗后,把PC到板上,把线熨至铜板上。待铜板冷却后再将纸从铜板撕下,检查铜板上有没有断线的地方,若有少量,则用油性笔把线给补上!太多的话就用砂纸把线去除之后再重新烫过。然后,尽快把熨好的铜板放到氯化铁溶液中。第三,腐蚀完后先进行打孔,再把铜线上的墨去掉。这样打孔比较方便。第四,就是装元件,在此过程中一定要注意有正负极性的元件,比如LED灯、电解电容等。最后进行焊接。5电路板的调试调试过程是一个非常重要的环节,这是整个电路板成功与否的关键。首先应断开电源,用数字万用表认真检查电路连线是否有误,是否有短路或者断路

22、和虚焊等的现象。经过初步检查以后,方可接通电源。此时还不应该把芯片装上。接上电源时应该明确电源的正负极性,切不可接反,一接反则马上可能会出现烧毁重要元件的情况!时刻用手触摸各元件有没有发热现象,并注意其是否冒烟等。待过一段时间稳定后,如没有出现不良的现象,则电路基本上正常,可依次用数字万用表检查各点的工作电压情况,各点工作稳定,并且确认芯片插座两端的电压符合芯片的工作电压时,则可以关闭电源,把芯片装上。附录主程序#include"reg52.h"#include"intrins.h"#include"lcd.h"#include&qu

23、ot;IIC.h"#include"delay.h"sbitK1=P2A0;sbitK2=P2A1;sbitK3=P2A2;sbitK4=P2A3;unsignedlongfrequency;/RDA5807寄存器unsignedcharRDA_reg_data8=(0xd0,0x00,/02H0x00,0x00,/03H0x00,0x40,/04H0x90,0x88,/05H;unsignedcharcodecdis1=("FMcui'sRADIO"unsignedcharcodecdis2=("FMVOL"cha

24、rcodereserve3_at_0x3b;/保留0x3b开始的3个字节连续写寄存器子函数voidRDA5807_write_reg(void)(uchari;I2C_start();/收音模块写入操作I2C_write_byte(0x20);/寄存器连续写操作for(i=0;i<8;i+)(I2C_write_byte(RDA_reg_datai);I2C_stop();连续读寄存器子函数voidRDA5807_read_reg(uchar*reg_buf)(I2C_start();/收音模块读取操作I2C_write_byte(0x21);/寄存器连续读操作reg_buf0=I2C_

25、read_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();模块上电初始化子函数voidRDA5807_power(void)(delayms(50);/发送软件复位指令RDA_reg_data0=0x00;RDA_reg_data1=0x02;RDA5807_write_reg();delayms(10);/收音模块默认参数RDA_reg_data0=0xd0;RDA_reg_data1=0x01;R

26、DA5807_write_reg();功能描述:收音模块自动寻台模式voidRDA5807_FM_seek(void)(uintchan;ucharreg_data4=0x00,0x00,0x00,0x00;RDA_reg_data3&=(1<<4);/调谐禁用/内部自动寻台使能RDA_reg_data0|=(1<<0);/SEEK位置1RDA5807_write_reg();/等待STC标志置位while(0=(reg_data0&0x40)delayms(20);/读取内部状态RDA5807_read_reg(reg_data);/获取当前工作频点c

27、han=reg_data0&0x03;chan=reg_data1|(chan<<8);chan=chan<<6;/保存当前工作频点RDA_reg_data2=(chan>>8)&0xff;RDA_reg_data3=(chan&0xff);频率显示子函数voidshow_frequency(void)unsignedchari,display5;unsignedinttemp;temp=(RDA_reg_data2*256)+(RDA_reg_data3&0xc0);/temp=temp>>6;frequency

28、=(unsignedlong)(100*temp+87000)/100;计算for(i=0;i<5;i+)/活显存单元displayi=0x00;display0=(frequency)/1000;/display1=(frequency%1000)/100;display2=(frequency%100)/10;display3=0x2e;/display4=(frequency%10);if(display0=0)display0=display1+0x30;display1=display2+0x30;display2=display3;display3=display4+0x30

29、;display4=0x20;elsedisplay0+=0x30;display1+=0x30;display2+=0x30;display4+=0x30;lcd_pos_xy(3,2);/lcd_wdat(display0);lcd_wdat(display1);lcd_wdat(display2);数据转换小数点频率显示取音量值如果高位为0低位显存内容进入高位显存低位不显示音量值显示lcd_wdat(display3);lcd_wdat(display4);音量显示子函数voidshow_volume()(unsignedchartemp,display2;temp=RDA_reg_da

30、ta7&0x0f;/display0=temp/10;display1=temp%10;if(display0=0)/(display0=display1;/display1=0x20;/else(display1+=0x30;display0+=0x30;lcd_pos_xy(13,2);/lcd_wdat(display0);lcd_wdat(display1);主函数voidmain(void)(P0=0xff;P1=0xff;P2=0xff;lcd_init();lcd_w_string(0,1,cdis1,0);lcd_w_string(0,2,cdis2,0);RDA580

31、7_power();while(1)if(K1=0)delayms(20);if(K1=0)RDA_reg_data0|=(1<<1);/SEEKUPRDA5807_FM_seek();while(K1=0);if(K2=0)delayms(20);if(K2=0)RDA_reg_data0&=(1<<1);/SEEKDOWNRDA5807_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

32、_data1=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_reg();while(K4=0);show_volume();sh

33、ow_frequency();Lcd程序#include"reg52.h"#include"intrins.h"#include"led.h"#include"delay.h"#defineucharunsignedchar#defineuintunsignedint#defineDATA_PORTP1sbitLCD_RS=P2A6;sbitLCD_RW=P2A5;sbitLCD_EN=P2A4;检查LCDlt状态lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据bitlcd_busy()

34、(bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(DATA_PORT&0x80);LCD_EN=0;return(result);写指令数据到LCDRS=L,RW=LE=»中,D0-D7=t令码。Check=1,进行忙检测。voidlcd_wcmd(ucharcmd,bitCheck)(if(Check)while(lcd_busy();LCD_RS=0;LCD_RW=0;LCD_EN=0;delayNOP();DATA_PORT=cmd;delayNOP();LCD_EN=1;delayNOP();L

35、CD_EN=0;写显示数据到LCDRS=H,RW=LE=®脉7中,D0-D7啜据。voidlcd_wdat(uchardat)while(lcd_busy();/进行忙检测LCD_RS=1;LCD_RW=0;LCD_EN=0;DATA_PORT=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;LCD初始化设定voidlcd_init()delayms(50);lcd_wcmd(0x38,0);/16*2显示,5*7点阵,8位数据delayms(5);lcd_wcmd(0x38,0);/不进行忙检测,强制执行。delayms(5);lcd_wcm

36、d(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的显示内容delayms(5);设定显示位置voidlcd_pos_xy(ucharpos_x,ucharpos_y)(ucharpos_temp;pos_temp=pos_x&0x0f;pos_y&=0x0f;if(pos_y=0x01)pos_temp|=0x80;elseif(pos_y=0x02)pos_temp|=0xc0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论