1. EV1527帧结构
EV1527 每帧数据由同步码和24位的数据码组成,数据码又分为地址码(20位)和按键码(4位)。
以我手头上的433Mhz的EV1527遥控器为例,遥控波形如下。
bit0:400us高电平+800us低电平
bit1:1ms高电平+200us低电平

  • 同步码(黑色线条部分):高电平400us+低电平9ms。
  • 地址码(橙色线条部分):20个数据位,共24ms。
  • 按键码(红色线条部分):4个数据位,共4.8ms。
    2. 解码原理
    同步码和bit1、bit0的低电平持续时间都不一样。通过定时器计算低电平时间来判断同步码、bit1、bit0。
    3. SYN480R解码代码
    设置一个50us中断一次的定时器,每次中断调用soft_count()函数。
    修改后面的数值就可以在其他不同的模块上用
    #define _start_us_min 160
    #define _start_us_max 200
    #define _num0_us_min 10
    #define _num0_us_max 20
    #define _num1_us_min 0
    #define _num1_us_max 8
    代码注释都非常详细,我就不再废话了。如果有不懂的可以直接问我。

.h文件

#ifndef _SOFT_DECODE_
#define _SOFT_DECODE_#include "N76E003.h"#define  uint        unsigned int
#define  uchar  unsigned char
#define  ulong  unsigned long//50us
#define _start_us_min   160
#define _start_us_max   200
#define _num0_us_min    10
#define _num0_us_max    20
#define _num1_us_min    0
#define _num1_us_max    8extern uchar IR_Key;
extern uchar Temp_addrl;
extern uchar Temp_addrh;
extern uchar Address_l;
extern uchar Address_h;extern uint RF_Value_Cnt;
extern uint release_key;
extern bit IR_OVER;void soft_count();
void soft_decode();#endif

.c文件

#include "SOFT_DECODE.h"sbit RF_Dat = P1^7;           //红外接收引脚ulong RF_data;
uchar Temp_addrl,Temp_addrh,Address_l,Address_h;//地址码
uchar cntint,IR_Key;                //接收位数据的个数,数据
bit   start_flag=0,IR_OVER;    //检测到码头start_flag置1,反之置0,接收完一组数据后IR_OVER置1,反之清0
bit   Jump_flag;                        //电平跳变标志
uint  release_key;                  //松手计数
uint  Low;                                  //低电平计数
uint  RF_Value_Cnt;                 //长按计数/**----------------------------------------------------------------------------------------------****函数名  :低电平脉宽测量函数**功能说明:计算低电平时间(LOW),50us调用一次**----------------------------------------------------------------------------------------------**/
void soft_count()//接受码计数函数
{if(RF_Dat==0)      //低电平{    Low++;if(Jump_flag)Jump_flag=0;  //Jump_flag由0→1代表 低→高 跳变    }else if(RF_Dat==1)     //高电平{if(!Jump_flag){ Jump_flag=1;           //Jump_flag由1→0代表 高→低 跳变soft_decode();Low=0;}}
}
/**----------------------------------------------------------------------------------------------****函数名  :解码函数**----------------------------------------------------------------------------------------------**/
void soft_decode()//接受码处理函数
{
//  uchar i;if(start_flag==0){if(( Low > _start_us_min ) && ( Low < _start_us_max ))            //同步码{start_flag=1;cntint=0;//数据长度IR_Key=0;RF_data=0;LED=1;}else {
//          LED=!LED;//1khzRF_Value_Cnt=0;
//          long_key_flag=0;release_key++;if(release_key>500)release_key=500;}}else if((start_flag==1)&&(cntint<24)){if(( Low > _num0_us_min ) && ( Low < _num0_us_max ))             //数据 0 700us{RF_data=RF_data<<1;cntint++;}else if(( Low > _num1_us_min ) && ( Low < _num1_us_max ))          //数据 1  120-200us{RF_data=RF_data<<1;RF_data|=1;cntint++;}else {start_flag=0;cntint=0;}}if(cntint==24){release_key=0;RF_Value_Cnt++;if(RF_Value_Cnt>500)RF_Value_Cnt=500;cntint=0;start_flag=0;IR_Key=RF_data&0x0000000f;   //取4位数据Temp_addrl=(RF_data>>4)&0x000000ff; //地址共20位,只取16位。Temp_addrh=(RF_data>>12)&0x000000ff;IR_OVER=1;      }
}

