红外遥控器按键编码

合集下载

常见红外遥控器编码与格式

常见红外遥控器编码与格式

电源和红外发射电路组成。

信号调制为脉冲串信号,通过红外发射管发射。

常用的有通过脉冲宽度来实现信号调制的脉红外线遥控器已被广泛使用在各种类型的家电产品上,它的出现给使用电器提供了很多的便利。

红外遥控系统一般由红外发射装置和红外接收设备两大部分组成。

红外发射装置又可由键盘电路、红外编码芯片、红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成。

通常为了使信号能更好的被传输发送端将基带二进制宽调制(PWM )和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM )两种方法。

在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型,这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。

对应于编码芯片通常会有相配对的解码芯片或包含解码模块的应用芯片。

在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。

只有知道编码方式,我们才可以使用单片机或数字电路去定制解码方案。

下面介绍的是笔者所收集整理的一些常用遥控编码芯片的编码方式和常用一体化接收芯片的引脚示意图。

在最后还用实例介绍M50560-001P 芯片的解码思路和应用实例程序的编写。

常用红外一体化接收头引脚示意uPD6121,uPD6122,PT2222,SC6121,HS6222,HS6221载波波形 使用455KHz 晶体,经内部分频电路,信号被调制在37.91KHz ,占空比为3分之1。

数据格式. 数据格式包括了引导码、用户码、数据码和数据码反码,编码总占32位。

数据反码是数据码反相后的编码,编码时可用于对数据的纠错。

注意:第二段的用户码也可以在遥控应用电路中被设置成第一段用户码的反码。

使用455KHz 晶振时各代码所占的时间位定义 用户码或数据码中的每一个位可以是位‘1’,也可以是位‘0’。

区分‘0’和‘1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简写PPM 。

红外遥控器的原理

红外遥控器的原理

红外遥控器的原理红外遥控器的硬件电路红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组成。

遥控专用集成电路(通常是四位单片机)是发射系统的核心部分,其内部由振荡电路、定时电路、扫描信号发生器、键输入编码、指令译码器、用户码转换器、数码调制电路以及缓冲放大器等组成。

它能产生键位扫描脉冲信号,并能译出按键的键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由38KHZ的载波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。

红外遥控器发射硬件图当按下某个键时,发送电路就产生对应的编码,经过调制后,在输出端产生串行编码的脉冲。

这些脉冲经过驱动电路后由红外二极管发射出去。

当接收端接收到光信号后,先经过光放大器再经过专用解码芯片将其还原(解调)为串行编码脉冲,然后由接收电路按照编码解码的协议转换为相应的控制电平,最后由执行电路驱动开关等完成要求的操作。

遥控器里面是一个键盘编码器,每个按键对应一个编码,在把编码调制到一个高频信号上,其目的是为了降低发射的功率损耗;再把调制好的信号送给红外发光管把信号发送出去。

接收过程恰好与此相反,首先由红外接收管收到微弱的信号,经放大后解解调(把高频载波去掉),再进行解码,就可得到遥控器发过来的数据。

红外遥控器的红外编码遥控系统中传输的数据是一串编码脉冲,也就是一组连续的串行二进制码,只是该脉冲是用调制过的载波表示的。

对于一般的遥控系统,此串行码由红外接收头解调后,作为微控制器的遥控输入信号,由其内部CPU完成对遥控指令的解码,设计人员通常利用红外编码解码专用芯片或者单片机研制各种红外遥控系统,对各种电气设备进行遥控。

目前市场上有成百上千的编码方式并存,没有一个统一的国际标准,只是各芯片厂商事实上的标准,在自己的遥控器中使用自己指定的标准。

但由于早期的生产遥控芯片的厂家较少,主要集中在欧洲和日本,他们所使用的编码标准成为后续很多厂家遵循或者模仿的标准,也就是说很多厂家生产出自己的遥控器,但只是在脉冲宽度、数据位的个数上有一些变化,在整个码型结构上还是遵循的老厂家的标准。

红外遥控器编码协议总结

红外遥控器编码协议总结

