欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

單片機(jī)紅外遙控解碼器

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2010/8/20
 你家里是否有一個(gè)電視機(jī)遙控器或者空調(diào)機(jī)遙控器呢?你是否也想讓它遙控其他的電器甚至讓它遙控您的電腦呢?那好,跟我一起做這個(gè)“紅外遙控解碼器”。
     該小制作所需要的元件很少:?jiǎn)纹瑱C(jī)TA89C2051一只,RS232接口電平與TTL電平轉(zhuǎn)換心片MAX232CPE 一只,紅外接收管一只,晶振11.0592MHz,電解電容10uF4只,10uF一只,電阻1K1個(gè),300歐姆左右1個(gè),瓷片電容30P2個(gè)。發(fā)光二極管8個(gè)。價(jià)錢不足20元。

電路原理:
    主控制單元是單片機(jī)AT89C2051,中斷口INT0跟紅外接受管U1相連,接收紅外信號(hào)的脈沖,8個(gè)發(fā)光二極管作為顯示解碼輸出(也可以用來擴(kuò)展接其他控制電路),U3是跟電腦串行口RS232相連時(shí)的電平轉(zhuǎn)換心片,9、10腳分別與單片機(jī)的1、2腳相連,(1腳為串行接收,2腳為串行發(fā)送),MAX232CPE的7、8腳分別接電腦串行口的2(接收)腳、3(發(fā)送腳)。晶振采用11.0592MHz,這樣才能使得通訊的波特率達(dá)到9600b/s,電腦一般默認(rèn)值是9600b/s、8位數(shù)據(jù)位、1位停止位、無校驗(yàn)位。
 
    電路就這么簡(jiǎn)單了,現(xiàn)在分析具體的編程過程吧。
    如圖所示,panasonic遙控器的波形是這樣的(經(jīng)過反復(fù)測(cè)試的結(jié)果)。
 
    開始位是以3.6ms低電平然后是3.6ms高電平,然后數(shù)據(jù)表示形式是0.9ms低電平0.9ms高電平周期為1.8ms表示“0”, 0.9ms低電平 2.4ms高電平周期為3.3ms表示“1”,編寫程序時(shí),以大于3.4ms小于3.8ms高電平為起始位,以大于2.2ms小于2.7ms高電平表示“1”,大于0.84ms小于1.11ms高電平表示“0”。因此,我們主要用單片機(jī)測(cè)量高電平的長(zhǎng)短來確定是“1”還是“0”即可。定時(shí)器0的工作方式設(shè)置為方式1:mov tmod,#09h,這樣設(shè)置定時(shí)器0即是把GATE置1,16位計(jì)數(shù)器,最大計(jì)數(shù)值為2的16次方個(gè)機(jī)器周期,此方式由外中斷INT0控制,即INT0為高時(shí)才允許計(jì)數(shù)器計(jì)數(shù)。比如:
jnb p3.2,$
jb p3.2,$
clr tr0
這3條指令就可以測(cè)量一個(gè)高電平,接下來讀取計(jì)數(shù)值TH0,TL0就可以分辨是起始位還是“1”或“0”。在確定碼表之前,您可以使用P0口的8個(gè)發(fā)光二極管來顯示編碼,16位編碼分兩次顯示:
mov p0,keydata
acall delay_1s ;//1ms延時(shí)子程序
mov p0,keydata+1
ljmp main
根據(jù)P0相繼的兩次顯示的編碼,記錄每個(gè)按鍵的編碼,形成編碼表,即遙控器編碼的解碼完畢。碼表確定之后,以后接收到遙控器的編碼之后,就與碼表比較,找到匹配的碼項(xiàng),并把該碼項(xiàng)對(duì)應(yīng)的順序號(hào)輸出到P0口,同時(shí)也把順序號(hào)向串行口輸出到電腦,電腦接收該數(shù)據(jù)后由串口軟件決定如何處理。
     程序不長(zhǎng),下面是完整的程序和注釋:(先看流程圖)
 
keydata equ 30h ;//該地址和31H地址用來存放遙控器按鍵編碼。
org 00h
main:
 mov keydata,#0 ;// 清零
 mov tmod ,#09h       ;//設(shè)置定時(shí)0方式1,GATE=1
      mov  r7,#0  ;//計(jì)數(shù)器,用來計(jì)數(shù)是否滿8位
 mov  r6,#0  ;//計(jì)數(shù)器,用來計(jì)數(shù)是否滿2字節(jié)(解16位編碼)
 jb p3.2,$  ;//是否為低電平
