0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

红外遥控 NEC 解码终于搞懂了!看完直接抄作业

亿佰特物联网应用专家 2026-03-26 19:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

从波形抓取到按键映射,手把手教你搞定 NEC 协议解码

红外遥控解码的朋友,有没有过这种绝望:

  • 逻辑分析仪抓了一堆波形,看着像 NEC 协议,就是解不出正确的地址和按键?
  • 定时器配置了无数次,要么捕获不到边沿,要么时序算出来全错?
  • 好不容易解出数据,按键映射又乱成一锅粥,按“开关”出“音量+”?

别慌!NEC 协议作为红外遥控里的“通用语言”,其实逻辑巨简单,看完直接抄作业就能用!


一、NEC 协议原理:大白话讲明白

NEC 协议的核心是“用脉冲宽度表示 0 和 1”,就像用专属的摩斯密码,遥控器和单片机之间靠这个密码传递按键信息。

一帧数据由引导码、地址码、地址反码、数据码、数据反码组成,总共32 位

关键时序参数(38kHz 载波)

类型时序说明

引导码

9ms 高电平 + 4.5ms 低电平(“敲门砖”,告诉 MCU 要发数据了)

逻辑“0”

562.5μs 高电平 + 562.5μs 低电平,总时长 1.125ms

逻辑“1”

562.5μs 高电平 + 1.6875ms 低电平,总时长 2.25ms

重复码

9ms 高 + 2.25ms 低 + 0.56ms 高(长按按键时发送)

数据校验逻辑

  • 地址码 + 地址反码 =0xFF
  • 数据码 + 数据反码 =0xFF

校验通过才是有效数据。

b00759da-2907-11f1-96ea-92fbcf53809c.png


二、解码实现

第一步:精准捕捉信号,记录时间差

最通用的方案:

  • 用单片机的外部中断,专门捕捉信号的下降沿,每来一次下降沿,就触发一次中断
  • 同时用一个定时器持续不间断计时
  • 每次中断触发时,记下当前的定时器数值,和上一次中断的数值做减法,就能算出两次下降沿之间的时间差

这个时间差,就是我们判断引导码、逻辑 0、逻辑 1的唯一依据。只要时间算准了,解码就成功了一大半!


第二步:用状态机一步步解析数据

光有时间差还不够,我们需要给解码过程分阶段,就像流水线一样按顺序推进,避免乱序出错——这就是状态机的核心思路。

大致分为四个阶段:

  1. 空闲状态:等待信号到来
  2. 引导码状态:识别引导码
  3. 数据接收状态:逐位解析地址和数据
  4. 完成状态:校验并输出结果

b018e0b0-2907-11f1-96ea-92fbcf53809c.png


三、按键映射实现:一键对应,再也不会按错键

解出了正确的按键数据码,只是第一步。我们最终要的是:“按哪个键,就触发对应的功能”——这就是按键映射的核心。

实现起来特别简单,核心就是做一张“按键对应表”

  1. 先用逻辑分析仪或调试好的解码程序,记录遥控器各按键对应的数据码
  2. 整理成「数据码 → 按键功能」固定对照表,存入单片机
  3. 每次解码出有效数据码,即用该码查表匹配,触发对应按键功能

b026a4e8-2907-11f1-96ea-92fbcf53809c.jpg


四、调试避坑技巧

序号技巧说明

逻辑分析仪是神器

采样率设 1MHz 以上,直接看波形时间,比瞎调定时器快 10 倍

定时器分频要合适

设 1MHz 计数频率,时间差直接就是 μs 数,不用换算

红外接收头别买错

常用VS1838B是 38kHz 载波,别买成 40kHz 的

反码校验必须加

过滤干扰信号,避免解出乱码

重复码单独处理

长按按键时会发重复码,别当成新按键

总结

其实 NEC 解码的核心,从来不是复杂的代码,而是搞懂时序的本质——把时间差算准、把校验做对,剩下的就是水到渠成的事。

哪怕是刚入门单片机的新手,搞懂这一套逻辑,也能一下午就实现红外遥控解码。