目录1)MIT-C8D8 (40k)2) MIT-C8D8(33K)3)SC50560-001,003P 4)M504625)M50119P-016)M50119L7)RECS808)M30049)LC7464M10)LC7461-C1311)IRT1250C5D6-0112)Gemini-C6-A13)Gemini-C614) Gemini-C17(31.36K)-1 15)KONKA KK-Y26116)PD6121G-F17)DATA-6BIT18)Custum-6BIT19)M9148-120)SC3010 RC-521) M50560-1(40K)22) SC50560-B123)C50560-002P24)M50119P-0125)M50119P-126)M50119P27)IRT1250C5D6-0228)HTS-C5D6P29)Gemini-C1730)Gemini-C17 -231)data6bit-a32)data6bit-c33)X-Sat34)Philips RECS-8035)Philips RC-MM36)Philips RC-637)Philips RC-538)Sony SIRC39)Sharp40)Nokia NRC1741)NEC42)JVC43)ITT44)SAA3010 RC-5(36K)45)SAA3010 RC-5(38K)46)NEC2-E247) NEC-E348) RC-5x49) NEC1-X250) _pid:$006051) UPD1986C52) UPD1986C-A53) UPD1986C-C54) MV500-0155) MV500-0256) Zenith S101) MIT-C8D8(40K)MIT-C8D8(40K)是一种常见的红外遥控编码格式。

该格式出现在万能遥控器ZC-18A(600-917)中。

Features 基本特点1,8位地址码,8位数据码,结束码;2,脉宽调制方式(PWM);3,载波:40.0 KHZ;4,逻辑位时间长度是 1.215ms或2.436 ms。

史上最全的红外遥控器编码协议

史上最全的红外遥控器编码协议

目录1)MIT-C8D8 (40k)2) MIT-C8D8(33K)3)SC50560-001,003P 4)M504625)M50119P-016)M50119L7)RECS808)M30049)LC7464M10)LC7461-C1311)IRT1250C5D6-01 12)Gemini-C6-A13)Gemini-C614) Gemini-C17(31.36K)-1 15)KONKA KK-Y261 16)PD6121G-F17)DATA-6BIT18)Custum-6BIT19)M9148-120)SC3010 RC-521) M50560-1(40K)22) SC50560-B123)C50560-002P24)M50119P-0125)M50119P-126)M50119P27)IRT1250C5D6-02 28)HTS-C5D6P29)Gemini-C1730)Gemini-C17 -231)data6bit-a32)data6bit-c33)X-Sat34)Philips RECS-8035)Philips RC-MM36)Philips RC-637)Philips RC-538)Sony SIRC39)Sharp40)Nokia NRC1741)NEC42)JVC43)ITT44)SAA3010 RC-5(36K)45)SAA3010 RC-5(38K)46)NEC2-E247) NEC-E348) RC-5x49) NEC1-X250) _pid:$006051) UPD1986C52) UPD1986C-A53) UPD1986C-C54) MV500-0155) MV500-0256) Zenith S101) MIT-C8D8(40K)MIT-C8D8(40K)是一种常见的红外遥控编码格式。

该格式出现在万能遥控器ZC-18A(600-917)中。

Features 基本特点1,8位地址码,8位数据码,结束码;2,脉宽调制方式(PWM);3,载波:40.0 KHZ;4,逻辑位时间长度是1.215ms或2.436 ms。

红外线遥控器(nec编码方式)

红外线遥控器(nec编码方式)

Main()程序:
I/O初始化
RAM初始化 Timer初始化
PCL 選擇
4.
延時程 序
睡眠程 序
鍵盤掃 描程序
其他程 序
5.
FAE Service Department designed
HT48R09E4學習型遙控器軟件流程
鍵盤掃描程序:
1.
鍵盤掃描程序有以下步驟:
查看PA(為行掃描IO口)的狀態 PA=FFH,無鍵按下。 則初始化相關變量后返回main PA!=FFH,有鍵按下, 則進行列掃描,并查表取值
Ext.
Int.
HT48RA0-2 HT48CA0-2
HT48RA0-3 HT48CA0-3
2.0V ~ 3.6V
400kHz ~ 4MHz 1Kx14 4MHz 32x8
15 -16 ---v v -1 20SSOP
HT48RA0-1 HT48CA0-1
2.0V ~ 3.6V 2.0V ~ 5.5V 2.0V ~ 5.5V 2.0V ~ 5.5V
38kHz Carrier v v
Package
HT6221 HT6222
Encoder Encoder
1.8V~3.5V 1.8V~3.5V
20SOP 24SOP
HT6230
HT6240002
Encoder
Encoder
2.4V~5.2V
2.2V~3.6V
5
8
6
8
96
32
v
v
28SOP
20/24SOP
FAE Service Department designed
NEC碼分析
2. 编码采用脉冲位置调制方式(PPM),利用脉冲之间的时间间隔 来区分“0”和“1”。