again:    ;//如果為低,繼續(xù)往下面執(zhí)行
 mov tl0,#0  ;//清零TL0
 mov th0,#0  ;//清零TH0
 setb tr0  ;//開啟定時(shí)器0
 jnb p3.2,$  ;//等待高電平到來
 jb p3.2,$ ;//高電平到來,此時(shí)開始計(jì)數(shù)
 clr tr0 ;//高電平結(jié)束,停止計(jì)數(shù)
 mov a,th0 ;//讀取th0 值,TL0忽略不計(jì) 
 clr c  ;//
 subb a,#12 ;//
 jc again ;//th0<12則轉(zhuǎn),即小于3.4ms,你可以算一下這個(gè)時(shí)間
 mov a,#14 ;//
 clr c  ;//
 subb a,th0 ;//和14比較,如果TH0>14則大于3.8ms
        jc again    ;//大于3.8ms,從新再檢測(cè)
nextbit:  ;//起始位找到了,然后下一位
 mov tl0,#0 ;//
 mov th0,#0 ;//
 setb tr0 ;//啟動(dòng)定時(shí)器
 jnb p3.2,$ ;//等待高電平
 jb p3.2,$  ;//高電平到來,此時(shí)開始計(jì)數(shù)
 clr tr0 ;//高電平結(jié)束,停止計(jì)數(shù)
 mov a,th0 ;//讀取計(jì)數(shù)值,TL0忽略不計(jì)
 clr c  ;//
 subb a,#8 ;//th0和8比較
 jc next  ;;;;//若 <2.2ms則轉(zhuǎn),再判斷是否大于0.84ms
 mov a,#10 ;//再跟10比較
 clr c  ;//
 subb a,th0 ;//
 jc again ;;;;;;;//若 >2.7ms,則放棄,從新檢測(cè)
 mov a,keydata ;// 符合大于2.2ms 小于2.7ms,即為“1”
 setb c        ;//C = 1
 rrc a  ;//把1移位進(jìn)A
 mov keydata,a ;//保存
 inc r7  ;//計(jì)數(shù)器加1
 cjne r7,#8,nextbit ;//是否滿8位
 inc r6   ;//計(jì)數(shù)加1
 cjne r6,#2,last8 ;//是否滿兩字節(jié)
 sjmp seach  ;//不滿兩字節(jié),再新采集
last8:    ;//滿1字節(jié),再接下來第二字節(jié)
 mov keydata+1,a ;//把第一字節(jié)編碼數(shù)據(jù)保存到31h里
 mov r7,#0  ;//計(jì)數(shù)器R7清零
 sjmp nextbit  ;//繼續(xù)采集數(shù)據(jù)
next:      ;//小于2.2ms時(shí)轉(zhuǎn)到這里
 mov a,th0  ;//讀取計(jì)數(shù)值TH0
 swap a   ;//高4位與低4位對(duì)換
 mov r1,a  ;//保存到R1
 anl tl0,#0f0h  ;//取TL0高4位,低4位忽略不計(jì)
 mov a,tl0  ;//
 clr c   ;//
 rrc a  ;//
 rrc a  ;//
 rrc a  ;//
 rrc a  ;//
 add a,r1 ;//
 mov r1,a ;//
 subb a,#30 ;//以上幾行是把TH0的低4位和TL0的高4位合并為1字節(jié)作為計(jì)數(shù)值
 jc nextbit ; //判斷是否 <0.84ms,是則放棄,繼續(xù)采集
 mov a,r1 ;//否
 clr c  ;//
 cjne a,#64,continue   ;//跟64比較
continue:  ;//
 jnc nextbit ;  //a>64表示采樣值 >1.11ms  放棄
 mov a,keydata  ;//否則 ,符合位“0”
 clr c          ;//C  = 0
 rrc a   ;//把零右移進(jìn)A
 mov keydata,a  ;//保存
 inc r7   ;//計(jì)數(shù)器加1
 cjne r7,#8,nextbit ;//是否滿8位
 inc r6   ;//計(jì)數(shù)器加1
 cjne r6,#2,last_8 ;//是第一字節(jié)已經(jīng)滿
 sjmp seach  ;//
