红外遥控器信号的接收和转发
2012-07-07 来源:mcu99
红外遥控在家电产品中有广泛应用,但各产生的遥控器不能相互兼容。目前市场上常见的万能遥控器只能对某几种产品进行控制,不是真正的“万能”,而且不能对新上市的产品进行控制。本文介绍一种用单片机对红外遥控器信号接收和转发的方法,由于只关心发射信号波形中的高低电平的宽度,不管其如何编码,因此可以用来实现自学习万能遥控器。
一、红外信号的接收和波形测量
所有红外遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。如果直接对已调波进行测量,由于单片机的指令周期是微秒(μs)级,而已调波的脉宽只有20多μs,会产生很大的误差。因此先要对已调波进行解调,对解调后的波形进行测量。
红外遥控接收芯片CX20106可以完成对遥控信号的前置放大、限幅放大、带通滤波、峰值检波和波形整形,只需加上简单的外围电路即可完成对已调波的解调,原理如图1所示。
红外遥控接收芯片CX20106可以完成对遥控信号的前置放大、限幅放大、带通滤波、峰值检波和波形整形,只需加上简单的外围电路即可完成对已调波的解调,原理如图1所示。
将CX20106解调出的遥控编码脉冲直接连入8751单片机的INT0和T0脚,定时器T)和T1都初始化为定时器工作方式1,T0的GATE位置位。每次外部中断首先停止定时,记录T0、T1的计数值,然后将T0、T1的计数值清零,并重新启动定时。T0的值即为高电平脉宽,T1-T0的值为低电平脉宽,如图2所示。
测量波形的外部中断服务程序的流程如图3所示。
测量波形的外部中断服务程序如下:
interup0:clr tr0
clr tr1
push psw
push acc
inc test
jb first,RE
mov a,tl0
mov temp1,a
mov a,th0
mov temp2,a
mov a,tl1
clr c
subb a,temp1
movx @dptr,a
inc dptr
mov a,th1
subb a,temp2
movx @dptr,a
inc dptr
mov a,temp1
movx @dptr,a
inc dptr
mov a,temp2
movx @dptr,a
inc dptr
RE:clr first
mov tl0,#0
mov th0,#0
mov tl1,#0
mov th1,#0
setb tr0
setb tr1
二、测量数据的转发
只须用的数据周期性地改变P1.0就可以得到原来的遥控编码脉冲,流程如图4所示。
三、产生遥控发射信号
用遥控脉冲信号调制38kHz方波,然后将已调波放大,驱动红外发光二极管,就可以得到遥发射信号。调制可用一个或门实现,38kHz方波可用8751的定时器T1产生,如图5所示。
有些遥控器的载频可能是40kHz,只须稍微加大发射功率仍然可用38kHz载频使其接收电路动作。
四、应用领域
只须加上键盘和液晶或数码显示电路,并扩展一定数量的RAM,就可以用此方法实现自学习万能遥控器。笔者已对目前市面上的彩电、影蝶机、录像机、投影仪、空调器等产品的常见品牌进行过实验,均实现了准确的接收和转发。此外,只要在图5所示电路前加一级编码模块(可用软件实现)作为发射单元;图1所示电路加上波形测量软件作接收单元,再加上相应的解码控制软件就可组成一个通用红外收发控制系统或数据传输系统,不需要再增加额外的硬件。
相关文章