用增強型51單片機實驗板實現(xiàn)紅外線遙控
TR1=0://低電平(對發(fā)射電路而言)測試結束Iow_level_time=TH1*256+TL1:
//保存低電平的數(shù)據TH1=0;TL1=0;TR1=1;//為增加計時的準確性,數(shù)據的處理都是在計時過程里//判斷引導碼(或重復碼)是否正確,如果不正確,則設置出錯標志位,并退出中斷程序if((high_level_time8500)II(high_level_time>9500)II(Iow_level_time1000)II(Iow_level_time>5000)){return1://因是引導碼出錯,所以直接初始化后重新開始測試}
//——————————————————//對是引導碼還是重復碼進行判斷。如果是重復碼,就跳過后面數(shù)據的讀取if((Iow_level—time>1000)(Iow_level_time3500))repeat_code_detected=1:
if((Iow_level_time>4000)(Iow_level_time5000))Ioad_code_detected=1;if(repeat_code_detected==1)return1;//直接結束,temp1=uPD6121_read_code_8();//讀后面的系統(tǒng)、按健等數(shù)據,temp2=uPD6121_read_code_8();teMP3=uPD6121_read_code_8();temp4=uPD6121_read_code_8();TR1=0:
if(decode_error==1)return1://無論是哪部分解碼出錯,都是重新開始if((temp1!=Ntemp2)II(temp3!
=~temp4)){return1;}
sys_code=temp1:
key_code=temp3;data_available=1;return0:
如圖5所示,是我們完成紅外線實驗所必需的設備,準備好硬件設備后,我們將紅外線解碼控制程序通過A51編程器燒入AT89S51單片機芯片,然后將芯片插到增強型51實驗板上通電運行即可。
圖6為增強型51實驗板做紅外解碼電路,從而進行數(shù)碼管顯示的實驗電路板。
最后,要提醒大家一下,在做紅外實驗需要注意的是:不同的紅外線遙控器編碼方式可能不同,你可能會發(fā)現(xiàn)有很多紅外線遙控器的外表幾乎都一樣。
但對于同一電器設備卻有些能用,有些不能用,這就是因為遙控器內部使用了不同的編碼芯片的原因,或許你會想到用家中的電視機或空調的遙控器來完成紅外線解碼的實驗,但你必須得事先知道該遙控器的紅外線編碼芯片是什么類型的,否則就比較麻煩了,而現(xiàn)在眾多紅外線遙控器廠商為了保護自己的知識產權已將編碼芯片打磨,這對我們DIY愛好者來說就不太有利了。
評論