小贴士:调试时先用逻辑分析仪抓一组已知按键的波形,对照本文的时序参数,确认无误后再写代码,事半功倍!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NEC
    NEC
    +关注

    关注

    0

    文章

    240

    浏览量

    101011
  • 信号
    +关注

    关注

    12

    文章

    2923

    浏览量

    80389
  • 红外遥控
    +关注

    关注

    22

    文章

    353

    浏览量

    47750
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    这个NEC红外遥控怎么解码啊?求C51程序代码。

    `这个NEC红外遥控怎么解码啊?求C51程序代码。`
    发表于 03-24 18:32

    NEC 红外解码求助

    本人初学FPGA,看着教程写了一个红外解码的例程,仿真能够通过,可将程序下载到板子上,无论按遥控器哪个按键,收到总是0。ir_out 引出,直接连接到 ir_in,通过逻辑分析仪表明收
    发表于 09-12 08:48

    蓝牙学习型红外线遥控器(NEC协议编解码

    学习型红外线遥控器(NEC协议编解码) 单片机:STC89C52RC晶振:11.0592M 波特率:9600编译环境:Keil uVision4
    发表于 02-26 10:34

    红外遥控NEC协议介绍

    NEC协议红外遥控
    发表于 12-21 07:51

    如何利用NEC协议实现红外遥控

    NEC协议具有什么特征?如何利用NEC协议实现红外遥控
    发表于 04-19 10:14

    NEC协议红外遥控器的相关资料推荐

    文章目录NEC 协议红外遥控NEC 协议红外遥控器家电遥控
    发表于 12-06 06:24

    STM32 NEC红外遥控解码的相关资料推荐

    STM32 NEC红外遥控解码红外遥控编码格式一体化红外
    发表于 01-25 08:07

    红外遥控解码DIY

    红外遥控解码DIY,喜欢的朋友可以下载来学习。
    发表于 01-14 15:29 61次下载

    基于STM32的红外遥控解码遥控程序解析

    文 本主要包含 两个内容:一、红外遥控协议的的讲解;二、解码程序解析(参考正点原子的代码) 红外的介绍、优点、缺点就不给大家说了,网上书上都有,下面进入正题 一、
    发表于 11-30 01:57 5237次阅读
     基于STM32的<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>和<b class='flag-5'>解码</b><b class='flag-5'>遥控</b>程序解析

    基于AVR的NEC红外解码

    1 摘要 基于AVR的NEC格式红外解码解码。主要是用通过定时器和外部中断两个外设完成解码功能,全中断方式
    发表于 11-15 11:51 8次下载
    基于AVR的<b class='flag-5'>NEC</b><b class='flag-5'>红外</b><b class='flag-5'>解码</b>

    单片机:NEC 协议红外遥控

    文章目录NEC 协议红外遥控NEC 协议红外遥控器家电遥控
    发表于 11-23 18:06 31次下载
    单片机:<b class='flag-5'>NEC</b> 协议<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>器

    STM32 NEC红外遥控解码

    STM32 NEC红外遥控解码红外遥控编码格式一体化红外
    发表于 11-30 14:36 31次下载
    STM32 <b class='flag-5'>NEC</b><b class='flag-5'>红外</b><b class='flag-5'>遥控</b>器<b class='flag-5'>解码</b>

    红外遥控器快速编码解码NEC

    红外遥控器快速编码解码 NEC解码模块 红外遥控
    发表于 12-17 17:44 24次下载
    <b class='flag-5'>红外</b><b class='flag-5'>遥控</b>器快速编码<b class='flag-5'>解码</b>(<b class='flag-5'>NEC</b>)

    STM32: NEC红外线协议解码(超低成本无线传输方案)

    这是NEC协议的红外线遥控器: 如果自己手机没有红外线遥控器的功能,可以淘宝上买一个小遥控器来
    的头像 发表于 03-14 09:48 6087次阅读
    STM32: <b class='flag-5'>NEC</b><b class='flag-5'>红外</b>线协议<b class='flag-5'>解码</b>(超低成本无线传输方案)

    Linux驱动开发-编写NEC红外线协议解码驱动

    NEC协议是众多红外线协议中的一种,以前广泛用在电视机,投影仪设备里,很早之前经常说的万能电视遥控器就是NEC协议的;当前文章就介绍如何在Linux下通过
    的头像 发表于 09-17 15:20 3251次阅读
    Linux驱动开发-编写<b class='flag-5'>NEC</b><b class='flag-5'>红外</b>线协议<b class='flag-5'>解码</b>驱动