315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx

上传人:b****5 文档编号:20768821 上传时间:2023-01-25 格式:DOCX 页数:12 大小:240.37KB
下载 相关 举报
315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx_第1页
第1页 / 共12页
315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx_第2页
第2页 / 共12页
315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx_第3页
第3页 / 共12页
315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx_第4页
第4页 / 共12页
315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx

《315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

315M443M无线遥控波形分析及STC单片机解码Word格式文档下载.docx

首先有一段比较长的波形,通过软件可以看出有多少ms(大概13ms),这就是同步码,后面有25短的波形,这就是PT2262的编码格式。

首先要识别出同步码,这个很关键,我们在做发射编码时也要做这个,一般为10-20ms,这是区别于乱码的标志。

下面说说我是怎样解码的,利用51单片机,接收信号接到P3.2,用下降沿外部中断。

检测每2次下降沿中断的时间,用T1计时;

每2次下降沿之间的高电平段的时间,用T0计时;

这是常用的PT2262的格式,

首先要检测到同步码,每两次中断的时间大于(T1计时)12ms;

检测到同步码后才开始解码,如果接收到的高电平在450us左右为“0”;

如果接收到的高电平在1300us左右为“1”;

这样我们就能解码了。

这是我的解码程序:

#include<

STC12C5A60S2.h>

intrins.h>

#include<

stdlib.h>

stdio.h>

#defineucharunsignedchar

#defineuintunsignedint

uintINT0_H_timer=0;

//两个下降沿之间的高电平宽度

uintINT0_L_timer=0;

//两个下降沿总宽度

bitDBM=0;

//同步码标志

longDATA=0;

//取得24位数据(暂存);

longDATAZ=0;

//取得24位数据(比较暂存);

longDATAX=0;

//取数据

ucharDATA_x=0;

//取数据次数;

//uintINT0_H[24]={0,};

ucharTY=0;

//连续取数标志

voidInitTimer0(void)//T0用于计两个下降沿之间的高电平宽度

{

TMOD|=0x09;

//T0加门控计高电平宽度

TH0=0x00;

TL0=0x00;

ET0=0;

//关T0定时中断

TR0=1;

TF0=0;

//溢出清0

}

voidInitTimer1(void)//T1用于计两个下降沿总宽度

TMOD|=0x10;

TH1=0x00;

TL1=0x00;

ET1=0;

//关T1定时中断

TR1=1;

TF1=0;

voidINT0_int()//外部中断初始化

IT0=1;

//下降沿

EX0=1;

EA=1;

voidmain(void)

ucharx=12,y=0;

//AUXR&

=0x7F;

//定时器时钟12T模式

InitTimer0();

InitTimer1();

INT0_int();

TH0=10;

TL0=10;

while

(1)

{

P0=DATAX;

}

voidINT0Interrupt(void)interrupt0

INT0_L_timer=TH1*256+TL1;

INT0_H_timer=TH0*256+TL0;

if(TF0)//有溢出不取值出错

INT0_L_timer=0;

INT0_H_timer=0;

TF0=0;

TF1=0;

DBM=0;

DATA_x=0;

//P0=0xfe;

//晶振22.1184、12分频,13~15ms为同步码

if(INT0_L_timer>

24000&

&

INT0_L_timer<

27000)//晶振22.1184、12分频

DBM=1;

//P0=0;

if(DBM)//取第3次同步码后的数据

if((INT0_H_timer>

600)&

(INT0_H_timer<

1000))//350~500us为0

{

DATA&

=0xfffffe;

if(DATA_x<

23)

{

DATA_x++;

DATA=DATA<

<

1;

}

else

if(TY>

=1)

{

TY=0;

if(DATAZ==DATA)//如果2次取数一致,读出数

{

DATAX=DATA;

}

else

INT0_L_timer=0;

INT0_H_timer=0;

TF0=0;

TF1=0;

DBM=0;

DATA_x=0;

}

else

DATAZ=DATA;

TY++;

DATA=0;

DBM=0;

DATA_x=0;

//P0=0x7f;

}

elseif((INT0_H_timer>

2200)&

2600))//1200~1400us为1

DATA|=0x000001;

else//出错

INT0_L_timer=0;

INT0_H_timer=0;

TF0=0;

TF1=0;

DBM=0;

DATA_x=0;

//P0=0xfd;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1