新闻中心

EEPW首页>嵌入式系统>设计应用> 一种基于ATmega8L的调频立体声收音机设计

一种基于ATmega8L的调频立体声收音机设计

作者: 时间:2014-07-11 来源:网络 收藏

  3.1 搜台程序设计

本文引用地址://m.amcfsurvey.com/article/249573.htm

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

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

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

  根据该流程图编写的子程序如下:

  3.2 红外遥控解码程序设计

  由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 9ms≈1266μs时,被认为接收到“1”,当其值为1/4×1.687 9 ms≈422 μs时,被认为接收到“0”。由于遥控发射器和单片机所使用的晶振频率与标称值会有一定的偏差,所以在程序中要留有一定的余量。

  结语

  经过多次比对测试,该可以清晰、稳定地收听省府及本地所发射的调频电台信号。

红外遥控器相关文章:红外遥控器原理

万能遥控器相关文章:万能遥控器代码


手机电池相关文章:手机电池修复


pa相关文章:pa是什么


波段开关相关文章:波段开关原理


上拉电阻相关文章:上拉电阻原理
温湿度控制器相关文章:温湿度控制器原理

上一页 1 2 下一页

关键词:AVRATmega8L收音机

评论


相关推荐

技术专区

关闭