用AT89S51微控制器製作紅外電視遙控器

2021-04-02 00:44:31 字數 2298 閱讀 7113

一般紅外電視遙控器的輸出都是用編碼後序列資料對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相容 微...