网站首页 > 历史论文> 文章内容

AVR单片机的调频立体声收音机设计

※发布时间:2017-11-3 16:10:04   ※发布作者:habao   ※出自何处: 

  早期的数字FM处理芯片TEA5767由Philips公司开发并被广泛地使用,但该芯片需要外加音频放大电才能驱动。鉴于此,国内锐迪科微电子公司开发了一颗具备高接收灵敏度的FM立体声数字芯片RDA5807P,具有自动搜台、重低音、静音、休眠、直接驱动等优异的性能。本文介绍用 RDA5807P芯片设计和制作了一款带遥控功能的收音机。

  早期的数字FM处理芯片TEA5767由Philips公司开发并被广泛地使用,但该芯片需要外加音频放大电才能驱动。鉴于此,国内锐迪科微电子公司开发了一颗具备高接收灵敏度的FM立体声数字芯片RDA5807P,具有自动搜台、重低音、静音、休眠、直接驱动等优异的性能。本文介绍用 RDA5807P芯片设计和制作了一款带遥控功能的收音机。

  收音机的总体设计框图如图1所示。本收音机采用单节3.7 V、容量1500 mAh的锂电池作力电源,在使用寿命期内可以用手机充电器反复对它进行充电,使用非常方便。采用低功耗的AVR单片机ATmega8L作为微控制器,负责处理和协调各模块电的工作,ATmega8L的工作电压为2.7~5.5 V,片内有512字节的EEPROM,不用专门外接EEPROM芯片就可以将掉电前接收的频道和音量信息保存起来,重新开机后又可以恢复原来的信息。调频收音机模块采用国产芯片RDA5807P加上少量的外围元件组成,由微控制器通过I2C总线接口对芯片内部寄存器进行写/读操作。通过键盘或红外遥控发射器可以进行自动搜台、手动选台、音量调节、静音操作。LCD用于显示当前收听的频率、音量等级等信息。音频功率放大器放大当前收听的音频信号,驱动扬声器发出声音。

  电源管理模块电如图2所示。LM2054是一款单节锂电池恒流、恒压线性充电芯片,最大充电电流可达到800 mA。它只需外接极少的外部元件,预设4.2 V充电电压,精度达到1%。充电时,若锂电池电压低于4.2V,充电灯D101亮,充电达到预设值4.2 V后灯D101熄灭。

  键盘K1~K6用于选频、音量调节等。红外遥控接收头连接到单片机ATmega8L的PB0,用单片机的输入捕获功能进行解码。为了减少液晶显示器 LCD1602A占用单片机过多的I/O口,数据接口只使用高4位,在写入命令或数据时,分两次写入,先写高4位,再写低4位。为了降低LCD的用电量,LCD的背光灯用单片机的PD3和PC1进行控制,当用户设置好想收听的,5 s后LCD背光灯自动熄灭。

  调频收音模块电如图4所示。RDA5807P是国产的FM立体声收音机接收芯片,加上极少的外围元件且基本不需要校准,通过程序设定即可接收欧洲、美国和日本的调频波段。单片机通过I2C总线SCL和SDA将访问 RDA5807P芯片所需的地址、命令、数据写入内部的寄存器中,也可以通过该总线读出芯片内部寄存器中的数据,取得接收频道的数据和音量值,供显示使用。RDA5807P的输出经磁珠F301、F302及电容器C30 3、C304高频干扰后,可以直接驱动32 的发出声音,也可以接到下级音频功放进行放大,推动扬声器发出声音。

  音频功率放大电如图5所示。PAM8403是一块D类音频功率放大器芯片,它具有谐波失真低、噪声串扰小、可直接驱动喇叭的特点。用它制作的音频功放,电简单,工作可靠。在5 V电源和4 负载条件下,能输出3 W的功率。效率可达90%以上,非常适合于用电池供电的便携式电子产品。电中

  红外遥控发射器电如图6所示。BA5104是一块红外遥控编码芯片,内接有上拉电阻,无键按下时,电中无电流流通,振荡电不起振,无遥控编码信号输出。当有某一键按下时,电产生455 kHz的振荡信号,由BA5104内部电进行12分频,获得38 kHz的载波信号。此时按键的编码信息和C1、C2引脚的状态信息对38 kHz载波进行编码调制,经15引脚串行输出,由三极管Q501、Q502构成的达灵顿驱动电放大,经外发射管向空间发射,同时14引脚输出高电平,发射状态灯D501点亮。

  软件程序设计主要包括读写RDA5807P芯片相关的模块程序、频率及音量显示模块程序、按键检测与功能设定模块程序、解码及功能设定模块程序等。本设计选用CODeVisionAVR作为开发软件,软件中集成有LCD1602、 I2C总线驱动程序,不用再编写相应的底层函数,使用非常方便。故在此仅介绍RDA5807P芯片工作在RDA5807P模式及采用I2C总线接口进行搜台的程序设计和红外解码程序的设计。

  搜台程序可用硬件模式进行搜台,也可以采用软件模式进行搜台。本文着重介绍硬件模式搜台,软件模式搜台可参照硬件搜台模式进行编程。

  I2C 总线接口是由START、命令字节、数据字节及每个字节后的ACK及NACK比特、STOP组成。RDA58027P芯片写器件地址为0x20,读器件地址为0x21。RDA5807P芯片内部的I2C总线个写数据寄存器,其地址分别是0x02、0x03、0x04、0x05。2个读数据寄存器,其地址分别为0x0A、0x0B,每个数据寄存器又分为高字节和低字节。这些数据寄存器的地址是不可见的,不能通过单片机直接对指定地址的数据寄存器进行读/写操作。因此,单片机在发出读/写命令字节后,接下来必须对数据寄存器进行连续地读/写操作。其子程序如下:

  硬件模式搜台程序设计主要是通过调用连续写和连续读操作子程序来对收音模块寄存器进行读/写,其程序流程图如图7所示。

  由BA5104的编码格式可知;遥控码的一帧长度为12位,其中包括3位起始码、2位用户码、7位指令码。遥控码的每一帧时间间隔为4T,T=1.6879 ms为一位遥控码的周期。一帧完整的遥控码如图8所示。

  遥控码中“1”用3T/4的高电平与T/4的低电平表示,“0”用T/4的高电平与3T/4的低电平表示,一位遥控码的波形如图9所示。

  由图9可见,要用单片机来判断遥控发射器发出的是“0”还是“1”,关键是要判断接收脉冲下降沿至上升沿之间的时间。可以采用外部中断法,也可以采用输入捕获功能法,本文采用后一种方法。解码的思是:初始化时,将ATmcga8L的ICP1引脚设置为输入状态,下降沿触发,当红外接收头接收到红外遥控信号时,产生下降沿,单片机自动将TCNT1寄存器中的值保存至ICR1寄存器中,在捕获中断服务程序中将ICR1中的值保存至T1中;然后将ICP1设置为上升沿触发,当再次产生捕获中断时,将ICR1中的值保存至T2中,将ICP1设置为下降沿触发,并将TCNT1置0。之后计算出T2-T1的时间并保存至事先开辟的数组中,要注意的是,T2-T1有可能出现负值,此时要将(T2-T1+0xffff)再保存,直到接收完12位数据。

  保存在数组中的数据,当其值为3/4×1.687 9ms1266s时,被认为接收到“1”,当其值为1/4×1.687 9 ms422 s时,被认为接收到“0”。由于遥控发射器和单片机所使用的晶振频率与标称值会有一定的偏差,所以在程序中要留有一定的余量。

  ①凡本网注明来源:中国测控网的所有作品,版权均属于中国测控网,转载请必须注明中国测控网。违反者本网将追究相关法律责任。

  ②本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如其他、网站或个人从本网下载使用,必须保留本网注明的来源,并自负版权等法律责任。

  ③如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关。more测控名词avr单片机

  通常来说,状态监测系统由测量仪器、分析软件、状态监测用户、技术解决方案等组成。使用状态监测系统,可通过长期监测诸如机器振动详情

  在真正的物联网智能家居系统中,不应当再按功能划分为各个的抄表网、网、电控网、安防网等,而

  雷达在现代战争中发挥着举足轻重的作用,随着雷达技术的快速发展,对雷达装备试验、性能检测、故障诊断

  推荐: