一般紅外電視遙控器的輸出都是用編碼後序列資料對38~40khz的方波進行脈衝幅度調製而產生的。
當發射器按鍵按下後,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特徵:
採用脈寬調變的序列碼,以脈寬為0.565ms、間隔0.56ms、週期為1.125ms的組合表示二進位制的「0」;以脈寬為0.565ms、間隔1.685ms、週期為2.25ms的組合表示二進位制的「1」。
上述「0」和「1」組成的32位二進位製碼經38khz的載頻進行二次調製,然後再通過紅外發射二極體產生紅外線向空間發射。一般電視遙控器的遙控編碼是連續的32位二進位製碼組,其中前16位為使用者識別碼,能區別不同的紅外遙控裝置,防止不同機種遙控碼互相干擾。後16位為8位的操作碼和8位的操作反碼,用於核對資料是否接收準確。
根據紅外編碼的格式,傳送資料前需要先傳送9ms的起始碼和4.5ms的結果碼。
遙控序列資料編碼波形如下圖所示:
接收方一般使用tl0038一體化紅外線接收器進行接收解碼,當tl0038接收到38khz紅外訊號時,輸出端輸出低電平,否則為高電平。所以紅外遙控器傳送紅外訊號時,參考上面遙控序列資料編碼波形圖,在低電平處傳送38khz紅外訊號,高電平處則不傳送紅外訊號。
微控制器紅外電視遙控器電路圖如下:
c51程式**:
#include
static bit op; //紅外發射管的亮滅
static unsigned int count; //延時計數器
static unsigned int endcount; //終止延時計數
static unsigned char flag; //紅外傳送標誌
char iraddr1; //十六位位址的第乙個位元組
char iraddr2; //十六位位址的第二個位元組
void sendirdata(char p_irdata);
void delay();
void main(void)
while(1);
} //定時器0中斷處理
void timeint(void) interrupt 1
else
p3_4 = op;
} void sendirdata(char p_irdata)
while(count
//傳送4.5ms的結果碼
endcount=117
flag=0;
count=0;
do{}while(count
//傳送十六位位址的前八位
irdata=iraddr1;
for(i=0;i<8;i++)
while(count
//停止傳送紅外訊號(即編碼中的高電平)
if(irdata-(irdata/2)*2) //判斷二進位制數個位為1還是0
else
flag=0;
count=0;
do{}while(count
irdata=irdata>>1;
}//傳送十六位位址的後八位
irdata=iraddr2;
for(i=0;i<8;i++)
while(count
if(irdata-(irdata/2)*2)
else
flag=0;
count=0;
do{}while(count
irdata=irdata>>1;
}//傳送八位資料
irdata=p_irdata;
for(i=0;i<8;i++)
while(count
if(irdata-(irdata/2)*2)
else
flag=0;
count=0;
do{}while(count
irdata=irdata>>1;
}//傳送八位資料的反碼
irdata=~p_irdata;
for(i=0;i<8;i++)
while(count
if(irdata-(irdata/2)*2)
else
flag=0;
count=0;
do{}while(count
irdata=irdata>>1;
}endcount=10;
flag=1;
count=0;
do{}while(count
void delay()}}
製作的實物如下圖所示:
因為只是實驗,所以顧不得外形的美觀了,呵呵,不好意思獻醜了!
【參考】
等網路上的文章。
51微控制器(一) 初學STC89C52微控制器
1.cpu運算器和控制器 微控制器的核心構成部分之一 2.內部資料儲存器存放可讀的資料,如程式中的定義。3.程式儲存器8kb,0000h 1fffh 存放程式,原始資料。4.定時 計算器3個定時器 計算器,即可設定成計數方式用於外部事件計數,也可以設定成定時模式,用於對微控制器的計時控制。5.並行埠...
AT89S52微控制器之硬體儲存結構
匯流排 bus at89s52補充。總結機器語言是機器指令的集合,機器指令是啥?機器指令展開來講就是一台機器可以正確執行的命令,具體點就是一串二進位制數字,機器 計算機 微控制器 只能看懂這玩意,然後把二進位制數轉化為一串高地電平,機器附帶的器件受到驅動,開始運算。比如下圖,你給in 0,燈就亮了。...
AT89C51微控制器高速序列輸出口設計
2006 05 11 09 46 20 at89c51微控制器高速序列輸出口設計 摘要 介紹使用at89c51微控制器擴充套件高速序列同步移位輸出口的方法,給出基於分立ttl元器件和可程式設計邏輯器件pld兩種電路的實現方案,在led點陣顯示屏系統中已得到應用。at89c51 與mcs 51相容 微...