最精尖的PT2262解码程序与大家共享

合集下载

PT2262编码芯片

PT2262编码芯片

PT2262编码芯片的软件解码一、概述PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出。

PT2262/2272必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。

随着人们对操作的要求越来越高,PT2262/2272的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补PT2262/2272的缺陷,这就是PT2262软件解码。

二、解码原理上面是PT2262的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

2262每次发射时至少发射4组字码,2272只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平。

因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。

下面我们来仔细看一下PT2262的波形特征:振荡频率f=2*1000*16/Rosc(kΩ) kHz 其中Rosc为振荡电阻这里我们选用的是一种比较常用的频率f≈10 kHz, Rosc=3.3MΩ(以下同)。

下图是振荡频率与码位波形的对应关系:同步码头波形:PT2262有三种编码:0,1,和悬空(表示为f)。

1、数据“0”发送的码位如下:2、数据“1”发送的码位如下:3、数据“f”发送的码位如下:有了以上具体的波形,我们就可以进行软件解码了。

PT2262编码芯片的软件解码C51解2262编码

PT2262编码芯片的软件解码C51解2262编码

PT2262编码芯片的软件解码--C51解2262编码在无线遥控领域, PT2262/2272 是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从 PT2262 波形特征入手,结合应用实际,提出软件解码的方法和具体措施。

关键词 PT2262 软件解码电平一、概述PT2262/2272 是一种 CMOS 工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272 最多可有 12 位 (A0-A11) 三态地址端管脚 ( 悬空 , 接高电平 , 接低电平 ), 任意组合可提供 531441 地址码 ,PT2262 最多可有 6 位 (D0-D5) 数据端管脚 , 设定的地址码和数据码从 17 脚串行输出。

PT2262/2272 必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。

随着人们对操作的要求越来越高, PT2262/2272 的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补 PT2262/2272 的缺陷,这就是 PT2262 软件解码。

二、解码原理上面是 PT2262 的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

2262 每次发射时至少发射 4 组字码, 2272 只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“ 1” 驱动相应的数据输出端为高电平和驱动 VT 端同步为高电平。

因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。

下面我们来仔细看一下 PT2262 的波形特征:振荡频率f=2*1000*16/Rosc(k Ω ) kHz 其中 Rosc 为振荡电阻这里我们选用的是一种比较常用的频率 f ≈ 10 kHz, Rosc=3.3M Ω(以下同)。

用单片机代替PT2272解码PT2262的程序

用单片机代替PT2272解码PT2262的程序

********** 用单片机代替PT2272解码PT2262的程序 **********晶振: 12MHz说明 ***********************************接收到的信号为发送信号的反码因为每检测到按键有效一次PT2262 都发送四次编码我们可以利用这一特点来解码先检测有没有接收到信息当有的时候我们就去掉第一次编码的信号检测5ms 的高电平来检测编码的开始信号接收到5ms 的高电平后才开始解码我们可以发现每个码的长度都是1.2ms左右每一个编码都是由低电平开始然后到高电平又到低电平又回到高电平我们从第一个高电平的宽度可以把1 码区分出来剩下的悬空码和0 码可以从第二个高电平的宽度区分出来具体的单片机译码方法如下由高电平开始检测到下降沿时就延时300us 读取接收的状态记为A0 然后再检测下一个下降沿降沿后又延时300us 读取接收的状态记为A1 这样就把一个编码给译出来了A0 A1 和悬空1 码0 码的关系如下:A0 A1 代码0 0 1 码0 1 错误1 0 悬空1 1 0 码********************************************************************* *********/#i nclude <STC516AD.H>#define uchar unsigned char#define uint unsigned int//定义共用体union{uint word;struct { //结构bytesuchar byte_addr;uchar byte_data;}bytes;}a_0,a_1;//位定义sbit W_REM =P3^3; //遥控接收输入脚sbit LED0 =P1^0;sbit LED2 =P1^2;bit bdata recv_flg, //接收正确位标志(1:正确 0:错误)//因为当按住PT2262的按键不放的时候PT2262会把编码不断的送出//设置lianji_flg位用来检测按键有没有放开过如果没有放开则不再响应lianji_flg; //按键没有放开过标志(1:连接 0:点击)uchar// addr_a0, //接收的8位地址编码A0// addr_a1, //接收的8位地址编码A1// data_a0, //接收的4位数据编码A0// data_a1, //接收的4位数据编码A1addr_user_a0, //设定的8位地址密码A0addr_user_a1; //设定的8位地址密码A1// led_out; //输出控制//------------------------------------- sub functon----------------------------------------------//------------------------------------- sub functon----------------------------------------------//------------------------------------- sub functon----------------------------------------------//------------------------------------- sub functon----------------------------------------------//------------------------------------- sub functon----------------------------------------------//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>//void d1ms (uint ljh_in) /*1mS延时函数*///{// uint data ljh_i;// uchar data ljh_j;// for(ljh_i=0;ljh_i<ljh_in;ljh_i++){// for(ljh_j=0;ljh_j<108;ljh_j++){// _nop_(); _nop_();// _nop_(); _nop_();// _nop_(); _nop_();// }// }//}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< -<-<-<-<-<-<-<-<-<-<-<//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>void d50us(uchar n) //50uS延时{uchar data i,j;for(j=n;j;j--) { //[1T+2T+(2i+2)T+1T+2T]*n+1T+2T+2T=(2i+8)*n+5Tfor(i=21;i;i--) ;//延时2T+2T*i=(2i+2)T}}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< -<-<-<-<-<-<-<-<-<-<-<//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>PT2272_deco() //解码{uchar i,cnt;if(recv_flg) ;else {//清除上次解码内容cnt =12; //接收12位编码//解码------------------------------------------------------------------------//先找出接收码的开头即5ms左右的高电平----------------------------------//设置高电平时间为4~6ms//检测和等待4ms的高电平for(i=80;i;i--) { //延时4mSif(!W_REM) i=80;else d50us(1);}//等待在2ms内接收到的低电平--------------------------------------------for(i=40;i;i--) { //延时4mSif(!W_REM) break;else d50us(1);}//4ms到6ms内接收到下降沿则跳去解码否则返回//超出6ms接收错误返回if(i) {recv_flg =0; //清按键没有放开过标志goto PT2272_deco_exit; //返回 -------------------------------- }//等待300us后采集接收信号d50us(6);//采集接收信号并记录a_0.word=a_1.word=0;for(i=0;i<6;i++) {if(W_REM) {a_0.word |=0x01;}a_0.word <<=1;// MOV C,W_REM //读A0数据// MOV A,DATA_A0// RLC A// MOV DATA_A0,A //保存相应位的A0// MOV A,ADD_A0// RLC A// MOV ADD_A0,A //高位转移//等待第二个下降沿while(!W_REM) ;while(W_REM) ;// JNB W_REM,$// JB W_REM,$//等待300us后采集接收信号d50us(6);// MOV 40H,#150 //2T// DJNZ 40H,$ //2T 延时:2T+2T*150=302Tif(W_REM) {a_1.word |=0x01;}a_1.word <<=1;// MOV C,W_REM //读A1数据// MOV A,DATA_A1// RLC A// MOV DATA_A1,A //保存相应位的A1// MOV A,ADD_A1// RLC A// MOV ADD_A1,A //高位转移//等待第二个码值的下降沿while(!W_REM) ; //___wd___while(W_REM) LED2=~LED2;// JNB W_REM,$// JB W_REM,$// DJNZ 34H,REMOTE6 //接收12 位编码 -------------------------------- }//把接收的编码左移4位将8位密码放在同一字节上----------------------------a_0.word <<=4;a_1.word <<=4;// MOV 40H,#4//REMOTE7:// CLR C// MOV A,DATA_A0// RLC A //送出低8位的bit7// MOV DATA_A0,A //低8位的A0左移1位// MOV A,ADD_A0// RLC A //接收低8位的bit7// MOV ADD_A0,A //高8位的A0左移1位// CLR C// MOV A,DATA_A1// RLC A //送出低8位的bit7// MOV DATA_A1,A //低8位的A1左移1位// MOV A,ADD_A1// RLC A //接收低8位的bit7// MOV ADD_A1,A //高8位的A1左移1位// DJNZ 40H,REMOTE7 //左移4位// //把4位数据编码由高4位移到低4位上---------------------------------// MOV A,DATA_A0// SWAP A// MOV DATA_A0,A //把4位数据编码A0由高4位移到低4位?// MOV A,DATA_A1// SWAP A// MOV DATA_A1,A //把4位数据编码A1由高4位移到低4位?//比较密码--------------------------------------------------------------if((a_0.bytes.byte_addr==addr_user_a0)&&(a_1.bytes.byte_addr==addr_us er_a1)) {recv_flg =1;lianji_flg =1;} else {recv_flg =0;lianji_flg =0;}// MOV A,ADD_A0// XRL A,ADD_USER_A0// JNZ REMOTE8 //密码不正确则跳转//// MOV A,ADD_A1// XRL A,ADD_USER_A1// JNZ REMOTE8 //密码不正确则跳转// //置接收正确位---------------------------------------------------------// SETB RECEIVE// //置ENABLE 用于检测按键有没有放开 -------------------------------- // SETB ENABLE// RET //接收正确返回 -----------------------------------------//REMOTE8:// CLR ENABLE// CLR RECEIVE// RET //接收不正确返回 ---------------------------------------}PT2272_deco_exit:return;}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< -<-<-<-<-<-<-<-<-<-<-<//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>void remote_2272_deco() //接收遥控码(解码程序){uint i;//检测50ms内有没有编码接收for(i=1000;i;i--) {if(!W_REM) {PT2272_deco(); //解码break;}else d50us(1); //50uS延时}recv_flg =0; //清按键没有放开过标志}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< -<-<-<-<-<-<-<-<-<-<-<//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>void work() //控制输出 //把选中的LED取反{if(recv_flg) { //接收不正确,退出recv_flg=0; //清接收正确标志位a_0.bytes.byte_data =~a_0.bytes.byte_data;P1 =P1^a_0.bytes.byte_data;}//WORK:// JNB RECEIVE,WORK_END //接收不正确,退出// //每次按键都一次响应// CLR RECEIVE //清接收正确标志位// MOV A,DATA_A1// CPL A// ORL A,#0FH //屏蔽低4位// MOV DATA_A1,A// MOV A,LCD_OUT// XRL A,DATA_A1// ORL A,#0FH// MOV LCD_OUT,A// MOV P1,LCD_OUT// NOP//WORK_END:// RET// END}//<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-< -<-<-<-<-<-<-<-<-<-<-<// ==================================== main function============================================// ==================================== main function============================================// ==================================== main function============================================// ==================================== main function============================================// ==================================== main function============================================// ==================================== main function============================================void main (void){//上电初始化++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ P1 =0xff;P3 =0xff;for(addr_user_a1=100;addr_user_a1;addr_user_a1--) d50us(200); //50uS 延时//编码设定为:A0~A7地址编码为:悬空+++++++++++++++++++++++++++++++++++++++++++++addr_user_a0 =0xff;addr_user_a1 =0x00;//start://=================================================================== =============while(1) {remote_2272_deco(); //接收遥控码work(); //控制输出LED0 =!LED0;}}。

