資源描述:
《紅外解碼程序.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、紅外解碼程序????????本篇介紹紅外解碼的原理和程序的寫法。?????????下面來看一下,紅外線是如何編碼的。?下面來具體說一下,解碼的原理,每按一下遙控器的一個(gè)按鍵,遙控器就會(huì)發(fā)出32個(gè)“0”“1”代碼(當(dāng)然是通過高低電平的占空比來判斷是0還是1的),具體是0,1是如何編碼的上面圖片中有介紹,和一個(gè)引導(dǎo)碼,引導(dǎo)碼的作用是告訴處理器,接下來將要開始發(fā)送代碼,我們?cè)诰帉懗绦驎r(shí),當(dāng)檢測(cè)到引導(dǎo)碼時(shí),就應(yīng)該準(zhǔn)備接受數(shù)據(jù)了。32位代碼中的前16位是用戶識(shí)別碼,不同的遙控器不相同,防止互相干擾的,后16是8為數(shù)據(jù)碼,和8位數(shù)據(jù)反碼。?????????接
2、下來開始介紹如何解碼程序的編寫。??????????程序中用到了兩個(gè)中斷,一個(gè)是定時(shí)器中斷,一個(gè)是外部中斷。定時(shí)器中斷用來準(zhǔn)確計(jì)時(shí),判斷接受的代碼是0還是1,外部中斷用來準(zhǔn)確確定定電平到來的時(shí)刻,然后開始計(jì)時(shí)。/*********************************************************函數(shù)功能:紅外解碼,用八位數(shù)碼管顯示紅外線的按鍵碼,便于紅外控制測(cè)試環(huán)境:hot?51學(xué)習(xí)板編譯環(huán)境:keil4整理人:張家越??QQ:整理時(shí)間:2011-04-03******************************
3、******************************/#include#define?uchar?unsigned?char#define?uint?unsigned?intuchar?code?seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,?????????0x77,0x7c,0x39,0x5E,0x79,0x71??};???????????//0-f的段選碼unsigned?char?code?seg_we[]={0,1,2,3,4,5,6,
4、7};uchar?irtime,startflag,bitnum,irreceok;uchar?irdata[33];uchar?irprosok;uchar?display[8];uchar?ircode[8]?;sbit?led1=P0^1;sbit?led2=P0^2;/************************************************************************函數(shù)功能:延時(shí)函數(shù),在數(shù)碼管顯示時(shí)使用,不需要很精確***************************************
5、**********************************/?void?delay_50us(uint?t){?uchar?j;?for(;t>0;t--)??for(j=19;j>0;j--);}/**************************************************************************函數(shù)的功能:定時(shí)器0的初始化**************************************************************************/?void?ti
6、mer0init(){?TMOD=0x02;???//設(shè)置定時(shí)器工作在方式2?TH0=0x00;???//??TL0=0x00;???//設(shè)置定時(shí)器的初值??ET0=1;????//開定時(shí)器中斷??TR0=1;????//?打開定時(shí)器??EA=1;????//開總中斷?}/************************************************************************外部中斷1的初始化**********************************************************
7、*************/?void?int1init(){??IT1=1;??????//設(shè)置觸發(fā)方式為上升沿??EX1=1;??????//開外部中斷1??EA=1;???????//開總中斷?}/**********************************************************************定時(shí)器0的功能函數(shù),每中斷一次irtime++,用于計(jì)時(shí)***********************************************************************/?voi
8、d?timer0()?interrupt?1{?irtime++;??????//定時(shí)器中斷一次irtime++,用于計(jì)時(shí)?}?/***