版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..摘要现在人们常使用的收音机为手动调频收台,使用较为麻烦,而且由于接收灵敏度不高,所接收的频段较窄。为了解决这些问题,本次采用RDA5807收音模块与单片机相结合,实现FM收音并显示频率。单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易,所以本次采用stc89c52单片机。此外,RDA5807模块具有65-108MHz全球FM接收频段相容的效果,具备噪声消除、软静音、低音增强,灵敏度高、噪声小、抗干扰能力强等功能,还可以具备频率显示功能,所以使用本模块很容易实现。目录引言……………………1方案选择………….2方案一…………..方案二………….方案确定………系统方案设计及各模块原理……STC89C52核心模块………………STC89C52单片机简介…………STC89C52主要性能………….RDA5807模块…………………….RDA5807模块特点……………RDA5807模块使用…………显示模块……………1602液晶简介…………………1602引脚说明…………………IIC通信…………IIC简介……….IIC时序………系统程序设计……………………印刷电路板的设计与制作………4.1印刷电路板的布线设计…………4.2印刷电路板的制作………………5电路板的调试……………………6结论………………谢辞……………….参考文献………………附录…………………引言本设计研究FM收音机分为硬件电路和程序设计两个方面。从硬件电路来说,主要是实现所需电压值、稳压、搜台、控制和频率显示等方面;从系统程序来说,主要是通过软件来实现RDA5807模块的功能,使用IIC总线方式调台,并且得到当前的频率,处理并实现频率转换、显示。方案选择1.1方案一使用分立元件来搭接电路,实现模块的功能,收发信号,对信号调频或者调幅,从而得到可以处理的信号,实现收听功能。由于本方案,调试极为复杂,很难成功,而且接收频率范围小,工作也很不稳定,很容易受外界影响。1.2方案二采用RDA5807模块,实现接收信号,并处理功能,并于单片机相结合,实现数控,操作简单。由于RDA5807模块高度的集成,很多功能都集成在内部,所以工作稳定,不容易受外界影响,而且需要的外部东西少,使用IIC总线与单片机相连接,使用的线少,模块简单,操作方便,并且接收频率范围很广。2系统方案设计及各模块原理本方案采用STC89C52单片机与RDA模块连接,从而实现数控收音机,STC89C52单片机在这方面的设计为我们提供了极大的方便,用它实现的好处在于,外围电路极其简单,另外在STC89C52单片机的编程方面又提供及其便利的编程环境。外围电路的设计包括两大部分,分别是液晶的显示和键盘控制电路的设计。这里采用一个复位按键,来实现对RDA5807模块的初始化。设计的特点是全面采用数字电路方案,因而工作稳定可靠。利用单片机控制管理,使设置及调整操作准确。液晶显示STC89C52单片机控制系统收音模块及存储芯片液晶显示STC89C52单片机控制系统收音模块及存储芯片按键控制按键控制STC89C52最小系统原理图RDA5807收音模块2.1STC89C52核心模块STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构〔兼容传统51的5向量2级中断结构,全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。STC89C52单片机简介其引脚结构及说明如下:VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写"1”P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写"1”P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写"1”P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写"1”P3.0RXD<串行输入口>P3.1TXD<串行输出口>P3.2<外部中断0>P3.3<外部中断1>P3.4T0<记时器0外部输入>P3.5T1<记时器1外部输入>P3.6<外部数据存储器写选通>P3.7<外部数据存储器读选通>在flash编程和校验时,P3口也接收一些控制信号。RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR<地址8EH>上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号〔ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚〔PROG也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置"1”,ALE操作将无效。这一位置"1PSEN:外部程序存储器选通信号〔PSEN是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。STC89C52主要性能--与MCS-51单片机产品兼容--8K字节在系统可编程Flash存储器--1000次擦写周期--全静态操作:0Hz~33Hz--三级加密程序存储器--32个可编程I/O口线--三个16位定时器/计数器--八个中断源--全双工UART串行通道--低功耗空闲和掉电模式--掉电后中断可唤醒--看门狗定时器--双数据指针--掉电标志位--内带2K字节EEPROM存储空间--可直接使用串口下载--512字节数据存储空间2.2RDA5807模块"RRD-102V2.0"立体声收音模块〔FMStereoradioModule高灵敏度、低功耗、超小体积的调频立体声收音模组。采用RDAMicroelectronics的RDA5807M〔或RDA5802NM,此电路外围元件少、噪声系数极小。具有体积小、低功耗、低成本、应用简单、使用范围广等优点。是一款简单易用且具极高性价比的单芯片FM立体声收音模组。模块的引脚及外围电路图RDA5807模块特点A、采用通用的102BC模块的封装,用户可直接替换使用,无需更改电路设计。B、灵敏度高、噪声小、抗干扰能力强、外接元件极少、体积小〔11*11.2MMMax、使用极其简单。C、76-108MHz全球FM频段兼容〔包括日本76-91MHz和欧美87.5-108.5MHz。D、I2C串行数据总线接口通讯,支持外部基准时钟输入方式。E、完全整合的COMS工艺单晶片集成电路,功耗极小。F、内置高精度A/D〔模数转换器及数字频率合成器。G、内置LDO调整、低功耗、超宽电压使用范围〔2.7-3.6VDC。H、内置噪声消除、软静音、低音增强电路设计。I、高功率32Ω负载音频输出,直接耳机驳接,无需外接音频驱动放大。J、应用简便、成本低,性价比高。RDA5807模块使用说明A、模块供电滤波电容设计是应尽量靠近模块电源输入脚。B、I2CDAT,CLK芯片内部已经包含47k的上拉电阻;C、如用耳机的地线做天线,则参照上图应用大原理图D、为了模块能良好的可靠的工作,FM模块供电电压一般应大于2.7V以上。E、此模块内部已集成LDO,电源输入端可使用简单的LC电源滤波网络即可。F、使用时应做好ESD静电防护工作。G、模块可串电容后直接驱动32ohm耳机,如需推动更大功率喇叭请外加功放;2.3显示模块显示模块由1602液晶电路构成。1602液晶简介1602液晶是工业字符型液晶,能够同时显示16x02即32个字符。〔16列2行。2.3.21602引脚说明1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。VCC<15脚>和地线GND<16脚>,其控制原理与14脚的LCD完全一样,其中:1602液晶引脚说明IIC通信根据RDA5807模块的要求,使用IIC通信,与单片机相连接,实现数控。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线。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。系统程序设计程序框图初始化初始化液晶显示初始值液晶显示初始值检测是否有按键按下检测是否有按键按下模块进行搜索频道和音量的相关变化模块进行搜索频道和音量的相关变化液晶显示当前频率和音量液晶显示当前频率和音量结束结束具体程序详见附录4.1印刷电路板的布线设计此过程是用AltiumDesigner来完成。布线设计按以下流程实现。图4.1布线流程图4.1布线流程新建工程〔.Prjpcb文件画原理图〔.SchDoc文件生成网表〔.Net文件画PCB图,即布线〔.PcbDoc文件布线时的注意事项:在摆放元件时先按原理图摆放,再细调位置。所用的为单面板,故布线时应在底层ButtonLayer上。布线区域应在禁止布线层KeepOutLayer上圈定。两根线之间的距离不能太小,在线拐弯处不能用成直角,一般用45度角为宜。线宽设置在0.8—1.0毫米,在一些拐角的地方还可以适当地补线,以防止腐蚀的时候将线腐蚀掉或是因为线太细而对电路造成不良的影响。4.2印刷电路板的制作首先,把PCB给打印出来,用砂纸把铜板除去外层的氧化铜,在预热熨斗后,把PCB放到板上,把线熨至铜板上。待铜板冷却后再将纸从铜板撕下,检查铜板上有没有断线的地方,若有少量,则用油性笔把线给补上!太多的话就用砂纸把线去除之后再重新烫过。然后,尽快把熨好的铜板放到氯化铁溶液中。第三,腐蚀完后先进行打孔,再把铜线上的墨去掉。这样打孔比较方便。第四,就是装元件,在此过程中一定要注意有正负极性的元件,比如LED灯、电解电容等。最后进行焊接。5电路板的调试调试过程是一个非常重要的环节,这是整个电路板成功与否的关键。首先应断开电源,用数字万用表认真检查电路连线是否有误,是否有短路或者断路和虚焊等的现象。经过初步检查以后,方可接通电源。此时还不应该把芯片装上。接上电源时应该明确电源的正负极性,切不可接反,一接反则马上可能会出现烧毁重要元件的情况!时刻用手触摸各元件有没有发热现象,并注意其是否冒烟等。待过一段时间稳定后,如没有出现不良的现象,则电路基本上正常,可依次用数字万用表检查各点的工作电压情况,各点工作稳定,并且确认芯片插座两端的电压符合芯片的工作电压时,则可以关闭电源,把芯片装上。附录主程序#include"reg52.h"#include"intrins.h"#include"lcd.h"#include"IIC.h"#include"delay.h"sbitK1=P2^0;sbitK2=P2^1;sbitK3=P2^2;sbitK4=P2^3;unsignedlongfrequency;//RDA5807寄存器unsignedcharRDA_reg_data[8]={0xd0,0x00,//02H0x00,0x00,//03H0x00,0x40,//04H0x90,0x88,//05H};unsignedcharcodecdis1[]={"FMcui'sRADIO"};unsignedcharcodecdis2[]={"FMVOL"};charcodereserve[3]_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_data[i]>;}I2C_stop<>;}连续读寄存器子函数voidRDA5807_read_reg<uchar*reg_buf>{I2C_start<>;//收音模块读取操作I2C_write_byte<0x21>;//寄存器连续读操作reg_buf[0]=I2C_read_byte<I2C_ACK>;reg_buf[1]=I2C_read_byte<I2C_ACK>;reg_buf[2]=I2C_read_byte<I2C_ACK>;reg_buf[3]=I2C_read_byte<I2C_NACK>;I2C_stop<>;}模块上电初始化子函数voidRDA5807_power<void>{delayms<50>;//发送软件复位指令RDA_reg_data[0]=0x00;RDA_reg_data[1]=0x02;RDA5807_write_reg<>;delayms<10>;//收音模块默认参数RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA5807_write_reg<>;}功能描述:收音模块自动寻台模式voidRDA5807_FM_seek<void>{uintchan;ucharreg_data[4]={0x00,0x00,0x00,0x00};RDA_reg_data[3]&=~<1<<4>;//调谐禁用//内部自动寻台使能RDA_reg_data[0]|=<1<<0>;//SEEK位置1RDA5807_write_reg<>;//等待STC标志置位while<0==<reg_data[0]&0x40>>{delayms<20>;//读取内部状态RDA5807_read_reg<reg_data>;}//获取当前工作频点chan=reg_data[0]&0x03;chan=reg_data[1]|<chan<<8>;chan=chan<<6;//保存当前工作频点RDA_reg_data[2]=<chan>>8>&0xff;RDA_reg_data[3]=<chan&0xff>;}频率显示子函数voidshow_frequency<void>{unsignedchari,display[5];unsignedinttemp;temp=<RDA_reg_data[2]*256>+<RDA_reg_data[3]&0xc0>; //计算temp=temp>>6;frequency=<unsignedlong><100*temp+87000>/100;for<i=0;i<5;i++>//清显存单元display[i]=0x00;display[0]=<frequency>/1000;//数据转换display[1]=<frequency%1000>/100;display[2]=<frequency%100>/10;display[3]=0x2e;//小数点display[4]=<frequency%10>;if<display[0]==0>{display[0]=display[1]+0x30;display[1]=display[2]+0x30;display[2]=display[3];display[3]=display[4]+0x30;display[4]=0x20;}else{display[0]+=0x30;display[1]+=0x30;display[2]+=0x30;display[4]+=0x30;}lcd_pos_xy<3,2>;//频率显示lcd_wdat<display[0]>;lcd_wdat<display[1]>;lcd_wdat<display[2]>;lcd_wdat<display[3]>;lcd_wdat<display[4]>;}音量显示子函数voidshow_volume<>{unsignedchartemp,display[2];temp=RDA_reg_data[7]&0x0f;//取音量值display[0]=temp/10;display[1]=temp%10;if<display[0]==0>//如果高位为0{display[0]=display[1];//低位显存内容进入高位显存display[1]=0x20;//低位不显示}else{display[1]+=0x30;}display[0]+=0x30;lcd_pos_xy<13,2>;//音量值显示lcd_wdat<display[0]>;lcd_wdat<display[1]>;}主函数voidmain<void>{P0=0xff;P1=0xff;P2=0xff;lcd_init<>;lcd_w_string<0,1,cdis1,0>;lcd_w_string<0,2,cdis2,0>;RDA5807_power<>;while<1>{if<K1==0>{delayms<20>;if<K1==0>{RDA_reg_data[0]|=<1<<1>; //SEEKUP RDA5807_FM_seek<>; while<K1==0>;}}if<K2==0>{delayms<20>;if<K2==0>{RDA_reg_data[0]&=~<1<<1>;//SEEKDOWN RDA5807_FM_seek<>;while<K2==0>;}}if<K3==0>{delayms<20>;if<K3==0>{if<<RDA_reg_data[7]&0x0f><0x0f>{RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA_reg_data[3]&=~<1<<4>;RDA_reg_data[7]++; //音量递增RDA5807_write_reg<>; while<K3==0>;}}}if<K4==0>{delayms<20>;if<K4==0>{if<<RDA_reg_data[7]&0x0f>>0x00>{RDA_reg_data[0]=0xd0;RDA_reg_data[1]=0x01;RDA_reg_data[3]&=~<1<<4>;RDA_reg_data[7]--; //音量递减RDA5807_write_reg<>;while<K4==0>;}}}show_volume<>;show_frequency<>;}}Lcd程序#include"reg52.h"#include"intrins.h"#include"lcd.h"#include"delay.h"#defineucharunsignedchar#defineuintunsignedint#defineDATA_PORTP1sbitLCD_RS=P2^6;sbitLCD_RW=P2^5;sbitLCD_EN=P2^4; 检查LCD忙状态lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。bitlcd_busy<>{bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP<>;result=<bit><DATA_PORT&0x80>;LCD_EN=0;return<result>;}写指令数据到LCDRS=L,RW=L,E=高脉冲,D0-D7=指令码。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<>;LCD_EN=0;}写显示数据到LCDRS=H,RW=L,E=高脉冲,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_wcmd<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;lcd_wcmd<pos_temp,1>;}写字符串子函数voidlcd_w_string<ucharpos_x,ucharpos_y,ucharcode*str,uinttimes>{ucharm;lcd_pos_xy<pos_x,pos_y>;//设定起始位置for<m=0;m<16;m++>{lcd_wdat<str[m]>; delayms<times>;}}IIC程序#include"reg52.h"#include"delay.h"#include"IIC.h"sbitSDA=P3^0;sbitSCL=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初中差异化教学与分层作业设计专题讲座
- 2026年技能培训平台商业模式与就业服务闭环
- 2025福建省中考英语真题(原卷版)
- 2025黑龙江省绥化市中考数学试卷(原卷版)
- 2026年应急管理区域合作与联动工作机制
- 2026年设备全寿命周期成本管理
- 2026年人事档案管理与电子化建设
- 上海立达学院《安装工程技术》2025-2026学年第一学期期末试卷(A卷)
- 上海立达学院《安全生产管理》2025-2026学年第一学期期末试卷(B卷)
- 线上旅游平台竞争格局
- 实验动物咽拭子采集流程规范
- 国有林场(苗圃)财务制度
- 3.1+DNA的粗提取与鉴定实验创新及拓展高二下学期生物学人教版选择性必修3
- 中国法律史-第一次平时作业-国开-参考资料
- 国家基本药物目录2018年版
- 高中物理选择性必修1教材习题答案
- 《微生物病原体课件》
- 苍溪县九龙山气田应急抢险道路改造工程(喻家嘴至太阳湾段)环境影响报告
- GB/T 13017-2018企业标准体系表编制指南
- 江影视快乐5台推荐ppt
- 短肠综合征-最新课件
评论
0/150
提交评论