麻豆视传媒app网站在线观看|久久久久久精品免费久精品蜜桃|久久av中国一区|免费看a|麻豆文化传媒是哪个地区|黑料网在|三级日本片|久久都是精品|在线免费看a|8x8x华人,爱豆传媒官网下载,91大神在线精品视频二区,www.久久亚洲欧美偷拍

基于AT89C2051的紅外線接收控制器的制作

2016-07-05 15:37
基于AT89C2051的紅外線接收控制器的制作基于AT89C2051的紅外線接收控制器的制作紅外線接收控制器的制作 在生活中,,我們常用到紅外線控制各類電器,如彩電,、空調(diào)、電風(fēng)扇等,。為我們帶來較多的方便。但有時(shí)我們?nèi)愿械讲环奖?。如看完電視后,,用遙控器只能關(guān)掉電視主電源,電視仍處于待機(jī)狀態(tài),。使用者還得走到電視跟前.按下電小視電源開關(guān)方能放心,。若想看電視。還得動(dòng)身開電視,,顯得很麻煩,。尤其是冬天躺在床上看電視,上上下下,,深感不便,。本文以利用紅外遙控器來遙控風(fēng)扇的制作方法為例(可任選一只紅外線遙控器.能調(diào)速,軟件稍作改變,,可增加定時(shí)功能等),來介紹紅外線接收控制器的制作方法,,如果制作電視交流電源的開,、關(guān)控制器,可與電視共用一只遙控器,,制作也較簡單些,。 制作思路 紅外遙控發(fā)射器是利用紅外線作載體傳送信息的,發(fā)射周期不等的經(jīng)過調(diào)制后串行碼.該串行碼一般由引導(dǎo)碼,、用戶識(shí)別碼,、操作碼組成。經(jīng)紅外接收頭解碼后得到一串周期不等的矩形波,。如示意圖1,。 不同型號(hào)的遙控發(fā)射器的波形寬度不同。即周期T1,、T2……不同.在不知手頭遙控發(fā)射器的波形周期的情況下.首先要制作一個(gè)檢測(cè)紅外線周期的工具,。根據(jù)測(cè)得的周期規(guī)律來制作紅外線接收控制器。 制作方法 檢測(cè)紅外周期的器件制作.見圖2,。 當(dāng)紅外接收頭沒有接收到發(fā)射器發(fā)送來的紅外線.其輸出端輸出高電平(約 5V),。當(dāng)接收到紅外線,輸出端電平變低.送到單片機(jī)AT89C2051的外部中斷1口即INT1,,使其發(fā)生中斷而進(jìn)入中斷服務(wù):啟動(dòng)定時(shí)器1并開M-I-數(shù),。相當(dāng)于在圖1的A點(diǎn).1個(gè)周期后即C點(diǎn)。單片機(jī)第二次中斷。關(guān)定時(shí)器1.記下周期T1(實(shí)際上只記下TH1的數(shù)值,。 TL1的值可以丟棄),。然后清TH1、TL1,,再啟動(dòng)定時(shí)器1重新計(jì)數(shù),,第二個(gè)周期完后,同樣會(huì)引起單片機(jī)發(fā)生中斷.再記下周期T2'…一,,如此記下40-50個(gè)周期(一般紅外編碼為4字節(jié).即32BIT.之前還有引導(dǎo)碼,。又因接收到的紅外數(shù)據(jù)不一定是從引導(dǎo)碼開始,要分析一次完整的串行碼,,應(yīng)盡可能多記下紅外矩形波周期數(shù)),。接收完后,通過按輕觸開關(guān)將各記下的各周期的THl在數(shù)碼管顯示出來以作分析(每按一次輕觸開關(guān),,顯示下一個(gè)周期數(shù)),。 編程方法 在main()中開中斷。啟動(dòng)定時(shí)器1.即EA=I,;EX1=1:IT1=1,;TRI=I: 在外部中斷1的服務(wù)程序中編寫如下語名:#defineCNT50//預(yù)測(cè)50個(gè)紅外線周期 DATA Byte value_h[CNT]://記錄周期的變量(數(shù)組) DATA Byte count=0;//接收到的周期數(shù) void int1(void)interrupt 2{ if(TH1==TL1&&TL1==0)//判斷是否是第一次接收到紅外數(shù)據(jù) { TR1=1: }elseI TRl=0,;value_h[count]:THl,; THl=TLl=0;TRI=I:count ,; if(count==CNT) { EXl=0:count=u,; l} l 假設(shè)接收到的TH的數(shù)值為:30,50.04,08,08,08,04,04,04,04,,04,,08,08,08,04,04,04,04,。08,04,04,08,,04,04,04,04,04,04,08,08,04.08,08,,08,08,3f,50.... 稍作分析可知,。表示高低電平的有效數(shù)為:04,08,。若將04定作低電平.08定作高電平.舍棄其他數(shù)據(jù),,得到4字節(jié)數(shù)據(jù)即:01110000。01110000,,10010000,。01101111,。轉(zhuǎn)為十六進(jìn)制后得:70h,70h,90h,6fh,至此得到遙控發(fā)射器剛才按下的鍵值碼.用同樣的方法可以測(cè)得其他鍵鍵值碼,。假設(shè)有:70h,70h,0x90,0x6f,。//0鍵70h,70h.0x00,0xff。//1鍵70h,70h.0xd0,0x2f//power鍵 根據(jù)以上數(shù)據(jù)分析得.每鍵碼為4字節(jié).前2字節(jié)固定不變,,為用戶識(shí)別碼,。后2字節(jié)均不同,是操作碼,。將遙控器上的各鍵鍵值碼測(cè)出后,,根據(jù)這些數(shù)據(jù)可以根據(jù)制作需要進(jìn)行編程了。因鍵值碼為4字節(jié)太長,。不利于編程,,需要將各鍵鍵值轉(zhuǎn)為相對(duì)應(yīng)的1字節(jié)的數(shù)據(jù),如:70h,70h,0x90,0x6f,對(duì)應(yīng)于O,,70h,70h,0x00,0xff對(duì)應(yīng)于1..…· 轉(zhuǎn)換方法: 建立一個(gè)數(shù)組,,將上述測(cè)得的各鍵碼按順序放入數(shù)組中(去掉用戶識(shí)別碼) code Byte arr[][2]={0x90,0x6f.//0,盡可能按鍵0,、鍵1..·…的先后順序放,,以符合習(xí)慣0x00,0xff,//1……Oxl0,0xef.//90xd0, Ox2f //power 13}; 在接收紅外線的外部中斷1函數(shù)中編寫如下的鍵碼轉(zhuǎn)換語句: DATA Byte arrtmp[4];DATA Byte Keytmp,;//轉(zhuǎn)換后的鍵值寄存變量DATA Byte Keyval=NOKEY,; bit KeyOk;//鍵值轉(zhuǎn)換完成與否的標(biāo)志 bit d_Ok;//接收到一個(gè)完整的鍵碼標(biāo)志 void Ex_int(void)interrupt 2{ Byte i; Byte(*p)[2]; …… if(d_Ok)//若接收到完整的鍵碼{ d_Ok=0://清除 if(arrtmp[0]==0x70&&arrtmp[1] ==0x70){//鍵碼轉(zhuǎn)換 for(p=arr,bO:i<14:i ,。p ) {if(arrtmp[2]==*(*p 0)&&arrtmp[3] ==*(*p 1)) { Keytmp=i:KeyOk=1;//鍵值 轉(zhuǎn)換成功標(biāo)志 break,; }else{Keytmp=NOKEY,;l//未 接收到完整的鍵值 } }eIse{Keytmp=NOKEY;} } l 經(jīng)過轉(zhuǎn)換后的Keytmp為0,、1,、2……的整數(shù).然后再編寫主函數(shù)、調(diào)速函數(shù)(參源程序),。來進(jìn)行電風(fēng)扇調(diào)速,。 有關(guān)電路的一些解釋:單片機(jī)U1(AT89C2051)P37腳輸出高低電平通過R13控制光耦可控硅MOC3041(參數(shù)可在《電子制作》網(wǎng)站查找)通斷.通過控制其通斷時(shí)間比來達(dá)到電風(fēng)扇調(diào)速。 有關(guān)紅外周期檢測(cè)和電風(fēng)扇調(diào)速實(shí)例的源程序可在本刊網(wǎng)站上下載,。