




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)模擬PT2262編碼,軟件模擬PT2262發(fā)射發(fā)布者:aoyux 發(fā)布時(shí)間:2010-8-27 8:08:12 閱讀:3次 在無線遙控領(lǐng)域, PT2262/2272 是目前最常用的芯片之一,但由于芯片要求配對(duì)使用,在很大程度上影響了該芯片的使用,我們從 PT2262 波形特征入手,結(jié)合應(yīng)用實(shí)際,提出軟件解碼/編碼的方法和具體措施。 關(guān)鍵詞 PT2262 軟件解碼/編碼 一、概述 PT2262/2272 是一種 CMOS 工藝制造的低功耗低價(jià)位通用編解碼電路,是目前在無線通訊電路中作地址
2、編碼識(shí)別最常用的芯片之一。 PT2262/2272 最多可有 12 位 (A0-A11) 三態(tài)地址端管腳 ( 懸空 , 接高電平 , 接低電平 ), 任意組合可提供 531441 地址碼 ,PT2262 最多可有 6 位 (D0-D5) 數(shù)據(jù)端管腳 , 設(shè)定的地址碼和數(shù)據(jù)碼從 17 腳串行輸出。 PT2262/2272 必須用相同地址碼配對(duì)使用,當(dāng)需要增加一個(gè)通訊機(jī)時(shí),用戶不得不求助于技術(shù)人員或廠家來設(shè)置相同地址碼,客戶自己設(shè)置相對(duì)比較麻煩,尤其對(duì)不懂電子的人來說。隨著人們對(duì)操作的要求越來越高, PT2262/2272 的這種配對(duì)使用嚴(yán)重制約著使用的方便性,人們不斷地要求使用一種無須請(qǐng)教專業(yè)人
3、士,無須使用特殊工具,任何人都可以操作的方便的手段來彌補(bǔ) PT2262/2272 的缺陷,這就是 PT2262 軟件解碼/編碼。 二、解碼/編碼 原理 振蕩頻率 f=2*1000*16/Rosc(k ) kHz 其中 Rosc 為振蕩電阻 這里我們選用的是一種比較常用的頻率 f 10 kHz, Rosc=3.3M (以下同)。 下圖是振蕩頻率與碼位波形的對(duì)應(yīng)關(guān)系: PT2262 有三種
4、編碼: 0 , 1 ,和懸空 ( 表示為 f) 。 有了以上具體的波形,我們就可以進(jìn)行軟件編碼了。PT2262每次至少發(fā)送4次編碼,首先我們把地址碼+數(shù)據(jù)碼+11ms寬度的同步碼頭發(fā)射出去,作個(gè)循環(huán)4次后結(jié)束。 三、軟件模擬PT2262發(fā)射! C語(yǔ)言程序:/*奧宇星電子單片機(jī)工作室 Copyright 2009 aoyux McuStudioAll rights Reserved作者:周洵名 QQ:491069539 電話:135289136
5、15STC12C5406AD 晶振頻率為12MHz 本程序已調(diào)試完成:功能說明:軟件模擬PT2262發(fā)射*/AT89S51 軟件模擬PT2262發(fā)射/PT2262PT2272配對(duì)使用,/被廣泛用用于遙控開關(guān)、摩托報(bào)警器.門禁系統(tǒng)的尋址.遙控玩具.等領(lǐng)域/其最大缺點(diǎn):容易破解,控制不靈活,可控性差等缺點(diǎn)/發(fā)射端采用單片機(jī)模擬PT2262編碼,/接收端采用單片機(jī)模擬PT2272解碼,/靈活性,可控性大幅度提高,我們可以在程序里加入:加密算法、滾動(dòng)編碼算法、非常規(guī)編碼等方法提高保密性。/該方案目前在我司的、門禁對(duì)講系統(tǒng)上尋址、摩托報(bào)警器、遙控開關(guān)等產(chǎn)品上,取得了非常好的效果!/#include &q
6、uot;stc12c5410ad.h"/頭文件/#include "reg52.h"/頭文件#include "intrins.h"/頭文件#define uchar unsigned char/宏定義#define uint unsigned int/宏定義sbit REM=P17;/遙控器信號(hào)輸出,(數(shù)據(jù)輸出)sbit key_a=P10;sbit key_b=P11;sbit key_c=P12;sbit key_d=P13;uchar TH1_12a=0xff;/12auchar TL1_12a=0x58;/12auchar TH1_4
7、a=0xff;/4auchar TL1_4a=0xc8;/4auchar Temporary3;/暫存單元void init()/初始化P1M0=0x0f;/P1M1=0x10;REM=0;TMOD=0x10;/定時(shí)器T1工作于方式1,16位計(jì)數(shù)器TH1=0x00;TL1=0x00;EA=1;/開總中斷允許ET1=1;/開定時(shí)器T1允許控制/PT1=1;/開定時(shí)器T1中斷為最高優(yōu)先級(jí)TR1=0;/T1開始運(yùn)行void delay(uint z) uchar x,x1;for(;z>0;z-)for(x=0;x<114;x+)for(x1=0;x1<1;x1+); void T
8、imer1() interrupt 3/TR1TR1=0;void bit_1()/1REM=1;TH1=TH1_12a;/12aTL1=TL1_12a;/12aTR1=1; while(TR1);/高電平 $REM=0;TH1=TH1_4a;/4aTL1=TL1_4a;/4aTR1=1; while(TR1);/低電平 $REM=1;TH1=TH1_12a;/12aTL1=TL1_12a;/12aTR1=1; while(TR1);/高電平 $REM=0;TH1=TH1_4a;/4aTL1=TL1_4a;/4aTR1=1; while(TR1);/低電平 $void bit_0()/0REM
9、=1;TH1=TH1_4a;/4aTL1=TL1_4a;/4aTR1=1; while(TR1);/高電平 $REM=0;TH1=TH1_12a;/12aTL1=TL1_12a;/12aTR1=1; while(TR1);/低電平 $REM=1;TH1=TH1_4a;/4aTL1=TL1_4a;/4aTR1=1; while(TR1);/高電平 $REM=0;TH1=TH1_12a;/12aTL1=TL1_12a;/12aTR1=1; while(TR1);/低電平 $void bit_f()/f /10REM=1;TH1=TH1_4a;/12aTL1=TL1_4a;/12aTR1=1; wh
10、ile(TR1);/高電平 $REM=0;TH1=TH1_12a;/12aTL1=TL1_12a;/12aTR1=1; while(TR1);/低電平 $REM=1;TH1=TH1_12a;/4aTL1=TL1_12a;/4aTR1=1; while(TR1);/高電平 $REM=0;TH1=TH1_4a;/4aTL1=TL1_4a;/4aTR1=1; while(TR1);/低電平 $void chu_li() uchar temp,tab,i;uchar b; for(b=0;b<4;b+)temp=Temporary0;tab=Temporary0;for(i=0;i<4;i
11、+) temp=tab;temp&=0xc0;if(temp=0xc0)/11bit_1();else if(temp=0x00)/00bit_0();else /if(temp=0x40)/01bit_f();tab=tab<<2;temp=Temporary1;tab=Temporary1;for(i=4;i<8;i+) temp=tab;temp&=0xc0;if(temp=0xc0)/11bit_1();else if(temp=0x00)/00bit_0();else /if(temp=0x40)/01bit_f();tab=tab<<2
12、;temp=Temporary2;tab=Temporary2;for(i=8;i<12;i+) temp=tab;temp&=0xc0;if(temp=0xc0)/11bit_1();else if(temp=0x00)/00bit_0();else /if(temp=0x40)/01bit_f();tab=tab<<2;void main()/uchar b;/uchar temp,tab; init();Temporary0=0x55;/地址 01010101Temporary1=0x55;/地址 01010101/Temporary2=0xff;/待發(fā)送的數(shù)據(jù)
13、while(1)if(key_a)delay(20);while(key_a)Temporary2=0xc0;/待發(fā)送的數(shù)據(jù)chu_li();delay(20);else if(key_b)delay(20);while(key_b)Temporary2=0x30;/待發(fā)送的數(shù)據(jù)chu_li(); delay(20);else if(key_c)delay(20);while(key_c)Temporary2=0x0c;/待發(fā)送的數(shù)據(jù)chu_li(); delay(20);else if(key_d)delay(20);while(key_d)Temporary2=0x03;/待發(fā)送的數(shù)據(jù)ch
14、u_li(); delay(20); 在仿真軟件 proteus 里 仿真的波形圖:四、結(jié)束語(yǔ) 用單片機(jī)模擬PT2262的軟件編碼在實(shí)際應(yīng)用中有較好的用武之地。采用軟件編碼的系統(tǒng),廠家再也無須對(duì)收發(fā)設(shè)備進(jìn)行配套,以利于生產(chǎn)于保管;對(duì)客戶來說,使用軟件編碼無須求助,廠家只須在軟件中加入自動(dòng)編碼功能,用戶可自行使用該功能;在程序里自動(dòng)編寫地址,把數(shù)據(jù)保存在AT24C02里,廠家生產(chǎn)遙控器時(shí)就再也無須一一配對(duì)編好地址了,而是在出廠前,讓其自動(dòng)編號(hào)地址即可。用單片機(jī)代替PT2272解碼PT2262的程序 轉(zhuǎn)載用單片機(jī)代替PT2272解碼PT2262的程序 * 用單片機(jī)代替PT2272解碼PT2262的
15、程序 *晶振: 12MHz開始時(shí)間: 2004-10-12 21:20最后修改: 2004-10-12 21:23* 說 明 *接收到的信號(hào)為發(fā)送信號(hào)的反碼因?yàn)槊繖z測(cè)到按鍵有效一次PT2262 都發(fā)送四次編碼我們可以利用這一特點(diǎn)來解碼先檢測(cè)有沒有接收到信息當(dāng)有的時(shí)候我們就去掉第一次編碼的信號(hào)檢測(cè)5ms 的高電平來檢測(cè)編碼的開始信號(hào)接收到5ms 的高電平后才開始解碼我們可以發(fā)現(xiàn)每個(gè)碼的長(zhǎng)度都是1.2ms左右每一個(gè)編碼都是由低電平開始然后到高電平又到低電平又回到高電平我們從第一個(gè)高電平的寬度可以把1 碼區(qū)分出來剩下的懸空碼和0 碼可以從第二個(gè)高電平的寬度區(qū)分出來具體的單片機(jī)譯碼方法如下由高電平開始
16、檢測(cè)到下降沿時(shí)就延時(shí)300us 讀取接收的狀態(tài)記為A0 然后再檢測(cè)下一個(gè)下降沿降沿后又延時(shí)300us 讀取接收的狀態(tài)記為A1 這樣就把一個(gè)編碼給譯出來了 帖子來自:電子技術(shù)家園論壇() 詳細(xì)出處請(qǐng)參考:目前,該軟件編碼已經(jīng)在我司生產(chǎn)的無線報(bào)警器,無線遙控開關(guān),摩托車報(bào)警器,等設(shè)備中采用,效果非常好。 A0 A1 和懸空1 碼0 碼的關(guān)系如下:A0 A1 代碼0 0 1 碼0 1 錯(cuò)誤1 0 懸空1 1 0 碼*/i nclude <STC516AD.H>#define uchar unsigned char#define uint unsigned int/定義共用體un
17、ionuint word;struct /結(jié)構(gòu)bytesuchar byte_addr;uchar byte_data;bytes;a_0,a_1;/位定義sbit W_REM =P33; /遙控接收輸入腳sbit LED0 =P10;sbit LED2 =P12;bit bdata recv_flg, /接收正確位標(biāo)志(1:正確 0:錯(cuò)誤)/因?yàn)楫?dāng)按住PT2262的按鍵不放的時(shí)候PT2262會(huì)把編碼不斷的送出/設(shè)置lianji_flg位用來檢測(cè)按鍵有沒有放開過如果沒有放開則不再響應(yīng)lianji_flg; /按鍵沒有放開過標(biāo)志(1:連接 0:點(diǎn)擊)uchar/ addr_a0, /接收的8位地
18、址編碼A0/ addr_a1, /接收的8位地址編碼A1/ data_a0, /接收的4位數(shù)據(jù)編碼A0/ data_a1, /接收的4位數(shù)據(jù)編碼A1addr_user_a0, /設(shè)定的8位地址密碼A0addr_user_a1; /設(shè)定的8位地址密碼A1/ led_out; /輸出控制/- sub functon -/- sub functon -/- sub functon -/- sub functon -/- sub functon -/>>>>>>>>>>>>>>>>>>>&
19、gt;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/void d1ms (uint ljh_
20、in) /*1mS延時(shí)函數(shù)*/ 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_();/ / /<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-&
21、lt;-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-</>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22、;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>void d50us(uchar n) /50uS延時(shí)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-) ;/延時(shí)2T+2T*i=(2i+2)T/&
23、lt;-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-</>>>>>>>>>>>>>>>>>>>
24、>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>PT2272_deco() /解碼uch
25、ar i,cnt;if(recv_flg) ;else /清除上次解碼內(nèi)容cnt =12; /接收12位編碼/解碼 -/先找出接收碼的開頭即5ms左右的高電平 -/設(shè)置高電平時(shí)間為46ms/檢測(cè)和等待4ms的高電平for(i=80;i;i-) /延時(shí)4mSif(!W_REM) i=80;else d50us(1);/等待在2ms內(nèi)接收到的低電平 -for(i=40;i;i-) /延時(shí)4mSif(!W_REM) break;else d50us(1);/4ms到6ms內(nèi)接收到下降沿則跳去解碼否則返回/超出6ms接收錯(cuò)誤返回if(i) recv_flg =0; /清按鍵沒有放開過標(biāo)志goto PT
26、2272_deco_exit; /返回 -/等待300us后采集接收信號(hào)d50us(6);/采集接收信號(hào)并記錄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數(shù)據(jù)/ MOV A,DATA_A0/ RLC A/ MOV DATA_A0,A /保存相應(yīng)位的A0/ MOV A,ADD_A0/ RLC A/ MOV ADD_A0,A /高位轉(zhuǎn)移/等待第二個(gè)下降沿while(!W_REM) ;while(W_REM) ;/ JNB W_REM,$/
27、 JB W_REM,$/等待300us后采集接收信號(hào)d50us(6);/ MOV 40H,#150 /2T/ DJNZ 40H,$ /2T 延時(shí):2T+2T*150=302Tif(W_REM) a_1.word |=0x01;a_1.word <<=1;/ MOV C,W_REM /讀A1數(shù)據(jù)/ MOV A,DATA_A1/ RLC A/ MOV DATA_A1,A /保存相應(yīng)位的A1/ MOV A,ADD_A1/ RLC A/ MOV ADD_A1,A /高位轉(zhuǎn)移/等待第二個(gè)碼值的下降沿while(!W_REM) ; /_wd_while(W_REM) LED2=LED2;/ J
28、NB W_REM,$/ JB W_REM,$/ DJNZ 34H,REMOTE6 /接收12 位編碼 -/把接收的編碼左移4位將8位密碼放在同一字節(jié)上-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位
29、的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位數(shù)據(jù)編碼由高4位移到低4位上 -/ MOV A,DATA_A0/ SWAP A/ MOV DATA_A0,A /把4位數(shù)據(jù)編碼A0由高4位移到低4位?/ MOV A,DATA_A1/ SWAP A/ MOV DATA_A1,A /把4位數(shù)據(jù)編碼A1由高4位移到低4位?/比較密碼 -if(a_0.bytes.byte_addr=addr_user_a0)&a
30、mp;&(a_1.bytes.byte_addr=addr_user_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 /密碼不正確則跳轉(zhuǎn)/ MOV A,ADD_A1/ XRL A,ADD_USER_A1/ JNZ REMOTE8 /密碼不正確則跳轉(zhuǎn)/ /置接收正確位 -/ SETB RECEIVE/ /置ENABLE 用于檢測(cè)按鍵有沒有放開 -/ SETB ENABLE/ RET /接收正確返回 -/REMOTE8:/
31、 CLR ENABLE/ CLR RECEIVE/ RET /接收不正確返回 -PT2272_deco_exit:return;/<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-</>>&g
32、t;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
33、t;>>>>>>>>>>>void remote_2272_deco() /接收遙控碼(解碼程序)uint i;/檢測(cè)50ms內(nèi)有沒有編碼接收for(i=1000;i;i-) if(!W_REM) PT2272_deco(); /解碼break;else d50us(1); /50uS延時(shí)recv_flg =0; /清按鍵沒有放開過標(biāo)志/<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-<-</>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 時(shí)間管理在工作中的重要性計(jì)劃
- 物流行業(yè)提升效率策略計(jì)劃
- 2024年陜西省自然資源廳下屬事業(yè)單位真題
- 2024年江門市江海區(qū)保安服務(wù)有限公司招聘真題
- 2024年貴州省司法廳下屬事業(yè)單位真題
- 學(xué)期初工作計(jì)劃與目標(biāo)設(shè)定
- VB的代碼復(fù)用策略與案例題及答案
- 軟件開發(fā)中的業(yè)務(wù)理解試題及答案
- 系統(tǒng)學(xué)習(xí)的計(jì)算機(jī)VB試題及答案
- 算法與數(shù)據(jù)結(jié)構(gòu)研究進(jìn)展試題及答案
- 境外直接投資外匯登記業(yè)務(wù)申請(qǐng)表
- 十二木卡姆課件
- 全面輪機(jī)英語(yǔ)專業(yè)詞匯
- 安徽工貿(mào)職業(yè)技術(shù)學(xué)院輔導(dǎo)員考試題庫(kù)
- 廣東省珠海市電工等級(jí)低壓電工作業(yè)
- 【國(guó)開】2023年春《互換性與技術(shù)測(cè)量》形考任務(wù)一二三四參考答案
- 徠卡v lux4中文說明書大約工作時(shí)間和可拍攝圖像數(shù)量
- 英語(yǔ)演講知到章節(jié)答案智慧樹2023年哈爾濱工程大學(xué)
- 危險(xiǎn)化學(xué)品(柴油)儲(chǔ)運(yùn)安全管理考試試題及答案
- 2023年下半年軟件設(shè)計(jì)師上午真題及參考答案
- 中華優(yōu)秀傳統(tǒng)文化智慧樹知到答案章節(jié)測(cè)試2023年青島黃海學(xué)院
評(píng)論
0/150
提交評(píng)論