红外线遥控器(nec编码方式)
红外遥控协议标准(NEC RC5)及编程
红外遥控协议标准(NEC/RC5/RC5X)及编程目录1.NEC码遥控器技术标准2.RC5/RC5X码遥控器技术标准3.解码原理及算法(NEC)4.实例代码(NEC)1.NEC码遥控器技术标准特点:8位的系统码和8位的命令码长度为了增加可靠性,地址码(即用户码)和命令码都要发送两次脉冲宽度调制载波频率为38K每一位的时间长度为1.12ms或2.25ms其逻辑1与逻辑0的表示如图所示:逻辑1为2.25ms,脉冲时间560us;逻辑0为1.12ms,脉冲时间560us。
所以我们根据脉冲时间长短来解码。
推荐载波占空比为1/3至1/4。
NEC协议格式:首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit 的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。
然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit的命令码的反码。
地址和命令发送两次。
第二次发送时,所有的位取反,用来验证第一次发送的消息。
如果开发者不用验证,则可以忽略验证的数据,或者将地址或命令扩展为16bit以上是一个正常的序列,但可能存在一种情况:你一直按着1个键,这样的话发送的是以110ms为周期的重复码,如下图:就是说,发了一次命令码之后,不会再发送命令码,而是每隔110ms时间,发送一段重复码。
重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。
需要注意的是:1838红外一体接收头为了提高接受灵敏度。
输入高电平,其输出的是相反的低电平。
2、编程注意事项2.1红外接收头引脚信号是相反的电平。
2. 2数据从LSB(低位)开始发送,所以选择右移方式接收数据。
四个字节的数据都是先发送D0,最后发送D7。
所以接收到1位数据后,给变量的最高位赋值,右移。
或者先右移,再给变量的最高位赋值。
2.3.可以用一个数组保存32个数据的持续时间,用于后面判断高低电平。
用定时器对两个数据(中断)之间的时间计时,并保存这个持续时间用于以后判断是位1还是位0。
红外线遥控器NEC编码方式
FAE Service Department designed
遙控器IC的種類
按功能:單一、多功能 1. 單一 2. 單一簡單的(通常用AISC) 3. 單一特殊的(通常用MASK、OTP) 多功能 1. 單一多功能(通常用OTP、MASK) 2. 萬能多代碼(通常用OTP、MASK) 3. 萬能組合多合一 (通常用MASK) 按用途 1. 電視(通常MASK、ASIC、OTP) 2. VCD(通常ASIC、如6122) 3. DVD(通常ASIC、如6122) 4. VCR (通常ASIC、如6122) 5. 空調(通常OTP、MASK,是4bit.8bit) 6. 音像設備(通常ASIC、如6122)
延時程序:客戶自己加入的延時程序, 配合鍵盤掃描程序使用。
FAE Service Department designed
HT48R09E4學習型遙控器軟件流程
鍵盤掃描程序:
鍵盤掃描程序有以下步驟:
1. 查看PA(為行掃描IO口)的狀態
PA=FFH,無鍵按下。
則初始化相關變量后返回main
PA!=FFH,有鍵按下,
1Kx14
32x8
17
--
--
--
--
v
v
--
8Kx16
224x8
23
1
1
1
2
--
v
v
24Kx16
224x8
23
1
1
1
2
--
v
v
40Kx16
224x8
23
1
1
1
2
--
v
v
Note: Part numbers including "C" are mask version devices while "R" are OTP devices.
红外遥控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
ir常用编码格式 -回复
ir常用编码格式-回复什么是常用的IR编码格式?IR(红外线)编码格式是一种用来传递红外线信号的数字编码标准。
它被广泛应用于遥控设备,例如电视、音响、空调和机顶盒等。
常用的IR编码格式有多种,每种编码格式都具有自己独特的特点和用途。
1. NEC编码格式NEC编码格式是最常见和最普遍使用的IR编码格式之一。
它由NEC公司设计并广泛应用于消费类电子产品的遥控设备中。
NEC编码格式使用38kHz的红外载波频率来传输数据,并将0和1二进制逻辑编码成600μs的高电平和600μs的低电平。
NEC编码格式具有高可靠性和简单的实现方式,因此被广泛应用于各种电子设备。
2. RC-5编码格式RC-5编码格式是由荷兰公司Philips开发的一种IR编码标准。
它广泛应用于Philips以及一些其他品牌的遥控设备中。
RC-5编码格式使用36kHz 的红外载波频率,并将0和1的二进制逻辑编码成由889μs长的位周期以及不同的偏移量组成的波形。
RC-5编码格式具有较高的抗干扰能力和较长的传输距离,因此适用于一些特殊环境下的遥控设备。
3. Sony SIRC编码格式Sony SIRC(Sony Infrared Remote Control)编码格式是由索尼公司开发的一种IR编码标准。
它被广泛应用于Sony品牌的遥控设备中。
Sony SIRC编码格式使用40kHz的红外载波频率,并将每位数据编码成同样长度的波形,其中高电平的时间表示1,低电平的时间表示0。
Sony SIRC 编码格式具有较高的数据传输速率和较低的成本,因此被广泛应用于各种消费类电子产品。
4. RCMM编码格式RCMM(Remote Control Message Format)编码格式是由赛博感应公司(Cybernetic Micro Systems)开发的一种IR编码标准。
它主要应用于一些专业设备和工控设备的遥控系统中。
RCMM编码格式使用36kHz 或40kHz的红外载波频率,并将每个按键的数据编码成由预定数量的高电平和低电平组成的波形。
华宝空调红外遥控编码资料
华宝空调红外遥控编码资料简介华宝空调是一款广泛使用的家用空调品牌,它提供了方便的红外遥控功能,使得用户可以轻松控制空调的各种设置。
本文将介绍华宝空调红外遥控编码资料,包括红外遥控编码的原理、常用编码格式、编码数据的解析和使用方法等。
红外遥控编码原理红外遥控编码是通过发送特定的红外脉冲信号来实现对设备的控制。
华宝空调红外遥控编码原理基于脉冲宽度调制(PWM)技术,即通过调整脉冲信号的宽度来表示不同的控制指令。
常用编码格式华宝空调红外遥控编码使用了一种常见的编码格式,即NEC编码格式。
NEC编码格式是一种广泛应用于红外遥控领域的标准编码格式,它使用了32位二进制数据表示一个完整的红外遥控指令。
NEC编码格式的具体结构如下: - Header:8位数据,用于表示一个遥控指令的开始。
- Address:8位数据,用于表示遥控器的地址。
- Command:8位数据,用于表示具体的遥控指令。
- Inverted Command:8位数据,用于表示Command的反码。
编码数据的解析要解析华宝空调红外遥控编码数据,可以按照以下步骤进行: 1. 接收红外遥控编码数据。
2. 解析Header,判断是否为一个完整的红外遥控指令。
3. 解析Address,获取遥控器的地址。
4. 解析Command,获取具体的遥控指令。
5. 对Command进行处理,执行相应的操作。
使用方法要使用华宝空调红外遥控编码,可以按照以下步骤进行: 1. 获取红外遥控编码数据。
2. 解析编码数据,获取遥控指令。
3. 根据遥控指令,执行相应的操作,如调整温度、风速、模式等。
下面是一个示例代码,演示如何使用华宝空调红外遥控编码进行温度调节:# 导入红外遥控库import infrared_remote_control as irc# 获取红外遥控编码数据data = irc.get_infrared_data()# 解析编码数据header = irc.parse_header(data)address = irc.parse_address(data)command = irc.parse_command(data)# 判断遥控指令类型if command == "temperature_up":# 温度增加temperature = irc.get_current_temperature()irc.set_temperature(temperature + 1)elif command == "temperature_down":# 温度减少temperature = irc.get_current_temperature()irc.set_temperature(temperature - 1)else:# 其他指令pass总结华宝空调红外遥控编码资料介绍了红外遥控编码的原理、常用编码格式、编码数据的解析和使用方法。
红外NEC编码及调制解调
遥控器在按键按下后,周期性地发出同一种 32 位二进制码,周期约为 108ms。一组码本身的持续时 间随它包含的二进制“0”和“1”的个数不同而不同,大约在 45~63ms 之间。 当一个键按下超过 36ms, 振荡器使芯片激活, 将发射一组 108ms 的编码脉冲,这 108ms 发射代码由 一个起始码(9ms),一个结果码(4.5ms),低 8 位地址码(9ms~18ms),高 8 位地址码(9ms~18ms),8 位数据码(9ms~18ms)和这 8 位数据的反码(9ms~18ms)组成。如果键按下超过 108ms 仍未松开,接 下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。 3 接收器及解码 一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线 接收到输出与 TTL 电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线 遥控和红外线数据传输。 红外一开始发送一段 13.5ms 的引导码,引导码由 9ms 的高电平和 4.5ms 的低电平组成,跟着引导 码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由 9ms 的高电平,2.25ms 的低电平,跟着是一个短脉冲,本程序经过试用,能解大部分遥控器的编码! //串口通信程序 //向 pc 串口发送数据 //pc 端使用 超级终端 建立连接 //9600 8 位数据 1 位停止 #include <iom16v.h> #include <macros.h> #include "uart0.h" #define uint unsigned int #define uchar unsigned char uchar irr_b=0,s_s=0; uchar wb=0,a=0,ds=0; long da=0; uchar d1,d2,d3,d4; uchar ten_1,ten_2,ten_3,ten_4,i;
32红外遥控模块知识点详细笔记
32红外遥控模块知识点详细笔记
32红外遥控模块是一种常用的遥控模块,它可以接收和发送红外线信号,从而实现遥控功能。
以下是关于32红外遥控模块的详细知识点笔记:
1. 工作原理
32红外遥控模块通过接收红外线信号来工作。
当遥控器按下某个按钮时,它会发送一串编码好的红外线信号。
32红外遥控模块接收到信号后,会解码并执行相应的操作。
2. 编码方式
红外线信号的编码方式有很多种,其中最常见的是NEC编码。
NEC编码采用脉冲宽度调制(PWM)方式对二进制数据进行编码和解码。
在NEC编码中,脉冲的宽度和间隔时间都有严格的规定,从而确保解码的准确性。
3. 引脚说明
32红外遥控模块通常有以下几个引脚:VCC、GND、RXD和TXD。
VCC 和GND是电源和地线,RXD和TXD是接收和发送数据的引脚。
当模块接
收到红外线信号时,它会将信号从RXD引脚输出到单片机或其他控制器。
当模块需要发送信号时,它会从TXD引脚输入数据,并将数据编码成红外线信号发送出去。
4. 常见应用
32红外遥控模块广泛应用于各种遥控器和控制系统中,例如电视、空调、机顶盒等。
通过使用32红外遥控模块,我们可以轻松地实现遥控功能,提高设备的便利性和智能化程度。
5. 注意事项
使用32红外遥控模块时,需要注意以下几点:
- 确保电源电压正确,避免烧毁模块;
- 确保接收和发送引脚连接正确,避免出现通信错误;
- 避免强光干扰和电磁干扰,以免影响遥控效果;
- 注意遥控距离和角度的限制,确保遥控器和接收器之间的通信畅通无阻。
红外遥控协议分析之:NEC协议
红外遥控编码传输协议生产厂家对红外遥控的编码做了严格的规范,目前国内外主流的红外遥控编码传输协议有十多种,如NEC、Philips RC-5、Philips RC-6、Philips RC-MM、Philips RECS80、 RCA、X-Sat、ITT、JVC、Sharp、Nokia NRC17和Sony SIRC等。
国内最常用的规范有两种:NEC和Sony SIRC。
这两种规范的调制方式分别为:PPM(脉冲间隔调制)和PWM(脉冲宽度调制)。
谈到这两个概念,我需要具体讲解一下,因为我在网上查阅相关资料时甚是郁闷,好多说法相互矛盾。
有说NEC属于PWM的因为它的脉宽不同,PPM的脉宽是固定的。
而细心地朋友如果探究到NEC的典型芯片的芯片手册时,会发现上面这种说法是错误的。
比如UPD6121这款红外远程控制芯片的调制方式为PPM。
后来终于在一家国外的网站上找到了能够自圆其说的解释。
个人认为比较正确,拿来和大家分享。
要想认清红外遥控编码传输协议的具体内容,我想还是先捡其重点来讲一下,编码规范中最重要的当属调制这部分了。
而主流的调制方式有两种分别为PPM和PWM,当然其他还有好几种,这里先不讲解,免得糊涂了。
本文就先介绍下PPM和PWM的区别。
PPM(Pulse Position Modulation),其实更加准确的说法应该是PDM(Pulse Distance Modulation)即脉冲间隔调制:上图为典型编码规范NEC协议的调制图,为PPM调制。
可以看出不管是“0”还是“1”,有高频调制波的地方(下文称其为脉冲)其宽度都是相同的位560us,而脉冲间的间隔则是不同的:“1”时为(2.25ms-560us),“0”时为(1.12ms-560us)。
由此得来PPM的称号。
再来看下PWM的调制波形吧:显然可以看出,“1”的脉冲宽度为1.2ms,“0”的为600us。
而脉冲间隔不管是“0”还是“1”,均为600us。
nec红外协议
nec红外协议NEC红外协议。
NEC红外协议是一种用于红外遥控器通信的协议标准,广泛应用于家电、电子设备等领域。
它采用了38kHz的载波频率,通过调制不同的脉宽来实现数据的传输,具有传输距离远、抗干扰能力强等优点。
本文将对NEC红外协议的原理、格式、编码方式等进行详细介绍,以便对该协议有更深入的了解。
NEC红外协议的原理是通过调制38kHz的载波信号来传输数据。
在NEC协议中,逻辑“0”和逻辑“1”分别用不同的脉宽来表示,通常逻辑“0”用560us的脉宽表示,而逻辑“1”用1690us的脉宽表示。
通过这种方式,接收端可以根据脉宽的不同来解析出发送端发送的数据,从而实现通信的目的。
NEC红外协议的格式通常包括引导脉冲、地址码、反码、命令码等部分。
其中,引导脉冲是一个9ms的高电平脉冲和4.5ms的低电平脉冲交替组成,用于唤醒接收器;地址码用来表示遥控器的地址信息;反码是地址码的反码,用于提高数据传输的可靠性;命令码用来表示具体的操作命令,比如开关机、音量调节等。
通过这样的格式组织,NEC红外协议可以实现对各种遥控器指令的准确传输。
NEC红外协议的编码方式是采用了32位的编码格式,其中包括8位的地址码、8位的地址反码、8位的命令码和8位的命令反码。
这种编码方式可以保证数据的准确性和可靠性,同时也便于接收端对数据进行解析和识别。
通过这种编码方式,NEC红外协议可以实现对各种遥控器指令的精准传输。
总的来说,NEC红外协议作为一种广泛应用的红外遥控器通信协议,具有传输距离远、抗干扰能力强、编码方式简单等优点。
通过对NEC红外协议的原理、格式、编码方式等方面的介绍,相信读者对该协议有了更深入的了解,可以更好地应用于实际的产品开发和设计中。
总结一下,NEC红外协议在红外遥控器通信领域有着重要的地位,其原理简单明了,格式清晰规范,编码方式可靠性高。
相信随着科技的不断发展,NEC红外协议将会有更广泛的应用和发展。
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_1MOV 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遥控码。
红外遥控编码格式
红外遥控编码格式红外遥控器的编码格式通常有两种格式:NEC与RC5NEC格式的特征:1:使用38 kHz载波频率2:引导码间隔就是9 ms + 4、5 ms3:使用16位客户代码4:使用8位数据代码与8位取反的数据代码下面的波形就是从红外接收头上得到的波形:(调制信号转变成高低电平了)不过需要将波形反转一下才方便分析:NEC 协议通过脉冲串之间的时间间隔来实现信号的调制(英文简写PPM)。
逻辑“0”就是由0、56ms的38KHZ载波与0、560ms的无载波间隔组成;逻辑“1”就是由0、56ms的38KHZ载波与1、68ms的无载波间隔组成;结束位就是0、56ms的38K载波。
下面实例就是已知NEC类型遥控器所截获的波形:遥控器的识别码就是Address=0xDD20;其中一个键值就是Command=0x0E;注意波形先就是发低位地址再发高位地址。
所以0000,0100,1011,1011反转过来就就是1101,1101,0010,000十六进制的DD20;键值波形如下:也就是要将0111,0000反转成0000,1110得到十六进制的0E;另外注意8位的键值代码就是取反后再发一次的,如图0111,0000 取反后为1000,1111。
最后一位就是一个逻辑“1”。
RC5编码相对简单一些:下面的遥控器地址就是1A,键值就是0D的波形同样由于取自红外接收头的波形需要反相一下波形以便于分析:反相后的波形:根据编码规则:得到一组数字:110,11010,001101 根据编码定义第一位就是起始位S 通常就是逻辑1第二位就是场位F通常为逻辑1,在RC5扩展模式下它将最后6位命令代码扩充到7位代码(高位MSB),这样可以从64个键值扩充到128个键值。
第三位就是控制位C 它在每按下了一个键后翻转,这样就可以区分一个键到底就是一直按着没松手还就是松手后重复按。
如图所示就是同一按键重复按两次所得波形,只有第三位就是相反的逻辑,其它的位逻辑都一样。
红外遥控协议 NEC
∙方便理解所看到的波形是从红外接收管出来的信号,跟协议所说的信号高低(0或1)刚好相反。
∙NEC协议是众多红外遥控协议的其中一种,除NEC外,还有RC5、RC6等其它的。
市面上买到的非学习型万能电视遥控器大多集成一种或多种编码是NEC型的,我买的二个遥控器中就有三种以上编码是NEC的。
∙NEC编码的一帧(通常按一下遥控器按钮所发送的数据)由引导码、地址码及数据码组成,,如下图所示,把地址码及数据码取反的作用是加强数据的正确性。
∙
∙引导码及数据的定义如下图所示,当一直按住一个按钮的时候,会隔110ms左右发一次引导码(重复),并不带任何数据
∙
∙以下是用示波器采集到的一直按住某个按钮时的波形:
∙
∙按一下按钮的波形:。
红外线遥控NEC编码(IR-NEC)详解及HOLTEK解码芯片介绍
Key No. 32 64 96 32
38kHz Carrier v v v v
Package
HT6221 HT6222 HT6230 HT6240002
Encoder Encoder Encoder Encoder
1.8V~3.5V 1.8V~3.5V 2.4V~5.2V 2.2V~3.6V
20SOP 24SOP 28SOP 20/24SOP
24Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
HT48RA5 HT48CA5
40Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
Note: Part numbers including "C" are mask version devices while "R" are OTP devices.
公
FAE Service Department designed
司
机
END
密
HT48RA0-3 HT48CA0-3
2.0V ~ 3.6V
1Kx14 4MHz
32x8 16
机
---
HT48RA0-2 HT48CA0-2
400kHz ~ 4MHz
15
密
Ext. Int. ---
v
v
--
1
20SSOP
HT48RA0-1 HT48CA0-1
2.0V ~ 3.6V 2.0V ~ 5.5V 2.0V ~ 5.5V 2.0V ~ 5.5V
红外线遥控器(NEC编码方式)课件
NEC编码方式采用了独特的冗余校验机制,大大提高了数据传输的可靠性。
高可靠性
低误码率
抗干扰能力强
由于采用了高效的调制解调技术,NEC编码方式的误码率极低,保证了数据传输的准确性。
NEC编码方式具有较强的抗干扰能力,能够在较为复杂的环境中保持稳定的传输性能。
03
02
01
NEC编码方式的实现需要特定的硬件支持,包括红外线发射管和接收管等。
Arduino是一种基于C/C的开源硬件和软件平台,适用于快速原型设计和开发红外线遥控器等物联网设备。
Arduino
Python
05
CHAPTER
红外线遥控器调试与测试
调试工具
示波器、信号发生器、频谱分析仪等。
调试方法
使用示波器观察红外线信号波形,调整信号发生器参数,使波形符合NEC编码标准。
测试环境
无障碍物的空旷场地,确保测试过程中无其他干扰源。
测试方法
将红外线遥控器对准接收器,按下按键,观察接收器是否正常响应。
问题1
红外线信号传输距离过短。
解决方案
调整信号发射角度,增加发射功率。
问题2
红外线信号受到干扰。
解决方案
检查周围是否存在干扰源,如其他电器设备,更换抗干扰能力更强的接收器。
问题3
THANKS
感谢您的观看。
红外线遥控器接收器软件编程是指通过编写代码来控制接收器接收、解调红外线信号并解析出控制指令的过程。
接收器软件编程概述
接收器代码需要实现信号接收、解调、解码等过程,以便将控制指令转换为可执行的命令。
接收器代码实现
为了简化编程过程,可以使用一些常用的库和框架来辅助实现接收器的功能。
红外线遥控器(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%三菱%索尼%飞利普%东芝等6种红外遥控器编码及程序
HT48CA0 APPLICATION NOTE. Application CircuitHOLTEK HT48CA0 (64KEY).Working Register Define;*****************************************************;@***** Filename : SAMPLE.ASM (Remote 64KEY) ******;@************** OSC:455KHz CARRY:38KHz ***********;@****************** HT48CA0 ******************;;*****************************************************;;***** System memory Map *****M_INDIRECT1 equ [00h] ;Indirect addressing register M_MP0 equ [01h] ;Data Memory pointM_ACC equ [05h] ;AccumulatorM_PCL equ [06h] ;Program Counter Lower-order M_TBLP equ [07h] ;Table PointerM_TBLH equ [08h] ;Table Higher-order byteM_STATUS equ [0ah] ;Micro controll statusPORT_A equ [12h] ;PA I/O registerPORT_B equ [14h] ;PB I/O registerPORT_C equ [16h] ;PC Output registerPORT_AC equ [3Eh] ;PA Temp register;-----------------------------------;;--- System FLAG define ---#define fg_CF M_STATUS.0 ;CARRY Flag#define fg_ZF M_STATUS.2 ;ZERO Flag;;--- I/O Pin define ---#define pn_IR PORT_C.0 ;Carry Output Port;;--- Address Define ---#define DATA_RAM 20h ;HT48CA0;;--- Instruction Define ---#define NOP2 JMP $+1 ;Long NOP Define;@------------------------------------------------SAMPLE .SECTION 'DATA';; --- Temp RAM ---a_SR10 DB ? ;;WORK Temp Registera_SR11 DB ? ;;a_SR12 DB ? ;;a_SR13 DB ? ;;;;--------- Program RAM --------a_SCAN_STEP DB ? ;;Scan Key Colummn Step Numbera_PREV_KEY DB ? ;;Save Previous Key Numbera_KEY_NUM DB ? ;;Scan Key Numbera_COL_VALUE DB ? ;;Read on column value to a_COL_VALUE KD_TEMP DB ? ;;Key Debounce Check TimesNKD_TEMP DB ? ;;Key Release Confirm Times;;--- User FLAG define ---fg_SendActive DBIT ;;VALIDITY KEY Flagfg_PressRec DBIT ;;Check Column Multi_Key Flagfg_REPEAT DBIT ;;REPEAT KEY Flagfg_Multi_Key DBIT ;;INVALID KEY FlagHT48CA0 REMOTE CONTROL FLOWCHARTSCAN KEY PROCEDURE FLOWCHARTREAD KEY PROCEDURE FLOWCHARTTIME DELAY PROCEDURE FLOWCHART. Main Program;;==================================================================== ;@========================= Main Program ============================= ;;==================================================================== SAMPLE_CODE .SECTION 'CODE'org 00hMAIN:;------------------------------------------clr WDT;@ ===== Initial Port =====;; +--------- PB7: O PULL-HIGH;; |+-------- PB6: O PULL-HIGH;; ||+------- PB5: O PULL-HIGH;; |||+------ PB4: O PULL-HIGH;; ||||+----- PB3: O PULL-HIGH;; |||||+---- PB2: O PULL-HIGH;; ||||||+--- PB1: O PULL-HIGH;; |||||||+-- PB0: O PULL-HIGHset PORT_Aclr PORT_AC;; +--------- PA7: WAKE-UP I PULL-HIGH;; |+-------- PA6: WAKE-UP I PULL-HIGH;; ||+------- PA5: WAKE-UP I PULL-HIGH;; |||+------ PA4: WAKE-UP I PULL-HIGH;; ||||+----- PA3: WAKE-UP I PULL-HIGH;; |||||+---- PA2: WAKE-UP I PULL-HIGH;; ||||||+--- PA1: WAKE-UP I PULL-HIGH;; |||||||+-- PA0: WAKE-UP I PULL-HIGHset PORT_B;; +-- PC0: O PULL-HIGHmov A,11111111bmov PORT_C,A;@===== Clear RAM ( HT-48CA0 : 20h-3Fh ) =====CLEAR_RAM:mov A,DATA_RAM ;; 1. RAM Start Addressmov M_MP0,A ;;mov A,032d ;; 2. Amount of RAMCLEAR_RAM_1: ;;clr M_INDIRECT1 ;;inc M_MP0 ;;SDZ M_ACC ;;JMP CLEAR_RAM_1 ;;CLEAR_RAM_END: ;;;@----- Default RAM value -----DEFAULT_RAM:clr a_SCAN_STEP;T1=455KHz /4 = 8.79 uS ;;%%%%%%%%%%%%%%%%%%%%%%%%%% Main Prog. Array %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% START_MAIN_PROC:;@*********** Polling System Event ***********POLLING_EVENT:CALL SCAN_KEY_MATRIX ;SCAN KEY PROCEDURECALL F_DELAY ;TIME DELAY PROCEDURECALL SEND_REMOTE_CODE ;SEND CODE PROCEDURESZ fg_Multi_Key ;Check Invalid KeyJMP POLLING_EVENT ;SZ fg_SendActive ;Check Validity KeyJMP POLLING_EVENT ;SZ a_KEY_NUM ;Check NO Key PressJMP POLLING_EVENT ;SLEEP:clr PORT_A ;Ready WakeUp Low Levelhalt ;System HaltJMP POLLING_EVENT ;Any Key WakeUp ;;%%%%%%%%%%%%%%%%%%%%%%%%%% Subroutine Array %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ;@************* SUBROUTINE[xx]: Scan 64 Key Matrix (8x8) ************SCAN_KEY_MATRIX:;;--- READ KEY PROCEDURE ---clr wdt ;;Initiate Processclr a_KEY_NUM ;clr fg_PressRec ;clr a_SCAN_STEP ;clr fg_Multi_Key ;mov A,01111111b ;mov PORT_AC,A ;NEXT_COLUMN:rlA PORT_AC ;mov PORT_A,A ;Scan Column PA PORT OUTPUTmov PORT_AC,A ;NOP ;;;--- READ PB PORT ---SET PORT_B ;;SET PB0,PB1 Pull-UpMOV A,PORT_B ;;Read on column value to a_COL_VALUE mov a_COL_VALUE,A ;;mov A,001dmov a_SR11,Amov A,11111110b ;;mov a_SR10,Amov A,a_COL_VALUE ;; This column value to ACCSNZ a_COL_VALUE.7JMP KEY_ROW_7SNZ a_COL_VALUE.6JMP KEY_ROW_6SNZ a_COL_VALUE.5JMP KEY_ROW_5SNZ a_COL_VALUE.4JMP KEY_ROW_4SNZ a_COL_VALUE.3JMP KEY_ROW_3SNZ a_COL_VALUE.2JMP KEY_ROW_2SNZ a_COL_VALUE.1JMP KEY_ROW_1SNZ a_COL_VALUE.0JMP KEY_ROW_0NOP2nopJMP COL_WITHOUT_KEYKEY_ROW_7:rl a_SR10 ;; a_SR10 rotate to "01111111b"inc a_SR11KEY_ROW_6:rl a_SR10 ;; a_SR10 rotate to "10111111b"inc a_SR11KEY_ROW_5:rl a_SR10 ;; a_SR10 rotate to "11011111b"inc a_SR11KEY_ROW_4:rl a_SR10 ;; a_SR10 rotate to "11101111b"inc a_SR11KEY_ROW_3:rl a_SR10 ;; a_SR10 rotate to "11110111b"inc a_SR11KEY_ROW_2:rl a_SR10 ;; a_SR10 rotate to "11111011b"inc a_SR11KEY_ROW_1:rl a_SR10 ;; a_SR10 rotate to "11111101b"inc a_SR11KEY_ROW_0:xor A,a_SR10 ;;Check ROW Multi-KeySZ fg_ZFJMP COL_WITH_KEYCOL_ERROR_KEY:set fg_Multi_KeyCOL_WITHOUT_KEY:NOP2NOP2NOP2JMP READY_2_NEXT_COLUMNCOL_WITH_KEY: ;;KEY NUMBER PROCESSrlA a_SCAN_STEP ;;\rl M_ACC ;; > a_SCAN_STEP * 8 --> ACCrl M_ACC ;;/add A,a_SR11 ;;mov a_KEY_NUM,A ;;SZ fg_PressRec ;;Check Column Multi-Keyset fg_Multi_Key ;;set fg_PressRec ;;READY_2_NEXT_COLUMN:inc a_SCAN_STEPmov A,a_SCAN_STEPxor A,008dSNZ fg_ZFJMP NEXT_COLUMNnopREAD_KEY_COMPLETE:;@************* SUBROUTINE[xx]: Check Key Active ************;@--- Scan Key Complete, Check key valid ? ---CHECK_KEY_ACTIVE:clr wdtSZ a_KEY_NUM ;;If a_KEY_NUM = ffh, invalid key JMP VALID_KEY_CHKJMP INVALID_KEY_CHK;@--------------------------VALID_KEY_CHK:SZ a_PREV_KEY ;;Check New KeyJMP VALID_KEYC_PROJMP KEY_DEBVALID_KEYC_PRO:mov A,a_KEY_NUMxor A,a_PREV_KEY ;; Check Repeat keySNZ fg_ZFJMP VALID_SEND_KEY;;----------------------------VALID_RPSEND_KEY:snz fg_Multi_key ;Check Multi-Key Clear a_KEY_NUM JMP REPEAT_KEYclr a_KEY_NUMretREPEAT_KEY:SET fg_REPEAT ;;SET Repeat FlagNOP2JMP SET_VALIDFGVALID_SEND_KEY:mov a,a_PREV_KEY ;;Check Change KeyXOR A,0FFH ;;Check Debounce ENDSNZ fg_ZFJMP CHANG_KEY;;--- NEW KEY InitiateCLR fg_REPEATmov a,a_KEY_NUMmov a_PREV_KEY,a;;--- SET VALIDITY KEYSET_VALIDFG:SET fg_SendActiveretCHANG_KEY:CLR KD_TEMPJMP RKEY_PRO;@----------------------------INVALID_KEY_CHK:CLR KD_TEMPRKEY_PRO: ;Release Key ConfirmINC NKD_TEMPMOV A,NKD_TEMPXOR A,5SNZ fg_ZFJMP SCAN_KEY_MATRIXDEC NKD_TEMP ;NO_KEY_PROC:clr fg_SendActiveNOP2NOP2NOPEXIT_INVALID_KEY:mov a,a_KEY_NUM ;Clear a_PREV_KEYmov a_PREV_KEY,aNOP2retKEY_DEB: ;T1=455KHz/4=116480Hz = 8.79us ;Check Key DebounceINC KD_TEMPMOV A,KD_TEMPXOR A,6SNZ fg_ZFJMP SCAN_KEY_MATRIXMOV A,0FFH ;SAVE KEY Debounce Check ENDMOV a_PREV_KEY,A ;0FFH to a_PREV_KEYJMP SCAN_KEY_MATRIX;@********** SubRoutine[xx]: Delay 10*ACC+5 Instruction Cycle ********** ;;--- TIME DELAY PROCEDURE ---F_DELAY:SZ KD_TEMPJMP NEWK_DMOV A,NKD_TEMP ;Release Confirm time offset delaymov a_SR13,ABLANK_DELAY_00:INC a_SR13MOV A,a_SR13XOR A,5SZ fg_ZFJMP BLANK_DELAY_010mov A,155dBLANK_DELAY_01:SDZ M_ACCJMP BLANK_DELAY_01clr wdtJMP BLANK_DELAY_00BLANK_DELAY_010:CLR NKD_TEMPMOV a,1 ;OFFSET TIME DELAYmov a_SR13,ABLANK_DELAY_02:mov A,37dBLANK_DELAY_03:clr wdtSDZ M_ACCJMP BLANK_DELAY_03SDZ a_SR13JMP BLANK_DELAY_02RETNEWK_D: ;;New Key No Time Offset DelayCLR KD_TEMPRET;;---------------------------------------;@************* SUBROUTINE[xx]: Send Remote Code ************SEND_REMOTE_CODE:clr WDTSZ fg_SendActiveJMP READY_SENDretREADY_SEND:; REMOTE CODE SEND & DATA FRAME DELAY TIME OFFSET;ret;;************************** End of program ********************************* ENDSEND CODE PROCEDURE FLOWCHARTA. HT6221 ( NEC FORMAT );;***************************************************** ;@***** Filename : NEC.FORMAT (Remote 64KEY) ****** ;@************** OSC:455KHz CARRY:38KHz *********** ;@****************** HT48CA0 ****************** ;;*****************************************************NEC .SECTION 'DATA'a_REM_CODE DB ? ;KEY DATA CODEa_CUSTOMER_1 DB ? ;CUSTOMER CODE LOW BYTE a_CUSTOMER_2 DB ? ;CUSTOMER CODE HIGH BYTE#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 ;CHECK VALIDITY KEY SZ fg_SendActive JMP READY_SEND retREADY_SEND:NEC_CODE:mov A,a_KEY_NUM ;READ KEY DATANEC Format CodeEX.PS. Custom Code = 0808H Data Code =mov M_TBLP,ATABRDL a_REM_CODEMOV A,CUS_6221_1 ;READ CUSTOMER CODEMOV a_CUSTOMER_1,AMOV A,CUS_6221_2MOV a_CUSTOMER_2,A;;--- Starting send NEC Remote code ---SEND_NEC: ;Check No Key Code ffHSIZA a_REM_CODEJMP LEADNEC_CODEretLEADNEC_CODE: ; 1 Instruction Cycle = 8.79usclr pn_IR ;High Level 9 ms (455KHz:1023 Cycle) mov A,002d ; [(3*168)+5]*2 = 1018mov a_SR13,ALEADIND_CODE_00:mov A,168dmov M_ACC,ALEADIND_CODE_01:SDZ M_ACCJMP LEADIND_CODE_01SDZ a_SR13JMP LEADIND_CODE_00NOP2NOP2NOPset pn_IRclr wdt;---mov A,001d ;LOW Level 2.5ms (284Cycle)mov a_SR13,A ; [(4*69)+5]*1 = 281LEAD_CODE_04:mov A,70dmov M_ACC,ALEAD_CODE_05:NOPSDZ M_ACCJMP LEAD_CODE_05SDZ a_SR13JMP LEAD_CODE_04clr wdtSZ fg_REPEAT ;CHECK REPEAT KEYJMP REPEAT_CODE;---mov A,001d ;LOW Level 2.0ms (227Cycle)mov a_SR13,A ; [(4*55)+5]*1 = 225LEAD_CODE_06:mov A,53dmov M_ACC,ALEAD_CODE_07:NOPSDZ M_ACCJMP LEAD_CODE_07SDZ a_SR13JMP LEAD_CODE_06clr wdtnop2;------------------------CUSNEC_CODE:mov A,002dmov a_SR13,AMOV A,OFFSET a_CUSTOMER_1MOV M_MP0,ACUSTOM_PRO:mov A,008dmov a_SR11,A ; 8 data bitnopCUSTOM_BIT_BL ;0.56ms->63 Cycleclr pn_IR ;[(3*20)+2]=62mov A,20dCUSTOM_BIT_BL_1:SDZ M_ACCJMP CUSTOM_BIT_BL_1clr wdtnopCUSTOM_BIT_BH: ;'0' 0.56ms->63 Cycle set pn_IR ;'1' 1.68ms->191 Cycle noprr M_INDIRECT1 ;mov A,18dSZ M_INDIRECT1.7 ;mov A,61dCUSTOM_BIT_BH_0:SDZ M_ACCJMP CUSTOM_BIT_BH_0clr wdtSDZ a_SR11JMP CUSTOM_BIT_BLINC M_MP0SDZ a_SR13JMP CUSTOM_PRO;;---------------------------------------DATA6NEC_BIT:mov A,002dmov a_SR13,ADATA_PRO:mov A,008dmov a_SR11,A ;; 8 data bitnopDATA_BIT_BL: ;0.53ms->60 Cycleclr pn_IR ;[(3*19)+2]=59mov A,20dDATA_BIT_BL_1:SDZ M_ACCJMP DATA_BIT_BL_1clr wdtnopDATA_BIT_BH: ;'0' 0.53ms->60 Cycleset pn_IR ;'1' 1.58ms->179 Cyclenoprr a_REM_CODE ;mov A,18dSZ a_REM_CODE.7mov A,61dDATA_BIT_BH_0:SDZ M_ACCJMP DATA_BIT_BH_0clr wdtSDZ a_SR11JMP DATA_BIT_BLCPL A_REM_CODESDZ a_SR13JMP DATA_PRO;0.53ms->60 Cycleclr pn_IR ;[(3*19)+2]=59mov A,20dDATA_BIT_BL_2:SDZ M_ACCJMP DATA_BIT_BL_2clr wdtset pn_IR;--- Frame Delay Time Process ---;mov A,004d ;Repetition time=108ms (12286 Cycle) mov a_SR13,A ;Scan Key = 2471 Cycle;Send Code = 7349 CycleFDTP_LOOP_01: ;12286-2471-7349=2466mov A,152d ;[(4*152)+5]*4=2452mov M_ACC,AFDTP_LOOP_02:nopSDZ M_ACCJMP FDTP_LOOP_02clr wdtSDZ a_SR13JMP FDTP_LOOP_01mov A,3dmov M_ACC,AFDTP_LOOP_03:SDZ M_ACCJMP FDTP_LOOP_03NOP2ret;--------------------------------REPEAT_CODE:;0.56ms->63 Cycleclr pn_IR ;[(3*20)+2]=62mov A,19dREP_BIT_BL_3:SDZ M_ACCJMP REP_BIT_BL_3clr wdtset pn_IR;--- Repeat Frame Delay Time Process ---;mov A,016d ;Repetition time=108ms (12286 Cycle) mov a_SR13,A ;Scan Key = 2471 Cycle;Send Repeat Code = 1390 CycleREP_DELAY_02: ;12286-2471-1390=8425mov A,130d ;[(4*130)+5]*16=8400mov M_ACC,A ;REP_DELAY_03: ;nopSDZ M_ACCJMP REP_DELAY_03clr wdtSDZ a_SR13JMP REP_DELAY_02mov A,07dmov M_ACC,AREP_DELAY_04:SDZ M_ACCJMP REP_DELAY_04NOP2ret%%%%%%%%%%%%%%%%%%%% Remote Table Array %%%%%%%%%%%%%%%%%%%%%%%%%org 300h;@ --000000 00000000;; ||||||||;; ++++++++-- 8 bit Data code;; NEC KeyDW 00ffh ;; Key 00 : --- :00DW 0000h ;; Key 1 : --- :01DW 0001h ;; Key 2 : :02DW 0002h ;; Key 3 : :03DW 0003h ;; Key 4 : :04DW 0004h ;; Key 5 : :05DW 0005h ;; Key 6 : :06DW 0006h ;; Key 7 : :07DW 0007h ;; Key 8 : :08DW 0008h ;; Key 9 : :09DW 0009h ;; Key 10 : :10DW 000ah ;; Key 11 : :11DW 000bh ;; Key 12 : :12DW 000ch ;; Key 13 : :13DW 000dh ;; Key 14 : :14DW 000eh ;; Key 15 : :15DW 000fh ;; Key 16 : :16DW 0010h ;; Key 17 : :17DW 0011h ;; Key 18 : :18 DW 0012h ;; Key 19 : :19 DW 0013h ;; Key 20 : :20 DW 0014h ;; Key 21 : :21 DW 0015h ;; Key 22 : :22 DW 0016h ;; Key 23 : :23 DW 0017h ;; Key 24 : :24 DW 0018h ;; Key 25 : :25 DW 0019h ;; Key 26 : :26 DW 001ah ;; Key 27 : :27 DW 001bh ;; Key 28 : :28 DW 001ch ;; Key 29 : :29 DW 001dh ;; Key 30 : :30 DW 001eh ;; Key 31 : :31 DW 001fh ;; Key 32 : :32 DW 0020h ;; Key 33 : :33 DW 0021h ;; Key 34 : :34 DW 0022h ;; Key 35 : :35 DW 0023h ;; Key 36 : :36 DW 0024h ;; Key 37 : :37 DW 0025h ;; Key 38 : :38 DW 0026h ;; Key 39 : :39 DW 0027h ;; Key 40 : :40 DW 0028h ;; Key 41 : :41 DW 0029h ;; Key 42 : :42 DW 002ah ;; Key 43 : :43 DW 002bh ;; Key 44 : :44 DW 002ch ;; Key 45 : :45 DW 002dh ;; Key 46 : :46 DW 002eh ;; Key 47 : :47 DW 002fh ;; Key 48 : :48 DW 0030h ;; Key 49 : :49 DW 0031h ;; Key 50 : :50 DW 0032h ;; Key 51 : :51 DW 0033h ;; Key 52 : :52 DW 0034h ;; Key 53 : :53 DW 0035h ;; Key 54 : :54 DW 0036h ;; Key 55 : :55 DW 0037h ;; Key 56 : :56 DW 0038h ;; Key 57 : :57 DW 0039h ;; Key 58 : :58 DW 003ah ;; Key 59 : :59 DW 003bh ;; Key 60 : :60 DW 003ch ;; Key 61 : :61 DW 003dh ;; Key 62 : :62 DW 003eh ;; Key 63 : :63 DW 003fh ;; Key 64 : :64 END;;***************************************************** ;@** Filename : MITSUBISH.FORMAT (Remote 64KEY) **** ;@************** OSC:455KHz CARRY:38KHz *********** ;@****************** HT48CA0 ****************** ;;*****************************************************MITSUBISH .SECTION 'DATA'a_REM_CODE DB ? ;KEY DATA CODEa_FACTOR DB ? ;KEY DATA DELAY TIME FACTOR a_CUSTOMER_1 DB ? ;CUSTOMER CODE#define CUS_50560 11101110b ;0EEH;@------------------------------------------------ MITSUBISH_CODE .SECTION 'CODE';@************* SUBROUTINE[xx]: Send Remote Code ************ SEND_REMOTE_CODE:clr WDT ;CHECK VALIDITY KEY SZ fg_SendActive JMP READY_SEND retREADY_SEND:M5056_ACODE:mov A,a_KEY_NUM ;READ KEY DATA mov M_TBLP,A ; TABRDL a_REM_CODE ;B. M50560 (MITSUBISH Format)(HT6240)4ms4ms EX.PS. 500us => 56 cycle (530us => 60 cycl 2ms-500us=1.5ms => 170 cycle(2.11ms-530us=1.58ms => 179 cycl 80ms => 9101 cycle(67.5ms =>7678ms => 910 cycle (8.44ms => 960 4ms => 455 cycle (4.22ms => 480mov A,M_TBLH ;READ Data Delay Time Factor and A,00001111b ;mov a_FACTOR,A ;MOV A,CUS_50560 ;READ CUSTOM CodeMOV a_CUSTOMER_1,A ;;--------------------------;;--- Starting send 5056 Remote code ---SEND_5056:SIZA a_REM_CODE ;CHECK NO KEY CODE ffHJMP LEAD50_CODEretLEAD50_CODE:clr pn_IR ;;---mov A,001d ;High Level 8.ms (910Cycle) mov a_SR13,A ; [(4*226)+5]*1 = 909LEAD50_CODE_00:mov A,225dmov M_ACC,ALEAD50_CODE_01:NOPSDZ M_ACCJMP LEAD50_CODE_01SDZ a_SR13JMP LEAD50_CODE_00clr wdtnopNOP2set pn_IR;---mov A,001d ;Low Level 4ms (455Cycle)mov a_SR13,A ; [(4*112)+5]*1 = 453LEAD50_CODE_02:mov A,111dmov M_ACC,ALEAD50_CODE_03:NOPSDZ M_ACCJMP LEAD50_CODE_03SDZ a_SR13JMP LEAD50_CODE_02clr wdtNOP2;-----------------------------CUS50_CODE:mov A,008dmov a_SR11,A ; 8 data bitCUS50_BIT_BL: ;0.5ms->57 Cycleclr pn_IR ;[(3*18)+2]=56mov A,18dCUS50_BIT_BL_1:SDZ M_ACCJMP CUS50_BIT_BL_1clr wdtnopCUS50_BIT_BH: ;'0' 0.5ms->57 Cycleset pn_IR ;'1' 1.5ms->170 Cyclerr a_CUSTOMER_1 ;mov A,16dnopSZ a_CUSTOMER_1.7 ;mov A,54dCUS50_BIT_BH_0:SDZ M_ACCJMP CUS50_BIT_BH_0clr wdtSDZ a_SR11JMP CUS50_BIT_BL;0.5ms->57 Cycleclr pn_IR ;[(3*18)+2]=56mov A,18dCUS50_BIT_BL_2:SDZ M_ACCJMP CUS50_BIT_BL_2clr wdtnopset pn_IR;--- ;Low Level 4ms (455Cycle) ; [(4*112)+5]*1 = 453mov A,001dmov a_SR13,ALEAD50_CODE_04:mov A,111dmov M_ACC,ALEAD50_CODE_05:NOPSDZ M_ACCJMP LEAD50_CODE_05SDZ a_SR13JMP LEAD50_CODE_04clr wdtNOP2;;---------------------------------------DATA50_BIT:mov A,008dmov a_SR11,A ;; 8 data bitDAT50_BIT_BL: ;0.5ms->57 Cycleclr pn_IR ;[(3*18)+2]=56mov A,18dDAT50_BIT_BL_1:SDZ M_ACCJMP DAT50_BIT_BL_1clr wdtnopDAT50_BIT_BH: ;'0' 0.5ms->57 Cycleset pn_IR ;'1' 1.5ms->170 Cyclerr a_REM_CODE ;mov A,16dnopSZ a_REM_CODE.7mov A,54dDAT50_BIT_BH_0:SDZ M_ACCJMP DAT50_BIT_BH_0clr wdtSDZ a_SR11JMP DAT50_BIT_BL;0.5ms->57 Cycleclr pn_IR ;[(3*18)+2]=57mov A,18dDAT50_BIT_BL_2:SDZ M_ACCJMP DAT50_BIT_BL_2clr wdtnopset pn_IR;--- delay factor ;Low Level 1.ms (114Cycle); [(4*27)+5]*1 = 113mov A,a_FACTORmov a_SR13,ADELAY50_CODE_01:mov A,27dnop2mov M_ACC,ADELAY50_CODE_02:NOPSDZ M_ACCJMP DELAY50_CODE_02clr wdtSDZ a_SR13JMP DELAY50_CODE_01;--- FRAME DELAY TIME PROCESS ---mov A,002d ;Repetition time=80ms (9101 Cycle) mov a_SR13,A ;Scan Key = 2471 Cycle;Send Code = 7349 CycleDELAY_LOOP_01: ;9101-2471-5376=1254mov A,155d ;[(4*155)+5]*2=1250mov M_ACC,ADELAY_LOOP_02:nopSDZ M_ACCJMP DELAY_LOOP_02clr wdtSDZ a_SR13JMP DELAY_LOOP_01NOP2CODE50_END:ret;@************* SUBROUTINE[xx]: Scan Key Matrix ************ ;;%%%%%%%%%%%%%%%%%%%%%%%%% Remote Table Array %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% org 300h;@ --000000 00000000;; |||| ||||||||;; |||| ++++++++-- 8 bit Data code;; ++++-- Delay Factor (Data '0' bit Num);; M50560KeyDW 00FFh ;; Key XX : :00DW 0800h ;; Key 1 : --- :01DW 0701h ;; Key 2 : --- :02DW 0702h ;; Key 3 : :03DW 0603h ;; Key 4 : :04DW 0704h ;; Key 5 : :05DW 0605h ;; Key 6 : :06DW 0606h ;; Key 7 : :07DW 0507h ;; Key 8 : :08DW 0708h ;; Key 9 : :09DW 0609h ;; Key 10 : :10DW 060ah ;; Key 11 : :11DW 050bh ;; Key 12 : :12DW 060ch ;; Key 13 : :13DW 050dh ;; Key 14 : :14DW 050eh ;; Key 15 : :15DW 040fh ;; Key 16 : :16DW 0710h ;; Key 17 : :17DW 0611h ;; Key 18 : :18DW 0612h ;; Key 19 : :19DW 0513h ;; Key 20 : :20DW 0614h ;; Key 21 : :21DW 0515h ;; Key 22 : :22DW 0516h ;; Key 23 : :23DW 0417h ;; Key 24 : :24DW 0618h ;; Key 25 : :25DW 0519h ;; Key 26 : :26DW 051ah ;; Key 27 : :27DW 041bh ;; Key 28 : :28DW 051ch ;; Key 29 : :29DW 041dh ;; Key 30 : :30DW 041eh ;; Key 31 : :31DW 031fh ;; Key 32 : :32DW 0720h ;; Key 33 : :33DW 0621h ;; Key 34 : :34DW 0622h ;; Key 35 : :35DW 0523h ;; Key 36 : :36DW 0624h ;; Key 37 : :37DW 0525h ;; Key 38 : :38DW 0226h ;; Key 39 : :39DW 0427h ;; Key 40 : :40DW 0628h ;; Key 41 : :41DW 0529h ;; Key 42 : :42DW 052ah ;; Key 43 : :43DW 042bh ;; Key 44 : :44DW 052ch ;; Key 45 : :45DW 042dh ;; Key 46 : :46 DW 042eh ;; Key 47 : :47 DW 032fh ;; Key 48 : :48 DW 0630h ;; Key 49 : :49 DW 0531h ;; Key 50 : :50 DW 0532h ;; Key 51 : :51 DW 0433h ;; Key 52 : :52 DW 0534h ;; Key 53 : :53 DW 0435h ;; Key 54 : :54 DW 0436h ;; Key 55 : :55 DW 0337h ;; Key 56 : :56 DW 0538h ;; Key 57 : :57 DW 0439h ;; Key 58 : :58 DW 043ah ;; Key 59 : :59 DW 033bh ;; Key 60 : :60 DW 043ch ;; Key 61 : :61 DW 033dh ;; Key 62 : :62 DW 033eh ;; Key 63 : :63 DW 023fh ;; Key 64 : :64 END;;*****************************************************;@***** Filename : SONY.FORMAT (Remote 64KEY) ******;@************** OSC:455KHz CARRY:38KHz ***********;@****************** HT48CA0 ******************;;*****************************************************SONY .SECTION 'DATA'a_REM_CODE DB ? ;KEY DATA CODEa_KEY_TEMP DB ? ;KEY DELAY TIME OFFSET COUNT a_Category DB ? ;SAVE Category Code#define CATEGORY 00000100b ;04H;@------------------------------------------------SONY_CODE .SECTION 'CODE';@************* SUBROUTINE[xx]: Send Remote Code ************SEND_REMOTE_CODE:clr WDT ;CHECK VALIDITY KEYSZ fg_SendActiveJMP READY_SENDretREADY_SEND:SONY_CODE:mov A,a_KEY_NUM ;READ KEY DATAmov M_TBLP,AC. SONY Format(68cycle)(136cycle)(11H)(44H)EX.TABRDL a_REM_CODEMOV A,CATEGORY ;READ CATEGORY CODEMOV a_Category,A;;--- Starting send SONY Remote code ---SEND_SONY:SIZA a_REM_CODE ;Check No Key Code ffHJMP LEADSY_CODEretLEADSY_CODE:clr pn_IR ;High Level 2.4ms (455KHz:273 Cycle) mov A,89d ; [(3*91)= 273mov M_ACC,ALEADIND_CODE_00:SDZ M_ACCJMP LEADIND_CODE_00clr wdtCLR a_KEY_TEMP;;---------------------------------------DATASY_BIT: ;SEND KEY DATA CODEmov A,007dmov a_SR11,A ; 7 data bitDATSY_BIT_BL: ;0.6ms->68 CycleSET pn_IR ;[(3*22)+2]=59mov A,22dDATSY_BIT_BL_1:SDZ M_ACCJMP DATSY_BIT_BL_1clr wdtDATSY_BIT_BH: ;'0' 0.6ms->68 CycleCLR pn_IR ;'1' 1.2ms->136 Cyclerr a_REM_CODE ;mov A,19dSZ a_REM_CODE.7mov A,42dDATSY_BIT_BH_0:SDZ M_ACCJMP DATSY_BIT_BH_0clr wdtSNZ a_REM_CODE.7INC a_KEY_TEMP ;COUNT DELAY TIME OFFSETNOPSDZ a_SR11JMP DATSY_BIT_BL;--------------------------------CATESY_BIT: ;SEND Category Codemov A,005dmov a_SR11,A ; 5 Category BitCATSY_BIT_BL: ;0.6ms->68 CycleSET pn_IR ;[(3*22)+2]=59mov A,22dCATSY_BIT_BL_1:SDZ M_ACCJMP CATSY_BIT_BL_1clr wdtCATSY_BIT_BH: ;'0' 0.6ms->68 CycleCLR pn_IR ;'1' 1.2ms->136 Cyclerr a_Category ;mov A,20dSZ a_Category.7mov A,43dCATSY_BIT_BH_0:SDZ M_ACCJMP CATSY_BIT_BH_0clr wdtSDZ a_SR11JMP CATSY_BIT_BLSET pn_IR;------------------------;--- delay factor ;;DELSY_CODE_00:SZ a_KEY_TEMP ;CHECK DELAY TIME OFFSET COUNTJMP DELSY_PROJMP SEND_ENDDELSY_PRO:MOV A,a_KEY_TEMPMOV a_SR11,ADELSY_LP:mov A,21d ;0.6ms ->68CycleDELSY_BIT_BL_1:SDZ M_ACCJMP DELSY_BIT_BL_1clr wdtNOPSDZ a_SR11JMP DELSY_LP;--- Frame Delay Time Process ---;mov A,001d ;Repetition time=45ms (5119 Cycle) mov a_SR13,A ;Scan Key = 2471 Cycle;Send Code = 2473 CycleFDTP_LOOP_01: ;5119-2471-2473=175mov A,42d ;[(4*42)+5]*1=173mov M_ACC,AFDTP_LOOP_02:nopSDZ M_ACCJMP FDTP_LOOP_02clr wdtSDZ a_SR13JMP FDTP_LOOP_01SEND_END:ret;;%%%%%%%%%%%%%%%%%%%%%%%%% Remote Table Array %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% org 300h;@ --000000 00000000;; |||||||;; +++++++-- 7 bit Data code;; SONY KeyDW 00ffh ;; Key 00 : --- :00DW 0000h ;; Key 1 : --- :03DW 0001h ;; Key 2 : :04DW 0002h ;; Key 3 : :05DW 0003h ;; Key 4 : :06DW 0004h ;; Key 5 : :07DW 0005h ;; Key 6 : :08DW 0006h ;; Key 7 : :09DW 0007h ;; Key 8 : :10DW 0008h ;; Key 9 : :09DW 0009h ;; Key 10 : :10DW 000ah ;; Key 11 : :11DW 000bh ;; Key 12 : :12DW 000ch ;; Key 13 : :13DW 000dh ;; Key 14 : :14DW 000eh ;; Key 15 : :15DW 000fh ;; Key 16 : :16DW 0010h ;; Key 17 : :17DW 0011h ;; Key 18 : :18DW 0012h ;; Key 19 : :19DW 0013h ;; Key 20 : :20DW 0014h ;; Key 21 : :21DW 0015h ;; Key 22 : :22DW 0016h ;; Key 23 : :23DW 0017h ;; Key 24 : :24DW 0018h ;; Key 25 : :25DW 0019h ;; Key 26 : :26DW 001ah ;; Key 27 : :27DW 001bh ;; Key 28 : :28DW 001ch ;; Key 29 : :29DW 001dh ;; Key 30 : :30DW 001eh ;; Key 31 : :31DW 001fh ;; Key 32 : :32DW 0020h ;; Key 33 : :33DW 0021h ;; Key 34 : :34DW 0022h ;; Key 35 : :35DW 0023h ;; Key 36 : :36DW 0024h ;; Key 37 : :37DW 0025h ;; Key 38 : :38DW 0026h ;; Key 39 : :39DW 0027h ;; Key 40 : :40DW 0028h ;; Key 41 : :41DW 0029h ;; Key 42 : :42 DW 002ah ;; Key 43 : :43 DW 002bh ;; Key 44 : :44 DW 002ch ;; Key 45 : :45 DW 002dh ;; Key 46 : :46 DW 002eh ;; Key 47 : :47 DW 002fh ;; Key 48 : :48 DW 0030h ;; Key 49 : :49 DW 0031h ;; Key 50 : :50 DW 0032h ;; Key 51 : :51 DW 0033h ;; Key 52 : :52 DW 0034h ;; Key 53 : :53 DW 0035h ;; Key 54 : :54 DW 0036h ;; Key 55 : :55 DW 0037h ;; Key 56 : :56 DW 0038h ;; Key 57 : :57 DW 0039h ;; Key 58 : :58 DW 003ah ;; Key 59 : :59 DW 003bh ;; Key 60 : :60 DW 003ch ;; Key 61 : :61 DW 003dh ;; Key 62 : :62 DW 003eh ;; Key 63 : :63 DW 003fh ;; Key 64 : :64 END;;***************************************************** ;@** Filename : PHILIPS.FORMAT (Remote 64KEY) **** ;@************** OSC:429KHz CARRY:36KHz *********** ;@****************** HT48CA0 ****************** ;;***************************************************** PHILIPS .SECTION 'DATA'a_REM_CODE DB ? ;KEY DATA CODEa_FACTOR DB ? ;KEY DATA DELAY TIME FACTOR a_CUSTOMER_1 DB ? ;CUSTOMER CODEa_CONTROL_BIT DB ? ;SAVE CONTROL BIT FLAG ;@------------------------------------------------ PHILIPS_CODE .SECTION 'CODE';;========================================================================== ;@************* SUBROUTINE[xx]: Send Remote Code ************ SEND_REMOTE_CODE:clr WDT ;CHECK VALIDITY KEY SZ fg_SendActive JMP READY_SEND retREADY_SEND:M3010_CODE:mov A,a_KEY_NUM ;READ KEY DATA mov M_TBLP,A ; TABRDL a_REM_CODE ; RL a_REM_CODE ; RL a_REM_CODE ;MOV A,M_TBLH ;READ SYSTEM CODED. M3010(PHILIPS FORMAT)(SAA3010)(HT6230)bit(New key1,0 Repeat)114.573ms => 12288 cyclePS. system code => 00H ~ 1FH command code => 00H ~ 3FH(Carry 36KHz)EX.( OSC : 429KHz Carry : 36KHz )RL M_ACCRL M_ACCMOV a_CUSTOMER_1,ASNZ fg_REPEAT ;INC a_CONTROL_BIT ;NEW KEY 1&0 REPEAT;;--- Starting send 6121 Remote code ---SEND_M3010:SIZA a_REM_CODE ;CHECK NO KEY CODE ffH JMP START_BITretSTART_BIT: ;START BITE 11BSAT_BIT1:SET pn_IRSAT_BIT1_PRO: ;895uS->102 cycle "LOW" MOV A,33d ;[(3*33)+2]=101SAT_BIT1P1:SDZ M_ACCJMP SAT_BIT1P1clr wdtNOPCLR pn_IR ;895uS->102 cycle "HIGH" MOV A,32d ;[(3*33)+2]=101SAT_BIT1P2:SDZ M_ACCJMP SAT_BIT1P2clr wdtSZ a_REM_CODE.0JMP SAT_BIT3SAT_BIT2:NOP2SET pn_IRSAT_BIT2_PRO: ;895uS->102 cycle "LOW" MOV A,33d ;[(3*33)+2]=101SAT_BIT1P3:SDZ M_ACCJMP SAT_BIT1P3clr wdtNOPCLR pn_IR ;895uS->102 cycle "HIGH" MOV A,32d ;[(3*33)+2]=101SAT_BIT1P4:SDZ M_ACCJMP SAT_BIT1P4clr wdtJMP SEND_CRT;--------SAT_BIT3:NOP。
NEC红外编码
HT49CVX 遥控接收软件模块设计指南文件编码:HA0077s概述本软件模块用于接收译码编码格式为NEC格式(见图1) 的红外遥控器信号,由于使用了RMT TIMER,所以适用于带有RMT TIMER功能的HT49CVX系列。
功能及原理本软件模块适用译码NEC格式的红外编码,NEC格式如下图所示:图1 NEC编码格式使用时请将红外信号接到PC.7/RMT引脚,由波形的上升和下降缘触发RMTTIMER来记录高、低准位的宽度,每记录一对高低准位后,再采用相对宽度的方法,即判断高准位与低准位的宽度的相对大小,来判定接收到该bit的信号是bit ″0″或bit ″1″。
在接收Lead Code和Repeat Code的时候,则是采用判断相对宽度和判断高低准位的宽度是否在给定的范围里面相结合的方法,例如,在系统频率为4MHz时,如果lo_count>hi_count 并且 lo_l<lo_count<lo_h并且hi_l<hi_count<hi_h,则认为接收到的该bit为Lead Code或者为RepeatCode。
(注:实际应用时,一般情况下,实际接收到的波形与图1所示的波形,高低准位正好相反。
lo_count为实际低准位宽度,hi_count为实际高准位宽度,如图2;lo_l,lo_h,hi_l,hi_h分别是低准位和高准位的宽度范围)。
使用者应注意的是,在自己的系统频率不是4MHz时,应相应地修改在receiver_define.asm文件里的lo_l,lo_h,hi_l,hi_h四个常数,否则程序不能正常运行!图2在接收到第一对高低准位后,随即判断该bit是否为Lead Code,如果不是,则软件模块将自行初始化;如果是,则继续接收以后的讯号,在接收完全部的Custom Code和Data Code后,将判断接收到的Custom Code是否与预置的一致并且Data Code的高低字节是否互反,如果不是,则软件模块将自行初始化;如果接收有效,则设立旗标为有效值,并继续判断是否有Repeat Code进入,若有,则设立对应旗标为有效值。
红外线遥控器(nec编码方式)资料
占空比:常用的有1/3,1/2,不常用1/4 调制方式:脉宽调制,相位调制,脉冲位置调制
FAE Service Department designed
NEC码分析
在东亚地区比较常用的红外线传输协议是NEC协议,故我们 主要介绍NEC协议即6122协议。
晶振是否正常
电源是否正常
组件有没有焊接好,虚焊现象
裸片没有绑好,放置时间太长
焊接不正确
工作电流偏小
电阻有错(发射管基极电阻)
高电压不译码
三极管有错,三极管有没有穿反
电阻用错
线路组件跳碳
晶振的两个匹配电容不匹配
限流电阻过大
IC性能不好
工作电流偏大
电阻有错
FAE Service Department designed
得到complement。 根据complement的值,对A0~A7进行取
反操作,0取反,1保持不变。转变后的 值即为A8~A15。
FAE Service Department designed
HT6221应用电路介绍電低源頻濾耦波合,
FAE Service Department designed
1. 特征 * 工作电压: 1.8V~3.5V * Dout输出38KHz * 最小发射字: 一个字 * 一个455KHz的陶瓷或晶体 * 16bit地址码 * 8 bit命令码 * ppm调制方式 * 最大活动键 HT6221: 32 键
HT6222: 64 键
2. 应用 * 电视和录像录音机控制器 * 夜盗警报系统 * 烟火警报系统 * 车门控制器 * 汽车警报系统 * 安全系统 * 其它遥控系统
NEC协议的遥控器参考代码
NEC协议的遥控器参考代码下面是一个简单的NEC协议遥控器的参考代码。
```c#include <IRremote.h>//定义红外发射器的引脚#define IR_LED_PIN 3//定义红外接收器的引脚#define IR_RECEIVE_PIN 2IRsend irsend(IR_LED_PIN);IRrecv irrecv(IR_RECEIVE_PIN);decode_results results;void setu//初始化串口Serial.begin(9600);//初始化红外接收器irrecv.enableIRIn(;void loo//检查是否有红外信号收到if (irrecv.decode(&results))//打印红外编码Serial.print("Received NEC code: 0x"); Serial.println(results.value, HEX);//根据红外编码执行对应的操作switch (results.value)case 0xFFA25D: // 遥控器上的按键1//执行按键1的操作Serial.println("Button 1 pressed"); break;case 0xFF629D: // 遥控器上的按键2//执行按键2的操作Serial.println("Button 2 pressed"); break;case 0xFFE21D: // 遥控器上的按键3//执行按键3的操作Serial.println("Button 3 pressed"); break;//添加其他按键的处理逻辑default://未识别的红外编码Serial.println("Unknown button");break;}//继续等待下一个红外信号irrecv.resume(;}```这段代码使用了IRremote库来进行红外通信。
遥控器解码知识
一、 常见红外线遥控器原理(编码与解码)1、 遥控系统组成和编码的主要分类:通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作。
发射部分包括键盘矩阵、编码调制、LED 红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
遥控发射器专用芯片很多,根据编码格式可以分成两大类:NEC 码和RC5码。
2、 编码原理这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC 为例说明编码原理。
NEC 码产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器在设备,防止不同机种遥控码互相干扰。
后16位为8位功能码及其反码。
NEC 数据帧格式:当一个键按下超过36ms ,振荡器使芯片激活,将发射一组108ms 的编码脉冲,这108ms 发射代码由一个起始码(9ms 的高电平),一个结果码(4.5ms 低电平),低8位地址码(9~18ms ),高8位地址码(9~18ms ),8位数据码(9~18ms )和这8位数据码的反码(9~18ms )组成。
数据串行发送,低位(bit0)在前,高位(bit7)在后。
NEC 遥控发送数据格式2009-7-13 - 2009-7-20前导电平2009-7-13 - 2009-7-2032位二进制编码2009-7-13 - 2009-7-20连发代码如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms 的高电平)和结束码(2.5ms 低电平)组成。
在NEC 编码格式中“0”,“1”的表示方法(脉宽调制)如下:遥控发射码“0”遥控发射码“1”前导电平信号为了降低电源功耗,上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率。
注意:代码格式应以接收代码为准(接收代码与发射代码反向)。
二、VS_1838红外一体化接收头的使用红外线遥控信号的接收,可以使用一种集红外线接收和放大于一体的一体化红外线接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,比如:VS_1838b,体积和普通的塑封三极管大小一样。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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”。
3.
重複發送,如果第一次指令傳輸結束后,還簡測到該按鍵仍然按 著,則每隔108ms重複發送一次,但代碼變了。如下:
第一次傳送 的指令
FAE Service Department designed
FAE Service Department designed
紅外遙控器的常見協議分析
1.
2. 3. 4.
常用的红外线信号传输协议有 ITT 协议、 NEC 协议、 Nokia NRC 协议、 Sharp 协议、 Philips RC-5 协议、Philips RC-6协议, Philips RECS-80协议,以及 Sony SIRC 协议等。 協議組成 :一般由引導碼 ,用戶碼,資料碼,重複碼或資料碼的反碼和 結束碼構成。 載波:常用的有33K,36K,36.6K,38K,40K,56K,無載波 占空比:常用的有1/3,1/2,不常用1/4 調製方式:脈寬調製,相位調製,脈衝位置調製
24Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
HT48RA5 HT48CA5
40Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
Note: Part numbers including "C" are mask version devices while "R" are OTP devices.
2.
3.
FAE Service Department designed
紅外遙控系統
紅外遙控系統主要由紅外遙控發射裝置、紅外接收 設備、遙控微處理機等組成。
紅外遙控發射裝置,其主要元件為紅外發光二極體。 单只红外发光二极管的发射功率约 100mW。
1.
2.
接收電路的紅外接收管是一種光敏二極體,使用時 要給紅外接收二極體加反向偏壓,它才能正常工作 而獲得高的靈敏度。
HT49RA0 HT49CA0
2.0V ~ 3.6V
4MHz
2Kx14
96x8
8
8
21x2 , 21x3 , 20x4 32x4 , 33x3 , 33x2
0
8
1
--
v
2
3
v
v
4
52QFP
HT49RA1 HT49CA1
2.0V ~ 3.6V
4MHz
4Kx15
160x8
8
8
4
8
1
1
v
2
4
v
v
4
52QFP, 64LQFP
HT48R09E4學習型遙控器軟件流程
開始
1. 2. 3.
RAM初始化:將RAM的内部清空。 睡眠程序:IC進入HALT模式。 鍵盤掃描程序:用於取鍵值。有鍵按 下,進入鍵盤掃描,沒有鍵按下,進 入省電模式。 其他程序:定時重發,保留給用戶, 用戶根據自己的需要加入程序,配合 鍵盤掃描程序使用。 延時程序:客戶自己加入的延時程序, 配合鍵盤掃描程序使用。
是
RET
發送數據程序
FAE Service Department designed
HT6221/HT6222遙控器晶片簡介
HT6221/HT6222是我們公司專門為遙控器系統設計的編碼器。它不屬於 MCU。它是依據NEC協議進行編碼,即產生引導碼,16bit的地址碼,8bit的 命令碼及其反碼。且其16bit的地址碼可由用戶設定。
1. 特徵 * 工作電壓: 1.8V~3.5V * Dout輸出38KHz * 最小發射字: 一個字 * 一個455KHz的陶瓷或晶體 * 16bit地址碼 * 8 bit命令碼 * ppm調製方式 * 最大活動鍵 HT6221: 32 鍵 HT6222: 64 鍵
2. 應用 * 電視和錄影答錄機控制器 * 夜盜警報系統 * 煙火警報系統 * 車門控制器 * 汽車警報系統 * 安全系統 * 其他遙控系統
FAE Service Department designed
HT48R09E4學習型遙控器應用電路介紹
1. 硬體方塊圖
紅外線發送接 收電路
復位,晶振, 電源
FAE Service Department designed
HT48R09E4學習型遙控器應用電路介紹
FAE Service Department designed
FAE Service Department designed
NEC碼分析
在東亞地區比較常用的紅外線傳輸協議是NEC協議,故我們主要介紹NEC 協議即6122協議。
1. 協議組成: 引導碼,16bit用戶碼(地址碼),8bit命令碼(數據碼)及其反碼。
引导码由一个9ms的载波波形和4.5ms的关断时间构成 地址碼共16bit,低8位在前,高8位在后。 8bit命令碼及其反碼
FAE Service Department designed
HOLTEK REFERENCED MCU
Part No. VDD Syst em Cloc k Progra m Memor y Data Memor y I/ O Inpu t Segment Share LCD I/ O Outpu t 8bi t Timer 16 bit RT C Interrupt Ext . Int . IR Carrie r LV R Stac k Package
红外遥控器的控制距离约 10 米
FAE Service Department designed
遙控器IC的種類
1. 2. 3.
1. 2. 3.
1. 2. 3. 4. 5. 6.
按功能:單一、多功能 單一 單一簡單的(通常用AISC) 單一特殊的(通常用MASK、OTP) 多功能 單一多功能(通常用OTP、MASK) 萬能多代碼(通常用OTP、MASK) 萬能組合多合一 (通常用MASK) 按用途 電視(通常MASK、ASIC、OTP) VCD(通常ASIC、如6122) DVD(通常ASIC、如6122) VCR (通常ASIC、如6122) 空調(通常OTP、MASK,是4bit.8bit) 音像設備(通常ASIC、如6122)
NEC6122協議簡介
完整波形如下:
FAE Service Department designed
HOLTEK REFERENCED MCU
Timer Part No. VDD System Clock Program Memory Data Memory I/ O 8bit 16bit Interrupt IR Carrier LVR PFD Stack Package
缺點:只能對已知的遙器(或者說已經收集到的信號)有效,對於新開發, 新型的編碼格式就無能為力了。
FAE Service Department designed
學習型遙控器的分類
二、波形拷貝式
——把原遙控器所發出的信號進行完全拷貝,而不管遙控器是什麼格 式,進行適當的壓縮後,存儲在記憶體內,當需要發射時,再由儲存 器內讀出解壓後還原原始信號。 工作过程: 1. 发射信号波形的测量,需要高速主控制芯片和較大的RAM 2. 分析信号 3. 压缩编码,根据常用高低电平的时间,特殊高低电平的时间,发送周 期,对原始信号进行压缩编码。 4. 存储信号,把压缩编号后的数据存储到EEPROM中。
2.
根據所取的值,由其高8位判斷它的按鍵類型。 有三種類型的按鍵: 學習鍵,基本功能鍵,掃描鍵。
FAE Service Department designed
HT48R09E4學習型遙控器軟件流程
鍵盤掃描程序 初始化
否
鍵盤掃 描程序 取載波 取數據 保存EEPROM RET
學習程序