《《《《《正文》》》》》
《ev1527 帧结构》
ev1527 每帧数据由同步码和 24 位的数据码组成,数据码又分为地址码(20 位)和按键码(4 位)。以 433mhz ev1527 遥控器为例,遥控波形如下。
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 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.hsbit 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,反之清 0bit 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 500)release_key=500;}}else if((start_flag==1)&&(cntint _num0_us_min ) && ( low < _num0_us_max )) //数据 0 700us{rf_data=rf_data< _num1_us_min ) && ( low < _num1_us_max )) //数据 1 120-200us{rf_data=rf_data>4)&0x000000ff; //地址共 20 位,只取 16 位。temp_addrh=(rf_data>>12)&0x000000ff;ir_over=1; }}
显示器怎么选?别被参数花了眼!
基于BA5417的立体声功率放大器电路
基于两个NE555定时器的叮咚声音发生器电路图
微雪电子FPGA XILINX XC3S250E开发板简介
在F28x系列DSP上实现μC/OS-Ⅱ的移植技术研究
用远-R1接收模块解码EV1527的C代码
选购扫地机器人最容易忽略的几个点
宝马今年9月中国市场的汽车销量同比增长20%
单片机仿真器
LN2292升压型DC/DC调整器概述、用途及特点
程序员应不应该接私活
Dialog推模拟GreenPAK™ IC SLG47004,用它轻松地创建大量新功能
接力竞赛机器人系统电路设计
基于AIOT的创新教学平台建设
LGD最快明年加码投资OLEDoS产线研究开发
晋华最大的败笔是依赖联电及把研发中心设在境外
量子互联网正在兴起,量子网络未来触手可及
英搏尔率先采用英飞凌最新推出的 750 V车规级分立式IGBT EDT2器件
虫情测报灯的简介,它的灭虫效果怎么样
手机切膜机的功能作用及发展前景