当前位置:蚂蚁文档网 > 述职报告 > 基于AVR单片机的红外遥控仿真设计

基于AVR单片机的红外遥控仿真设计

时间:2022-05-13 11:50:03 浏览次数:

摘 要:Proteus提供了兼容SIRC的IRLINK组件,使得在虚拟环境下仿真红外遥控收发成为可能。本设计中,当按下发射器的任一按键时,对应的12位编码被“发送”到接收端的红外接收头,经程序解码后,12-Bit的编码将会显示在3个数码管上。

关键词:红外遥控AVR单片机Proteus仿真

中图分类号:TP273文献标识码:A文章编号:1674-098X(2011)06(a)-0069-01

红外遥控技术实际上是一种远程遥控技术,它在工业控制、家用电器等领域应用广泛。红外遥控是一种无线、非接触式的控制技术,具有抗干扰能力强,信息传输可靠等优点,被越来越多的电子设备广泛采用,并逐渐应用到计算机系统中。

1 红外遥控的原理及特点

红外遥控的发射端采用红外发光二极管来发出经过调制的红外光波;红外接收端主要由红外接收二极管组成,能将红外发射端发出的红外光转换为相应的电信号。

由于红外遥控不具备像无线电遥控那样穿过障碍物去控制被控对象的能力,所以同类产品的红外遥控器,可以有相同的遥控编码,而不会出现遥控信号“串门”的情况。这为大批量生产以及在家用电器上普及红外遥控提供了极大的方便。

2 Proteus仿真软件简介

Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及其外围器件。它是目前最好的仿真单片机及其外围器件的工具。使用Proteus丰富的硬件资源库和强大的仿真能力,它能够仿真现阶段大部分常用型号的单片机及其外围电子系统。在软件调试方面,将其与单片机编译器联合调试,可以立即进行硬、软件联调的系统仿真,直接使用仿真器来调试系统,观察调试效果。

3 设计思路

红外光的波长为950nm,低于人眼的可见光谱,因此我们是看不见这种光线的。在大量的电子产品中都能使用红外遥控器对受控设备进行非接触式控制,但由于有热量的物体都能发出红外光,所以为了保证红外遥控器发出的红外信号能够不受干扰地被接收端识别,应将红外信号进行编码。为了解决这个问题,需要将待发送的编码进行调制。红外发射端和接收端都调谐到一定的频率,这个频率就是收发双方所使用的载波频率。

使用红外信号发送编码时,我们使用的是Proteus组件IRLINK兼容SONY的SIRC协议。SIRC红外控制协议有3个版本:12位、15位及20位版本。本设计中使用的是12位版本,其中5位为地址编码,7位为命令编码,使用的载波频率为40KHz。其中地址编码与命令编码需要事先预定义好。

SONY的SIRC协议使用脉宽调制,使用不同的脉冲宽度来对比特位进行编码。对于40KHz的载波,它用1.2ms载波脉冲宽度表示逻辑“1”,用0.6ms载波脉冲宽度表示逻辑“0”,载波脉冲之间用0.6ms的固定空闲周期进行分隔。在发送12位的编码之前要先发送2.4ms宽度的脉冲信号作为起始信号,随后是0.6ms的空闲周期,接下来再发送7位命令与5位地址,发送顺序是从低位向高位逐次发送。

4 具体实现方法

当前版本的Proteus中还未有调制发送SIRC滤波与解码的仿真器件。本设计是通过两块AVR单片机来实现的,其中一块ATmega8用于生成滤波信号,调制发送自己编制好的SIRC编码,另一块ATmega16则通过兼容SIRC协议的IRLINK组件接收红外信号并进行解码。前者在本设计中作为“红外遥控器”使用,后者则作为红外受控器件使用。

程序首先编写出输出600μs红外载波的脉宽程序,因为载波脉冲宽度有3种,为2.4ms、1.2ms、0.6ms,它们分别是600μs的4倍、2倍和1倍,这样调用时分别给出参数值4、2、1即可输出3种不同宽度的滤波,它们分别表示起始信号,逻辑“1”与逻辑“0”。

在编写好了输出脉宽程序后,在发送12位红外编码数据的函数中就可以随意调用它了,函数首先发送2.4ms起始信号,然后开始发送12位编码,控制这12位编码由低位到高位的逐次比特发送过程。当遇到1时就发送1.2ms宽度载波脉冲,当遇到0时就发送0.6ms宽度载波脉冲,每发送完一位后接着送出0.6ms的空闲区,该空闲区用来分隔所调制的各个比特位。

在调试过程中,可以用虚拟示波器的A、B两通道观察IRLINK的I/O信号,可观察到两组波形,上面是发送的调制信号,前面较宽的区域是2.4ms的载波信号,之间间隔的区域是0.6ms的间隔区域,如我们发送编码“403”时,按从后向前的顺序就可观察到所显示的频带编码是010000000011。下面的波形是通过IRLINK解调的结果,滤波已去掉,我们可以清晰地观察到在ATmega16上接收到的脉冲波的“0”和“1”两种逻辑状态。

最后就是ATmega16单片机在已接收到滤波信号后,如何解析出对应的12位SIRC编码的问题。在滤波信号中,所有的高电平都与600μs的间隔区域相对应,它们的宽度完全相同。而所有的低电平则具有不同的宽度,SIRC编码就是由这些不同宽度的低电平来分别表示逻辑“0”和“1”的。由IRLINK解调后的信号通过INT0送入ATmega16,再通过编写INT0中断程序来进一步完成解调后的信号解码工作。对于最终解析出来的12位编码,在本设计中将其看成3个独立的字节,将其分别显示在3个数码管上。

5 结语

上述设计说明,利用Proteus仿真可以实现红外遥控功能。并且利用Proteus软件所提供的虚拟仪器和仪表来设计单片机系统,不仅经济优势明显,而且大大提高了开发效率。但我们还应该意识到,这种实现方式还存在着一定的弊端,比如,Proteus元件库中的模拟器件类型较少,可供我们选择的余地较小等缺点。而且,仿真也不能完全地取代实物,只有将Proteus软件的模拟结果应用于真实的电路系统中,才能真正完成一个实体项目。

参考文献

[1]彭伟.单片机C语言程序设计实例100例——基于AVR+Protues仿真[M].北京:北航出版社,2010.

[2]周润景,等.基于Proteus的电路及单片机设计与仿真[M].北京:北京航空航天大学出版社,2010.

推荐访问:单片机 仿真 遥控 设计 AVR

猜你喜欢