pt2262解码学习总结讲解_第1页
pt2262解码学习总结讲解_第2页
pt2262解码学习总结讲解_第3页
pt2262解码学习总结讲解_第4页
pt2262解码学习总结讲解_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、芯片资料:网上有几个用51的做pt2262的软件解码。但我做了实验并不成功。怀疑原因在于:1、跟遥控器的发射频率有关,他们写的程序都没有注明遥控器的发射频率。很有可能就是因为他们只是解码了他使用的那个遥控器。而无法解码用了其他频率的遥控器。Pt2262芯片的发射频率跟 p15和p16脚之间的电阻有关。关系式为:振荡频率f=2*1000*16/Rosc(单位k欧) kHz 其中Rosc为振荡电阻 参考资料:1、 2、Hnl5, Pm 16 ' OSC1, QSCD : 外投保落出阳,拱定我将的时钟咏率.振荡频率f=2W0016/Rosc(k) kHz .其中Rosc为振荡电阻这里我们选用

2、的是一种比较常用的频率fy 10 kHz,网占片工3M(以下同3卜图是振藩频率与码位波股的对应关系:hltpiZ/vw» zsmcu. com 中山单片机-锵-洋说川i"inrjmrmrjuL北1店睚皿1丽丽用魂嗜j :.赞星.产j_nnI3日Ll-u1rFlI 4 字| 百I二任游朋等FFT二如*tzm工作惊讯僮*°*& Tpthg-lr地址ts(4人铲厂,.,',t畋界输入有-T祉1广西帆X杰.,出一堆址.故据的不同小限状击法生,明吗 TE4*册培Dmj1蜡出.遹过。外发如沱注虬ML It博码对仲波尼如因,手娼欣 I its地址 I 呻- lR

3、tF 头 rUlhiJ独门内皤 H二仁别必曰MkH?独放I l?J. USCKJM'二外/的 卜H空 I认定找期与:牛 一撮电肌口HT 4MlfcT7lfc 上旬这时装可“%这里的一般电阻值不用去理它。可以根据实际来选择合适的电阻。同步码头波形:©http:/ww. zsMCIL com1/8位宽=4a 注:1位宽=32a;-4倍位宽=l28a3PT2262有三种编码:0,1,和悬空(表示为f)。数据“0 ”发送的羽位姐I:。码3S9u c1078us1078us3、数据“f”发送频应如工:359us1078us2、数据“】”发送嬲触0工:078tfsIOTSub359us3

4、59us1码 l_1078u«359us3、厂里有一款遥控的振荡电阻是4.7M欧。用公式振荡频率f=2*1000*16/Rosc(单位k欧) kHz 其中Rose为振荡电阻求得:f=6.8085kHz 约等于 6.8kHZ。周期为:1.468752294e-4 s 0.000146875s 即 a=147us4、用51解码程序参考资料 例程一:http: zzz/article/details/5904888/*文件名:*描述:*代码:*硬件:*晶振:*日期:*备注:Decode.c对PT226的编码信号进行解码PT2262的输出信号经三极管反向后送入单片机的中断引脚A0 - A11

5、中的每bit用2bit表示:0码:00 ; 1码:11AT89S52、S901311.05922008-08-02PT2262 输出数据的顺序:A0 A1 - A10 A11+ 同步码+A0 A1 - A10 A11+ 同步码,连续发四次*/#include<reg51.h>#include<intrins.h>unsigned char Receive3;A7 ; Receive2: D3 D2 D1 D0 /Recdivex : xx xx xx xx 代表 bit flag = 0 ;sbit RemPin = P3A2 ;/51系列头文件方便调用_nop_();

6、做延时用;解码缓冲区:Receive0:A0 A1 A2 A3 ; Recdive1 : A4 A5 A64bit解码完成标志位编码信号输入脚/*函数名:IntInitial()*描 述:中断系统初始化* 参 数:输入参数:无 输出参数:无*/void IntInitial( void )(IT0 = 1 ;/外部中断0下降沿有效EX0 = 1 ;/开外部中断0EA = 1 ;开全局中断)/* * 函数名:INT0_ISR()* * 描 述:外部中断0服务函数,实现对 PT2262的解码* * 参 数:输入参数:无输出参数:无*/void INT0_ISR(void) interrupt 0

7、using 1 (unsigned char i = 0 ;unsigned char j = 0 ;unsigned int temp = 0x0000;EA = 0 ;TH0 = 0 ;TL0 = 0 ; /11.0592 最大值 71111uswhile( !RemPin) ; 等待高电平的到来,检测同步头TR0 = 1 ; 启动定时器0,开始测量高电平的宽度while( RemPin) (if( TF0 = 1 )( goto RemExit; /定时器超时溢出则退出)TR0 = 0 ;temp = TH0 ;temp = temp << 8 ;temp = temp +

8、TL0 ; /取得高电平的宽度检测到同步头if( ( 0x0D8F /*3471*/ < temp ) && ( temp < 0x0F8F /*3983*/) ) / (for( j = 0 ; j < 3 ; j +) / 循环 3 次(for( i = 0 ; i < 8; i + ) (TH0 = 0 ;TL0 = 0 ;while( !RemPin); /等待高电平到来TR0 = 1 ; 开启定时器0 ,测量高电平的宽度 while( RemPin) (if( TF0 = 1 )( goto RemExit; /定时溢出则退出)TR0 = 0

9、;temp = TH0 ;temp = temp << 8 ;temp = temp + TL0 ; /取得高电平的宽度if( ( 0x60 /*96*/ < temp ) && (temp< 0x90 /*144*/ ) ) / 判断得窄脉冲:1 表 示(Receivej = Receivej << 1 ;Receivej = Receivej + 0x01 ;)else if( ( 0x0100 /*256*/ <temp) && (temp< 0x0200 /*512*/) ) /判断得宽脉冲:0表不'

10、;(Receivej = Receivej << 1 ;) else return;)flag = 1 ; /表示已解码完毕 return;) else(goto RemExit;)RemExit:(TR0 = 0 ;EA = 1 ;TF0 = 0 ;RemPin = 1 ;return;void main( void )(unsigned char i = 0 ;unsigned int j = 0 ;unsigned char Dat = 0x00;unsigned char RemDat = 0x00 ; / 解码后数据寄存器IntInitial( ); /中断系统初始化In

11、it_uart(); 串口初始化while(1)(if( flag ) /解码完毕(flag = 0 ;RemDat = 0x00;for( i = 0 ; i < 4 ; i +) (Dat = Receive2;Receive2 = Receive2 << 2 ;Dat = Dat & 0xC0; / 判断高 2bitif( Dat = 0xC0 ) / 高 2bit:11 ;贝U为 1 码;否则为 0 码 (RemDat = RemDat << 1 ;RemDat = RemDat + 0x01;) else (RemDat = RemDat <

12、;< 1 ;)P0 = RemDat ; 将解码后的数据送入P0 口 ,通过开发板上的LED显示出来for( i = 0 ; i < 2 ; i +) / 普通延时 (for( j = 0; j < 0xFFFF ; j + )(_nop_();)TF0 = 0 ;EA = 1 ; 重开中断例程二:http:例程三:/*; Copyright (C) 2006 WangChanghong INTEGRATED PRODUCTS, INC.; All rights reserved.;MCU:AT89s52,晶体频率:12MHz:作者:汪长洪:时间:2006年08月01日;地点

13、:威海;315M 无线遥控解码程序*/#include <AT89X52.H>#define uchar unsigned char#define uint unsigned int/* 变量列表*/uchar ReadCode3,GetCode;/* 函数列表*/void delay_200(void);/200us 精确延时void delay_250(void);/250us 精确延时void delay_131(void);/131ms 精确延时void init(void);初始化子程序void INT0_intrupt();中断处理子程序(解码程序)/* 主程序入口 *

14、/main()init();while(1) P2=GetCode|0xf0;/* 初始化子程序*/void init(void)EA=1;打开CPU总中断请求EX0=1;打开INT0中断请求IT0=1;/设定INT0的触发方式为脉冲负边沿触发/*200usvoid delay_200(void)(uchar i,j;for(i=0x05;i>0;i-) for(j=0x12;j>0;j-);)/*250usvoid delay_250(void)(uchar i,j;for(i=0x05;i>0;i-) for(j=0x17;j>0;j-);)/*131msvoid

15、delay_131(void)(uchar i,j;for(i=0xfe;i>0;i-)for(j=0xfe;j>0;j-);)精确延时*/精确延时*/精确延时*/*/* 外部中断0子程序(解码程序)-void INT0_intrupt(void) interrupt 0 using 1(uchar i,j;bit BitState_2;EX0=0;/ 找起始位 /for(i=0;i<50;i+);if(P3_2=1) goto kk;while(P3_2=0);for(i=0;i<50;i+);if(P3_2=0) goto kk;delay_200();if(P3_

16、2=1) goto kk;for(i=15;i>0;i-)重复20次,检测在3750微秒内出现高电平就退出解码程序(delay_200();if(P3_2=1) goto kk;)while(P3_2=0);/接收数据 /for(j=0;j<3;j+)(for(i=0;i<8;i+)(delay_250();BitState_2=P3_2;ReadCodej=ReadCodej<<1;ReadCodej=ReadCodej|BitState_2;if(P3_2=1) while(P3_2=1);while(P3_2=0);)/ 校验及运算数据 / for(i=0;i<3;i+) (/校验if(Rea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论