您的当前位置:首页正文

无线数字收发模块PT2272和PT2262

2021-12-15 来源:欧得旅游网
无线数字收/发模块PT2272和PT2262

实验目的:

学习无线数字收/发模块的使用方法。 实验要求:

掌握无线数字收/发模块典型接口电路设计方法。 掌握无线数字收/发模块编程控制方法。 实验原理:

无线数字接收模块PT2272的接收中断控制。 芯片简介:

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

编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡。

PT2262/PT2272特点: 1.CMOS工艺制造,低功耗 2.外部元器件少 3.RC振荡电阻

4.工作电压范围宽:2.6-15v 5.数据最多可达6位

6.地址码最多可达531441种 PT2262/PT2272应用范围:

1.车辆防盗系统 2.家庭防盗系统 3.遥控玩具

4.其他电器遥控 PT2262引脚图:

PT2262管脚说明 :

PT2272引脚图:

PT2272管脚说明 :

接收模块芯片选型 :

PT2272解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6之分,其中L表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。M表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制。后缀的6和4表示有几路并行的控制通道,当采用4路并行数据时(PT2272-M4),对应的地址编码应该是8位,如果采用6路的并行数据时(PT2272-M6),对应的地址编码应该是6位。

在通常使用中,我们一般采用8位地址码和4位数据码,这时编码电路PT2262和解码PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的PT2262和PT2272的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,只要将PT2262和PT2272的1~8脚设置相同即可。

实验内容:

(一)摇控器电路原理图(发送模块)

图9.1

(二)主控器接收与显示控制(接收模块)

图9.2 显示电路

图9.3 接收电路(接收模块输出)

图9.4 接收电路(RB口电平变化中断输入)

图9.5 主控器电路原理图

(三)程序参考PIC单片机“INT中断”和“RB口电平变化中断”编写 1.“INT中断” 1)电路原理图

图9.6 “INT中断”仿真电路

2)参考程序

#include

__CONFIG(XT & LVPDIS & WDTDIS);

#define bitset(var,bitno)(var |=1<const unsigned char table[]={0x3F,0x06,0x5B,0x4F,

0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,

0x39,0x5E,0x79,0x71}; and a~f int i=1;

void interrupt rb0int(void) {

if(i<16) {

PORTC=table[i++]; } else { i=0;

PORTC=table[i++]; }

INTF=0;

//0~9

}

main() {

TRISC=0x00;

bitset(TRISB,0); PORTC=0x3F;

INTEDG=1; //INTEDG=0 下降沿;1 上升沿; GIE=1; INTE=1; INTF=0; while(1); }

2.“RB口电平变化中断” 1)电路原理图

图9.7 “RB口电平变化中断”仿真电路

2)参考程序

#include

__CONFIG(XT & LVPDIS & WDTDIS);

#define bitset(var,bitno)(var |=1<void pause(int num) {

while(num--) //do

nothing { } }

void interrupt rb0int(void)//只要有中断发生就一定有按键按下 {

pause(5000);

//为了消除按键抖动,可加入适当延时

if((RB7==0)||(RB6==0)||(RB5==0)||(RB4==0)) //因为按下与松开时都产生了电平变化,因此若不加此语句就会产生两次中断(按下与松开)

//并且每次运行都会产生一次错误中断

//若加上此语句,下面的PORTB=PORTB语句可省去 {

unsigned char tmp; tmp=PORTB&0xF0; switch(tmp) {

case 0xE0:

PORTC=0x3F;break; case 0xD0:

PORTC=0x06;break; case 0xB0:

PORTC=0x5B;break; case 0x70:

PORTC=0x4F;break; default:

PORTC=0x40; }

RD0?bitclr(PORTD,0):bitset(PORTD,0);//RD0=!RD0; i--; }

PORTB=PORTB;

//若不加此语句与上面if语句,会不停引发中断;

//若添加此语句,但不添加上面if语句,会引一次错误中断, //且每按一次按键会引发两次中断(按下与松开)) RBIF=0;

//若不清标志位,即RBIF=1,那么当按键松开时(有电平变化)

//可能再次引发中断(可能引发多次错误中断) }

main() {

TRISB=0xF0; TRISC=0x00;

bitclr(TRISD,0);

bitset(PORTD,0); //使小灯亮 RBPU=0; GIE=1;

PORTB=0x00; RBIE=1;

RBIF=1; while(1); }

(四)程序参考(无线数字收/发) #include

__CONFIG(XT & LVPDIS & WDTDIS & BORDIS);

#define bitset(var,bitno)(var |=1<#define SDIN RA4 #define CLK RE1 #define CLR RE2 #define SPK RE0

void send(unsigned char data); void pause(int num); void clk(); void spk();

unsigned char off_var=4,flg=0; void pause(int num) {

while(num--) //do nothing {

} }

void clk() //available L to H {

CLK=0; NOP(); NOP(); CLK=1; NOP(); NOP(); } void clr() //available {

CLR=0; NOP(); NOP(); CLR=1; }

void send(unsigned char data) {

testbit(data, 7)?SDIN=1:SDIN=0; clk();

testbit(data, 6)?SDIN=1:SDIN=0; clk();

testbit(data, 5)?SDIN=1:SDIN=0; clk();

testbit(data, 4)?SDIN=1:SDIN=0; clk();

testbit(data, 3)?SDIN=1:SDIN=0; clk();

testbit(data, 2)?SDIN=1:SDIN=0; clk();

testbit(data, 1)?SDIN=1:SDIN=0; clk();

testbit(data, 0)?SDIN=1:SDIN=0; clk(); }

void spk()

L to H {

RE0=1;

pause(10000); RE0=0; }

void interrupt picint(void) //只要有中断发生就一定有按键按下 {

unsigned char tmp; if(INTF==1) {

tmp=PORTA&0x0F; if(tmp!=0x0F) {

switch(tmp) {

case 0x01:

spk();pause(1000);off_var=0;break; case 0x02:

spk();pause(1000);spk();pause(1000);off_var=1;break; case 0x04:

spk();pause(1000);spk();pause(1000);

spk();pause(1000);off_var=2;break; case 0x08:

spk();pause(1000);spk();pause(1000);

spk();pause(1000);spk();pause(1000); off_var=3;break; default:

spk();pause(5000);spk();pause(5000);

spk();pause(5000); } }

flg=1; INTF=0; }

if(RBIF==1) {

if((RB7==0)||(RB6==0)||(RB5==0)||(RB4==0))

{

tmp=PORTB&0xF0; switch(tmp) {

case 0xE0:

spk();pause(1000);off_var=0;break; case 0xD0:

spk();pause(1000);spk();pause(1000);off_var=1;break; case 0xB0:

spk();pause(1000);spk();pause(1000);

spk();pause(1000);off_var=2;break; case 0x70:

spk();pause(1000);spk();pause(1000);

spk();pause(1000);spk();pause(1000); off_var=3;break; default:

spk();pause(5000);spk();pause(5000);

spk();pause(5000); } }

PORTB=PORTB; flg=1;

RBIF=0; } }

main() {

TRISB=0xF1; TRISA=0x0F; TRISE=0x00; ADCON1=0x06; RBPU=0; GIE=1;

PORTB=0x00; RBIE=1; INTE=1; INTF=0; RBIF=0;

clr(); while(1) {

if(flg==1) {

switch(off_var) {

case 0:

send(0x3F);break; case 1:

send(0x06);break; case 2:

send(0x5B);break; case 3:

send(0x4F);break; default:

send(0x40); }

flg=0; } } }

因篇幅问题不能全部显示,请点此查看更多更全内容