SYN480R模块解码EV1527教程
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教程相关推荐
- 315/433无线模块解码
315/433无线模块解码 1.超外差315/433无线模块 现在这种接收模块一般用PRO480R/SYN480R,外围再加一些简单的典型电路,性价比高,1块多就可以买到,可实现灯光.门禁.汽车.安防 ...
- Nilearn教程系列(4)-fMRI解码入门教程(一)
这是使用Nilearn解码的教程,它以Haxby 2001研究中猫辨别任务的数据为基础. fMRI解码入门教程 功能性磁共振成像(FMRI,functional magnetic resonance ...
- python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 python 的标准库模块glob使用教程,主要为glob.glob函数使用与glob.iglob函数使用 文章目录: ...
- gmod的css模块放哪,gmod模式怎么更换?gmod模块安装步骤教程
很多小伙伴还不清楚gmod模式怎么更换?将模块直接放到orangebox文件夹里面,或者直接复制模块里的model什么的文件复制进gmod文件夹当然这种方法非常容易出错的,下面小编就把gmod模块安装 ...
- vue-resource网络请求模块(安装教程) - cmd篇
vue-resource网络请求模块(安装教程) - cmd篇 安装vue-resource 网络请求模块,用于依赖后端服务器的vuejs项目进行对服务器端数据的请求或跨域请求. cmd安装步骤: 先 ...
- 计算机丢失quartz.dll什么意思,教你win10系统quartz.dll丢失找不到指定模块的解决教程...
最近有用户遇到了quartz.dll文件丢失的问题,quartz.dll文件失败找不到指定模块是无法解决,所以小编为大家整理了win10系统quartz.dll丢失找不到指定模块的解决教程,这是一个很 ...
- arduino和NB-IOT模块M5310-A使用教程,app实时控制
arduino和NB-IOT模块M5310-A使用教程,app实时控制 第一 .先上效果图 第二.原理讲解 第三.下载程序到arduino 第四 app inventor 开发 第五.小程序开发 第一 ...
- 蓝牙透传模块HC-08使用教程与简单应用
蓝牙透传模块HC-08使用教程与简单应用 前言(文章末尾附STM32 源码) 一.AT指令 二.使用测试 1.使用到的工具如下 2.示意图 3.开始测试 三.远程控制点亮MCU板上的LED 1.管脚配 ...
- 物联网国赛LORA模块开发基础教程(通用库)—点对点通信
LORA模块开发基础教程目录 物联网国赛LORA模块开发基础教程-开发环境配置 物联网国赛LORA模块开发基础教程-输出(LED) 物联网国赛LORA模块开发基础教程-输入(按键) 物联网国赛LORA ...
最新文章
- SQL 数据完整性 基础知识
- HDU1874(Dijstra算法)
- Hessian RPC示例和基于Http请求的Hessian序列化对象传输
- 【SQL提数】case..when..then..end的使用
- 【语法】点语法的应用
- 科普 | 什么是Service Mesh技术?
- 85元一个万能工具箱,配齐24种螺丝刀+扳手,媲美德国工艺,家庭必备
- python 元组 列表 字典区别_python编程:常用的数据结构之字典的方法总结,和列表和元组区别...
- Bootstrap3 模态对话框的事件
- numpy.reshape(与ndarray.reshape一样)使用方法
- 面试Go语言开发?让这本书帮你感动面试官!
- dpkg检查某个应用是否已安装
- npm 升级所有依赖包
- 最好用的 网络神偷V10.7
- Form 电子表格(JTF GRID)
- HBase文档操作--练习篇
- #35 insert
- 三维空间——点线面关系
- 剪贴板中图片转为BASE64格式
- 收银管理系统多少钱一套?去哪里买比较靠谱?