MCU學習——無線遙控模組

此使用者已經存在發表於2017-03-18

MCU學習

無線遙控模組


PT2262/PT2272簡介

PT2262/PT2272是臺灣普城公司生產的一種CMOS工藝製造的低功耗低價位榮勇編解碼電路。PT2262/PT2272最多有12位(A0-A11)三態地址段管教(懸空,接高電平,接地電平)任意組合可提供531441地址碼,PT2262最多可有6位(D0-D5)資料端管腳,設定的地址碼和資料嗎從17腳序列輸出,可用於無線遙控發射電路。

編碼晶片PT2262發出的編碼訊號有:地址碼、資料碼、同步碼組成一個完整的碼字。

解碼晶片PT2272接受到訊號後,其地址碼經過兩次比較核對後,VT腳才輸出高電平,與此同時相應的資料腳也輸出高電平,如果傳送端一直按住按鍵,編碼晶片也會連續發射。當發射機沒有按鍵按下時,PT2262不接通電源,其17腳為低電平,所以315MHz的高頻發射電路不工作,當有按鍵按下時,PT2262得電工作。其第17引腳經調製的序列資料訊號,當17 腳為低平期間315MHz 的高頻發射電路停止振盪,所以高頻發射電路完全收控於PT2262 的17 腳輸出的數字訊號,從而對高頻電路完成幅度鍵控(ASK 調製)相當於調製度為100%的調幅。


外形圖


管腳說明:

A0-A11:

地址管腳,可用於進行地址編碼,可以置為0 1 f。

D0-D5

資料輸入端,有一個為“1”,即有編碼發出,內部下拉。

Vcc:

電源正端

Vss:

電源負端

TE:

編碼啟動端,用於多資料的編碼發射,低電平有效

OSC1:

振盪電阻輸入端,與OSC2所接電阻決定振盪頻率。

OSC2:

振盪電阻振盪器輸出端

Dout:

編碼輸出端

解碼電路PT2272電路引腳圖


引腳說明:

A0-A11:

地址管腳,用於進行地址編碼,可以置為0 1 f,必須與2262一致,否則不解碼

D0-D5:

地址或資料管腳,當作為資料管腳時,只有在地址碼與2262一致,資料管腳才能輸出與2262資料端對應的高電平,否則輸出為低電平,鎖存型只有在接受到下一資料才能轉換。

Vcc:

電源正極

Vss:

電源負極

DIN:

資料訊號輸入端,來自接收模組輸出端

OSC1:

震盪短租輸入端,與OSC2所接電阻決定振盪頻率

OSC2:

震盪短租振盪器輸出端

VT:

解碼有效確認,輸出端解碼有效程式設計高電平


在通常使用中,我們一般採用 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 端也輸出解碼有效高電平訊號。使用者可將這些訊號加一級放大,便可驅動繼電器、功率三極體等進行負載遙控開關操縱。

程式:

#沒按一個按鍵,在數碼管上對應顯示a,b,c,d


#include "reg52.h"
#include <intrins.h>
#define uchar unsigned char 
#define uint unsigned int 
uchar i,j;
sbit P2_7=P2^7;
sbit fmq=P3^6;
sbit P3_7=P3^7;
sbit D0=P3^5;//4位資料碼分別由P35,P34,P33,P32 控制
sbit D1=P3^4;
sbit D2=P3^3;
sbit D3=P3^2;
void delay1ms(unsigned int i)
{
unsigned char j;
 while(i--)
 {
 for(j=0;j<115;j++)  //1ms基準延時程式 
 {
  ;
 }
 
void delay500us()
{

unsigned char j;
 for(j=0;j<57;j++)  //500us基準延時程式 
  {
  ;
 
}

void beep() //產生1KHZ頻率聲音的函式
{
  fmq=0;
delay500us();
fmq=1;
delay500us();
}
void beep1()
{
uint k;
for(k=0;k<500;k++)
{
beep();
}
fmq=1;
delay1ms(500);

}


void main(void)
{
P2_7=0;//開數碼管顯示 選通左右側的數碼管
P0=0xc0; //初始顯示數字0
P3=0xff; //P3口設定為輸入狀態首先全部寫1 

 while(1){
//i=i&0x0f; //和0x0f相u與 遮蔽高四位,讀取無線遙控碼

if (D0==1)//如果是0x04,則代表無線遙控器的按鍵A按下,執行顯示 0000 0100
{
P0=0x88; //字母A的字型碼
beep1();
}
if (D1==1)//如果是0x01,則代表無線遙控器的按鍵b按下,執行顯示  0000 0001
{
P0=0x83;//字母b的字型碼
 fmq=1;
}
if (D2==1)//如果是0x08,則代表無線遙控器的按鍵C按下,執行顯示   0000 1000

P0=0xc6;//字母C的字型碼   
 P3_7=0;//繼電器吸合
}
if (D3==1)//如果是0x02,則代表無線遙控器的按鍵d按下,執行顯示  0000 0010
{
P0=0xa1;//字母d的字型碼
  P3_7=1; //繼電器釋放
}
 }
}


相關文章