先上一個PT2262的發射電路原理圖,一般應用 中,1腳 至 8腳做為地址編碼,10腳 至 13腳做為四個按鍵來使用;
發射電路原理圖.jpg (166.94 KB, 下載次數: 52)
下載附件
2022-9-2 09:04 上傳
網上好多此類代碼和文章,其中有些地方對于剛接觸的來說不甚理解,在此我對在學習此類解碼程序時遇到的不解再來簡要的分析一下:比如解釋代碼時談到的 32a 128a是個什么意思。先看下圖:
編碼.jpg (221.21 KB, 下載次數: 76)
下載附件
2022-9-2 10:59 上傳
振蕩頻率與碼位時長的關系.png (68.6 KB, 下載次數: 64)
下載附件
2022-9-2 10:59 上傳
從圖中可以知道一個編碼0(引腳接負極)、1(引腳接正極) 、F(引腳懸空)(也就是PT2262一個編碼引腳的狀態)占用32a,,,,a是啥,a是一個時鐘周期“T” ,時鐘是怎么來的? 15腳和16腳串接的OSC電阻產生的。 阻值決定了PT2262的振蕩頻率。廠家給出的計算公式:(頻率KHZ)F=2*1000*16/Rosc(單位 K歐).
利用一個簡易的虛擬示波器來完成我們的實驗講解:
虛擬示波器.jpg (307.64 KB, 下載次數: 71)
下載附件
2022-9-2 10:59 上傳
得到遙控器的完整波形,見下圖:
2262波形——總波形.jpg (369.9 KB, 下載次數: 56)
下載附件
2022-9-2 10:59 上傳
圖3
是不是一下子不能看懂呢?沒關系慢慢來,先說同步頭,它由一個4a高電平和124a低電平組成,在代碼中只對124a低電平進行判斷,給這個低電平
限定一個范圍,超出這個時間范圍的低電平不是同步頭的低電平:
- <font color="#ff00ff">if((L > 400)&&(L < 29000UL))//2360) </font> //確認是引導頭(判斷同步位低電平時長31a)
復制代碼 a值怎么得到或是怎么計算呢,實際應用中,根據PT2262的OSC計算公式得到a值誤差比較大,再著像SX2262,SC2262等不同型號的IC使用相同OSC電阻產生的頻率也不盡相同,所以在代碼中做了一個范圍的判斷,只要在此范圍內的值就判定為正確。
通過示波器我們來實際計算一下a的值,由同步頭低電平124a 和 一個引腳編碼的32a 來相互印證一下,以加深對這個點的理解:
同步頭.jpg (185.77 KB, 下載次數: 68)
下載附件
2022-9-2 11:00 上傳
首先是同步頭的低電平 124a ,通過在虛擬示波器中放置X1標志位(2.66ms),X2標志位(4.92ms)......4.92-2.66=2.26ms =2260us所以124a≈2260us;
一個編碼32a.jpg (156.25 KB, 下載次數: 68)
下載附件
2022-9-2 11:01 上傳
然后用同樣的方法得到PT2262第1腳編碼脈寬32a 即X2-X1≈568us
相互印證計算:a = 568/32 ≈ 17.75 17.75*124 = 2201us 2201 ≈ 2260(同步頭124a) 這里的誤差在實際應用中忽略不計;
接下來說一下,編碼格式和解碼思路。
PT2262 地址編碼(1腳 - 8腳)有三種狀態:接負極 、接正極 、懸空 。它們所產生的編碼狀態為:00 、11、01;按鍵編碼:只有00或11兩種。
完整編碼的組成:同步頭+地址碼(16位)+按鍵碼(8位)
同步頭結束以后,就會有24位的脈沖;見(圖3)中的P1 - P8 代表芯片的1腳到8腳的編碼16個脈沖,后邊的10 - 13 代表10腳 -13腳的編碼8個脈沖;
單片機解碼要完成的任務是:找到同步頭,然后再接收24位脈沖數據,計算出地址編碼和按鍵狀態,完成任務。
要完成這個任務,要用到定時器,它來負責對無線接收頭送過來的高低電平進行精確計時;
定時器怎么來用呢?
1、不使用定時器中斷;
2、初始值為0,一切從0開始;
3、電平變化時打開定時器計時,電平再次變化時停止定時器,得到定時器的計時時間;
地址編碼和按鍵狀態的計算:
在代碼中:變量yinjiao[1]接收同步頭后第1-8個脈沖; (第一腳到第四腳的狀態編碼)
變量yinjiao[2]接收同步頭后第9-16個脈沖; (第五腳到第八腳的狀態編碼)
變量yinjiao[3]接收同步頭后第17-24個脈沖; (第十腳到第十三腳的按鍵狀態編碼)
- //計算2262 加密腳電平
- abc[0]=yinjiao[2]&0xc0; //pt2262 第 8 腳狀態
- abc[1]=yinjiao[2]&0x30; //pt2262 第 7 腳狀態
- abc[2]=yinjiao[2]&0x0C;
- abc[3]=yinjiao[2]&0x03;
- abc[4]=yinjiao[1]&0xC0;
- abc[5]=yinjiao[1]&0x30;
- abc[6]=yinjiao[1]&0x0C;
- abc[7]=yinjiao[1]&0x03; //pt2262 第 1 腳狀態
復制代碼- switch(yinjiao[0])//鍵值碼
- {
- case 0xC0: //PT2262的10腳按鍵按下時
-
- yinjiao[3]=10;
- break;
- case 0x30: //PT2262的11腳按鍵按下時
- yinjiao[3]=11;
-
- break;
- case 0x0C: //PT2262的12腳按鍵按下時
- yinjiao[3]=12;
- break;
- case 0x03: //PT2262的13腳按鍵按下時
- yinjiao[3]=13;
-
-
- break;
- }
復制代碼 代碼流程導圖:
思維導圖.png (35.4 KB, 下載次數: 69)
下載附件
2022-9-2 11:04 上傳
PT2262(組合EV1527)解碼源程序C文件:
PT2262EV1527解碼.rar
(1.8 MB, 下載次數: 78)
2022-9-2 11:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
虛擬示波器源代碼(含TFT驅動)原理圖:
示波器源代碼包含TFT驅動.rar
(1.22 MB, 下載次數: 48)
2022-9-2 10:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|