




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精品文檔-下載后可編輯紅外遙控解碼實(shí)例分析-技術(shù)方案
紅外遙控在生產(chǎn)和生活中應(yīng)用越來(lái)越廣泛,不同的紅外遙控芯片有不同的發(fā)碼協(xié)議,但一般都是由引導(dǎo)碼,系統(tǒng)碼,鍵碼三部分組成.引導(dǎo)碼是告訴接收機(jī)準(zhǔn)備接收紅外遙控碼.系統(tǒng)碼是識(shí)別碼,不同的遙控芯片有不同的誤別碼,以免搞錯(cuò).
遙控器上不同的按鍵有不同的鍵碼,系統(tǒng)碼和鍵碼都是16位碼,8位正碼,8位反碼.如SC6122的系統(tǒng)碼是FF00,FF和00互為反碼,鍵碼1為EF10也是互為反碼.
SC6122的引導(dǎo)碼為低電平為9000微秒,高電平為4500微秒.當(dāng)然高電平不可能為9000微秒,在8000微秒到10000微秒都看作是正常范圍,低電平在4000-5000之間都看作是正常范圍.引導(dǎo)碼后的32位編碼(16位系統(tǒng)碼和16位鍵碼)不管高低電平,載波時(shí)間都是560微秒,但低電平持續(xù)時(shí)間是1125微秒,高電平持續(xù)時(shí)間是2250微秒,所以低電平除去載波時(shí)間大約是560微秒,高電平除去載波時(shí)間大約是1680微秒.低電平也有一個(gè)波動(dòng)范圍,在400-700之間都看作是正常的,具體多少可以通過(guò)示波器測(cè)量出來(lái).高電平也有一個(gè)波動(dòng)范圍,在400-2000之間都看作是正常的,具體多少也是根據(jù)經(jīng)驗(yàn).當(dāng)然范圍越寬,捕捉紅外線的范圍也越寬,越.在捕捉到有高低電平之間,在560-1680之間取一個(gè)中間值1120微秒,認(rèn)為小于1120微秒是低電平,大于1120微秒是高電平.
下面有兩個(gè)經(jīng)過(guò)實(shí)踐能在實(shí)驗(yàn)板上顯示鍵碼的程序,一個(gè)是匯編寫(xiě)的,一個(gè)是用C寫(xiě)的,與大家一起探討遙控器.
以下程序能在LCD上顯示系統(tǒng)碼和鍵碼,按不同的按鍵,系統(tǒng)碼不變,變的是鍵碼.有不懂的地方可以在留言本上留言.
RSEQUP2.5 ;這幾個(gè)是LCD引腳.
RWEQUP2.6
EEQUP2.7
IRREQUP3.3 ;紅外接收的輸出接P3.3.
BUFEQU30H;30H-33H保存解碼結(jié)果
;=============================================
ORG0000H
AJMPMAIN
;=============================================
ORG0030H
MAIN:
MOVSP,#70H;堆棧指針設(shè)到70H的地方
ACALLINIT_LCD ;初始化LCD
MOVR7,#10
ACALLDELAY_MS
MOVDPTR,#MSG1
CALLDISPLAY_LINE1 ;在行顯示Test8:IRReader
MOVDPTR,#MSG2
CALLDISPLAY_LINE2 ;在第二行顯示
MAIN_LOOP:
JBIRR,$;等待接收頭信號(hào)為低
ACALLGET_LOW;測(cè)量引導(dǎo)脈沖低電平
CLRC
MOVA,R7
SUBBA,#(8000/50);SC6122的引導(dǎo)脈沖低電平為9000US,我們只要測(cè)到低電平的值在8000-10000US范圍內(nèi)就認(rèn)為合格的.
JCMAIN_LOOP;如果小于8000US,不對(duì),重新等待接收
CLRC
MOVA,R7
SUBBA,#(10000/50)
JNCMAIN_LOOP
ACALLGET_HIGH;測(cè)量引導(dǎo)脈沖高電平
CLRC
MOVA,R7
SUBBA,#(4000/50)
JCMAIN_LOOP ;如果小于4000US,不對(duì),重新等待接收
CLRC
MOVA,R7
SUBBA,#(5000/50)
JNCMAIN_LOOP ;如果大于5000US,不對(duì),重新等待接收
MOVR0,#BUF;
MOVR5,#8;SC6122發(fā)的碼有32位,我們用4個(gè)字節(jié)來(lái)存放,每個(gè)字節(jié)有8位
IR_NEXT:
CALLGET_LOW
CLRC
MOVA,R7
SUBBA,#(300/50);300US
JCMAIN_LOOP ;低電平小于300微秒認(rèn)為不對(duì),重新接收
CLRC
MOVA,R7
SUBBA,#(800/50);800US
JNCMAIN_LOOP ;低電平大于800微秒認(rèn)為不對(duì),重新接收
ACALLGET_HIGH
CLRC
MOVA,R7
SUBBA,#(300/50);300US
JCMAIN_LOOP ;高電平小于300微秒認(rèn)為不對(duì),重新接收
CLRC
MOVA,R7
SUBBA,#(2000/50);2000US
JNCMAIN_LOOP ;高電平大于2000微秒認(rèn)為不對(duì),重新接收
CLRC
MOVA,R7
SUBBA,#(1120/50); ;跟中間值1120進(jìn)行比較
RRCA
MOV@R0,A ;通過(guò)CY移到間接地址R0中去
DJNZR5,IR_NEXT ;8位移完了嗎
MOVR5,#8
INCR0
MOVA,R0
XRLA,#(BUF+4)
JNZIR_NEXT;如果不到4個(gè)字節(jié),接收下一個(gè)
MOVDPTR,#MSG_6122
ACALLDISPLAY_LINE1;顯示格式名稱(chēng)
ACALLDISPLAY_IR_CODE;顯示碼
AJMPMAIN_LOOP
;============================================
MSG1:DB"Test8:IRReader"
MSG2:DB""
MSG_6122:DB"Format:SC6122"
;============================================
;轉(zhuǎn)為ASCII碼在LCD在顯示
TO_ASCII:
CJNEA,#0AH,TO_ASCII_1
TO_ASCII_1:
JCTO_ASCII_2;小于10
ADDA,#(A-10)
RET
TO_ASCII_2:
ADDA,#0
RET
;============================================
DISPLAY_IR_CODE:
MOVA,#0C0H;顯示在第二行
ACALLSEND_COMMAND_BYTE;設(shè)置DDRAM地址
MOVR0,#BUF
DISPLAY_IR_CODE_NEXT:
MOVA,@R0
SWAPA
ANLA,#0FH ;分離出高字節(jié)
ACALLTO_ASCII ;轉(zhuǎn)為ASCII碼
ACALLSEND_DATA_BYTE ;顯示
MOVA,@R0
ANLA,#0FH ;分離出低字節(jié)
ACALLTO_ASCII ;轉(zhuǎn)為ASCII碼
ACALLSEND_DATA_BYTE ;顯示
MOVA,#
ACALLSEND_DATA_BYTE ;顯示空格
INCR0
MOVA,R0
XRLA,#(BUF+4)
JNZDISPLAY_IR_CODE_NEXT
MOVR0,#8;第2行共有20個(gè)字符,前面顯示用了12個(gè),再用8個(gè)空格填滿(mǎn)
DISPLAY_IR_CODE_B:
MOVA,#
ACALLSEND_DATA_BYTE
DJNZR0,DISPLAY_IR_CODE_B
RET
;============================================
;測(cè)量低電平時(shí)間,50US采樣,R7加1,比如低電平時(shí)間為9000US,測(cè)得R7的結(jié)果為180(0B4H)
;OUTPUT:R7
GET_LOW:
MOVR7,#00H
GET_LOW_NEXT:
MOVR6,#20;在晶振為11.0592M時(shí),延50US需要46個(gè)機(jī)器周期,
DJNZR6,$;這條指令執(zhí)行需要2個(gè)機(jī)器周期
JBIRR,GET_LOW_RTN;接收頭為高電平,結(jié)束測(cè)量
INCR7
MOVA,R7
JNZGET_LOW_NEXT;看R7是否有溢出
GET_LOW_RTN:
RET
;============================================
;測(cè)量高電平時(shí)間,50US采樣,R7加1,比如高電平時(shí)間為4500US,測(cè)得R7的結(jié)果為90
;OUTPUT:R7
GET_HIGH:
MOVR7,#00H
GET_HIGH_NEXT:
MOVR6,#20;在晶振為11.0592M時(shí),延50US需要46個(gè)機(jī)器周期,
DJNZR6,$;這條指令執(zhí)行需要2個(gè)機(jī)器周期
JNBIRR,GET_HIGH_RTN;接收頭為低電平,結(jié)束測(cè)量
INCR7
MOVA,R7
JNZGET_HIGH_NEXT;看R7是否有溢出
GET_HIGH_RTN:
RET
;============================================
DELAY_MS:
MOVR6,#250
DELAY_MS_NEXT:
NOP
NOP
DJNZR6,DELAY_MS_NEXT
DJNZR7,DELAY_MS
RET
;============================================
;INPUT:R7
DELAY:
DJNZR7,$
RET
;============================================
;向LCD寫(xiě)一個(gè)命令字節(jié)
;INPUT:ACC
SEND_COMMAND_BYTE:
CLRRS
CLRRW
MOVP0,A
SETBE
NOP
NOP
NOP
NOP
NOP
NOP
CLRE
MOVR7,#100
ACALLDELAY
RET
;===============================================
;向LCD寫(xiě)一個(gè)數(shù)據(jù)字節(jié)
;INPUT:ACC
SEND_DATA_BYTE:
SETBRS
CLRRW
MOVP0,A
SETBE
NOP
NOP
NOP
NOP
NOP
NOP
CLRE
MOVR7,#100
ACALLDELAY
RET
;======================================================
;初始化LCD
INIT_LCD:
MOVA,#30H
ACALLSEND_COMMAND_BYTE
ACALLSEND_COMMAND_BYTE
ACALLSEND_COMMAND_BYTE
MOVA,#38H;設(shè)置工作方式
ACALLSEND_COMMAND_BYTE
MOVA,#0CH;顯示狀態(tài)設(shè)置
ACALLSEND_COMMAND_BYTE
MOVA,#01H;清屏
ACALLSEND_COMMAND_BYTE
MOVA,#06H;輸入方式設(shè)置
ACALLSEND_COMMAND_BYTE
RET
;=======================================================
;在行顯示
;INPUT:DPTR指向要顯示的內(nèi)容
DISPLAY_LINE1:
MOVA,#080H
DISPLAY_LINE1_A:
ACALLSEND_COMMAND_BYTE;設(shè)置DDRAM地址
MOVR6,#20
DISPLAY_LINE1_NEXT:
CLRA
MOVCA,@A+DPTR
ACALLSEND_DATA_BYTE
INCDPTR
DJNZR6,DISPLAY_LINE1_NEXT
MOVR7,#100
ACALLDELAY
RET
;=======================================================
;在第二行顯示
;INPUT:DPTR指向要顯示的內(nèi)容
DISPLAY_LINE2:
MOVA,#0C0H
AJMPDISPLAY_LINE1_A
;=======================================================
END
下面是一個(gè)用C寫(xiě)的遙控器程序.能在數(shù)碼管上顯示鍵碼.
#include<reg52.h>
#definec(x)(x*110592/120000)
sbitIr_Pin=P3^3;
unsignedcharcodeLed_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共陽(yáng)極數(shù)碼顯示碼0-F.
unsignedcharcodeLed_Sel[]={0xe,0xd,0xb,0x7};
unsignedcharLed_Buf[4];//顯示緩沖區(qū)
charLed_Index; //位選
unsignedcharIr_Buf[4];//用于保存解碼結(jié)果
//==============================================================
//數(shù)碼管掃描
timer0()interrupt1using1
{
TL0=65536-1000;
TH0=(65536-1000)/256;//定時(shí)器0設(shè)定約1000us中斷,用于數(shù)碼管掃描
P0=0xff;
P2=Led_Sel[Led_Index]; //位選
P0=Led_Tab[Led_Buf[Led_Index]]; //段選
if(++Led_Index>3)Led_Index=0; //四個(gè)掃描完了,到個(gè)數(shù)碼管
}
//==============================================================
unsignedintIr_Get_Low()
{
TL1=0;
TH1=0;
TR1=1;
while(!Ir_Pin&&(TH1&0x80)==0);
TR1=0;
returnTH1*256+TL1;
}
//======
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1-Arachidoyl-rac-glycerol-α-Monoarachin-生命科學(xué)試劑-MCE
- 中山廣東中山市三鄉(xiāng)鎮(zhèn)平嵐小學(xué)招聘語(yǔ)文臨聘教師筆試歷年參考題庫(kù)附帶答案詳解
- 主材供貨合同合同范本
- 疼痛管理培訓(xùn)提升醫(yī)護(hù)人員專(zhuān)業(yè)能力
- 舞蹈正規(guī)合同范本
- 電子商務(wù)運(yùn)營(yíng)策略多渠道營(yíng)銷(xiāo)布局
- 磚廠安全生產(chǎn)事故的預(yù)防與應(yīng)急處理策略
- 軍事指揮與軍事理論
- 科技發(fā)展下的實(shí)時(shí)數(shù)據(jù)報(bào)告呈現(xiàn)方法
- 2025至2030年中國(guó)船用鉛墜數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 《服裝品牌策劃》課件
- 個(gè)人應(yīng)聘簡(jiǎn)歷電工
- 2025年上半年河南省高校畢業(yè)生“三支一扶”招募1100人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 高血壓的用藥指導(dǎo)任務(wù)三高血壓的藥物治療講解
- 近五年陜西中考數(shù)學(xué)真題及答案2024
- 云南省大理白族自治州2024-2025學(xué)年八年級(jí)上學(xué)期1月期末考試英語(yǔ)試卷(無(wú)答案)
- 無(wú)人機(jī)行業(yè)市場(chǎng)分析指南
- 踇外翻病人護(hù)理查房
- 美國(guó)藥典-USP-561-植物源性物質(zhì)
- 施工安全管理培訓(xùn)資料
- 第16課數(shù)據(jù)管理與編碼(教案)四年級(jí)全一冊(cè)信息技術(shù)人教版
評(píng)論
0/150
提交評(píng)論