<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用AT89S51單片機制作紅外遙控器的資料和源代碼詳細說明

Wildesbeast ? 來源:單片機教程網 ? 作者:單片機教程網 ? 2020-05-30 09:26 ? 次閱讀

本文檔的主要內容詳細介紹的是使用AT89S51單片機制作紅外遙控器的資料和源代碼詳細說明。

一般紅外電視遙控器的輸出都是用編碼后串行數據對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 《AT89X51.h》

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)

{

count = 0;

flag = 0;

OP = 0;

P3_4 = 0;

EA = 1; //允許CPU中斷

TMOD = 0x11; //設定時器0和1為16位模式1

ET0 = 1; //定時器0中斷允許

TH0 = 0xFF;

TL0 = 0xE6; //設定時值0為38K 也就是每隔26us中斷一次

TR0 = 1;//開始計數

iraddr1=3;

iraddr2=252;

do{

delay();

SendIRdata(12);

}while(1);

}

//定時器0中斷處理

void timeint(void) interrupt 1

{

TH0=0xFF;

TL0=0xE6; //設定時值為38K 也就是每隔26us中斷一次

count++;

if (flag==1)

{

OP=~OP;

}

else

{

OP = 0;

}

P3_4 = OP;

}

void SendIRdata(char p_irdata)

{

int i;

char irdata=p_irdata;

//發送9ms的起始碼

endcount=223;

flag=1;

count=0;

do{}while(count《endcount);

//發送4.5ms的結果碼

endcount=117

flag=0;

count=0;

do{}while(count《endcount);

//發送十六位地址的前八位

irdata=iraddr1;

for(i=0;i《8;i++)

{

//先發送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

//停止發送紅外信號(即編碼中的高電平)

if(irdata-(irdata/2)*2) //判斷二進制數個位為1還是0

{

endcount=41; //1為寬的高電平

}

else

{

endcount=15; //0為窄的高電平

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//發送十六位地址的后八位

irdata=iraddr2;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//發送八位數據

irdata=p_irdata;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//發送八位數據的反碼

irdata=~p_irdata;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

flag=0;

}

void delay()

{

int i,j;

for(i=0;i《400;i++)

{

for(j=0;j《100;j++)

{

}

}

}

因為只是實驗,所以顧不得外形的美觀了,呵呵,不好意思獻丑了!

照片中下面的是我電視卡所附的遙控器,中間的為電視卡紅外接收頭,上面的電路可用來“代替”原配遙控器來控制電視卡電視頻道……

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6005

    文章

    44015

    瀏覽量

    621922
  • 遙控器
    +關注

    關注

    18

    文章

    814

    瀏覽量

    64328
  • AT89S51
    +關注

    關注

    3

    文章

    229

    瀏覽量

    33931
收藏 人收藏

    評論

    相關推薦

    51單片機制作格力空調遙控器(C語言)

    ),挺好玩的。都是基本功能使用。做了流水燈,數碼管顯示。(對大神來說都是很easy case)我整理了一份用紅外功能,控制格力空調的程序,喜歡就拿去玩吧,萬一遙控器壞了呢,嘻嘻~~本人制作背景:1
    發表于 04-22 16:56

    基于單片機89S51激光遙控器硬件設計

    [tr=transparent]激光遙控器-硬件.doc 基于單片機89S51通過激光通信構成遠距離遙控裝置,對遠距離目標,配合視覺進行觀測進行人機互動控制。具有當前
    發表于 07-13 09:34

    AT89S51系列單片機的硬件結構

    ,單片機雙機通信,簡易波形發生,簡易數字電壓表,移動字幕的制作,校園打鈴系統。2、課程的任務和要求本課程的主要任務是讓學生熟悉AT89S51系列
    發表于 07-20 06:55

    怎樣去設計一種基于STC89C52RC單片機制作紅外循跡小車

    單片機:基于STC89C52RC單片機制作紅外循跡小車(4個傳感)個人感覺紅外循跡小車和那些
    發表于 09-03 09:05

    單片機制作通用型電視遙控器

    單片機制作通用型電視遙控器:本文介紹了一種用MCS-51系列單片機AT89C52代替專用遙控
    發表于 10-27 14:07 ?212次下載

    AT89S51引腳圖,AT89S51單片機引腳說明及管腳定義

    AT89S51引腳圖,AT89S51單片機引腳說明及管腳定義  
    發表于 04-29 22:07 ?5.1w次閱讀
    <b class='flag-5'>AT89S51</b>引腳圖,<b class='flag-5'>AT89S51</b><b class='flag-5'>單片機</b>引腳<b class='flag-5'>說明</b>及管腳定義

    51單片機的頭文件有哪些代碼詳細說明

    本文檔的主要內容詳細介紹的是51單片機的頭文件有哪些代碼詳細說明。
    發表于 09-18 17:21 ?7次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>的頭文件有哪些<b class='flag-5'>代碼</b><b class='flag-5'>詳細說明</b>

    單片機遙控解碼的源代碼詳細說明

    本文檔的主要內容詳細介紹的是單片機遙控解碼的源代碼詳細說明。
    的頭像 發表于 09-26 11:07 ?2765次閱讀

    51單片機紅外遙控器解碼資料下載

    電子發燒友網為你提供51單片機紅外遙控器解碼資料下載的電子資料下載,更有其他相關的電路圖、
    發表于 04-07 08:45 ?30次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>紅外</b><b class='flag-5'>遙控器</b>解碼<b class='flag-5'>資料</b>下載

    2.基于51單片機的藍牙遙控器制作

    上一次介紹了基于51單片機的藍牙遙控小車,使用的是手機APP作為遙控器,本節中介紹使用51單片機制作
    發表于 11-20 13:36 ?33次下載
    2.基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的藍牙<b class='flag-5'>遙控器</b><b class='flag-5'>制作</b>

    基于51單片機紅外遙控步進電機例程源代碼

    基于51單片機紅外遙控步進電機例程源代碼
    發表于 05-16 11:16 ?9次下載

    基于51單片機紅外遙控舵機例程源代碼

    基于51單片機紅外遙控舵機例程源代碼
    發表于 05-16 11:16 ?14次下載

    基于51單片機紅外遙控繼電器例程源代碼

    基于51單片機紅外遙控繼電器例程源代碼
    發表于 05-16 11:15 ?0次下載

    基于51單片機紅外遙控器設計

    電子發燒友網站提供《基于51單片機紅外遙控器設計.rar》資料免費下載
    發表于 01-03 11:23 ?1次下載

    基于51單片機紅外遙控器設計

    電子發燒友網站提供《基于51單片機紅外遙控器設計.rar》資料免費下載
    發表于 01-12 09:22 ?3次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>