精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
51單片機(jī)紅外遙控解碼程序
51單片機(jī)紅外遙控解碼程序
 更新時(shí)間:2008-8-3 15:44:11  點(diǎn)擊數(shù):8
【字體: 字體顏色


    

編者按:以下是網(wǎng)友編寫的遙控解碼程序!一種用延時(shí)等待的解碼方法,比較容易理解,但缺點(diǎn)是占用CPU運(yùn)行時(shí)間,第二種方法用定時(shí)器和外中斷的解碼方法,初學(xué)不易理解,但優(yōu)點(diǎn)也很明顯,第二種方法如果能解決連發(fā)解碼就比較完美,更完善的紅外遙控解碼程序,請(qǐng)參考本站TOPAV-2008,TOP51-2005所配程序。


解碼方法一


;//單片機(jī)接收紅外解讀程序\\
;硬件結(jié)構(gòu):8951,P0口數(shù)碼管段碼,P2.0-P2.3為位,P1為8個(gè)LED
;P3.2為紅外接收頭,P2.7蜂鳴器,晶振12M
;適用UPD6121 6122芯片接收
;---------------------------------------------------------


ORG 0000H
AJMP MAIN ;轉(zhuǎn)入主程序
ORG 0003H ;外部中斷P3.2腳INT0入口地址
AJMP INT ;轉(zhuǎn)入外部中斷服務(wù)子程序(解碼程序)


;以下為主程序進(jìn)行CPU中斷方式設(shè)置
MAIN: SETB EA ;打開CPU總中斷請(qǐng)求
SETB IT0 ;設(shè)定INT0的觸發(fā)方式為脈沖下降沿觸發(fā)
SETB EX0 ;打開INT0中斷請(qǐng)求


AJMP $
;以下為進(jìn)入P3.2腳外部中斷子程序,也就是解碼程序
INT: CLR EA ;暫時(shí)關(guān)閉CPU的所有中斷請(qǐng)求
MOV R6,#10
SB: ACALL YS1 ;調(diào)用882微秒延時(shí)子程序
JB P3.2,EXIT ;延時(shí)882微秒后判斷P3.2腳是否出現(xiàn)高
; 電平如果有就退出解碼程序
DJNZ R6, SB ;重復(fù)10次,目的是檢測(cè)在8820微秒內(nèi)
;如果出現(xiàn)高電平就退出解碼程序
;以上完成對(duì)遙控信號(hào)的9000微秒的初始低電平信號(hào)的識(shí)別。
JNB P3.2, $ ;等待高電平避開9毫秒低電平引導(dǎo)脈沖
ACALL YS2 ;延時(shí)4.74毫秒避開4.5毫秒的結(jié)果碼
MOV R1,#1AH ;設(shè)定1AH為起始RAM區(qū)
MOV R2,#4


;
PP: MOV R3,#8
JJJJ: JNB P3.2,$ ;等待地址碼第一位的高電平信號(hào)
LCALL YS1 ;高電平開始后用882微秒的時(shí)間尺去判斷信
;號(hào)此時(shí)的高低電平狀態(tài)
MOV C,P3.2 ;將P3.2引腳此時(shí)的電平狀態(tài)0或1存入C中
JNC UUU ;如果為0就跳轉(zhuǎn)到UUU
LCALL YS3


;
UUU: MOV A,@R1 ;將R1中地址的給A
RRC A ;將C中的值0或1移入A中的最低位
MOV @R1,A ;將A中的數(shù)暫時(shí)存放在R1中
DJNZ R3,JJJJ ;接收地址碼的高8位
INC R1 ;對(duì)R1中的值加1,換下一個(gè)RAM
DJNZ R2,PP ;接收完16位地址碼和8位數(shù)據(jù)碼和8位數(shù)據(jù)反
; 碼,存放在1AH/1BH/1CH/1DH的RAM中


MOV A,1CH ;比較數(shù)據(jù)碼和數(shù)據(jù)反碼是否正確?
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無(wú)效丟棄,核對(duì)數(shù)據(jù)是否準(zhǔn)確
JNZ EXIT


