紅外遙控解碼器設(shè)計(jì)
你家里是否有一個(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ù)后由串口軟件決定如何處理。
評(píng)論