一种红外遥控信号的解码方法
红外遥控解码流程图
pic12f1822接收红外信号解码流程图单片机初始化
高电平 1.125 2.25低电平表示还在引导码高电平
高电平表示还在引导码9mS高电平结束,4.5mS低电平
高电平上,
高电平表示信号没来继续等待,高电位是红外接收头的电平
解码的关键是如何识别“0”和“1”,从位的定义我们可以
发现“0”、“1”均以0.56ms的低电平开始,不同的是高电
据高电平的宽度区别“0”和“1”。
如果从0.56ms低电平过
后,开始延时,0.56ms以后,若读到 的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比
0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,
读到的已 是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.88ms左右均可。
头的电平
mS。
一种快速、高效的红外摇控软件解码技术
VCC R1 1 0 7 0
C1 OD P2 1 .
1u 1 0 FI 6
般不采用。本 系统 中红外接头采用价 格便宜 、 性能可 靠的一 体化的红外接收头 H 0 3 , S 0 8 它接 收红外 信号频 率为 3 K z 8H,
周期约为 2 u , 同时具 备对 信号 进 行放 大 、 波、 6s它 检 整形 功 能, 出 . 输 丌L电平 的编码信号 , 能很好地 与单 片机进行 连接。
控 器 解 码 器 的 设计 中 , 定 时 器 的定 时 为 1 s定 时 过 长 , 将 m, 抗
D
l N4
干扰性能差 。因此 , 文在两种红外 摇控器解码器 的设计 本 基础上 , 通过分析红 外遥控 器发射码 序 的特征 , 出一种 高 提 效、 快速 的软件解码技术 。
P3
第 l 第 2期 0卷 21 0 0年 6月
南 京 工 业 职 业 技 术 学 院 学 报
Junl f aj gIstt o d s yT c nl y ora o ni tue f n ut eh oo N n ni I r g
Vo .1 No 2 1 O. .
J n ,0 0 u .2 1
一
种快速 、 高效 的红 外摇 控 软 件解 码 技 术
李从 宏 , 刑 威
( 南京 工业职 业技 术 学院 电气与 电子 工程 学院 , 苏 南京 2 04 ) 江 106
摘
要: 通过分析红外遥控 发射 器发射码 的特征 , 出一种 快速 、 提 高效 的红外摇控软 件解码技 术。这种技 术仅 对发射
码的功能码进行 解析 、 存储 、 数据处理 , 降低对单片机存储 空 间的要 求 , 降低 了硬 件成 本, 高 了系统 的实时性。经 实 提
一种基于单片机的红外遥控信号解码新方法
控 方 式 时 不 会 干 扰 其 他 电器 的正 常 使 用 , 不 会 影 响 临 近 也
的无 线 电设 备 。 另 外 , 外 遥 控 器 件 具 有 体 积 小 、 耗 ] 红 功 低 、 价 比高 的优 点 , 理 想 的人 机 输 入设 备 , 常 适 合 电 性 是 非 子 工 程 师 和 电子 爱 好 者 DI 开 发 与 制 作 。红 外 遥 控 系 统 Y
主 要 由发 射 和 接 收 两 大部 分 组 成 , 于 发 射 部 分 使 用 的是 由
I e Rr s
购 买 来 的遥 控 器 成 品 , 以本 文 的 重 点 是 红 外 接 收 、 码 所 解 部 分 。下 面 将 从 硬 件 结 构 和 软件 编 程 两 个 方 面 出发 , 绍 介
Absr c ta t:I f a e e ot o r lr r dey u e n us ho d e e t ia ppl nc s I f a e i na c di e hod r a i s i n r r d r m ec ntole s a e wi l s d i ho e l l c rc la i e . n r r d sg lde o ng m t a s a e v rou n
功 能 寄存 器单 元 进行 定 义 , 时 对 相 关 工 作 单 元 进 行 初 始 同
化 。初 始 化 代 码 如 下 :
; 定 义 , 存 器 定 义 位 寄 I Ke Re d B T R y ay I I oe RC d I i R: nt I Oh O ; 义 “ 得 到键 值 ” 志 位 定 已 标 ; 义 4字 节 红 外 码 寄 存 器 定 ; 开 外 部 中断 1 打 ; 降 沿 触 发 下
红外遥控解码程序
红外遥控解码程序红外接收头的型号有很多HS0038 VS838等功能⼤致相同,只是引脚封装不同。
红外接收有⼏种统⼀的编码⽅式,采样哪种编码⽅式取决于遥控器使⽤的芯⽚,接收头收到的都是⼀样的。
电视遥控器使⽤的是专⽤集成发射芯⽚来实现遥控码的发射,如东芝TC9012,飞利浦AA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放⼤、驱动红外发射管将信号发射出去。
不同公司的遥控芯⽚,采样的遥控码格式也不⼀样,较普遍的有两种,⼀种NEC标准,⼀种是PHILIPS标准。
NEC标准:遥控载波的频率为38KHz(占空⽐1:3)当某个键按下时,系统⾸先发射⼀个完整的全码,如果按键超过108ms仍未松开,接下来发射的代码(连发代码)将由起始码(9ms)和结束码(2.5ms)组成。
⼀个完整的全码 = 引导码 +⽤户码 +⽤户码 + 数据码 + 数据码 + 数据反码。
其中,引导码⾼电平9ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16位为⽤户识别码,能区别不同的红外遥控设备,以防⽌不同的机种遥控码互相⼲扰。
后16位为8位的操作码和8位的操作反码,⽤于核对数据是否接收准确。
收端根据数据码做出应该执⾏上⾯动作的判断。
连发代码是在持续按键时发送的码。
它告知接收端。
某键是在被连续的按着。
NEC标准下的发射码表⽰发射数据0时⽤”0.56ms⾼电平 + 0.565ms低电平 = 1.125ms”表⽰;数据1⽤”⾼电平0.56ms + 1.69ms = 2.25ms”表⽰。
遥控器发射信号:需要注意的是:当⼀体化接收头收到38kHz红外信号时,输出端输出低电平,否则为⾼电平。
所以⼀体化接收头输出的波形和发射波形是反向的PHILIPS标准:载波频率38KHz:没有筒,点按键时,控制码1和0之间切换,若持续按键,则控制码不变。
⼀个全码 = 起始码’11’ +控制码 + ⽤户码 + ⽤户码数据0⽤“低电平1.778ms + ⾼电平1.778ms”表⽰;数据1⽤“⾼电平1.778ms + 低电平1.778ms”表⽰。
红外遥控器软件解码原理和程序
void rs232(void) interrupt 4{ static unsigned char sbuf1,sbuf2,rsbuf1,rsbuf2; //sbuf1,sbuf2 用来接收 发送临时用,rsbuf1,rsbuf2 用来分别用来存放接收发送的半字节 EA=0; //禁止中断 if(RI){ RI=0; //清除接收中断标志位 sbuf1=SBUF; //将接收缓冲的字符复制到 sbuf1 if(sbuf1==HEAD){ //判断是否帧开头 state1=10; //是则把 state 赋值为 10 buf1=RECEIVE; //初始化接收地 址 } else{
void tf_2(void); void read_ir(void); void ir_jiema(void); void ir_init(void); void ir_exit(void); void store_ir(void); void read_key(void); void reset_iic(void); unsigned char read_byte_ack_iic(void); unsigned char read_byte_nack_iic(void); bit write_byte_iic(unsigned char a); void send_ack_iic(void); void send_nack_ic(void); bit receive_ack_iic(void); void start_iic(void); void stop_iic(void); void write_key_data(unsigned char a); unsigned int read_key_data(unsigned char a); void ie0(void) interrupt 0{ie_0();} void tf0(void) interrupt 1{tf_0();} void ie1(void) interrupt 2{ie_1();} void tf1(void) interrupt 3{tf_1();tf_2();} void tf2(void) interrupt 5{ //采用中断方式跟查询方式相结合的办法解 码 EA=0; //禁止中断 if(TF2){ //判断是否是溢出还是电平变化产生的中断 TF2=0; //如果是溢出产生的中断则清除溢出位,重 新开放中断退出 EA=1; goto end; } EXF2=0; //清除电平变化产生的中断位 *ir=RCAP2H; //把捕捉的数保存起来 ir++; *ir=RCAP2L; *ir++; F0=1; TR0=1; //开启计数器 0 loop: TL0=0; //将计数器 0 重新置为零 TH0=0; while(!EXF2){ //查询等待 EXF2 变为 1 if(TF0)goto exit; //检查有没超时,如果超时则退出 };
51单片机红外的遥控解码程序的编写
下面把这次红外编程的解码的经历简要的写一下,以便以后回顾总结:红外遥控过程是这样的:红外遥控器的矩阵键盘按键,接着专用芯片编码调制然后红外发射;红外接受头经过光电放大,解调,最后解码编程。
我的遥控专用芯片是UPD6122G-001.解码晶振是455kHz,调制载波频率是455kHz/12=38kHz。
此外调制信号是PWM进行调制的,0是脉冲波形位0.5625ms的高电平跟0.5625ms的低电平组成,1则是0.5625ms的高电平跟1.6785ms的低电平组成。
跟其他通用的波形一样,有键按下时,先是9ms的高电平的起始码,接着是一个4.5ms结果码,接下来就是数据了。
用户码的高8位,用户码的低8位,8位数据码,8位数据反码,最后还有一个停止位。
如果按键一直没松,则接下来就只是发送起始码(9ms高电平),接着是一个2.2ms的低电平,再接着是一个停止位。
我的红外接在单片机p3.7引脚上面,从网上收集了一些程序,基本上如同一则,汇编编写,跟外部中断还有关系。
于是便萌生了自己写一下的想法。
我的思路是用定时器进行计数,然后编程。
刚开始编写程序是,由于忘了对定时器的标志位进行置为,结果定时中断根本就没有执行,手头上又没有用仿真芯片,搞得我下载调试了十来次才发现了这个问题。
还有一个问题刚开始遥控能够解码的时候,可是一直按某个键,你按一次,她就变化一次,搞得我很是郁闷,差点儿没晕过去。
怎么找都不知道问题的所在,心里不断地打算放弃,不过最后还是坚持了下来,原来电路的实际解码电平跟资料上是相反的。
遥控器的实际电平由高变低,而电路板上却是由低变高。
这点确好相反。
总结:一要自信,二要坚持,才有可能完成你想做的事件。
#include"reg51.h"#include"2-16.h"#include"address.h"//需要显示的信息uchar code hello[] = "Hello,PengSen!";//变量uchar data psCount; //定时器计数器uchar data i;uchar data j;uchar data temp;uchar data dp[4]; //用来保存红外遥控的码值uchar data dp2[12];//用来显示红外遥控的码值sbit HW = P3^7;void delay(unsigned int y);void main(){//初始化initlcd();dp[0] = 0x0;dp[1] = 0x0;dp[2] = 0x0;dp[3] = 0x0;TMOD = 0x11; // 定时器0, 1工作模式1, 16位定时方式TH1 = 0xfe; //定时500uSTL1 = 0x33;TCON = 0x01;IE = 0x80;TR1 = 1;printf(hello,13);while(1){//报文头ET1 = 0;psCount = 0;while(HW == 1); //初始状态下,红外输出脚一直是高电平,等待遥控按键ET1 = 1;while(HW == 0);if( psCount > 17)//0.5* 17 = 8.5ms约为9.0ms{ET1 = 0;psCount = 0;ET1 = 1;while(HW == 1);if(psCount > 5)//超过0.5*5 = 2.5毫米,检查一下遥控命令是不是连发,不是则执行下面的程序{ET1 = 0;psCount = 0;dp[0] = 0x0;dp[1] = 0x0;dp[2] = 0x0;dp[3] = 0x0;//数据for(i = 0 ; i < 4; i++){for(j = 0; j < 8; j++){while(HW == 0);ET1 = 0;psCount = 0;ET1 = 1;while(HW == 1);if(psCount > 2)//根据波形长度判定码值为0或1temp = 0;elsetemp = 1;dp[i] |= (temp<<j);//保存键值}}}}//停止位while(HW == 1);//数据显示delay(20);dp2[0] = dp[0]/100 + 0x30;dp2[1] = dp[0]%100/10 + 0x30;dp2[2] = dp[0]%10 + 0x30;dp2[3] = dp[1]/100 + 0x30;dp2[4] = dp[1]%100/10 + 0x30;dp2[5] = dp[1]%10 + 0x30;dp2[6] = dp[2]/100 + 0x30;dp2[7] = dp[2]%100/10 + 0x30; dp2[8] = dp[2]%10 + 0x30;dp2[9] = dp[3]/100 + 0x30;dp2[10] = dp[3]%100/10 + 0x30; dp2[11] = dp[3]%10 + 0x30;printf(dp2,12);delay(20);}}//延时子程序void delay(unsigned int y){uchar x;for(;y!=0;y--)for(x=200;x!=0;x--); }//定时器1中断void timer1() interrupt 3{psCount++;TH1 = 0xfe; //定时500uSTL1 = 0x33;}。
红外遥控器编码
关于红外遥控的一点资料整理最近发现家里遥控器老是弄混(唉,遥控器多了,也是一件麻烦事)。
如果有一种可对家中各种红外遥控器发射的控制信号进行识别、存储和再现的智能型红外遥控器,用这样一个遥控器控制家中所有电器该多好。
这就是大家称作的学习型红外遥控器。
于是,下了不少工夫查找了许多资料,对红外遥控也做了一点表面研究,现总结一点文档,与大家一同探讨(有不对之处,请大家指正!);另外由于本人愚顿还未开窍,还有部分东西想不太明白,在此也向专家们请教,请知道的老兄支点招,在此小弟先谢过了!!!一、红外遥控概述红外遥控系统一般都是由发射部分和接收部分组成。
1、发射部分的主要元件为红外发光二极管。
它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它发出的便是红外线而不是可见光。
目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通Φ5发光二极管相同,只是颜色不同。
2、接收部分主要元件是红外接收管,它是一种光敏二极管(实际上是三极管,基极为感光部分)。
在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。
由于红外发光二极管的发射功率一般都较小(100mW左右),所以红外接收二极管接收到的信号比较微弱,因此就要增加高增益放大电路。
前些年常用μPC1373H、CX20106A等红外接收专用放大电路。
最近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。
成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装(如图中的HS0038),均有三只引脚,即电源正(VDD)、电源负(GND)和数据输出(VO或OUT)。
红外接收头的引脚排列因型号不同而不尽相同,可参考厂家的使用说明。
成品红外接收头的优点是不需要复杂的调试和外壳屏蔽,使用起来如同一只三极管,非常方便。
但在使用时注意成品红外接收头的载波频率。
红外解码讲解
红外解码一直是单片机中应用较多的,需要设备加装专用解码芯片,这就大大减轻了单片机的负担。
需要单片机样例使用延时做红外解码,比较容易理解,但是由于在主程序中使用,当存在许多中断时就可能造成误码,很多时候误码率较高,成品中则一般使用中断方式。
下面通过TC9012和uPD6121芯片为例大致讲解解码原理:先看一些遥控器发射波形图从上图可以看出 4.5ms高电平+4.5ms低电平称为头码,用于识别是否遥控码开始,uPD6121的头码是9ms+4.5ms,其他的一样,一些datasheet会提及连续发射码的波形图(就是一直按下某一遥控器按键),这里我们不做分析,仅分析单次按键发射的正个码的波形图。
头码过后可以看到4个8位的数据,我们最终目的就是要把这个 32位(4x8)从一体化红外接收头提取出来,并转换成16进制数,用于区分不同按键按下得出的不同数值。
在遥控器发射波形中,可以看出,8位数中的0或者1不是用高低电平表示,而是用不同的低电平的宽度表示,0.565ms表示0,1.69ms表示1,2个位中间还会有一个0.56ms的高电平(上图阴影部分)。
这个是红外遥控器发射的波形,图中看到的阴影高电平表示载波,一般使用38KHz,遥控器发射出去的含有载波的红外信号通过一体化红外接收头处理后得到的是含有载波的反向的波形,也就是没有上图中的阴影部分。
大致如下图一体化红外接收头内部集成了选频放大(38KHz左右频率增益最大),检波(把38KHz的载波滤除),放大整形(变成容易检测的矩形波)。
看到如上图波形,表示单片机引脚可以接收到的波形,我们只要通过单片机读取波形并分析波形的宽度,然后分辨出是头码,还是0或者1,最后整理出这组码的16进制组合。
正确的解码结果是按同一个按键得出的16进制数值是不变化的。
通过这个原理,我们可以分辨出每个按键的键值。
mini80/mini80e样例程序中使用的红外解码程序,应用了外部中断,平时从书上或者网络上看到的解码一般是单纯解码,整个程序不做其他工作,这种方式可以使用普通io口,用延时等待的方法判断接收到的是高电平还是低电平,从而判断码值。
红外线遥控解码原理
红外线遥控解码原理一、引言红外线遥控解码是一种常见的电子技术应用,广泛用于电视、空调、音响等家电产品中。
通过红外线遥控解码技术,可以实现遥控器与设备之间的无线通信,方便人们对设备进行远程操控。
本文将介绍红外线遥控解码的原理和实现方式。
二、红外线遥控解码原理红外线遥控解码的原理是利用红外线信号的特点进行解码。
遥控器通过按键操作产生一系列的红外信号,这些信号被红外发射器发射出去,然后被接收器接收并解码。
下面将详细介绍红外线遥控解码的原理。
1. 红外线信号的特点红外线是一种电磁波,波长在0.75微米到1000微米之间。
在这个波长范围内,红外线具有较好的穿透性,能够穿透一些物体,比如空气、玻璃等。
同时,红外线的波长也决定了它能够被人眼所感知。
2. 红外线遥控信号的编码方式红外线遥控信号一般采用脉冲宽度编码(Pulse Width Encoding)的方式进行编码。
即通过调节红外线信号的脉冲宽度来表示不同的信息。
通常会将一个编码周期分为若干个时间单位,每个时间单位内的脉冲宽度决定了信号的状态,比如高电平表示1,低电平表示0。
3. 红外线遥控信号的解码方式红外线遥控信号的解码一般分为两个步骤:解调和解码。
解调是指将接收到的红外线信号转换为电信号,解码是指将解调后的电信号转换为对应的按键信息。
解调通常采用红外线接收头来完成,红外线接收头是一种能够感知红外线信号并将其转换为电信号的传感器。
红外线接收头内部含有一个光电二极管,当红外线信号照射到光电二极管上时,会产生一个电压信号。
通过对这个电压信号进行放大和滤波处理,可以得到解调后的电信号。
解码是将解调后的电信号转换为对应的按键信息。
解码一般采用红外线遥控解码芯片来完成,这些芯片内部包含了一系列的逻辑电路和存储器,能够根据输入的电信号解码出对应的按键信息。
不同的遥控器厂商和设备类型会使用不同的解码协议,因此解码芯片需要根据具体的解码协议来进行解码。
三、红外线遥控解码的实现方式红外线遥控解码可以通过硬件电路和软件算法两种方式来实现。
一种基于单片机的智能红外遥控系统的解码方法
本 文提 出 的对 红外 遥控 器 编码进 行“ 习” 学 的原理 是 不 考 虑信 号 的 红外 编 码 格 式 , 即不 去 判 断接 收 进 来 的逻辑 是“ ” 是“ ”, 0还 1 直接计 算 同一 种逻 辑 持 续 的 时间 , 根 据持 续 时 间 的 比例 判 断 出两 种 不 同的 逻 并
‘
将大 多数 常用 电器 的红外遥 控 器 的键 码 事先存 储 在 所谓 的万 能 遥控 器 中 , 因每个 家庭 选 购 的 电器组 合 各 不相 同 , 种方式 不 仅浪 费遥控 器 的存储 器资 源 , 这 而且 遇到某 种 电器 的红外 遥控 器键 码 不属 于 其设 想 的范
围内, 就失 去 了“ 能” 万 的功 能 。另一 种方 法是 在 专 门定 制 的红 外 遥控 器 中通 过软 件 判 断某 个 红 外遥 控 器 的编码 格式 , 从而 以特 定 的格式 对遥 控器 编码 进行 解 码 , 就是 “ 习” 也 学 原有 的红 外 遥控 器 各键 的编 码 , 并 将 编码存 储 在该遥 控 器 中 , 这样 ,学 习” 少个 红 外遥 控 器 的编码 , 能取 代 多少 个 遥 控器 对 相 应 的家 电 “ 多 就 进行控制, 这种 方 式更 能体 现 “ 能 ” 万 的含 义 。但 是 , 若某 种红 外 遥控 器 的编码 格 式 不 是 内置 软 件能 判 断 的, 还是 无法 进行 “ 习” 所 以这 种方 式也 不是 真正 的“ 学 , 万能 ” 。
辑 , 0或“” 示 , 用“ ” 1 表 经解 码 后 得到 红 外遥 控 器上 各 按键 的发射 编 码 , 并将 这 些发 射 编码 存 储起 来 , 要 需 时, 再将 相应 的发 射编码 经 调制后 发射 出去 。
一种基于单片机的红外遥控信号解码新方法
一种基于单片机的红外遥控信号解码新方法黄海阳;吴锤红【摘要】Infrared remote controllers are widely used in household electrical appliances. Infrared signal decoding methods are various in the application of embedded system. The hardware structure and software programming ideas of infrared remote controller decoding are briefly introduced. Aiming at two conventional infrared coding structure, the specific method which uses gating control mode of 51 MCU's timer for decoding is described, and the coding paradigm and the software flowchart are given.%红外遥控器在家电产品中已广泛使用。
在嵌入式系统应用方面,红外信号解码的方法也是多种多样。
本文简要介绍红外遥控器解码的硬件构成与软件编程思路,然后针对两种常用的红外编码结构,阐述了使用51单片机定时器门控方式解码的具体方法,并给出了代码示例与软件流程。
【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2012(012)007【总页数】4页(P30-33)【关键词】红外解码;门控方式;51单片机【作者】黄海阳;吴锤红【作者单位】福建农林大学机电工程学院,福州350002;福建农林大学机电工程学院,福州350002【正文语种】中文【中图分类】TN219引言随着家用电器、试听产品的普及,红外遥控器已经被广泛应用在各种类型的家电产品中(如遥控开关、智能开关等)[1]。
红外遥控器编码方法
(PC)立即装入这一首地址,然后一条指令接一 条指令地执行此程序,每执行一步PC自动加l, 直到程序结束。
这种方法可以不把各种功能的编码程序搬 到RAM中来,而直接去ROM中调用。把RAM 腾出给控制过程的中间操作使用。
(4)处理 执行编码程序,得到相应控制功能的编码, 最后将编码转换成485信号后发送出去。 5结束语 本文着重介绍了红外遥控器系统的基本原 理及红外控制器的编码设计。这种编码方法在基 于AT89C51单片机的红外控制器的设计中得到 了应用,取得了良好的效果,应用前景广阔。 参考文献: 1.胡汉才.单片机原理及其接1:7技术.北京: 清华大学出版社. 2.记宗南.红外线遥控发生器的原理及应用. 国外电子元器件,1999.10. 3.聂诗良,李磊民.采用单片机发送并接收 红外遥控信号的方法.信息技术,2004.2. 作者简介: 王建跃,男(1982-),中国矿业大学信息与 电气工程学院2004级硕士研究生,专业为通信 与信息系统。主要研究方向为信息处理与传输。
系统码可以使用延时程序跳过去。但剩下这 部分码仍然较长,试了好多种方法。比如隔一位 取一位,隔两位取一位,隔三位取一位.隔一位取 两位等,采集的结果总是有重码。最后发现这些
万方数据
.240.
工矿自动化
码中是由三种码组构成,即1010、1011、1110。因 此可以用00、01、10来代替它们,原来的键值码
A2H
24H 9蠲 52H A9H i蛆 8AIi 4AH ASH 2AH 95H AAH
00H MO观 0001010010 1 4lI
00H V
1000101001 8^H
00H ^
0l∞101001 蛆H
00H 亮度+ 0101000000 50li
一种16位码红外遥控器的解码方法
as fe e . I r c i l p l a in ,t i m eh d o ti sab te e u t lo o fr d np a t a p i t s hs c a c o t o b an et rr s l.
Ke r s PI c o r c s o ;e c d n d ;r m o e c n r l e o i g ie c d y wo d : C mir p o e s r n o i g mo e e t o t o c d n ;f o e d r
器 的单片机解码及连发码处理方法 , 并给 出了遥控器信 号接收 电路和详细 的解码 以及 连发码处 理软件流程 ; 该方法在实 际应用过程 中取得 了 良好 的效果 。 关键词 : I PC单片机 ;编码 方式 ; 遥控器解码 ; 连发码
中 图分 类 号 : N1 9 T 2 文献标识码 : A 文 章 编 号 :0 35 6 (0 8 0 —1 10 10 —0 0 2 0 )20 7 —4
( . c o fM ahiey a dAutm o l gn ei 1 S ho lo c n r n o bi En ie rng,H ee nv riyo c n lg e fi U ie st fTe h oo y,H ee 3 0 9,Chia fi 0 0 2 n  ̄2. h o fCo p tra d Sc o lo m u e n
及 连发 码 的处理 方法 。
A e o i g m e h d f r 1 一 i o nf a e e o e c nt o d c d n t o o b tc de i r r d r m t o r l 6
Z HANG Ja - n 。 M U a - n HAN J n -o g inj u Yu nMa g 。 i gh n a
红外线遥控器(nec编码方式)
抗干扰优化
通过调整编码方式或增加滤波器等手段,增强遥控器的抗干扰能 力。
测试结果与结论
测试结果显示,该红外线遥控器 在有效范围内能够正常工作,按 键响应准确,抗干扰能力较强。
通过调试优化,进一步提高了遥 控器的性能和稳定性。
结论:该红外线遥控器符合预期 要求,可以用于实际应用中。
在NEC编码中,脉冲的宽度和间隔时间 被分为两种不同的比例,即1:2和1:1, 通过这两种比例的不同组合,可以表示 出0和1两种不同的二进制位。
当发送数据时,首先发送起始位,然 后是数据位,最后是停止位。起始位 是一个较长的脉冲和一个较短的间隔 时间,数据位由一系列的脉冲和间隔 时间组成,停止位是一个较短的脉冲 和一个较长的间隔时间。
红外线遥控器(NEC编码方式)
目 录
• 红外线遥控器简介 • NEC编码方式简介 • 红外线遥控器(NEC编码方式)的电路设计 • 红外线遥控器(NEC编码方式)的软件设计 • 红外线遥控器(NEC编码方式)的测试与调试
01 红外线遥控器简介
红外线遥控器的原理
红外线遥控器利用红外线作为信号传输介质,通过调制信号来控制设备的开关或功 能。
THANKS FOR WATCHING
感谢您的观看
01
采用NEC编码算法,将按键信息转换为红外线信号。
解码算法
02
将接收到的红外线信号解码为按键信息。
测试与调试
03
对编码和解码算法进行测试和调试,确保其正确性和稳定性。
05 红外线遥控器(NEC编码 方式)的测试与调试
测试方法
1 2
发射距离测试
测试遥控器在不同距离下的信号发射效果,确保 遥控器在有效范围内能够正常工作。
探索单片机解码红外遥控信号的简单编程
定 稿 日期 : 0 0 1- 2 2 1- 0 1
用 户码 高 8 、 户 码低 8 、 键 码 8 、 键 反码 8 。图 位 用 位 按 位 按 位
2 从 一体 化 红 外接 收 头输 出端 获取 的完 整 的遥 控码 波 形 图 。 是 无 红 外码 时 , 直 为 高 电 平 , 遥 控 码 输 出 时 , 先 是 9 的 一 有 首 ms 低 电平 ,接 着 是 4 的 高 电 平 ,以后 就 是 3 ms 2位 的 数 据脉 冲
ZH AN G —h En
( h n q gC t u y n o n o r u pyC . t. n a gC o g mg4 4 0 , h a C o g i i Y n a gC u t P we p l o, d Yu y n h n q 0 5 0c i ) n y y S L n
t og a ss pl d ay t nd rtn hepr r m i i m ea n e s O u esa d. I ie 2 bi ul o o ary y 8 tD e , n e s w n te LCD i ui rsa twrt s3 t p s c det ra b il a d t n ho i s e s h h l q d c ytl d s a o t rby he a e i a. iply m nio x d cm 1
Re e r h o h i p e tP o r m m i g o i g e Ch p s a c n t e S m ls r g a n fS n l i
M ir c m p e c d sI f a e m o e S g a coo ut r De o e n r r d Re t i n l
51单片机解码红外遥控器原理
51单片机解码红外遥控器原理电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝TC9012,飞利浦SAA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放大、驱动红外发射管将信号发射出去。
不同公司的遥控芯片,采用的遥控码格式也不一样。
较普遍的有两种,一种是NEC标准,一种是PHILIPS 标准。
NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
一个完整的全码=引导码+用户码+用户码+数据码+数据反码。
其中,引导码高电平4.5ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。
后16 位为8 位的操作码和8位的操作反码,用于核对数据是否接收准确。
收端根据数据码做出应该执行什么动作的判断。
连发代码是在持续按键时发送的码。
它告知接收端,某键是在被连续地按着。
NEC标准下的发射码表示发射数据时0用“0.56ms高电平+0.565ms低电平=1.125ms”表示,数据1用“高电平0.56ms +低电平1.69ms=2.25ms”表示即发射码“0”表示发射38khz的红外线0.56ms,停止发射0.565ms,发射码“1”表示发射38khz 的红外线0.56ms,停止发射1.69ms需要注意的是:当一体化接收头收到38kHz 红外信号时,输出端输出低电平,否则为高电平。
所以一体化接收头输了的波形是与发射波形是反向的,如图PHILIPS标准:载波频率为38KHz;没有简码,点按键时,控制码在1和0之间切换,若持续按键,则控制码不变。
一个全码=起始码‘11’+控制码+用户码+用户码,如图所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第18卷第2期苏州大学学报(自然科学) Vol .18, No .2 2002 年 4 月JOURNAL OF SUZHOU UNIVERSITY(NATURAL SCIENCE) Apr .2002文章编号:1000-2073(2002)02-0101-06一种红外遥控信号的解码方法肖圣兵,仲兴荣,徐清源,曲波(苏州大学通信与电子工程系, 江苏苏州215021)摘要:文章介绍了红外遥控的基本原理和红外遥控发射器的组成,详细论述了以单片机89C2051 为核心的红外遥控信号的解码方法, 提出了用单片机对红外遥控信号进行识别译码的程序设计流程.关键词:单片机;89C2051;红外遥控;解码中图分类号:TP722文献标识码:A红外遥控技术广泛应用于各种家用电器产品、金融及商业设施中,为用户提供方便的操纵手段.一些遥控功能相对简单的电器产品,红外遥控信号的接收识别往往采用与编码调制芯片配套的译码芯片.而遥控功能比较复杂的一些电器产品(如电视机),均采用专用的遥控解码芯片,实现特定的功能.为了能将性能稳定、价格低廉、功能较多的电视机遥控器应用于其他控制场合,本文利用单片机89C2051为核心,设计了一套红外遥控信号解码的软硬件系统,通过驱动电路的扩展,可实现功能较复杂的遥控控制.1 红外遥控的基本原理红外遥控系统一般由发射系统和接收系统组成.发射系统由专用芯片产生指令代码,经载波调制后驱动红外发射器件,发射红外控制信号.红外信号的指令代码均为二进制码,编码调制由专用芯片完成,编码的方法有多种,不同芯片的编码方法和代码长度有所不同.指令信号常用的编码调制方法有脉冲宽度调制(PWM)和脉冲位置调制(PPM)两种,本系统采用脉冲位置调制方法的遥控信号发射器,即用两个脉冲串之间的时间间隔来表示二进制信息.红外遥控信号被红外接收头接收后,经放大、检波、整形,得到TTL电平的代码信号,再送给解码电路,经译码并执行,去控制指定对象,实现遥控功能.收稿日期:2002-01-10基金项目:江苏省青年教师基金(Q3119218)作者简介:肖圣兵(1964-),男(汉族),江苏苏州人,高级工程师,主要从事信息技术的研究.102苏州大学学报(自然科学)第18卷2 红外遥控信号发射器的组成红外遥控信号发射器选用以集成电路TC9012为核心的遥控信号发生器,它与键盘矩阵、输出驱动级和红外发光二极管组成遥控发射器器,图1为红外遥控信号发射器的电原理图.图1红外遥控信号发射器的电原理图遥控信号发生器集成电路TC9012,由振荡器、时钟信号发生器、键位扫描信号发生器、键位编码、遥控指令编码器、码转换器、编码调制器以及输出缓冲器等组成.振荡器由第8、9脚间的内部电路及其外接陶瓷谐振器组成,振荡频率取决于陶瓷谐振器,此处为455kHz,经TC9012 内部电路 12 分频后得到约为 37 .9kHz 、占空比为 1 3 的脉冲载波信号, 遥控编码脉冲对37.9kHz的载波信号进行调制,经驱动放大后,激励红外发射管发出红外遥控信号. 455kHz经 256 分频后得到约为 1 .78kHz 的系统时钟脉冲信号, 时钟脉冲周期 T cp =0 .5626ms .3 红外遥控信号的编码方式图2遥控编码信号的波形遥控器发射的遥控编码脉冲由前导码、系统码、系统码、功能码、功能码的反码组成,如图2所示.前导码是一个遥控码的起始部分,由时间宽度均为8T cp的一个高电平和一个低电平组成,作为接收数据的准备脉冲.系统码和功能码的编码是采用脉冲位置调制方式,根据第2期肖圣兵,仲兴荣,等:一种红外遥控信号的解码方法103脉冲之间的时间间隔来区分码值的“0”或“1” .对应于二进制数字信号“0”、“1”的脉冲时间间隔分别为2T cp和4T cp,而每一脉冲的宽度仍不变均为T cp,如图3所示.系统码是通过遥控器的遥控编码芯片的引脚不同接法设定的,用以区分不同型号的遥控系统;功能码则是遥控器图3脉冲位置调制方式的二进制码“0”和“1”的波形功能按键的编码,不同的功能按键其代码不相同;功能码的反码是用来纠错的.系统码为8位,功能码也为8位,所以脉冲码共为32位.,为了增强遥控系统的可靠性,将系统码发送两次,将功能码与其相反码一起发送.从图中可知,该遥控器的系统码为八位二进制数01101110 , 功能码为 01100000 八位二进制数, 该遥控器最多可以有256 个功能键 .4 红外遥控信号接收器红外遥控接收器由光电二极管和红外遥控信号接收集成电路CX20106构成,其原理如图4所示.遥控信号接收集成电路CX20106由前置放大器、限幅放大器、带通滤波器、峰值检波器和整形电路等组成.红外遥控信号发射器发射的红外遥控信号,激励光电二极管,产生光电流,经输入电阻转换成电压信号,通过CX20106 放大,再经过检波器滤去 38kHz 的载波 ,最后经整形电路整形,由脚7输出遥控编码脉冲,送至单片机解码电路.图4红外遥控接收器电原理图5 红外遥控信号单片机解码的硬件电路图 5红外遥控信号解码硬件电路以 89C2051 单片机为核心组成的红外遥控信号解码电路如图 5 所示.104 苏州大学学报(自然科学)第18卷图 5 中 89C2051 是美国 ATMEL 公司推出的一种高性价比单片机.89C2051 指令系统与MSC -51 完全兼容,具有2K 字节可重复编程的闪烁存储器和128 字节内部 RAM ;P3 .0~ P3 .6 共7 个脚, 准双向端口,并且保留了全部P3 的第二功能, 如P3 .0、P3 .1的串行通信功能, P3 .2、P3 .3的中断输入功能 ,P3 .4、P3 .5 的定时输入功能, 以及两个 16 位定时计数器 .图 5 中 U2 为具有上电复位功能的“看门狗”集成电路 IMP706 ,其6 脚与89C2051 的 9 脚相连,接收89C2051输出的“看门狗”控制信号,U2的7脚输出的复位信号通过一个反相器连接到89C2051的复位端1脚.89C2051的4、5脚外接12MHz的晶振和2只20P的元片电容,与其内部电路一起产生12MHz 的时钟信号.遥控编码脉冲直接传送至单片机的 11 脚 ,并经一反相器传送至单片机的6脚.6 红外遥控代码单片机译码程序的设计方法单片机红外遥控译码信号采用中断方式.红外接收头输出信号(图4中OUT与图5中的IN相连)经反相后连接到89C2051的外部中断INT0.INT0设置为下降沿边缘触发方式,用内部定时器T0测量正脉冲宽度,T0工作于方式2(16位计数器),在INT0的中断服务程序中,完成遥控译码.红外遥控信号在INT0引脚引起单片机中断后,进入中断服务程序.在中断服务程序中检测INT0引脚上是否为低电平,如为低电平表示传送码到来,延时等待至再次出现高电平,清TH0、TL0,开启T0,计数开始,INT0引脚变低时关闭T0.根据计数器TH0、TL0 的计数值 ,判断出该位代码为“0”或“1” ,并存入系统码寄存器的对应位;继续进行延时等待,直至INT0引脚电平升高后重复进行上述位代码检测步骤,并将相应值放入相应位至8 位系统码检测完毕 .随后进行8 位系统码、8 位功能码和8 位功能反码检测,具体过程与第一次系统码检测完全相同,结果存入相应寄存器中.最后,单片机系统根据功能码寄存器内容进行不同的功能操作.6 .1引导码的识别无遥控信号时,遥控接收器输出为低电平,经反相后INT0引脚上为高电平,当有遥控信号引导码出现时,INT0引脚由高到低发生电平变化,引起INT0中断.在INT0中断服务程序中检测INT0引脚电平,如为低电平则等待,直至INT0引脚出现高电平,清TH0、TL0,启动T0计数.根据TH0和TL0的计数值,判断正脉冲的宽度.如正脉冲的宽度在3.5~5.5ms范围内(实际引导码正脉冲宽度为 8T CP =8 ×0 .563ms =4 .5ms), 则认为是引导码 ,准备读取后续遥控代码,否则认为干扰,跳出INT0中断译码程序,返回主程序.程序流程图如图6所示.6 .2系统码、功能码、功能反码的译码 .系统码、功能码、功能反码的识别技术关键是0、1代码的识别.根据上面的遥控编码方法和波形图可知,在INT0中断服务程序中,我们只要能测出加到单片机INT0引脚的遥控接收反码信号的高电平宽度即可得到其代码.如脉冲宽度编码方法中,表示“0”的高电平宽度为0.56ms,表示“1”的高电平宽度为1.68ms,我们需要做的是判断出高电平的宽度范围.如大于0.46ms小于0.66ms可判为“0” ,大于1.58ms小于1.78ms可判为“1”,否则,判为非法的干扰代码,退出中断译码程序.这样我们就可以比较容易用程序读取代码.程序流程图如图7 所示.第2期肖圣兵,仲兴荣,等:一种红外遥控信号的解码方法105图6引导码识别流程图图7系统码、功能码识别流程图7 单片机红外遥控译码的软件抗干扰技术在红外遥控系统中,虽然发射、接收芯片内部均含有抗干扰及杂波滤除功能,但红外干扰源对系统的影响仍无法完全避免;另外,某些意外情况也可能造成译码的错误.为了提高系统的抗干扰能力,杜绝误操作,在软件上采用了多种抗干扰措施.7 .1单片机译码程序中“窗口”范围的确定单片机译码系统中,单片机晶振采用12MHz,机器周期为1μs,即每经过1μs,定时器的计数值T0加1.则脉冲“0”的高电平宽度为0.56ms对应的计数值为N0=0.56ms 1μs=560= 0230H ,脉冲“1”的高电平宽度为1 .68ms 对应的计数值为 N1 =1 .68ms 1μs =1680 =0690H , 引导码的脉冲高电平宽度为4.5ms对应的计数值为N2=4.5ms 1μs=4500=1194H.由于遥控脉冲形变、外界干扰及计数器计时误差,实际测出的遥控码计数值只在上述数值附近.为此,为读出的T0计数值设计一个“窗口” ,“窗口”范围为±0.1ms(对应计数值为±64H),即“0”范围 :0230H ±64H , 01DCH ~ 0294H“1”范围 :0690H ±64H , 062CH ~ 06F4H引导码范围:1194H±64H,1130H~11F8H只有位于“窗口”内的计数值才作为有效数据记录在数据存储区内.7 .2忽略干扰数据、提取有效数据实际上遥控脉冲信号由于干扰有“移位”现象,遥控发射器的按键按下以前,若此时有干。