用单片机解码红外遥控器

上传人:M****1 文档编号:493099206 上传时间:2022-09-29 格式:DOCX 页数:13 大小:15.06KB
返回 下载 相关 举报
用单片机解码红外遥控器_第1页
第1页 / 共13页
用单片机解码红外遥控器_第2页
第2页 / 共13页
用单片机解码红外遥控器_第3页
第3页 / 共13页
用单片机解码红外遥控器_第4页
第4页 / 共13页
用单片机解码红外遥控器_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《用单片机解码红外遥控器》由会员分享,可在线阅读,更多相关《用单片机解码红外遥控器(13页珍藏版)》请在金锄头文库上搜索。

1、用单片机解码红外遥控器遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、 空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能 将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了 常规矩阵键盘线路板过大、布线复杂、占用I/O 口过多的弊病。而 且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使 用。下面以TC9012编码芯片的遥控器为例。谈谈如何用常用的51 系统单片机进行遥控的解码。一、编码格式1、0和1的编码遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0 和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码TC9012 的O和1采用P

2、WM方法编码,即脉冲宽度调制,其O码和1码如 图1所示(以遥控接收输出的波形为例)。O码由O. 56ms低电平和 0. 56ms高电平组合而成.脉冲宽度为1. 12ms. 1码由0. 56ms低 电平和1. 69ms高电平组合而成.脉冲宽度为2. 25ms。在编写解码 程序时.通过判断脉冲的宽度,即可得到0或1。2、按键的编码 当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代 码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分, 分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代 码时.均是低位在前。高位在后。由图2分析可以得到.引导码高电 平为4. 5ms,低电

3、平为4. 5mso当接收到此码时.表示一帧数据的开始。单片机可以准备接收下面的数 据。地址码由8位二进制组成,共256种.图中地址码重发了一次。 主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数 据有错.应丢弃。不同的设备可以拥有不同的地址码.因此。同种编 码的遥控器只要设置地址码不同,也不会相互干扰。图中的地址码为 十六进制的0EH(注意低位在前)。在同一个遥控器中.所有按键发出 的地址码都是相同的。数据码为8位,可编码256种状态,代表实际 所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据 反码.可判断接收到的数据是否正确。如果数据码与数据反码之间的 关系不满足相反

4、的关系.则本次遥控接收有误.数据应丢弃。在同一 个遥控器上.所有按键的数据码均不相同。在图2中,数据码为十六 进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之 和应为0FFHo二、单片机遥控接收电路红外遥控接收可采用较早的红外接收二极管加专用的红外处理 电路的方法。如CXA20106,此种方法电路复杂,现在一般不采用。 较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、 解调、整形等电路做在一起,只有三个引脚.分别是+5V电源、地、 信号输出。常用的一体化接收头的外形及引脚见图3和图4。红外接 收头的信号输出接单片机的INTO或INTl脚.典型电路如图5所示.图中

5、增加了 一只PNP型三极管对输出信号进行放大。三、遥控信号的解码算法及程序编制平时。遥控器无键按下。红外发射二极管不发出信号,遥控接收 头输出信号1。有键按下时.O和1编码的高电平经遥控头倒相后会 输出信号O由于与单片机的中断脚相连,将会引起单片机中断(单 片机预先设定为下降沿产生中断)。单片机在中断时使用定时器0或 定时器1开始计时.到下一个脉冲到来时,即再次产生中断时,先将 计时值取出。清零计时值后再开始计时.通过判断每次中断与上一次 中断之间的时间间隔。便可知接收到的是引导码还是O和1。如果 计时值为9ms。接收到的是引导码,如果计时值等于1. 12ms,接收 到的是编码O。如果计时值等