last_8:    ;//如果為第二字節(jié)
 mov keydata+1,a ;//則保存第一字節(jié)到31h
 mov r7,#0  ;//清零R7
 sjmp nextbit  ;//
seach:    ;//匹配按鍵編碼
 mov r0,#-2  ;//按鍵編碼字節(jié)個(gè)數(shù)計(jì)數(shù)器
 mov r1,#-1  ;//按鍵順序計(jì)數(shù)器
seach1:   ;//
        inc r0  ;//
seach2:   ;//
 inc r0   ;//
 inc r1   ;//
 cjne r1,#29,compare ;//是否R1=29 
 sjmp exit0  ;//
compare:   ;//開始匹配
  mov a,r0  ;//
 mov dptr,#keycode ;//地址指針指向碼表首址
 movc a,@a+dptr ;//取碼
 cjne a,keydata,seach1 ;//比較
 inc r0   ;//R0+1,再比較下一字節(jié)(每個(gè)按鍵編碼為2字節(jié))
 mov a,r0  ;//
 ;mov dptr,#keycode ;//
 movc a,@a+dptr ;//比較
 cjne a,keydata+1,seach2 ;//是否匹配,不匹配則繼續(xù)跟下一字節(jié)比較
 mov p1,r1         ;//如果匹配,把按鍵順序號(hào)輸出到p1
send:    ;//
 mov tmod,#20h     ;   //設(shè)置timer 1,mode 2
 mov tl1,#0fdh  ;//設(shè)置定時(shí)器初值
 mov th1,#0fdh  ;//
 mov scon,#01010000b;//以上設(shè)置,即設(shè)置串口波特率系數(shù)為:9600,8,1,0
 setb tr1  ;//啟動(dòng)定時(shí)器1
loop_s:  ;//
 mov sbuf,r1    ;//把R1(按鍵順序號(hào))輸出到串口
 jnb ti,$  ;//等待是否發(fā)送完畢
 clr ti   ;//發(fā)送完畢,清零TI
exit0:    ;//
ljmp main   ;//循環(huán)

keycode:   ;//每?jī)勺止?jié)代表一個(gè)按鍵的編碼
db 11111000b,00000000b,    11111100b,00000000b,    11111001b,11000000b
db 11111100b,11000000b,    11111010b,00000000b,    11111010b,00100000b
db 11111010b,01000000b,    11111010b,01100000b,    11111010b,10000000b
db 11111010b,10100000b,    11111010b,11000000b,    11111010b,11100000b
db 11111011b,00000000b,    11111011b,00100000b,    11111011b,01000000b
db 11111011b,01100000b,    11111111b,01100000b,    11111111b,10100000b
db 10001100b,10001110b,    10001101b,11101110b,    10001100b,10101110b
db 10001101b,11001110b,    11111000b,11100000b,    11111100b,10000000b
db 11111100b,01000000b,    11111001b,10100000b,    11111100b,10100000b
db 11111100b,01100000b
end
---------------------------------------------------------------------------------
各種遙控器編碼不同,如果你采用的是其他遙控器,修改幾個(gè)參數(shù)即可(當(dāng)然按鍵的編碼表肯定不同了),即計(jì)數(shù)器的值不同,不過有的遙控器有機(jī)器碼(機(jī)器碼每個(gè)按鍵都是一樣的),此時(shí)可以跳過機(jī)器碼的采集。最后有一點(diǎn)想提一下的是,剛開始不知道遙控器的編碼是比較麻煩的,筆者在“雙龍電子“網(wǎng)站下載了個(gè)聲卡示波器,用他可以一目了然觀看遙控器的波形,測(cè)量其脈沖寬度,有了它確實(shí)方便很多,該軟件可以到雙龍公司網(wǎng)站http://www.sl.com.cn/免費(fèi)下載使用。如果你想用遙控器遙控電腦,你可以自己編寫一個(gè)接受串行口應(yīng)用軟件,或者你可以直接下載使用Girder這個(gè)軟件,該軟件是專門為串口遙控器做的,很好用,下載地址為:http://www.girder.nl/,你可以利用這個(gè)軟件定義遙控器來遙控你電腦移動(dòng)鼠標(biāo)、鍵盤操作、上網(wǎng)瀏覽、打開播放器、關(guān)機(jī)等。