PT2262编码芯片的软件解码C51解2262编码

PT2262编码芯片的软件解码C51解2262编码

PT2262编码芯片的软件解码--C51解2262编码在无线遥控领域, PT2262/2272 是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从 PT2262 波形特征入手,结合应用实际,提出软件解码的方法和具体措施。

关键词 PT2262 软件解码电平一、概述PT2262/2272 是一种 CMOS 工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272 最多可有 12 位 (A0-A11) 三态地址端管脚 ( 悬空 , 接高电平 , 接低电平 ), 任意组合可提供 531441 地址码 ,PT2262 最多可有 6 位 (D0-D5) 数据端管脚 , 设定的地址码和数据码从 17 脚串行输出。

PT2262/2272 必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。

随着人们对操作的要求越来越高, PT2262/2272 的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补 PT2262/2272 的缺陷,这就是 PT2262 软件解码。

二、解码原理上面是 PT2262 的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

2262 每次发射时至少发射 4 组字码, 2272 只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“ 1” 驱动相应的数据输出端为高电平和驱动 VT 端同步为高电平。

因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。

下面我们来仔细看一下 PT2262 的波形特征:振荡频率f=2*1000*16/Rosc(k Ω ) kHz 其中 Rosc 为振荡电阻这里我们选用的是一种比较常用的频率 f ≈ 10 kHz, Rosc=3.3M Ω(以下同)。

pt2262格式解码程序