6、于2 25ms.接收到的是编码1。在判断 时间时,应考虑一定的误差值。因为不同的遥控器由于晶振参数等原 因,发射及接收到的时间也会有很小的误差。以接收TC9012遥控器编码为例,解码方法如下:(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位 计时器.初始值均为O。(2 )第一次进入遥控中断后,开始计时。(3) 从第二次进入遥控中断起,先停止计时。并将计时值保存后, 再重新计时。如果计时值等于前导码的时间,设立前导码标志。准备 接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面 已接收到前导码,则判断是遥控数据的O还是1。(4) 继续接收下面的地址码、数据码、数据反

7、码。(5) 当接收到32位数据时,说明一帧数据接收完毕。此时可停止定时 器的计时,并判断本次接收是否有效.如果两次地址码相同且等于本 系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据 码有效。否则丢弃本次接收到的数据。(6) 接收完毕,初始化本次接收的数据,准备下一次遥控接收。下面是一个简单的实例代码*This sample is used for control light by infrared .使用12M晶振适用于TC9012芯片,其他芯片请自行更改解码时序#include#include#include/#define TURE 1#define FALSE 0/sbi

8、t IR=P3A2;/红外接口标志/ bit irpro_ok,irok;unsigned char IRcord4;unsigned char irdata33;/void Delay(unsigned char mS);void Ir_work(void);void Ircordpro(void);/void tim0_isr (void) interrupt 1 using 1/定时器 0 中断服务函数(irtime+;/void ex0_isr (void) interrupt 0 using 0/外卜部中断 0 服务函数(static unsigned char i;static b

9、it startflag;if(startflag) 第一次进入中断,Startflag标志是0,不执行下面的 语句,只是将标志位置1开始计时(第二次中断开始判断,即发送地址码的第一位的下降沿。if(irtime=33)/引导码 TC9012 的头码/大致时间 是 0.8448ms-10.762ms TC9012 的引导时间大致是 9.0msi=0;irdatai=irtime;一次存储32位电平宽度,其中irdata0中存放的是引 导码的时间长度,所以下面的程序从irdata1开始判断irtime=0;i+;if(i=33)(irok=1;i=0;else(irtime=0;startfla

10、g=1;/void TIM0init(void)/定 时器 0 初始化(TMOD=0x02;/定时器0工作方式2, TH0是重装值,TL0是初值/大致时间是0.256msTH0=0x00;/reload valueTL0=0x00;/initial valueET0=1; 开中断TR0=1;/void EX0init(void)(IT0 = 1;/ Configure interrupt 0 for falling edge on /INT0 (P3.2)EX0 = 1;/ Enable EX0 InterruptEA = 1;void Ir_work(void) 红外键值散转程序(switc

11、h(IRcord2)/判断第三个数码值,因为处理后,IRcord0、IRcord1中存放是地址码,IRdata2中存放数据(case 0:P0=0xf9;break;/1显示相应的按键值case 1:P0=0xa4;break;/2case 2:P0=0xb0;break;/3case 3:P0=0x99;break;/4case 4:P0=0x92;break;/5case 5:P0=0x82;break;/6case 6:P0=0xf8;break;/7case 7:P0=0x80;break;/8case 8:P0=0x90;break;/9irpro_ok=0;/处理完成标志 void

12、 Ircordpro(void)/红外码值处理函数(unsigned char i, j, k;unsigned char cord,value;k=1;for(i=0;i4;i+)/处理 4 个字节(for(j=1;j7)/大于某值为1时间大于1.792ms认为发射的是1,因为在TCP012的编码中将发射脉冲时间大于2.25ms的当做1,将时间是1.12的当做是0,考虑一定的误差,将cord设为7.(value=value|0x80;/ 说明是 1else(value=value;/说明是 0if(j1;/因为先接受到得时数据的低字节位。k+;IRcordi=value;value=0;ir

13、pro_ok=1;/处理完毕标志位置1irok=0;/void main(void)(EX0init(); / Enable Global Interrupt FlagTIM0init();/初始化定时器0P2=0x00;/8位数码管全部显示while(1)/ 主循环(if(irok)(Ircordpro();/ 码值处理if(irpro_ok)/step press key(Ir_work();/码值识别散转四、遥控代码与键盘码的转换在应用系统中,带遥控器的仪器设备一般都带按键。而且二者功 能相同。将遥控键值转换成标准的按键值后。遥控按键散转表格可以 与键盘散转表格复用。转换方法可用查表法。通过查表。使遥控的按 键值转换成本机键盘的值。这样既可以使用按键操作,也可以使用遥 控操作,而且相应的处理程序非常简单。以上以Tc9012编码格式为例,说明了解码的原理与方法。只要 注意

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号