程序下载

SYN480R模块解码EV1527教程相关推荐

  1. 315/433无线模块解码

    315/433无线模块解码 1.超外差315/433无线模块 现在这种接收模块一般用PRO480R/SYN480R,外围再加一些简单的典型电路,性价比高,1块多就可以买到,可实现灯光.门禁.汽车.安防 ...

  2. Nilearn教程系列(4)-fMRI解码入门教程(一)

    这是使用Nilearn解码的教程,它以Haxby 2001研究中猫辨别任务的数据为基础. fMRI解码入门教程 功能性磁共振成像(FMRI,functional magnetic resonance ...

  3. python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 python 的标准库模块glob使用教程,主要为glob.glob函数使用与glob.iglob函数使用 文章目录: ...

  4. gmod的css模块放哪,gmod模式怎么更换?gmod模块安装步骤教程

    很多小伙伴还不清楚gmod模式怎么更换?将模块直接放到orangebox文件夹里面,或者直接复制模块里的model什么的文件复制进gmod文件夹当然这种方法非常容易出错的,下面小编就把gmod模块安装 ...

  5. vue-resource网络请求模块(安装教程) - cmd篇

    vue-resource网络请求模块(安装教程) - cmd篇 安装vue-resource 网络请求模块,用于依赖后端服务器的vuejs项目进行对服务器端数据的请求或跨域请求. cmd安装步骤: 先 ...

  6. 计算机丢失quartz.dll什么意思,教你win10系统quartz.dll丢失找不到指定模块的解决教程...

    最近有用户遇到了quartz.dll文件丢失的问题,quartz.dll文件失败找不到指定模块是无法解决,所以小编为大家整理了win10系统quartz.dll丢失找不到指定模块的解决教程,这是一个很 ...

  7. arduino和NB-IOT模块M5310-A使用教程,app实时控制

    arduino和NB-IOT模块M5310-A使用教程,app实时控制 第一 .先上效果图 第二.原理讲解 第三.下载程序到arduino 第四 app inventor 开发 第五.小程序开发 第一 ...

  8. 蓝牙透传模块HC-08使用教程与简单应用

    蓝牙透传模块HC-08使用教程与简单应用 前言(文章末尾附STM32 源码) 一.AT指令 二.使用测试 1.使用到的工具如下 2.示意图 3.开始测试 三.远程控制点亮MCU板上的LED 1.管脚配 ...

  9. 物联网国赛LORA模块开发基础教程(通用库)—点对点通信

    LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...

最新文章

  1. SQL 数据完整性 基础知识
  2. HDU1874(Dijstra算法)
  3. Hessian RPC示例和基于Http请求的Hessian序列化对象传输
  4. 【SQL提数】case..when..then..end的使用
  5. 【语法】点语法的应用
  6. 科普 | 什么是Service Mesh技术?
  7. 85元一个万能工具箱,配齐24种螺丝刀+扳手,媲美德国工艺,家庭必备
  8. python 元组 列表 字典区别_python编程:常用的数据结构之字典的方法总结,和列表和元组区别...
  9. Bootstrap3 模态对话框的事件
  10. numpy.reshape(与ndarray.reshape一样)使用方法
  11. 面试Go语言开发?让这本书帮你感动面试官!
  12. dpkg检查某个应用是否已安装
  13. npm 升级所有依赖包
  14. 最好用的 网络神偷V10.7
  15. Form 电子表格(JTF GRID)
  16. HBase文档操作--练习篇
  17. #35 insert
  18. 三维空间——点线面关系
  19. 剪贴板中图片转为BASE64格式
  20. 收银管理系统多少钱一套?去哪里买比较靠谱?

热门文章

  1. 将VS2019设置成英文版
  2. Linux进阶_PAM认证机制
  3. 解决 input 输入框在 iOS 系统中无法输入内容
  4. 【Unity3d】3d网页游戏场景打包与加载
  5. linux运行dock打包的镜像,Docke镜像和仓库基础命令
  6. 对n个数进行排序(空间复杂度O(1))
  7. 原来微信还有这三个实用小技巧!简直太方便了
  8. 抖音这样拍摄短视频,能让你轻松上热门涨粉丨国仁网络资讯
  9. LintCode_138——子数组和为零
  10. 经济危机为什么也是创业良机?