红外遥控RC-5码和NEC码技术标准

红外遥控RC-5码和NEC码技术标准

特点:
8 位的系统码和 8 位的命令码长度 为了增加可靠性,地址码(即用户码)和命令码都要发送两次 脉冲宽度调制 载波频率为 38K 每一位的时间长度为 1.12ms 或 2.25ms
调制:
图 1 逻辑“1”和“0”波形
NEC 码协议使用脉冲长度进行编码。每一个高电平由长度为 560µs 的 38K 载波构成(约 21 个周期)。1bit 的逻辑“1”发送时间是 2.25ms,而 1bit 逻辑“0”的发送时间为 1.12ms,如图 1。载波的占空比推荐值是 1/4 或 1/3。
PIP SIZE
画中画 搜台 制式
子通道 34
41 图文 SUBCODE 复用 65
PIP Source Subcode
子通道
画面交换 35
42 与图文 REVEAL 复用 66
Swap Reveal
交换
36 音量-
67 43 上下左右和节目音量键不 VOL-
音量-
37 音量+
68 44 复用时作为音量加减键值 VOL+
音量+
子通道频道-
45 图文 MIX 复用
38
69
PIP CHMIX
子通道频道-
子通道频道+
46 图文 CANCEL 复用
39
70
PIP CH+ Cancel
子通道频道+
画中画位置
47 图文 INDEX 复用
40
71
Position Index
画中画位置
计时回看 41
48 和 S 视频复用 72
Timer recall S-Video
下 节目减少
25 右 音量增加 24 18

红外遥控器按键编码测试

红外遥控器按键编码测试
/chenjunglp
红外遥控器按键编码测试
#include <regx51.h> #define uchar unsigned char #define uint unsigned int #define IR_RE P3_2 bit k=0; 位,为 0 则为有效信号,为 1 则为无效 uchar date[4]={0,0,0,0}; 原码,反码,数据原码,反码 /*--------------------------延时 1ms 程子程序-----------Байду номын сангаас-----------*/ delay1000() { uchar i,j; i=5; do{j=95; do{j--;} while(j); i--; }while(i); } /*---------------------------延时 882us 子程序-----------------------*/ delay882() { uchar i,j; i=6; do{j=71; do{j--;} while(j); i--; }while(i); } /*--------------------------延时 2400us 程子程序-----------------------*/ delay2400() { uchar i,j; i=5; do{j=237; do{j--;} while(j); i--; }while(i);
//红外解码判断标志 //date 数组为存放地址
/chenjunglp
} //************************************************************** //************************************************************** /*----------------------------------------------------------*/ /*-----------------------红外解码程序(核心)-----------------*/ /*----------------------------------------------------------*/ void IR_decode() { uchar i,j; while(IR_RE==0); delay2400(); if(IR_RE==1) //延时 2.4ms 后如果是高 电平则是新码 { delay1000(); delay1000(); for(i=0;i<4;i++) { for(j=0;j<8;j++) { while(IR_RE==0); // 等待地址码第 1 位高电平到来 delay882(); //延时 882us 判断此时 引脚电平 ///CY=IR_RE; if(IR_RE==0) { date[i]>>=1; date[i]=date[i]|0x00; } else if(IR_RE==1) { delay1000(); date[i]>>=1; date[i]=date[i]|0x80; } } //1 位数据接收结束 } //32 位二进制码接收结 束 } } //*****************************************************************

通过Arduino程序获取红外遥控器按键键值编码

通过Arduino程序获取红外遥控器按键键值编码

通过Arduino程序获取红外遥控器按键键值编码一、以如下遥控器举例:二、检测按键键值的Arduino程序:#include<IRremote.h>//红外遥控库文件网上有,亦可通过百度账号给我留言int REC_PIN=11; //接收端引脚IRrecvirrecv(REC_PIN);decode_results results;void setup(){Serial.begin(9600); //键值在串口通信窗口中查看irrecv.enableIRIn(); //红外接收端初始化}void loop(){if(irrecv.decode(&results)) //是否收到键值编码{Serial.println(results.value,HEX);//通过串口打印十六进制的键值delay(500);irrecv.resume(); //接收下一个值}}三、检测到的十六进制按键键值(在串口监视器中查看):四、Arduino的红外遥控器控制LED例程:include <IRremote.h>int RECV_PIN = 11;IRrecvirrecv(RECV_PIN);decode_results results;void setup(){Serial.begin(9600);irrecv.enableIRIn(); //初始化红外遥控PinMode(13,1); LED初始化,点亮}void loop() {if (irrecv.decode(&results)){if(results.value==0xFFA25D) //确认接收到按键(1)的编码,此码是预先读出来的按键编码。

