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

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

3天内不再提示

用远-R1接收模块解码EV1527的C代码

airX嵌入式 来源:airX嵌入式 作者:airX嵌入式 2022-12-12 09:37 次阅读

《《《《《正文》》》》》

《EV1527 帧结构》

EV1527 每帧数据由同步码和 24 位的数据码组成,数据码又分为地址码(20 位)和按键码(4 位)。以 433Mhz EV1527 遥控器为例,遥控波形如下。

9936cbce-7801-11ed-8abf-dac502259ad0.png

bit0:400us 高电平+800us 低电平 bit1:1ms 高电平+200us 低电平 同步码(黑色线条部分):高电平 400us+低电平 9ms。 地址码(橙色线条部分):20 个数据位,共 24ms。 按键码(红色线条部分):4 个数据位,共 4.8ms。

《解码原理》

同步码和 bit1、bit0 的低电平持续时间都不一样。通过定时器计算低电平时间来判断同步码、bit1、bit0。

《远-R1 解码代码》

设置一个 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 8
extern 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;//1khz
RF_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;
 }
}

审核编辑:汤梓红

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

    关注

    1

    文章

    89

    浏览量

    14285
  • 帧结构
    +关注

    关注

    0

    文章

    13

    浏览量

    10658
  • eV1527
    +关注

    关注

    2

    文章

    9

    浏览量

    25698

原文标题:用远-R1 接收模块解码 EV1527 的C代码

文章出处:【微信号:airX嵌入式,微信公众号:airX嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    无线编码IC EV1527怎么预烧内码?

    无线编码IC EV1527怎么预烧内码?知道的请详细说明一下。谢谢!!!
    发表于 06-29 11:58

    请问单片机解码433MHZ EV1527学习型编码ic 学习功能如何用程序实现?

    目前我在做一个51单片机解码433Mhz模块EV1527学习型编码IC,不知道如何学习对码?
    发表于 09-09 15:04

    基于STM32和hs1527ev1527、rt1527、fp1527的无线接收解码程序

    ​​​1527的数据帧结构无线遥控的编码,从编码类型上来说,分为2类,一类是固定码,也就是编码芯片的地址是不变的,芯片型号以 hs1527ev1527、rt1527、fp
    发表于 07-18 15:04

    基于STM32和hs1527ev1527、rt1527、fp1527的无线接收解码程序

    ​​​1527的数据帧结构无线遥控的编码,从编码类型上来说,分为2类,一类是固定码,也就是编码芯片的地址是不变的,芯片型号以 hs1527ev1527、rt1527、fp
    发表于 07-18 15:05

    SYN480R模块解码EV1527该怎样去使用呢

    1. EV1527帧结构EV1527 每帧数据由同步码和24位的数据码组成,数据码又分为地址码(20位)和按键码(4位)。以我手头上的433Mhz的EV1527遥控器为例,遥控波形如下
    发表于 01-12 08:03

    如何解决ev1527信号频率的问题?

    如何解决ev1527信号频率的问题?
    发表于 02-28 07:49

    EV1527射频模块调试过程分享

    容易,要做好却很难。刚开始在本地找了一家射频模组供应商,根据他们的建议设计,做了一版PCB,后来发现收发距离尤其是穿墙能力不行,当然,这里是直接EV1527协议,在单片机上实现起来还是比较容易
    发表于 02-28 09:19

    eV1527学习码编码IC

    eV1527是一片由CMOS设计制造的可预烧内码的学习码编码IC,由软件解码;内码共有20个位元可预烧1048576组(220)内码组合,降低使用上编码重复的机率。
    发表于 07-11 15:35 462次下载
    <b class='flag-5'>eV1527</b>学习码编码IC

    EV1527解码资料

    有关ev1527解码资料,可供参考参考,内有其详解,有需要可下载。
    发表于 05-13 16:40 246次下载

    ev1527,pt2262,upd6122等编解码

    ev1527,pt2262,upd6122等编解码,红外等资料。
    发表于 10-13 18:00 0次下载

    基于EV1527编码芯片的应用及其解码方法

    基于EV1527编码芯片的应用及其解码方法
    发表于 10-31 08:16 340次下载
    基于<b class='flag-5'>EV1527</b>编码芯片的应用及其<b class='flag-5'>解码</b>方法

    Ev1527的pic单片机软件接收解码程序

    Ev1527的pic单片机软件接收解码程序
    发表于 02-27 16:57 89次下载

    基于51单片机的无线遥控编码程序EV1527

    基于51单片机的无线遥控编码程序EV1527
    发表于 07-30 10:26 252次下载

    ev1527、pt2262等433/315MHZ芯片stc单片机解码,含源程序

    ev1527、pt2262等433/315MHZ芯片stc15w204s-sop8单片机解码,含源程序硬件介绍:软件介绍:单片机引脚定义:解码原理:主要
    发表于 11-21 17:06 194次下载
    <b class='flag-5'>ev1527</b>、pt2262等433/315MHZ芯片<b class='flag-5'>用</b>stc单片机<b class='flag-5'>解码</b>,含源程序

    10分钟掌握EV1527无线模块解码

    一、上图这种常规的 433Mhz 无线模块,发射端一般 PT2262/EV1527/PT2240/HCS301编码。如果选择 PT2262,接收端则直接搭配 2272,匹配好振荡电阻
    的头像 发表于 12-12 09:34 4.1w次阅读