pt2262格式解码程序
EA = 1;
ET0 = 1;
ET1=1;
}
/***************************主函数*****************************/
void main()
{
InitTimer0();
LCD_init();
LCD_write_string(0,1,"CCFROBOT");
while(1) //while循环
{
if(Key_B==0&&Key_D==0&&Key_A==1&&Key_C==0) //A键被按下
{
forward(); //小车前进
}
else if(Key_B==1&&Key_D==0&&Key_A==0&&Key_C==0) //B键被按下
sbit Key_C = P2^3; //C键信号端
#define LCD_DATA_PORT P0
#define LCD_RS P24 // out
#define LCD_EN P26 // out
#define LCD_RW P25 // out 可以直接接地
void inittimer1(void)
{
TR1=0;
TH1=TL1=0;
}
void InitTimer0(void)
{
TMOD = 0x11; //定时器1,定时器0用模式1 16位计时用,12T
// TL0 = 0xf9;
// TH0 = 0x4b; //定时25ms,22.1184MHz,12T模式

编码解码芯片PT2262

编码解码芯片PT2262

编码解码芯片PT2262/PT2272芯片原理简介:PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。

编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。

当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。

PT2262特点l CMOS工艺制造,低功耗l 外部元器件少l RC振荡电阻l 工作电压范围宽:2.6-15vl 数据最多可达6位l 地址码最多可达531441种应用范围l 车辆防盗系统l 家庭防盗系统l 遥控玩具l 其他电器遥控引脚图:管脚说明:名称管脚说明A0-A11 1-8、10-13 地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),D0-D5 7-8、10-13 数据输入端,有一个为“1”即有编码发出,内部下拉Vcc 18 电源正端(+)Vss 9 电源负端(-)TE 14 编码启动端,用于多数据的编码发射,低电平有效;OSC1 16 振荡电阻输入端,与OSC2所接电阻决定振荡频率;OSC2 15 振荡电阻振荡器输出端;Dout 17 编码输出端(正常时为低电平)在具体的应用中,外接振荡电阻可根据需要进行适当的调节,阻值越大振荡频率越慢,编码的宽度越大,发码一帧的时间越长.网站上大部分产品都是用2262/1.2M/2272/200K组合的,少量产品用2262/4.7M/2272/820K解码电路 PT2272 引脚图:地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”;两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“F”也就是地址码的“悬空”上面是我们从超再生接收模块信号输出脚上截获的一段波形,可以明显看到,图上半部分是一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

pt2262, e1527编码规则

pt2262, e1527编码规则

pt2262, e1527编码规则
工控秀才发表于 2008/7/10 21:37:52
几年前用PT2262或者其替代品做的无线遥控器,不知道有多少,然而一些新手依然不怎么明白他们的编码规则是什么样的.为了方便大家熟悉这些定义规则,用
自制的低频抓码器把他抓出来给大家分享一下.
先看2262的编码:
单纯的一位的周期分为4个4分之1,共16个系统
振荡周期.高电平占4分之1表示0,高电平占4分之3表示1.因为编码地址分高电平输入,低电平输入和悬空,所以需要2个位来表示编码位的状态,共占32个震荡周期.
如果输出0,该位编码为0, 则用00表示
如果输出1,该位编码为1, 则用01表示
如果输出三态,该位编码为三态, 怎用11表示
E1527的编码其实和上面分析的单纯的一位的定义差不多.
20位地址加4位按键状态的波形如下
都SHOW得差不多了,不过还得注意他们都还有同步位.2262的同步位占128个震荡周期,高电平占4个振荡周期,低电平占124个振荡周期.
1527就不写了,直接拷贝过来算了:
好了,希望对新手有点帮助,88!。

pt2262芯片使用手册

pt2262芯片使用手册

pt2262芯片使用手册PT2262芯片是一种用于遥控器的编码芯片。

它可以让我们轻松地实现对车辆、门禁等设备进行远程控制。

下面我们来详细了解一下这款芯片的使用手册。

首先,我们需要了解PT2262芯片的基本功能。

这款芯片具有12位地址码和4位数据码,可以实现4.5亿组不同的编码方式。

其输出为一组模拟信号,用于控制外部载波发射电路,从而实现对目标设备的远程控制。

接下来,我们需要了解PT2262芯片的管脚布局。

这款芯片一共有18个引脚,包括12个地址码输入引脚、4个数据码输入引脚、1个静态输出引脚和1个动态输出引脚。

其中,地址码输入引脚和数据码输入引脚需要连接到编码器。

在具体使用PT2262芯片时,我们需要按照以下步骤进行操作:1. 设置地址码和数据码。

地址码和数据码是由外部编码器产生的,可以根据需要进行设置。

如果需要修改地址码或数据码,需要在第一个电平输出前进行设置。

2. 对动态输出引脚进行设置。

动态输出引脚可以选择接地或高电平输出。

在接受者端需要对应设置,以便正确识别PT2262芯片的编码。

3. 将静态输出引脚连接到载波发射电路。

在收到合适的地址码和数据码时,静态输出引脚将输出高电平信号,从而控制载波发射电路。

需要注意的是,在使用PT2262芯片时,应该避免地址码和数据码重复。

否则,这会导致目标设备的混乱,从而无法正确控制。

此外,PT2262芯片还具有多个工作模式,包括调制、干扰抑制和消隐等。

在特定的应用场景下,可以使用这些功能来满足不同的需求。

最后,需要注意的是,PT2262芯片的输出距离和质量可能会受到外部干扰的影响。

因此,在实际使用时,应该尽量减少外部干扰,并进行必要的信号调整和优化,以确保远程控制的稳定性和可靠性。

以上就是PT2262芯片的基本使用手册。

希望这篇文章能够帮助大家更好地了解和应用这款芯片。

最精间的PT2262解码程序

最精间的PT2262解码程序

我看过很多PT2262软件解码程序,都是用定时器测量脉冲宽度。

占用系统太多资源。

我自己编写的程序不用定时器,不用中断,代码最少。

发射端为PT2262 3.3M 的电阻接收端为 M8 内部1M RC振荡。

解码成功后输出D口显示。

编译软件为 ICCAVR。

#include <iom8v.h>#include <macros.h>void delay_ms(void) //毫秒延时{unsigned int i;for (i=0;i<140;i++){}}void delay_nms(unsigned int n) //延时周期{unsigned int i;for (i=0;i<n;i++){delay_ms();}}void spaz(void) //响蜂鸣器{PORTC|=(1<<5);delay_nms(50);PORTC&=~(1<<5);}unsigned long decode(void) //无线解码{unsigned long DATA; //记录数据unsigned char count,i; //暂时计数/*一共接收三字节*/DATA=0; //for (count=0;count<24;count++) //开始收集{/*测量高电平宽度*/i=0; //宽度计数while (PINC&(1<<4)) //高位计数{asm("nop"); //i++; //计数增加if (i>192) goto end; //限时解码}/*分辨出电平高低*/DATA*=2; //数据左移if (i<64) //分辨高低{if (!((56>i)&(i>24))) goto end; //电平合法 DATA+=0; //记低电平 }else{if (!((168>i)&(i>72))) goto end; //电平合法 DATA+=1; //记高电平 }/*测量低电平宽度*/while (!(PINC&(1<<4))) //低位计数 {asm("nop"); //i++; //计数增加if (i>224) goto end; //限时解码}/*低电平是否过窄*/if (i<96) goto end; //对比宽度 }/*解码成功返结果*/return DATA; //成功返回/*有误码结束解码*/end:return 0; //误码结束 }void main(void){unsigned long DATA; //unsigned char D[3]; //signed char i; //DDRB =0B00000000; //定义输入PORTB=0B11111111; //上拉使能DDRC =0B11101111; //输入通道PORTC=0B11011111; //上拉选择DDRD =0B11111111; //定义输出PORTD=0B00000000; //输出显示while (1){DATA =decode(); //解码程序if (DATA>0) //{spaz(); //解码成功for (i=2;i>=0;i--) //数据转换{D[i]=DATA; //DATA>>=8; //}i=0; //转换完毕while (1) //输出显示{if (!(PINB&(1<<0))) //按键检查{delay_nms(20); //防误处理 if (!(PINB&(1<<0))) //{i++; //显示值加 spaz();}while (!(PINB&(1<<0))) //按键弹起 {delay_nms(20); //防误处理 }}if (i>2) break; //PORTD=D[i]; //输出显示}}}}。

PT2262编码表及说明

PT2262编码表及说明

1概述在应用遥控编、解码芯片时,要求一对芯片的地址完全一致,因此当一个遥控芯片控制多个解码芯片时, 需要与地址端连接的多个开关同时辅助动作,以改变地址,使之与解码芯片的地址完全一致,达到遥控的 目的。

若用微控制器取代编码芯片,就可以使多个开关动作改变输出波形的功能由软件完成,同时,在空闲时 让微控制器工作在掉电模式,这样不但操作简便而且节省了能源。

为此,我们设计了用(单片机开发板)廉价单片机STC89C52代替遥控编码芯片 HS2262来实现编码功能 的电路,用软件模拟了遥控编码功能。

2 HS2262的工作原理2.1管脚功能HS2262的各管脚功能如表1所示。

I 2.2位脉冲宽度HS2262的地址引脚有3种接法,即悬空(高阻态)、高电平及低电平,不同接法的输出波形不同,女n 图1所示。

从图中可知,若振荡周期为a ,则窄脉冲的宽度是 4a ,间隔是12a ;宽脉冲的宽度是12a ,间隔 是4a ,从而一个完整的位脉冲宽度是使用时,HS2262振荡电阻大约是与它成对的解码芯片 HS2272振荡电阻的4倍,即若取HS2272振荡电 阻为2.4M Q , HS2262的振荡电阻可取lOMkQ 。

这种条件下,经多次实验测得 HS2262发射的窄脉冲宽度约为500 g s 宽脉冲约为1550 g s 而2组数据之间的间隔约为32a 。

15ms 。

图1 PT2262的位脉冲波形单片机的晶振选择不能大于 4M (鉴于MCU 速度和干扰之间一般选择 4M 或者3.58M ),否则接收模块信号被干扰,无法分辨。

这种干扰在 51系列的单片机中体现特别明显,解决的办法是: 电源隔离,B 、端口隔离,C 、降低MC 晶振。

PIC 单片机则没有类似干扰现象。

JI F …■八丄…二*9« = IS.SOiB 1/At M 0S.35 MZfetlwe Cursor ■ ■- ■ G MTV 2 ■ t 2 Curscr: 图(2-1)图(2-1)可看出中虚线框内为 2262编码的引导码(低电平) t1=15.30ms 图(2-1) ( 2-2) (2-3)为示波器实测从接收模块输出隔离后到单片机开发板 P32的各个方面的2262波形 注: i \・朗t 2… :-T 二「 ....... j j ”,,” I +』*丄……I * J , I …,,…I _1 = 2雄鬧~= 0.000 s at = -2.040rrss ~i 旳t = 4虫>・2莅三ours 厂 Active Ctfrsor ・ ■ 亡 1为广 图(2-2)可看出中虚线框内为 2262编码的宽脉冲(高电平) t1=1.580ms图(2-2Actiw Cursor V a ■ ,QOs 、・(X^) ■ I ■ ■ ~ri -F p ■ I r ICT*AW 巴B z图()图(2-2)可看出中虚线框内为2262编码的宽脉冲+窄脉冲(高电平+低电平)t1=2.040ms那么窄脉冲即为2.040-1.580=480us2.3编码方式HS2262共有12个地址端,发射的每一组数据都由12个位脉冲组成,顺序是从A0、A1……到A11,由于每个地址端有3种接法,故数据端输出的波形有312种形式。

PT2262

PT2262

PT2262/2272红外遥控集成电路PT2262/2272是一对带地址、数据编码功能的红外遥控发射/接收芯片。

其中发射芯片PT2262-IR将载波振荡器、编码器和发射单元集成于一身,使发射电路变得非常简洁。

接收芯片PT2272的数据输出位根据其后缀不同而不同,数据输出具有“暂存”和“锁存”两种方式,方便用户使用。

后缀为“M”为“暂存型”,后缀为“L”为“锁存型”,其数据输出又分为0、2、4、6不同的输出,例如:PT2272-M4则表示数据输出为4位的暂存型红外遥控接收芯片。

PT2262-IR引脚功能说明:Pin1-Pin6(A0-A5): 地址输入端,可编成“1”、“0”和“开路”三种状态。

Pin7、Pin8、pin10-Pin13(A6/D0-A11/D5): 地址或数据输入端,地址输入时用Pin1-Pin6,做数据输入时只可编成“1”、“0”两种状态。

Pin14(TE):发射使能端,低电平有效。

Pin15、Pin16(OSC1、OSC2): 外接振荡电阻,决定振荡的时钟频率。

Pin17(Dout): 数据输出端,编码由此脚串行输出。

Pin9、Pin18(VDD,Vss): 电源+,-输入端。

PT2272引脚功能说明:Pin1-Pin6(A0-A5): 地址输入端,可编成“1”、“0”和“开路”三种状态。

要求与PT2262设定的状态一致。

Pin7、Pin8、pin10-Pin13(D0-D5): 数据输出端,分暂存和锁存两种状态。

Pin14(DI): 脉冲编码信号输入端。

Pin15、Pin16(OSC1、OSC2): 外接振荡电阻,决定振荡的时钟频率。

Pin17(VT): 输出端,接收有效信号时,VT端由低电平变为高电平。

Pin9、Pin18(VDD,Vss): 电源+,-输入端。

PT2262/PT2272电气参数PT2262/PT2272电气参数PT2262/PT2272极限参数PT2262/PT2272工作原理:PT2262-IR 发射芯片地址编码输入有“1”、“0”和“开路”三种状态,数据输入有“1”和“0”两种状态。

2262芯片的设置详解

2262芯片的设置详解

2262/2272系列芯片编码的设置2008/1107∙已有0条评论∙文章分类:全部文章目前市场上大多数无线防盗报警产品采用的发射和接收电路都是采用的PT2262/2272系列编解码芯片(SC系列芯片可以直接替代PT系列芯片),很多网友在购买一套报警器使用后都有增配遥控器、探测器的要求,网上类似产品琳琅满目,能否配套使、怎样编码特别关心的问题。

要使我站的遥控类产品编码配对成功,必须有以下几个条件:1、声表元件发射和接收的工作频率是31 5MHz;2、发射端PT2262和接收端PT2272的地址码要完全相同;3、发射端PT2262和接收端PT2272的振荡电阻还必须匹配。

遥控模块的生产厂家为了便于客户自己修改地址码,出厂时遥控模块的PT2262和PT2272的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,只要将PT2262和PT2272的1~8脚设置相同即可。

编解码芯片的振荡电阻还必须匹配,否则接收距离会变近甚至无法接收,震荡电阻接在PT2262/2272芯片的第15~16脚之间,市面上常见的发射端PT22 62的震荡电阻有1.5M和4.7M两种(电阻上分别有155、475的字样),对应的接收端PT2272芯片震荡电阻阻值分别为为270K和820K(电阻上分别有272、824的字样),少数产品震荡电阻是3.3M和680K。

参考资料:PT2262/2272编解码集成电路介绍我们网站提供的遥控类产品上都预留地址码编码区,编码区都在PT2262和PT2272芯片的附近,采用焊锡搭焊或跳线帽短接的方式来选择“悬空、接正电源、接地”三种状态,出厂时除客户特别要求之外都是悬空的,便于客户自己修改地址码。

下面就无线遥控器、无线门磁探测器、无线红外探测器、无线遥控收发模组如何编码进行简要说明。

一、无线遥控器的编码设置无线遥控器编码设置很简单,首先要确定遥控器的震荡电阻是多大,如果网友要购买到与自己遥控器震荡电阻一致的遥控器进行编码设置才能设置成功,下图中两款遥控器的RC位置就是震荡电阻位置,阻值必须相同,如不同则应更换电阻。

12F629解PT2262的源程序

12F629解PT2262的源程序

#i nclude"p12f629.inc"#define B_LED gpio,0 ;绿LED输出端口#define G_LED gpio,1 ;蓝LED输出端口#define R_LED gpio,2 ;红LED输出端口#define rem gpio,3 ;GP3/MCLR,定义遥控输入端seg9因为当按住PT2262的按键不放的时候;PT2262会把编码不断的送出;设置ENABLE位用来检测按键有没有放开过,;如果没有放开则不再响应;用于遥控型#define enable user_reg,0 ;接收允许位#define on_off user_reg,1 ;该位为0时,按花样选择键无效#define go_next user_reg,2 ;该位为1时,跳下一段#define reset user_reg,3 ;该位为1时,关显示#define unlock user_reg,4 ;用于配合on_off位;---------------------------------------------------------;定义变量;r1 equ 20h ;用于d5ms子程序r2 equ 21h ;用于d5ms子程序r3 equ 22h ;用于d320mS子程序P_reg equ 23h ;正脉宽时间寄存器N_reg equ 24h ;负脉宽时间寄存器count1 equ 25h ;计数器1count2 equ 26h ;计数器2W_temp equ 27h ;W临时寄存器user_reg equ 28h ;用户寄存器ee_data equ 29h ;eeprom读写数据出入口ee_addr equ 2ah ;eeprom读写地址入口data_temp equ 2bh ;用于暂存从EEPROM读出的数所数据index_reg equ 2ch ;用于保存引导值data_reg equ 2dh ;用于保存从EEPROM读出的值A0_addr1 equ 30hA0_addr2 equ 31hA1_addr1 equ 32hA1_addr2 equ 33hr5 equ 34h ;用于解码延时r6 equ 35h ;用于解码延时addr_set1 equ 36h ;用于存储比较密码addr_set2 equ 37h ;用于存储比较密码output equ 38hcount equ 39h ;接收12位编码status_temp equ 3ah ;保存status的值,用于现场保护ww_temp equ 3bh ;W工作寄存器,用于现场保护用A0_data1 equ 3ch ;用于存储比较数据D8A0_data2 equ 3dh ;用于存储比较数据D8A1_data1 equ 3eh ;用于存储比较数据D11A1_data2 equ 3fh ;用于存储比较数据D11;-------------------------------------------;定义常数;index equ 00h ;EEData数据引导地址;--------------------------------------------------org 0000hcall init ;调用初始化程序goto main;--------------------------------------------------;中断处理入口;TMR1溢出中断,说明按键松开时间大于等于65.536mS左右org 0004hmovwf ww_temp ;保护现场swapf status,wmovwf status_tempbcf intcon,gie ;关所有中断bcf t1con,tmr1on ;停止TMR1bcf pir1,tmr1if ;清TMR1中断标志位bcf enable ;按键松开,清enableswapf status_temp,wmovwf statusswapf ww_temp,fswapf ww_temp,wreturn;--------------------------------------------------;读出引导地址单元(00H)内容main movlw index ;送引导地址中转movwf ee_addrcall ee_data_rd ;调用读EEPROM程序movf ee_data,w ;读出引导地址内容movwf index_reg ;保存引导地址内容movwf ee_addr ;送待读出内容地址call ee_data_rdmovf ee_data,wmovwf data_reg ;保存读出movf data_reg,waddlw jumper_tabmovwf pcljumper_tab goto start ;跳到开始0段goto seg1 ;跳到第1段goto seg2 ;跳到第2段goto seg3 ;跳到第3段goto seg4 ;跳到第4段goto seg5 ;跳到第5段goto seg6 ;跳到第6段goto seg7 ;跳到第7段goto seg8 ;跳到第8段;------------------------------------------------如下略....;-----------------------------------------------;;解码程序;;---------------------------------------------------------; A0 | A1 | 说明;-----+-----+------------------; 30H | 32H | 接收的8位地址编码;-----+-----+------------------; 31H | 33H | 接收的8位数据编码;-----+-----+------------------; 36H | 37H | 设定的8位地址密码;------------------------------;; A0_addr1 equ 30h; A0_addr2 equ 31h; A1_addr1 equ 32h; A1_addr2 equ 33h;;其中以30H,0和32H,0为例;悬空: 30H,0=1,32H,0=0;1: 30H,0=0,32H,0=0;0: 30H,0=1,32H,0=1;38H: 输出控制;---------------------------------------------------------;;解码子程序check_sw btfss rem ;rem为1,无接收到信号,返回goto remote0bcf go_next ;没按键,清0bcf reset ;没按键,清0bcf unlockremote_end return ;没有按键,反回;--------------------------------------------------------remote0 btfss enable ;rem为0,但enable为1,按键没放开,返回goto incept ;接收16位编码;重新设定TMR1bcf t1con,tmr1on ;停止TMR1clrf tmr1h ;ffff为65.536mSclrf tmr1lbsf t1con,tmr1on ;重启动TMR1bcf reset ;按键没松开,解码取消,清0bcf go_next ;按键没松开,解码取消,清0bcf unlockgoto remote_end ;按键没有放开,返回;清除上次解码内容;接收16位编码;incept movlw .16movwf count;解码;先找出接收到的开头,即9mS左右的高电平;设置高电平时间为8~10mS;;检测和等待9mS的高电平;remote1 movlw .16movwf r5remote2 movlw .100movwf r6remote3 btfss remgoto remote1decfsz r6,fgoto remote3decfsz r5,fgoto remote2;等待在4.5mS内接收到的低电平movlw .8movwf r5remote4 movlw .100movwf r6;8mS到10mS内接收到下降沿,则跳去解码,否则返回remote5 btfss remgoto remote6decfsz r6,fgoto remote5decfsz r5,fgoto remote4;超出10mS,接收错误,返回bcf enablegoto remote_end;等待1200uS后,采集接收信号remote6 movlw .200movwf r5decfsz r5,fgoto $-1movlw .200movwf r5decfsz r5,fgoto $-1;采集接收信号,并记录btfss rem ;如果rem为1,则c置1,否则清0clrcbtfsc remsetc ;rem为1,c置1rlf A0_addr2,frlf A0_addr1,f;等待第二个下降沿;加入了限时判断,防止死循环。

用51单片机中断法解码pt2262无线遥控器.doc

用51单片机中断法解码pt2262无线遥控器.doc

用51单片机中断法解码pt2262无线遥控器/****************************************************************************************** pt2262解码软件修正版使用了位操作代替前版本的位寻址,使用三个字节变量存储获取的数据,便于以后将地址和数据进行操作增加了两次数据比对的功能,降低误码的干扰2007.8.24接受模块的信号输出端接INT0中断口。

P1.0,p1.1上接LED显示接受的情况。

用pt2262无线遥控器解码测试通过。

注意:使用的是4M的晶振以减少mcu对接受模块的干扰。

程序开发:运行平台:51hei单片机开发板+315m无线模块,用杜邦线连接.使用时可能要改变检测的特征值,视遥控的中心频率而定,可以通过pt2262上的电阻改变*******************************************************************************************/#include <reg52.h>unsigned int tmp,t1=0;unsigned char i9=0,t2;char *dataTMP;unsigned char dataTMP0,dataTMP1,dataTMP2,datacheck;unsigned char bdata oeCON;sbit UD0=oeCON^0;sbit UD1=oeCON^1;sbit OC0=oeCON^2;sbit OC1=oeCON^3;sbit p10=P1^0;sbit p11=P1^1;sbit p32=P3^2;bit flagF=1,press;void up_down();void open_close();void delay(unsigned char);void main(){ IT0=1;EX0=1;TMOD=0x09;EA=1;TR0=1;P3=0xff;UD0=1;UD1=0;OC0=1;OC1=0;while(1){ p10=p32;if(datacheck==0xff){/**********编码解析后执行代码******************************************/}}/*************************************************************中断服务程序通过探头flagF的值判断是否接收到sync信号接收到的数据存入dataTMP的三个变量中连续按键的确认:等待i9的值变为0;延时再次检测i9的值是否为0;是0则认为按键中止。

基于通用芯 片PT2262-PT2272的一对多双向信息传输的多功能控制系统设计

基于通用芯 片PT2262-PT2272的一对多双向信息传输的多功能控制系统设计

基于通用芯片PT2262/PT2272 的一对多双向信息传输
的多功能控制系统设计
PT2262/PT2272 是一种CMOS 工艺的低功耗低价位通用编解码电路,因具有抗干扰能力强,功耗低,外部元器件少,工作电压范围宽等特点,被广泛应用于车辆防盗系统、家庭防盗系统、玩具及其他电器遥控。

由于PT2262/PT2272 要求配对使用,即只有一对编解码芯片地址设置完全相同时,才能进行信息的接收实现遥控。

因此通常用在一对一单向控制场合。

难以实现一点对多点的控制及双向信息传递。

即使是采用软件解码也多是实现单向控制。

此处设计一种基于通用芯片PT2262/PT2272 的一对多双向信息传输的多功能控制系统。

1.系统结构
系统由一个控制中心和多个终端组成,每个终端设有一对地址相同的编
解码器。

不同终端以不同地址相区分。

每个终端均可接受由控制中心发来的指令,也可将终端状态上传给控制中心。

系统结构如
每个终端的编解码芯片由手动设置一组相同的地址。

经PT2262 编码的上传信息调制后发给控制中心,其中的地址信息供中心区分终端属性;由控制中心发来的带有地址信息的控制信号经解调后送给PT2272 解码,PT2272 接收到信号后,其地址码经过两次比较核对,只有与所设地址相同的信息,才能
够解码输出实现相应控制功能。

2.PT2262/2272 芯片的数据结构
PT2262 编码器能将数据和地址编译成代码的波形,最多可有12 位三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441 个地址码, PT2262 最多可有6 位数据端管脚,设定的地址码和数据码从17 脚串行输出。

12F629解PT2262的源程序

12F629解PT2262的源程序

#i nclude"p12f629.inc"#define B_LED gpio,0 ;绿LED输出端口#define G_LED gpio,1 ;蓝LED输出端口#define R_LED gpio,2 ;红LED输出端口#define rem gpio,3 ;GP3/MCLR,定义遥控输入端seg9因为当按住PT2262的按键不放的时候;PT2262会把编码不断的送出;设置ENABLE位用来检测按键有没有放开过,;如果没有放开则不再响应;用于遥控型#define enable user_reg,0 ;接收允许位#define on_off user_reg,1 ;该位为0时,按花样选择键无效#define go_next user_reg,2 ;该位为1时,跳下一段#define reset user_reg,3 ;该位为1时,关显示#define unlock user_reg,4 ;用于配合on_off位;---------------------------------------------------------;定义变量;r1 equ 20h ;用于d5ms子程序r2 equ 21h ;用于d5ms子程序r3 equ 22h ;用于d320mS子程序P_reg equ 23h ;正脉宽时间寄存器N_reg equ 24h ;负脉宽时间寄存器count1 equ 25h ;计数器1count2 equ 26h ;计数器2W_temp equ 27h ;W临时寄存器user_reg equ 28h ;用户寄存器ee_data equ 29h ;eeprom读写数据出入口ee_addr equ 2ah ;eeprom读写地址入口data_temp equ 2bh ;用于暂存从EEPROM读出的数所数据index_reg equ 2ch ;用于保存引导值data_reg equ 2dh ;用于保存从EEPROM读出的值A0_addr1 equ 30hA0_addr2 equ 31hA1_addr1 equ 32hA1_addr2 equ 33hr5 equ 34h ;用于解码延时r6 equ 35h ;用于解码延时addr_set1 equ 36h ;用于存储比较密码addr_set2 equ 37h ;用于存储比较密码output equ 38hcount equ 39h ;接收12位编码status_temp equ 3ah ;保存status的值,用于现场保护ww_temp equ 3bh ;W工作寄存器,用于现场保护用A0_data1 equ 3ch ;用于存储比较数据D8A0_data2 equ 3dh ;用于存储比较数据D8A1_data1 equ 3eh ;用于存储比较数据D11A1_data2 equ 3fh ;用于存储比较数据D11;-------------------------------------------;定义常数;index equ 00h ;EEData数据引导地址;--------------------------------------------------org 0000hcall init ;调用初始化程序goto main;--------------------------------------------------;中断处理入口;TMR1溢出中断,说明按键松开时间大于等于65.536mS左右org 0004hmovwf ww_temp ;保护现场swapf status,wmovwf status_tempbcf intcon,gie ;关所有中断bcf t1con,tmr1on ;停止TMR1bcf pir1,tmr1if ;清TMR1中断标志位bcf enable ;按键松开,清enableswapf status_temp,wmovwf statusswapf ww_temp,fswapf ww_temp,wreturn;--------------------------------------------------;读出引导地址单元(00H)内容main movlw index ;送引导地址中转movwf ee_addrcall ee_data_rd ;调用读EEPROM程序movf ee_data,w ;读出引导地址内容movwf index_reg ;保存引导地址内容movwf ee_addr ;送待读出内容地址call ee_data_rdmovf ee_data,wmovwf data_reg ;保存读出movf data_reg,waddlw jumper_tabmovwf pcljumper_tab goto start ;跳到开始0段goto seg1 ;跳到第1段goto seg2 ;跳到第2段goto seg3 ;跳到第3段goto seg4 ;跳到第4段goto seg5 ;跳到第5段goto seg6 ;跳到第6段goto seg7 ;跳到第7段goto seg8 ;跳到第8段;------------------------------------------------如下略....;-----------------------------------------------;;解码程序;;---------------------------------------------------------; A0 | A1 | 说明;-----+-----+------------------; 30H | 32H | 接收的8位地址编码;-----+-----+------------------; 31H | 33H | 接收的8位数据编码;-----+-----+------------------; 36H | 37H | 设定的8位地址密码;------------------------------;; A0_addr1 equ 30h; A0_addr2 equ 31h; A1_addr1 equ 32h; A1_addr2 equ 33h;;其中以30H,0和32H,0为例;悬空: 30H,0=1,32H,0=0;1: 30H,0=0,32H,0=0;0: 30H,0=1,32H,0=1;38H: 输出控制;---------------------------------------------------------;;解码子程序check_sw btfss rem ;rem为1,无接收到信号,返回goto remote0bcf go_next ;没按键,清0bcf reset ;没按键,清0bcf unlockremote_end return ;没有按键,反回;--------------------------------------------------------remote0 btfss enable ;rem为0,但enable为1,按键没放开,返回goto incept ;接收16位编码;重新设定TMR1bcf t1con,tmr1on ;停止TMR1clrf tmr1h ;ffff为65.536mSclrf tmr1lbsf t1con,tmr1on ;重启动TMR1bcf reset ;按键没松开,解码取消,清0bcf go_next ;按键没松开,解码取消,清0bcf unlockgoto remote_end ;按键没有放开,返回;清除上次解码内容;接收16位编码;incept movlw .16movwf count;解码;先找出接收到的开头,即9mS左右的高电平;设置高电平时间为8~10mS;;检测和等待9mS的高电平;remote1 movlw .16movwf r5remote2 movlw .100movwf r6remote3 btfss remgoto remote1decfsz r6,fgoto remote3decfsz r5,fgoto remote2;等待在4.5mS内接收到的低电平movlw .8movwf r5remote4 movlw .100movwf r6;8mS到10mS内接收到下降沿,则跳去解码,否则返回remote5 btfss remgoto remote6decfsz r6,fgoto remote5decfsz r5,fgoto remote4;超出10mS,接收错误,返回bcf enablegoto remote_end;等待1200uS后,采集接收信号remote6 movlw .200movwf r5decfsz r5,fgoto $-1movlw .200movwf r5decfsz r5,fgoto $-1;采集接收信号,并记录btfss rem ;如果rem为1,则c置1,否则清0clrcbtfsc remsetc ;rem为1,c置1rlf A0_addr2,frlf A0_addr1,f;等待第二个下降沿;加入了限时判断,防止死循环。

编码芯片pt22622272资料及应用电路

编码芯片pt22622272资料及应用电路

HX2262/2272一对遥控编、解码电路:一、描述:HX2262/2272 是一对遥控编、解码电路,该芯片组采用CMOS工艺。

把数据和管脚址通过编码形成串行码,用于RF或者IR模式应用。

HX2262有最多可达12比特的三态地址管脚,可提供531,441地址码,由此大大减低了任何错码和串码的可能性。

二、特征:*CMOS技术*低功耗*高信噪比*高达12个三态码地址管脚*可有6个数据管脚*宽工作电压范围:3~18V*锁存或瞬时输出*DIP封装*RC振荡器三、应用*轿车保安系统*居家保安/自动化系统*车库门控制器*电扇遥控*玩具遥控*工业遥控用。

四、管脚功能表五、极限参数六、电气参数(除非特殊说明,Tamp=25℃,VDD=12.0V)七、外形图及测试应用图HX2262HX2272遥控解码电路一、描述:HX2272 / 2262 是一对遥控编、解码电路。

该芯片组采用CMOS工艺。

把数据和管脚址通过编码形成串行码,用于RF或者IR模式应用。

HX2272有最多可达12比特的三态地址管脚,可提供531,441地址码,由此大大减低了任何错码和串码的可能性。

同时HX2272对应不同的应用可有不同的选择:多种数据输出管脚组;锁存输出;瞬间输出。

二、特征:*CMOS技术*低功耗*高信噪比*高达12个三态码地址管脚*可有6个数据管脚*宽工作电压范围:3~18V*锁存或瞬时输出*DIP封装*RC振荡器三、应用*轿车保安系统*居家保安/自动化系统*车库门控制器*电扇遥控*居家保安/自动化系统*玩具遥控*工业遥控用四、管脚功能表五、极限参数(Templ=25℃)六、电气参数(除非特殊说明,Temp=25℃,Vcc=100)七、外形图及测试应用图。

单片机对PT2262的编码信号进行解码

单片机对PT2262的编码信号进行解码

单片机对PT2262的编码信号进行解码/************************************************* 文件名:Decode.c******* 描述:对PT2262 的编码信号进行解码PT2262 的输出信号经三极管反向后送入单片机的中断引脚******* 代码:A0 -- A11 中的每bit 用2bit 表示:0 码:00 ;1 码:11******* 原创安全:51hei/******* 备注:PT2262 输出数据的顺序:A0 A1 -- A10 A11+同步码+A0 A1 -- A10 A11+同步码,连续发四次*******************************************/#includereg51.h//51 系列头文件#includeintrins.h//方便调用_nop_();做延时用;unsigned char Receive[3] ; //解码缓冲区:Receive[0]:A0 A1 A2 A3 ; Recdive[1]:A4 A5 A6 A7 ; Receive[2]: D3 D2 D1 D0//Recdive[x]:xx xx xx xx 代表4bitbit flag = 0 ;//解码完成标志位sbit RemPin = P3 ; //编码信号输入脚/******************************************************函数名:INT0_ISR( )描述: 外部中断0 服务函数,实现对PT2262 的解码参数:输入参数:无输出参数:无*******************************************************/voidINT0_ISR(void) interrupt 0 using 1{unsigned char i = 0 ;unsigned char j = 0 ;unsigned int temp = 0x0000;//EA = 0 ;TH0 = 0 ;TL0 = 0 ;while( !RemPin);//等待高电平的到来,检测同步头TR0 = 1 ;//启动定时器0,开始测量高电平的宽度while( RemPin) {if( TF0 == 1 ) {goto RemExit; //定时器超时溢出则退出}}TR0 = 0 ;temp = TH0 ;temp = temp 8 ;temp = temp + TL0 ;//取得高电平的宽度if( ( 0x36B0 temp ) ( temp 0x4100) ) //检测到同步头{ for( j = 0 ; j 3 ; j ++) //循环3 次{ for( i = 0 ; i 8; i ++ ){TH0 = 0 ;TL0 = 0 ;while( !RemPin);//等待高电。

PT2262--SC2262--PT2272等的电阻配置及使用参数编码解码电路

PT2262--SC2262--PT2272等的电阻配置及使用参数编码解码电路

PT2262--SC2262--PT2272等的电阻配置与使用参数<编码解码电路>2008-08-30 22:32编码解码芯片PT2262/PT2272芯片原理简介PT2262/2272是某某普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位<A0-A11>三态地址端管脚<悬空,接高电平,接低电平>,任意组合可提供531441地址码,PT2262最多可有6位<D0-D5>数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路. 编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比拟核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射.当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控〔ASK调制〕相当于调制度为100%的调幅. PT2262特点1、CMOS工艺制造,低功耗2、外部元器件少3、RC振荡电阻4、工作电压X围宽:2.6-15v 5、数据最多可达6位6、地址码最多可达531441种应用X围1、车辆防盗系统 2、家庭防盗系统3、遥控玩具4、其他电器遥控引脚图管脚说明名称管脚说明A0-A11 1-8、10-13 地址管脚,用于进展地址编码,可置为"0〞,"1〞,"f〞<悬空>D0-D5 7-8、10-13 数据输入端,有一个为"1〞即有编码发出,内部下拉Vcc 18 电源正端〔+〕Vss 9 电源负端〔-〕TE 14 编码启动端,用于多数据的编码发射,低电平有效;OSC1 16 振荡电阻输入端,与OSC2所接电阻决定振荡频率;OSC2 15 振荡电阻振荡器输出端;Dout 17 编码输出端〔正常时为低电平〕频率越慢,编码的宽度越大,发码一帧的时间越长.解码电路PT2272引脚图名 称 管 脚 说 明A0-A11 1-8、10-13 地址管脚,用于进展地址编码,可置为"0〞,"1〞,"f 〞<悬空>,必须与2262一致,否如此不解码D0-D5 7-8、10-13 地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致,数据管脚才能输出与2262数据端对应的高电平,否如此输出为低电平,锁存型只有在接收到下一数据才能转换Vcc 18电源正端〔+〕 Vss 9电源负端〔-〕 Din 14数据信号输入端,来自接收模块输出端 OSC116 振荡电阻输入端,与OSC2所接电阻决定振荡频率;OSC2 15 振荡电阻振荡器输出端;VT 17 解码有效确认输出端〔常低〕解码有效变成高电平〔瞬态〕地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示"0〞;两个宽脉冲表示"1〞;一个窄脉冲和一个宽脉冲表示"F〞也就是地址码的"悬空〞.上面是我们从超再生接收模块信号输出脚上截获的一段波形,可以明显看到,图上半局部是一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进展脉冲宽度识别即可.图下局部是放大的一组字码:一个字码由12位AD码〔地址码加数据码,比如8位地址码加4位数据码〕组成,每个AD位用两个脉冲来代表:两个窄脉冲表示"0〞;两个宽脉冲表示"1〞;一个窄脉冲和一个宽脉冲表示"F〞也就是地址码的"悬空〞2262每次发射时至少发射4组字码,2272只有在连续两次检测到一样的地址码加数据码才会把数据码中的"1〞驱动相应的数据输出端为高电平和驱动VT端同步为高电平.因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理.PT2272解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6之分,其中L表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变.M表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制.后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时〔PT2272-M4>,对应的地址编码应该是8位,如果采用6路的并行数据时<PT2272-M6>,对应的地址编码应该是6位.PT2262/2272芯片的地址编码设定和修改在通常使用中,我们一般采用8位地址码和4位数据码,这时编码电路PT2262和解码PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全一样,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的PT2262和PT2272的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,只要将PT2262和PT2272的1~8脚设置一样即可,例如将发射机的PT2262的第1脚接地第5脚接正电源,其它引脚悬空,那么接收机的PT2272只要也第1脚接地第5脚接正电源,其它引脚悬空就能实现配对接收.当两者地址编码完全一致时,接收机对应的D1~D4端输出约4V互锁高电平控制信号,同时VT端也输出解码有效高电平信号.用户可将信号加一级放大,便可驱动继电器、功率三极管等进展负载遥控开关操纵. 我们提供的遥控类产品上都预留地址编码区,采用焊锡搭焊的方式来选择:悬空、接正电源、接地三种状态,出厂是一般都悬空,便于客户自己修改地址码.这里我们以常用的超再生插针式接收板的跳线区为例:网友可以看到,跳线区是由三排焊盘组成,中间的8个焊盘是PT2272解码芯片的第1~8脚,最左边有1字样的是芯片的第一脚,最上面的一排焊盘上标有L字样,表示和电源地连同,如果用万用表测量会发现和PT2272的第9脚连同;最下面的一排焊盘上标有H字样,表示和正电源连同,如果用万用表测量会发现和PT2272的第18脚连同.所谓的设置地址码就是用焊锡将上下相邻的焊盘用焊锡桥搭短路起来,例如将第一脚和上面的焊盘L用焊锡短路后就相当于将PT2272芯片的第一脚设置为接地,同理将第一脚和下面的焊盘H用焊锡短路后就相当于将PT2272芯片的第一脚设置为接正电源,如果都不接就是表示悬空.设置地址码的原如此是:同一个系统地址码必须一致;不同的系统可以依靠不同的地址码加以区分.至于设置样的地址码完全随客户喜欢.振荡电阻: PT2262和PT2272除地址编码必须完全一致外,振荡电阻还必须匹配,否如此接收距离会变近甚至无法接收,随着技术的开展市场上出现一批兼容芯片,在实际使用中只要对振荡电。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最精尖的PT2262解码程序与大家共享/bbs/forum.php?mod=viewthread&tid=481
#include <iom8v.h>
#include <macros.h>
void delay_ms(void) //毫秒延时{
unsigned int i;
for (i=0;i<140;i++)
{
}
}
void delay_nms(unsigned int n) //延时周期{
unsigned int i;
for (i=0;i<n;i++)
{
delay_ms();
}
}
void spaz(void) //响蜂鸣器{
PORTC|=(1<<5);
delay_nms(50);
PORTC&=~(1<<5); }
unsigned long decode(void) //无线解码{
unsigned long DATA; //记录数据 unsigned char count,i; //暂时计数
/*一共接收三字节*/
DATA=0; //
for (count=0;count<24;count++) //开始收集 {
/*测量高电平宽度*/
i=0; //宽度计数 while (PINC&(1<<4)) //高位计数
{
asm("nop"); //
i++; //计数增加
if (i>192) goto end; //限时解码
}
/*分辨出电平高低*/
DATA*=2; //数据左移
if (i<64) //分辨高低
{
if (!((56>i)&(i>24))) goto end; //电平合法 DATA+=0; //记低电平 }
else
{
if (!((168>i)&(i>72))) goto end; //电平合法 DATA+=1; //记高电平 }
/*测量低电平宽度*/
while (!(PINC&(1<<4))) //低位计数 {
asm("nop"); //
i++; //计数增加
if (i>224) goto end; //限时解码
}
/*低电平是否过窄*/
if (i<96) goto end; //对比宽度 }
/*解码成功返结果*/
return DATA; //成功返回
/*有误码结束解码*/
end:
return 0; //误码结束}
void main(void)
{
unsigned long DATA; //
unsigned char D[3]; //
signed char i; //
DDRB =0B00000000; //定义输入
PORTB=0B11111111; //上拉使能
DDRC =0B11101111; //输入通道
PORTC=0B11011111; //上拉选择
DDRD =0B11111111; //定义输出
PORTD=0B00000000; //输出显示
while (1)
{
DATA =decode(); //解码程序
if (DATA>0) //
{
spaz(); //解码成功
for (i=2;i>=0;i--) //数据转换
{
D[i]=DATA; //
DATA>>=8; //
}
i=0; //转换完毕
while (1) //输出显示
{
if (!(PINB&(1<<0))) //按键检查
{
delay_nms(20); //防误处理 if (!(PINB&(1<<0))) //
{
i++; //显示值加 spaz();
}
while (!(PINB&(1<<0))) //按键弹起 {
delay_nms(20); //防误处理
}
}
if (i>2) break; //
PORTD=D[i]; //输出显示 }
}
}
}。

相关文档
最新文档