{digitalWrite(13,1); //点亮LEDSerial.println("turn on LED"); //串口显示开灯}else if(results.value==0xFF629D) //确认接收到的按键(2)的编码{digitalWrite(13,0); //熄灭LEDSerial.println("turn off LED"); //串口显示关灯}irrecv.resume(); // 接收下一个值}}。

红外遥控器原理

红外遥控器原理

遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。

如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。

而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。

一、编码格式1、0和1的编码遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。

通常有曼彻斯特编码和脉冲宽度编码。

TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。

O码由O.56ms低电平和0.56 ms高电平组合而成.脉冲宽度为1.12ms。

1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。

在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。

2、按键的编码当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。

根据各部分的功能。

可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。

遥控器发射代码时.均是低位在前,高位在后。

由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。

当接收到此码时.表示一帧数据的开始。

单片机可以准备接收下面的数据。

地址码由8位二进制组成,共256种.图中地址码重发了一次。

主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。

不同的设备可以拥有不同的地址码.因此。

同种编码的遥控器只要设置地址码不同,也不会相互干扰。

图中的地址码为十六进制的0EH(注意低位在前)。

在同一个遥控器中.所有按键发出的地址码都是相同的。

数据码为8位,可编码256种状态,代表实际所按下的键。

数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。

如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。

教你如何快速获取红外遥控码

教你如何快速获取红外遥控码

本贴纯属个人工作与学习笔记,无任何商业目的。转载注明出处:QQ223770753
2、用音频分析软件,本人用的是Cool Edit Pro 2.1,这种方法在网上其它地方有详细介绍,说点重点的细节就不再重复。用这个软件可以分析出引导码和结果码的宽度。在读取遥控波形时,要从后往前看,还有高低要相反。
其实有了上面两种方法就已经可以把市面上那些卖几千元的红外遥控波形分析仪买回家当收藏品了,呵呵
第二步:用鼠标选取8位16进制代码并复制,再打开电脑自带的计算器,(也可以在运行栏里输入CALC命令即可打开计算器)。把计算器调整到科学型十六进制(在查看菜单下可设置),此时用鼠标点计算器显示窗后按ctri+v把8位16进制数粘贴过来,当然你也可以对着遥控软件一个一个输入。粘贴后再点击计算器的二进制,这时显示窗内的8位16进制码就转换为32位二进制数了,如我刚才复制的转换后得:11111110000000011110111000010000
第三步:复制32位二进制数后在桌面上随便建个记事本文件,把32位二进制数粘贴到记事本内,然后把数字分成五组,分好后的数字为:1111111 0000000 11110111 00001000 0,到这里很多人已经可以看到自己想要的东西了。
第四步:最后一步也是最关键的一步,就是重整数字。把一组单个0的去掉,并在第一组7位上加一位后为:11111111。如果你的是7位0那就加多位0,再把整组数字重新从右往左排列并分组:00010000 11101111 00000000 11111111 ,这就是我们要的代码,从左到右分别为,8位数据码(也就是按键的标准键值),8位数据码反码,地址码高8位和地址码低8位,知道这32位代码后只要是相同的编码方式的遥控就可以实行解码了。不同的编码芯片的引导码和结果码宽度不同,也有编码方式的不同,有PPM 或PWM,本人试验用的是HT6221编码芯片

格力空调遥控器红外编码讲解学习

格力空调遥控器红外编码讲解学习

格力空调遥控器红外
编码
格力空调遥控器红外编码一、基本格式
起始码(S)+35位数据码+连接码(C)+32位数据码
二、电平规范
起始码:9000us低电平+4500us高电平
连接码:600us低电平+20000us高电平
数据0:600us低电平+600us高电平
数据1:600us低电平+1600us高电平
仅供学习与交流,如有侵权请联系网站删除谢谢2
三、数据编码
3.1 前35位数据码
表一前35位数据码
3.2 后32位数据码
表二后32为数据码仅供学习与交流,如有侵权请联系网站删除谢谢3
3.3 其他定义
需要注意的是,所有数据都按照逆序方式递增。

模式字段定义
表三模式字段定义
四、校验计算
校验码=【(模式-1)取四位二进制逆序+(温度-16)+2+左右扫风+换气+节能】取二进制后四位的逆序。

仅供学习与交流,如有侵权请联系网站删除谢谢4。

51单片机红外的遥控解码程序的编写

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;}。

