版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)定時器-遙控器解碼程序分析 武漢三維電子工作室 楊榮國 唐精明 2010年12月6日一、前言利用STC公司1T內(nèi)核的STC12C08S2單片機(jī)對一款遙控器進(jìn)行解碼,將解碼的數(shù)據(jù)轉(zhuǎn)換為以us為單位的時間通過單片機(jī)串口通訊發(fā)送到STC下載軟件自帶的串口調(diào)試工具接收框進(jìn)行顯示。本文主要對測試結(jié)果進(jìn)行展示與分析并對單片機(jī)控制程序進(jìn)行分析,以此起到拋磚引玉的作用,希望讀者理解程序以后可以利用單片機(jī)對身邊的任意一款遙控器進(jìn)行解碼并將遙控器與單片機(jī)的實際應(yīng)用聯(lián)系在一起。二、測試結(jié)果展示1、實驗材料介紹實驗材料硬件部分 軟件部分 為KEIL V2 編程軟件 和 單片機(jī)程序下載軟件STC_ISP_V479
2、為了高效率學(xué)習(xí)程序編寫,本實驗平臺采用三維電子SFC51-V3??刂菩酒瑸?STC12C08S2,紅外通訊傳感器為VS1838 與單片機(jī)的P3.2引腳連接。程序下載器采用三維電子程序下載及串口通訊模塊 SFCSTC-USB-V1。遙控器采用如上圖(對于NEC標(biāo)準(zhǔn)的遙控器都適用,比如電視遙控器等)。2、遙控器按下數(shù)字1,PC所接收的數(shù)據(jù)碼顯示的數(shù)據(jù):數(shù)字1: 02456 00206 00205 00202 00204 00207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407
3、00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 004103、遙控器按下數(shù)字2,PC所接收的數(shù)據(jù)碼數(shù)字2:2456 00206 00200 00206 00206 00202 00205 00206 00202 00412 00407 00410 00410 00407 00408 00412 00407 00206 00205 00202 00410 00410 00203 00204 00205 00408 00409 00410 00205 00202 00408 00412 004074、遙
4、控器按下數(shù)字3,PC所接收的數(shù)據(jù)碼數(shù)字3:02457 00206 00198 00208 00206 00198 00209 00206 00200 00413 00407 00406 00414 00407 00405 00415 00408 00206 00410 00405 00417 00407 00206 00407 00206 00408 00206 00200 00208 00208 00407 00206 00408三、測試數(shù)據(jù)分析下載程序在硬件電路正常的情況下,遙控器按下數(shù)字1,PC機(jī)可以接收到以下數(shù)據(jù)數(shù)字1: 02456 00206 00205 00202 00204 00
5、207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407 00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 00410那這些數(shù)據(jù)代表什么意思呢?單片機(jī)向PC機(jī)每發(fā)送一次都是5位數(shù)據(jù),這5位數(shù)據(jù)是單片機(jī)內(nèi)部定時器以5us循環(huán)一次對temp變量從0開始自加所得到的數(shù)據(jù)。也就是說這些數(shù)據(jù)可以理解為一個時間值,這個時間值就是遙控器每個數(shù)據(jù)碼高電平和低電平所持續(xù)時間的值。從數(shù)據(jù)可以看出每個按鍵按
6、下去PC機(jī)都接收到33個數(shù)據(jù),這33個數(shù)據(jù)仔細(xì)觀察可以發(fā)現(xiàn)都有以下規(guī)律:第一個數(shù)據(jù) 在2456和2460之間。第二個數(shù)據(jù)到第九個數(shù)據(jù) 在200和210之間。第十個數(shù)據(jù)到第十八個數(shù)據(jù) 在400和410之間。第十九個數(shù)據(jù)到第三十二個數(shù)據(jù)在200和210之間和在400和410之間都有。繼續(xù)分析:如果將在2456和2460之間的數(shù)據(jù)定義為字符h,將在200和210之間的數(shù)據(jù)定義為字符0,將在400和410之間的數(shù)據(jù)定義為字符1。那么以上33個數(shù)據(jù)可以表達(dá)為:h 1111 1111 0000 0000 0011 0000 1100 1111 那么這個數(shù)據(jù)就是按鍵1按下的用0和1來表示的編碼。相同道理可以
7、推測出數(shù)字2和數(shù)字3用0和1來表示的編碼如下:數(shù)字 2 : h 0000 0000 1111 1111 0001 1000 1110 0111數(shù)字 3 : h 0000 0000 1111 1111 0111 1010 1000 0101好了,到了這里我們可以下結(jié)論了,因為已經(jīng)有了3個對比。我們的結(jié)論是:如上圖的遙控器編碼原理為每個按鍵都有33個編碼其中第一個編碼都相同時間比較長,接著16編碼分別可以用我們所定義的0和1表示即前八個為0后八個為1。其實這個我們可以理解為遙控器的地址編碼,就好比電話號碼的區(qū)號一樣的,浙江衢州的區(qū)號是0570而武漢的區(qū)號是027,在本區(qū)域里的所有的座機(jī)號碼都是以這
8、個開頭固定不變的。接著再仔細(xì)觀察可以發(fā)現(xiàn)原來后面16個數(shù)據(jù)碼也是有規(guī)律的,那就是前8個和后8個是相互取反的的編碼。好了,更多的思維留個大家希望大家下載程序以后可以得出我以上的結(jié)論,哈哈,這也是學(xué)習(xí)單片機(jī)的趣味所在哦。因為我將分享的程序涵蓋了單片機(jī)外部中斷、內(nèi)部定時器、串口通訊的三個結(jié)構(gòu)的應(yīng)用。四、紅外遙控器編碼及解碼原理介紹1、遙控器編碼原理遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類:NEC碼和RC5碼,本課程以運用比較廣泛,解碼比較容易的日本NEC為例說明編碼原理(遙控專用IC HT6221編碼方式也采用NEC碼)。NEC碼產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識
9、別碼,能區(qū)別不同的電器在設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位功能碼及其反碼。NEC數(shù)據(jù)幀格式:當(dāng)一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個起始碼(9ms的高電平),一個結(jié)果碼(4.5ms低電平),低8位地址碼(918ms),高8位地址碼(918ms),8位數(shù)據(jù)碼(918ms)和這8位數(shù)據(jù)碼的反碼(918ms)組成。其中地址碼和數(shù)據(jù)碼有“0”編碼和“1”編碼組成。在NEC編碼格式中“0”,“1”的表示方法(脈寬調(diào)制)如下:從上圖可以看出遙控發(fā)射碼“0”由持續(xù)0.565ms的高電平和0.56ms的低電平組成,遙控發(fā)射碼“1”由持
10、續(xù)0.565ms的高電平和1.685ms的低電平組成,前導(dǎo)碼由9ms的高電平和4.5ms的低電平組成。每個按鍵按下先發(fā)一個前導(dǎo)碼,接著持續(xù)發(fā)32個有“0”和“1”組成的地址碼和數(shù)據(jù)碼。高電平代表有紅外線,低電平代表無紅外線,對于遙控發(fā)射碼“0”表示紅外發(fā)光二極管發(fā)射紅外線0.565ms,停止發(fā)射0.56ms。如果遙控器要對外發(fā)射01兩位數(shù)據(jù),紅外二極管的工作流程是,先發(fā)紅外線持續(xù)9ms接著停止發(fā)射紅外線4.5ms,表示發(fā)射前導(dǎo)碼。接著發(fā)紅外線持續(xù)0.565ms接著停止發(fā)射紅外線0.56ms,表示發(fā)射碼“0”。接著發(fā)紅外線持續(xù)0.565ms接著停止發(fā)射紅外線1.685ms,表示發(fā)射碼“1”。如下
11、圖:為降低功耗提高發(fā)射效率,紅外二極管發(fā)射紅外線時并不是一直工作的,而是按38KHZ的脈沖進(jìn)行調(diào)制工作的。也就說說紅外線在工作的時候是按38KHZ的頻率在閃爍,而不是一直亮。2、遙控器解碼原理紅外線遙控信號的接收,可以使用一種集紅外線接收和放大于一體的VS183B來接收,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號的所有工作。VS183B實物圖如下: 器件對外只有三個引腳,從左到右分別是OUT GND VCC,工作電壓為2.7V5V, VCC接5V電源正極,GND接電源負(fù)極,OUT引腳為信號輸出引腳,可以輸出TLL的高電平和低電平信號。VS183B在空閑時輸出高電平信號,在接
12、收到38KHZ紅外信號時輸出低電平,根據(jù)這個特性可得出以下結(jié)論。如果遙控器發(fā)射01兩位數(shù)據(jù),VS183B接收到遙控信號以后將輸出持續(xù)9ms的低電平和4.5ms的高電平表示接收到前導(dǎo)碼,接著輸出0.565ms的低電平和0.56ms的高電平表示接收到“0”發(fā)射碼,接著輸出0.565ms的低電平和1.685ms的高電平表示接收到“1”發(fā)射碼。3、單片機(jī)解碼編程將VS1838B的輸出引腳與單片機(jī)外部中斷0引腳相連,每個被解出來的碼都是以低電平開始緊接著是高電平,第二個碼也同樣以低電平開始緊接著高電平,啟動單片機(jī)外部中斷并設(shè)置為脈沖觸發(fā)方式可以精確的捕獲到每個碼開始瞬間,這個時候啟動定時器中斷,等待一個
13、低電平和一個高電平結(jié)束并關(guān)閉定時中斷。通過查看定時中斷的次數(shù)可以計算出對應(yīng)編碼的執(zhí)行時間從而推算出相應(yīng)的編碼。五、程序分享1、將每個遙控按鍵對應(yīng)的32個碼的延時時間發(fā)送到串口顯示/*測試原理:在測試方案_01的結(jié)論上,記錄一組紅外信號33位中各編碼持續(xù)時間測試結(jié)果:前導(dǎo)碼:約 2457,持續(xù)時間為 2457 * 0.005 = 12.285ms (NEC標(biāo)準(zhǔn)為13.5) 編碼 0:約 206, 持續(xù)時間為 206 * 0.005 = 1.03ms (NEC標(biāo)準(zhǔn)為1.125) 編碼 1:約 408, 持續(xù)時間為 408 * 0.005 = 2.04ms (NEC標(biāo)準(zhǔn)為2.25)*/#includ
14、e <reg52.h>sbit IR = P32;/ 紅外信號感應(yīng)引腳unsigned int time;unsigned int dat33 = 0 ;bit flag = 0;void Send( void ) /將32位數(shù)據(jù)對應(yīng)的時間發(fā)送到PC上顯示char i;for(i = 0;i < 33;i +) TI = 0;SBUF = dati / 10000 + 48;while( !TI );TI = 0;SBUF = dati / 1000 % 10 + 48;while( !TI );TI = 0;SBUF = dati / 100 % 10 + 48;while
15、( !TI );TI = 0;SBUF = dati / 10 % 10 + 48;while( !TI );TI = 0;SBUF = dati % 10 + 48;while( !TI );TI = 0;SBUF = ' 'while( !TI );void Init( void )/定時器、外部中斷初始化TMOD = 0x22;/ 定時器0、1方式2SCON = 0x40;/ 串行口方式1,不允許接收 TH1 = TL1 = 0xfd;/ 串行口方式2,F(xiàn)osc=11.05926,BPS=9600TH0 = TL0 = 0xfb;/ 中斷頻率 0.005msTR1 = 1
16、;/ 開啟與串行口相關(guān)的定時器1IT0 = 1;/ 邊沿式觸發(fā)ET0 = 1;/ 開啟定時器0中斷EX0 = 1;/ 外部中斷0中斷允許IP = 0x02;/ 定時器0優(yōu)先級高EA = 1;void main( void ) /主程序Init( );/中斷 定時器 初始化while( 1 );/等待遙控信號void Xint0( void ) interrupt 0 /外部中斷0復(fù)位子程序char i;for(i = 0;i < 33;i +)time = 0;TR0 = 1;while( !IR );/ 前導(dǎo)信號檢測while( IR ); TR0 = 0;dati = time;Se
17、nd( );flag = 1;EX0 = 0; void Timer0( void ) interrupt 1 /5us中斷一次 變量加1time +;2、將每個遙控按鍵對應(yīng)的32個遙控碼轉(zhuǎn)換成4個16進(jìn)制數(shù)據(jù)發(fā)送到串口顯示#include<reg52.h> sbit Ir= P32; unsigned char temp = 0,x = 0,ch=0;char DAT14= 0 ;void init( ) /中斷初始化IE = 0x83; /啟動中斷總開關(guān) 外部中斷0 定時中斷0IT0 = 1;/外部中斷0下降沿觸發(fā)SCON = 0x40;/串口工作方式1TMOD = 0x22;
18、/定時器0、1方式2 TH1 = TL1 = 0xfd;/ 定時器1,用于串口通訊TR1 = 1;TH0 = TL0 = 0x47;/ 定時器0,用于延時計算IP = 0x02;/設(shè)置定時器0的中斷優(yōu)先級最高void ck_int()unsigned char i;for(i=0;i<4;i+)SBUF = DAT1i;while(TI = 0);TI=0;void main() init(); while(1)if(x = 1)ck_int();x=0;EX0=1;void ins_0() interrupt 0 /整個脈沖時間unsigned char i,j;temp = 0;/ 從 0 開始計數(shù)TR0 = 1;while( !Ir ); /前導(dǎo)碼是高電平 9MSwhile( Ir ) if(temp >80) break; /前導(dǎo)碼是低電平 4.5MSif(temp >
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識產(chǎn)權(quán)新員工培訓(xùn)課件
- 春風(fēng)十里才子歸來
- 主播直播培訓(xùn)
- 二零二五年度建筑垃圾清運合同示范3篇
- 珠寶瓷器知識培訓(xùn)課件
- “雙減”政策下語文作業(yè)的設(shè)計趨勢
- 臨床C1q 腎病病因、發(fā)病機(jī)制、關(guān)鍵診斷特征、病理三鏡、鑒別診斷及病理圖譜
- 兒科超聲對小兒急腹癥診斷要點和注意事項
- 四川省瀘州市江陽區(qū)2024-2025學(xué)年九年級上學(xué)期1月期末考試英語試題(含答案)
- 湖南省長沙市2025年新高考適應(yīng)性考試地理試題(含答案)
- 住宅設(shè)計效果圖協(xié)議書
- 新版中國食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測試試題含解析
- 2024河南鄭州市金水區(qū)事業(yè)單位招聘45人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 食物損失和浪費控制程序
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- 2024四川太陽能輻射量數(shù)據(jù)
- 石油鉆采專用設(shè)備制造考核試卷
- 法人變更股權(quán)轉(zhuǎn)讓協(xié)議書(2024版)
- 研究生中期考核匯報模板幻燈片
- 培訓(xùn)機(jī)構(gòu)與學(xué)校合作協(xié)議書范本
評論
0/150
提交評論