MOV DPTR,#TAB ;表頭地址送指針
MOV A,1DH
ANL A,#0FH ;相與,得到低四位碼
MOVC A,@A+DPTR
MOV 1EH,A ;查表得表碼存入1EH


MOV A,1DH
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV 1FH,A ;查表得高四位碼存入1F


MOV R7,#20H
DISP:
MOV P0,1FH ;送數(shù)碼管顯示
CLR P2.1
ACALL YS2
SETB P2.1


MOV P0,1EH
CLR P2.2
ACALL YS2
SETB P2.2


MOV P1,1DH ;將按鍵的鍵值通過(guò)P1口的8個(gè)LED顯示出來(lái)!
CLR P2.7 ;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
LCALL YS2
SETB P2.7 ;蜂鳴器停止
DJNZ R7,DISP


EXIT: SETB EA ;允許中斷
RETI ;退出解碼子程序


YS1: MOV R4,#20 ;延時(shí)子程序1,精確延時(shí)882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延時(shí)子程序2,精確延時(shí)4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2 ;延時(shí)程序3,精確延時(shí)1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET


TAB: DB 0C0H,0DEH,0A2H,8AH,9CH,89H,81H,0DAH,80H,88H,90H,85H,0E1H,86H,0A1H,0B1H;數(shù)據(jù)表,0-9-A-F
END



解碼方法二


你的解碼程序和我現(xiàn)在用的解碼程序大體是一樣的,我自己實(shí)際做了一下,發(fā)現(xiàn)按下遙控器,接收到紅外信號(hào)后,數(shù)碼管閃的厲害。我用的是6位動(dòng)態(tài)數(shù)碼管。不知道你有沒有遇到這樣的情況?
分析解碼程序,感覺是中斷的時(shí)間太長(zhǎng)了,數(shù)碼管當(dāng)然會(huì)閃了。如果把數(shù)碼管用定時(shí)器刷新的話,又存在定時(shí)中斷和外中斷的優(yōu)先級(jí)問題,好難解決啊。
我初步有個(gè)想法。就是用定時(shí)器計(jì)算兩次外中斷間隔的時(shí)間。以此來(lái)確定是連發(fā)碼,數(shù)據(jù)“0”,數(shù)據(jù)“1”。不知道這個(gè)想法可否行的通。這幾天沒有時(shí)間試,因?yàn)閺V州有個(gè)電子產(chǎn)品交易會(huì),我要趕著做樣機(jī)。過(guò)了幾天我有空了在仔細(xì)的做一遍。把結(jié)果告訴大家。


不用連續(xù)解碼,只需在中斷時(shí)讀取定時(shí)器的時(shí)間,然后判斷是0或者1就可以了,實(shí)際測(cè)試已經(jīng)OK了,謝謝兩位的熱心幫助。
為了這個(gè)程序,弄了兩天的時(shí)間,飯都吃不好,現(xiàn)在弄通了,感覺真的很好。
我現(xiàn)在用6個(gè)數(shù)碼管顯示遙控器的用戶碼,用戶反碼,按鍵碼,無(wú)論怎么按遙控器,數(shù)碼管都不會(huì)閃的。


樓上的,我是這樣解決閃爍問題的,用顯示子程序計(jì)算出適當(dāng)次數(shù)代替延時(shí)YS1 YS2 YS3子程序


;======================================================================================

  • 上一篇: 基于16位單片機(jī)的無(wú)刷直流電動(dòng)機(jī)控制系統(tǒng)
  • 下一篇: 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1
    韶关市| 屯昌县| 九江县| 长岛县| 金乡县| 阜平县| 简阳市| 闽清县| 星子县| 黔西县| 依兰县| 潢川县| 台湾省| 凤阳县| 恩平市| 扎囊县| 健康| 藁城市| 肥城市| 兴业县| 佳木斯市| 海晏县| 永靖县| 尚义县| 广灵县| 安达市| 东辽县| 会昌县| 驻马店市| 惠水县| 策勒县| 赫章县| 陇川县| 峨眉山市| 苗栗县| 洞头县| 泸溪县| 乐至县| 富顺县| 海安县| 霍州市|