红外线遥控器(nec编码方式)介绍

红外线遥控器(nec编码方式)介绍
FAE Service Department designed
學習型遙控器的分類
優點:可以使用任何遙控器的學習,無須更新代碼程式即可使用目前所有 乃至未來的所有紅外線遙控的學習。
缺點:對主控制晶片和記憶體的選擇都比固定式要高。整體成本上較貴於 固定碼式學習型遙控器
FAE Service Department designed
Data Memory
I/ O
8bit
16bit
Ext.
Int.
IR Carrier
LVR
PFD Stack
400kHz
~
15
2.0V
4MHz
~
1Kx14
32x8
--
--
--
--
v
v
--
1
3.6V
4MHz
16
Package 20SSOP
HT48RA0-1 HT48CA0-1
HT48RA1 HT48CA1
NEC碼分析
在東亞地區比較常用的紅外線傳輸協議是NEC協議,故我們主要介紹NEC 協議即6122協議。 1. 協議組成:
引導碼,16bit用戶碼(地址碼),8bit命令碼(數據碼)及其反碼。
• 引导码由一个9ms的载波波形和4.5ms的关断时间构成 ‚ 地址碼共16bit,低8位在前,高8位在后。 ƒ 8bit命令碼及其反碼
20x4
32x4
HT49RA1 HT49CA1
2.0V ~
3.6V
4MHz
4Kx15
160x8
8
,
8
33x3 4
,
8
1
1
v
2
4
v
v

红外遥控器编码协议总结

红外遥控器编码协议总结

目录1)MIT-C8D8 (40k)2) MIT-C8D8(33K)3)SC50560-001,003P 4)M504625)M50119P-016)M50119L7)RECS808)M30049)LC7464M10)LC7461-C1311)IRT1250C5D6-0112)Gemini-C6-A13)Gemini-C614) Gemini-C17(31.36K)-1 15)KONKA KK-Y26116)PD6121G-F17)DATA-6BIT18)Custum-6BIT19)M9148-120)SC3010 RC-521) M50560-1(40K)22) SC50560-B123)C50560-002P24)M50119P-0125)M50119P-126)M50119P27)IRT1250C5D6-0228)HTS-C5D6P29)Gemini-C1730)Gemini-C17 -231)data6bit-a32)data6bit-c33)X-Sat34)Philips RECS-8035)Philips RC-MM36)Philips RC-637)Philips RC-538)Sony SIRC39)Sharp40)Nokia NRC1741)NEC42)JVC43)ITT44)SAA3010 RC-5(36K)45)SAA3010 RC-5(38K)46)NEC2-E247) NEC-E348) RC-5x49) NEC1-X250) _pid:$006051) UPD1986C52) UPD1986C-A53) UPD1986C-C54) MV500-0155) MV500-0256) Zenith S101) MIT-C8D8(40K)MIT-C8D8(40K)是一种常见的红外遥控编码格式。

该格式出现在万能遥控器ZC-18A(600-917)中。

Features 基本特点1,8位地址码,8位数据码,结束码;2,脉宽调制方式(PWM);3,载波:40.0 KHZ;4,逻辑位时间长度是 1.215ms或2.436 ms。

格力空调遥控器红外编码

格力空调遥控器红外编码

格力空调遥控器红外编

The manuscript was revised on the evening of 2021
格力空调遥控器红外编码一、基本格式
起始码(S)+35位数据码+连接码(C)+32位数据码
二、电平规范
起始码:9000us低电平+4500us高电平
连接码:600us低电平+20000us高电平
数据0:600us低电平+600us高电平
数据1:600us低电平+1600us高电平
三、数据编码
前35位数据码
表一前35位数据码
后32位数据码
表二后32为数据码
其他定义
需要注意的是,所有数据都按照逆序方式递增。

模式字段定义
表三模式字段定义
四、校验计算
校验码=【(模式-1)取四位二进制逆序+(温度-16)+2+左右扫风+换气+节能】取二进制后四位的逆序。