Tags:單片機(jī),紅外解碼器  
責(zé)任編輯:admin
相關(guān)文章列表
基于AT89C52單片機(jī)控制的雙軸太陽自動(dòng)跟蹤系統(tǒng)設(shè)計(jì)
ESP32單片機(jī)入門篇
超聲波測(cè)距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測(cè)距C語言程序
七段數(shù)碼管顯示原理研究_數(shù)碼管顯示0~9對(duì)應(yīng)的段碼
單片機(jī)C語言編程入門教程  流水燈程序示例
基于51單片機(jī)—多功能秒表,多功能計(jì)時(shí)器C語言程序
STC89C52單片機(jī)數(shù)字電流表電壓表源碼與電路圖  51單片機(jī)電流電壓
自學(xué)stm32單片機(jī)四個(gè)步驟,實(shí)用又高效!
先學(xué)51還是先學(xué)STM32?STM32和51單片機(jī)的區(qū)別
單片機(jī)最小系統(tǒng)介紹及電路設(shè)計(jì) STM32單片機(jī)最小系統(tǒng)
什么是PIC單片機(jī)
為什么51單片機(jī)的晶振一般使用11.0592? 51單片機(jī)常用波特率初值表
51單片機(jī)寄存器功能一覽表
單片機(jī)寫延時(shí)程序的幾種方法
自學(xué)單片機(jī)編程之中斷與時(shí)鐘程序
哈佛結(jié)構(gòu)與馮·諾伊曼結(jié)構(gòu)區(qū)別以及X86體系
單片機(jī)萬年歷:公歷日期與農(nóng)歷日期的相互轉(zhuǎn)換程序
AVR定時(shí)器1的CTC模式設(shè)置
單片機(jī)超聲波視覺識(shí)別系統(tǒng)的測(cè)量軟件開發(fā),超聲波測(cè)距
LCD1602的單片機(jī)驅(qū)動(dòng)詳解
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢
欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
久久久久免费观看| 午夜婷婷国产麻豆精品| 亚洲免费看黄网站| 美洲天堂一区二卡三卡四卡视频| 高清视频一区二区| 欧美一区二区网站| 一区二区三区欧美久久| 懂色av中文字幕一区二区三区| 欧美一区二区免费视频| 亚洲免费三区一区二区| 国产精品888| 精品国产污网站| 肉肉av福利一精品导航| 欧美亚洲精品一区| 亚洲精选视频免费看| 国产成人免费网站| 久久综合久久综合久久| 免费在线观看日韩欧美| 欧美日韩精品一区二区三区蜜桃| 国产精品美女久久久久久久 | 亚洲国产aⅴ天堂久久| 亚洲精品视频免费看| 另类综合日韩欧美亚洲| 91网页版在线| 国产欧美综合色| 日韩av成人高清| 在线观看日韩电影| 中文字幕亚洲在| 国产主播一区二区| 日韩一区二区免费电影| 亚洲一区视频在线| 91视视频在线观看入口直接观看www| 欧美日韩免费观看一区二区三区| 国产三级精品视频| 日本伊人精品一区二区三区观看方式| 国产99一区视频免费| 欧美一二三在线| 亚洲欧美日韩久久精品| 白白色 亚洲乱淫| 久久久久久黄色| 精品中文字幕一区二区| 精品毛片乱码1区2区3区| 国产精品久久久久永久免费观看| 风间由美一区二区三区在线观看 | 一色桃子久久精品亚洲| 国产精品亚洲视频| 国产视频一区不卡| 国产mv日韩mv欧美| 国产精品日日摸夜夜摸av| 国产成a人无v码亚洲福利| 国产日韩综合av| 国产999精品久久久久久绿帽| 久久综合精品国产一区二区三区 | 一区二区三区在线不卡| www.99精品| 亚洲视频在线一区观看| 91蝌蚪porny九色| 中文字幕乱码久久午夜不卡| 韩国成人福利片在线播放| 欧美午夜精品理论片a级按摩| 欧美国产一区在线| 不卡视频一二三四| 亚洲国产日韩在线一区模特| 欧美日韩视频在线观看一区二区三区| 午夜精品久久一牛影视| 欧美一区二区女人| 国产不卡在线播放| 亚洲免费观看高清完整版在线| 精品视频一区二区不卡| 麻豆精品新av中文字幕| 国产日韩v精品一区二区| av网站免费线看精品| 亚洲国产一二三| 精品少妇一区二区三区免费观看| 午夜精品久久久久久久| 国产视频一区在线播放| 色欧美片视频在线观看| 亚洲综合色在线| 欧美日本在线播放| 成人福利视频网站| 日韩国产欧美三级| 国产精品色婷婷久久58| 91成人免费网站| 黄色日韩网站视频| 夜夜嗨av一区二区三区网页| 日韩欧美123| 91在线免费视频观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人在线视频一区| 亚洲成人午夜影院| 国产精品盗摄一区二区三区| 欧美精品色综合| av爱爱亚洲一区| 精品一区二区三区影院在线午夜| 亚洲伦在线观看| 欧美精品一区二区久久久| 欧洲精品一区二区| 丁香婷婷综合激情五月色| 视频一区中文字幕| 中文字幕亚洲成人| 日韩欧美国产午夜精品| 成人午夜精品在线| 亚洲国产精品综合小说图片区| 久久综合九色综合97婷婷| 在线中文字幕一区| 久久99热这里只有精品| 一区二区欧美国产| 日韩免费高清视频| 欧美亚洲一区二区三区四区| 成人免费视频免费观看| 久久成人免费电影| 日本成人中文字幕| 舔着乳尖日韩一区| 一级中文字幕一区二区| 国产偷国产偷精品高清尤物| 欧美撒尿777hd撒尿| 日日嗨av一区二区三区四区| 91精品国产91久久久久久最新毛片 | 91精品福利视频| 亚洲高清免费观看 | 色天使久久综合网天天| 国产99久久久国产精品| 免费成人性网站| 亚洲一二三级电影| 亚洲综合丁香婷婷六月香| 久久亚洲精品小早川怜子| 91伊人久久大香线蕉| 国产69精品久久久久777| 国产最新精品免费| 国产又粗又猛又爽又黄91精品| 免费欧美在线视频| 精品亚洲porn| 久久99国产精品免费网站| 日韩**一区毛片| 青草av.久久免费一区| 免费在线观看精品| 国模一区二区三区白浆| 国产精品一级二级三级| 粉嫩一区二区三区性色av| 粉嫩绯色av一区二区在线观看 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产亚洲欧美日韩在线一区| 中文字幕精品一区二区三区精品| 中文字幕的久久| 中文字幕一区二区视频| 亚洲精品美腿丝袜| 婷婷久久综合九色综合伊人色| 日韩国产欧美视频| 国产高清视频一区| gogogo免费视频观看亚洲一| 91久久国产最好的精华液| 欧美日韩精品一区二区天天拍小说| 91精品国产综合久久精品性色 | 欧美大胆人体bbbb| 欧美经典三级视频一区二区三区| 国产精品美女久久久久久久| 亚洲一区二区三区影院| 日本不卡中文字幕| 国产成人av电影在线观看| 91黄色免费网站| 精品国产精品网麻豆系列| 久久久影院官网| 亚洲日本va在线观看| 亚洲影视资源网| 日韩经典中文字幕一区| 国产综合色精品一区二区三区| 国产成人精品亚洲777人妖 | 久久久精品国产免费观看同学| 国产精品久久久久国产精品日日| 亚洲综合色成人| 国产精品2024| 欧美三区在线观看| 国产亚洲一本大道中文在线| 亚洲第一福利视频在线| 国产91精品在线观看| 在线不卡中文字幕播放| 中文字幕视频一区| 蜜乳av一区二区| 欧美怡红院视频| 国产精品网站在线播放| 日本中文字幕一区| 91免费观看视频在线| 欧美一区2区视频在线观看| 国产亚洲美州欧州综合国| 亚洲黄色片在线观看| 韩国中文字幕2020精品| 色综合色综合色综合色综合色综合| 欧美日韩中文精品| 欧美精品一区二区久久婷婷 | 精品国产一区二区精华| 一区二区三区色| 不卡在线观看av| 26uuu亚洲婷婷狠狠天堂| 亚洲码国产岛国毛片在线| 国产精品综合视频| 日韩免费视频线观看| 一区二区理论电影在线观看| 国产伦理精品不卡| 欧美一区二区久久久| 亚洲免费在线播放|