红外线遥控器(nec编码方式)

红外线遥控器(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
发射距离测试
测试遥控器在不同距离下的信号发射效果,确保 遥控器在有效范围内能够正常工作。

NEC码红外遥控完整编码

NEC码红外遥控完整编码

红外遥控编码程序如下:NEC .SECTION 'DATA'a_REM_CODE DB ? ;KEY DATA CODEa_CUSTOMER_1 DB ? ;遥控器头码(客户码)低八位a_CUSTOMER_2 DB ? ;遥控器头码(客户码)高八位#define CUS_6221_1 00110100b ;1234H#define CUS_6221_2 00010010b;@------------------------------------------------NEC_CODE .SECTION 'CODE';@************* SUBROUTINE[xx]: Send Remote Code ************;;遥控码发送:SEND_REMOTE_CODE:clr WDT ;清除进位标志,检测遥控发送的有效的按键SZ fg_SendActive ;SZ表示以0结尾的字符串JMP READY_SEND ;跳转到READY_SEND模块retREADY_SEND:NEC_CODE:mov A,a_KEY_NUM ;将数值发送到寄存器A中,直接寻址mov M_TBLP,ATABRDL a_REM_CODE ;查表专用指令MOV A,CUS_6221_1 ;读取遥控头码(客户码)低八位数值MOV a_CUSTOMER_1,AMOV A,CUS_6221_2MOV a_CUSTOMER_2,A以上为READY_SEND运行模块,同时是为后面NEC码发送的准备;首先将一个按键的数值已以直接寻址方式发送到寄存器A中,将寄存器A的是发送到M_TBLP中,然后查表a_REM_CODE,将CUS_6221_1的值发送到寄存器中,在赋值给遥控器头码(客户码)低八位a_CUSTOMER_1,同理,将CUS_6221_2赋值给遥控器头码(客户码)低八位a_CUSTOMER_2,随后即开始发送NEC遥控码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P4M1 = 0X00; P4M0 = 0XFF; P44 = 0; P50=0;
EA = 1;
//允许全局中断
EX0 = 1;
//允许 INT0 中断
PX0 = 0;
//INT0 的中断级别为低
IT0 = 0;
//设定 INT0 上升沿和下降沿都可以中断
/*初始化 T0:16 位自动重装填模式*/
{LED1=ON;LED2=OFF;LED3=OFF;LED4=OFF;LED5=OFF;}
if(temp==IR_2)
{LED1=OFF;LED2=ON;LED3=OFF;LED4=OFF;LED5=OFF;}
if(temp==IR_3)
{LED1=OFF;LED2=OFF;LED3=ON;LED4=OFF;LED5=OFF;}
break;
}
case IR_WordA: {
if((IR_Num%2)==0&&InfraredRayPin==1) {
TH0 = 0x00; TL0 = 0x00; TimeStart; break; } if((IR_Num%2)==1&&InfraredRayPin==0) { TimeStop; IR_Time=TH0; IR_Time<<=8; IR_Time|=TL0; IR_DataA<<=1; if(IR_Time<800) {
1
#define IR_WordB
2
#define IR_End
3
#define TimeStart (TR0=1)
#define TimeStop (TR0=0)
void InfraredRay_Init(void);
//初始化红外遥控功能
unsigned int backdata(void);
#endif
AUXR &= 0X7F; //将 AUXR.7 清零,设置 T0 的工作时钟为传统时钟
// AUXR |= 0X80; //将 AUXR.7 置一,设置 T0 的工作时钟为传统时钟的 12 倍
ET0 = 0;
//不允许 T0 溢出中断
PT0 = 0;
//T0 的中断优先级别为 0
TL0 = 0X00; //清零 T0 计数寄存器低八位
TH0 = 0X00; //清零 T0 计数寄存器高八位
INT_CLKO &=0XFE;//不允许引脚将 T0 的频率输出
}
void INT0_OP(void) interrupt 0 using 1
{
IR_Num++;
switch(InfraredRay_Status)
{
case IR_Start:
unsigned int temp=0;
void main() {
InfraredRay_Init(); LED1=OFF;LED2=OFF;LED3=OFF;LED4=OFF;LED5=OFF; while(1)
{பைடு நூலகம்
while(EX0==0)
{
temp=backdata();
if(temp==IR_1)
IR_DataA&=0xfe; } if(IR_Time>=800) {
IR_DataA|=0x01; } if(IR_Num==35) {
InfraredRay_Status=IR_WordB; } break; } break; } case IR_WordB: { if((IR_Num%2)==0&&InfraredRayPin==1) { TH0 = 0x00; TL0 = 0x00; TimeStart; break; } if((IR_Num%2)==1&&InfraredRayPin==0) { TimeStop;
TF0 = 0;
//清除 T0 溢出中断标志,免得其产生中断
TR0 = 0;
//先不允许 T0 计数
TMOD &= 0XF7; //将 TMOD.3 清零,T0 计数只由 TR0 控制,与 INT0 的电平无关
TMOD &= 0XFB; //将 TMOD.2 清零,T0 对内部时钟进行计数
TMOD &= 0XFC; //将 TMOD.1&0 清零,T0 工作模式为 16 位自动重装填
#define _INFRAREDRAY_H_
#include "STC15W.H"
//各个按键对应码定义
#define IR_CHL 93
#define IR_CH 157
#define IR_CHR 29
#define IR_PREV 221
#define IR_NEXT 253
#define IR_PP 61
100+
00-FF-19-E6
00-FF-98-67
200+
00-FF-0D-F2
00-FF-B0-4F
1
00-FF-0C-F3
00-FF-30-CF
2
00-FF-18-E7
00-FF-18-E7
3
00-FF-5E-A1
00-FF-7A-85
4
00-FF-08-F7
00-FF-10-EF
5
00-FF-1C-E3
if(temp==IR_4)
{LED1=OFF;LED2=OFF;LED3=OFF;LED4=ON;LED5=OFF;}
if(temp==IR_5)
{LED1=OFF;LED2=OFF;LED3=OFF;LED4=OFF;LED5=ON;}
EX0 = 1;
}
}
}
②InfraredRay.h
#ifndef _INFRAREDRAY_H_
#define IR_4
239
#define IR_5
199
#define IR_6
165
#define IR_7
189
#define IR_8
181
#define IR_9
173
#define InfraredRayPin P32
//红外接收头的链接引脚
#define IR_Start
0
#define IR_WordA
#define IR_MINUS 31
#define IR_PLUS 87
#define IR_EQ 111
#define IR_0
151
#define IR_100A 103
#define IR_200A 79
#define IR_1
207
#define IR_2
231
#define IR_3
133
淘宝网上购买的遥控器图片:(这是脉宽调制的)
按键符号
某淘宝贴出来的按键对应码
我实际测得的按键对应码
CH-
00-FF-45-BA
00-FF-A2-5D
CH
00-FF-46-B9
00-FF-62-9D
CH+
00-FF-47-B8
00-FF-E2-1D
PREV
00-FF-44-BB
00-FF-22-DD
IR_Time|=TL0;
if(IR_Time>12000)
{
InfraredRay_Status=IR_WordA;
break;
}
else
{
InfraredRay_Status=IR_Start;
IR_Num=0;
break;
}
}
InfraredRay_Status=IR_Start;
IR_Num=0;
NEXT
00-FF-40-BF
00-FF-02-FD
PLAY/PAUSE 00-FF-43-BC
00-FF-C2-3D
-
00-FF-07-F8
00-FF-E0-1F
+
00-FF-15-EA
00-FF-A8-57
EQ
00-FF-09-F6
00-FF-90-6F
0
00-FF-16-E9
00-FF-68-97
③InfraredRay.c
#include "InfraredRay.h"
/*注意:时钟 12MHz!!!!!!*/
unsigned char InfraredRay_Status=IR_Start; unsigned char IR_Num=0; unsigned int IR_Time=0; unsigned int IR_Time0=0; unsigned int IR_DataA=0; unsigned int IR_DataB=0; void InfraredRay_Init(void) {
IR_Time=TH0; IR_Time<<=8; IR_Time|=TL0; IR_DataB<<=1; if(IR_Time<800) {
IR_DataB&=0xfe; } if(IR_Time>=800) {
IR_DataB|=0x01; } if(IR_Num==67) {
InfraredRay_Status=IR_End; } break; } break; } case IR_End: { if(IR_Num==68) { InfraredRay_Status=IR_Start; IR_Num=0; EX0 = 0;//不允许 INT0 中断 }break; } default:break; } } unsigned int backdata(void) { IR_Time0=IR_DataB&0x00ff; return IR_Time0; }
相关文档
最新文档