色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

hs0038紅外接收電路

姚小熊27 ? 來源:xx ? 2019-09-13 11:24 ? 次閱讀

紅外遙控有發送和接收兩個組成部分。發送端采用單片機將待發送的二進制信號編碼調制為一系列的脈沖串信號,通過紅外發射管發射紅外信號。紅外接收完成對紅外信號的接收、放大、檢波、整形,并解調出遙控編碼脈沖。為了減少干擾, 采用的是價格便宜性能可靠的一體化紅外接收頭(HS0038, 它接收紅外信號頻率為38kHz,周期約26μ s) 接收紅外信號,它同時對信號進行放大、檢波、整形得到 TTL 電平的編碼信號,再送給單片機,經單片機解碼并執行去控制相關對象。具體實現過程如下:

hs0038紅外接收電路

(在這里特別強調:編碼與解碼是一對逆過程,不僅在原理上是一對逆過程,在碼的發收過程也是互反的,即以前發射端原始信號是高電平,那接收頭輸出的就是低電平,反之亦然。因此為了保證解碼過程簡單方便,在編碼時應該直接換算成其反碼。)

hs0038紅外接收電路

1.紅外發射部分:

下圖為紅外發射部分的電路擬圖:

hs0038紅外接收電路

編碼過程:

(1) 二進制信號的調制

二進制信號的調制由單片機來完成,它把編碼后的二進制信號調制成頻率為38kHz的間斷脈沖串(用定時器來完成),相當于用二進制信號的編碼乘以頻率為38kHz的脈沖信號得到的間斷脈沖串,即是調制后用于紅外發射二極管發送的信號。

(2)PPM編碼

這種遙控編碼具有以下特征:

1遙控編碼脈沖由前導碼、16 位地址碼(8位地址碼、8 位地址碼的反碼)和 16 位操作碼(8 位操作碼、8 位操作碼的反碼)組成。前導碼:是一個遙控碼的起始部分,由一個9ms的高電平 ( 起始碼 ) 和一個4. 5ms的低電平 ( 結果碼 )組成,作為接受數據的準備脈沖。

16位地址碼:能區別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。

16 位操作碼:用來執行不同的操作。

2采用脈寬調制的串行碼,以脈寬為0.56ms、間隔0.56ms、周期為1.12ms的組合表示二進制的“0”;以脈寬為1.68ms、間隔0.56ms、周期為2.24ms的組合表示二進制的“1”。

hs0038紅外接收電路

(3)發送程序

#include 《AT89X51.h》

static bit OP; //紅外發射管的亮滅控制位

static unsigned int count; //延時計數器

static unsigned int endcount; //終止延時計數

static unsigned char flag; //紅外發送標志

sbit P3_4=P3^4;

char iraddr1; //十六位地址的第一個字節

char iraddr2; //十六位地址的第二個字節

void SendIRdata(char p_irdata);//發送子函數

void delay();

void main(void)

{

count = 0;

flag = 0; //無載波

OP = 0; //不亮

P3_4 = 0; //在后面會發現用OP賦值的

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; }//如果是待發送的有效數據flag=1,就在此產生載波(亮滅交變)

else

{OP = 0; }

P3_4 = OP;

}

void SendIRdata(char p_irdata) //發送數據子函數

{

int i;

char irdata=p_irdata;

//發送9ms的起始碼,并是載波模式有效

endcount=223;

flag=1;

count=0;

while(count《endcount);//等待中斷,控制亮滅交變的總時間為9ms

//發送4.5ms的結果碼,并是載波模式無效

endcount=117

flag=0;

count=0;

do{}while(count《endcount);

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

irdata=iraddr1;

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

{//一個周期里規定先以高電平開始,在以低電平結束。先發送0.56ms的38KHZ“1”的紅外波(即編碼中0.56ms的高電平)

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

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

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

{endcount=41; } //1為寬的高電平1.68ms

else

{endcount=15; } //0為窄的高電平0.56ms

flag=0;

count=0;

while(count《endcount);

irdata=irdata》》1;//依次取位

}

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

irdata=iraddr2; //此處已經是地址的反碼

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

{

endcount=10;

flag=1;

count=0;

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;

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;

while(count《endcount);

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

{endcount=41; }

else

{endcount=15; }

flag=0;

count=0;

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++)

{

}

}

}

一串完整的編碼如下圖所示

hs0038紅外接收電路

2.紅外接收部分:

紅外接收完成對紅外信號的接收、放大、檢波、整形,并解調出遙控編碼脈沖。為了減少干擾,采用的是價格便宜性能可靠的一體化紅外接收頭(HS0038,它接收紅外信號頻率為38kHz,周期約26us) 接收紅外信號,它同時對信號進行放大、檢波、整形得到 TTL電平的編碼信號,再送給單片機,經單片機解碼并執行去控制相關對象。

接收部分的電路擬圖為:

hs0038紅外接收電路

其應用程序為:

#include“reg52.h”

#define uchar unsigned char

#define uint unsigned int

#include“reg52.h”

#define uchar unsigned char

#define uint unsigned int

uchar ram[4]={0,0,0,0};//存放接受到的4個數據 地址碼16位+按鍵碼8位+按鍵碼取反的8位

void delaytime(uint time) //延遲90uS

{ uchar a,b;

for(a=time;a》0;a--)

{ for(b=40;b》0;b--); }

}

void rem()interrupt 0 //中斷函數

{

uchar ramc=0; //定義接收了4個字節的變量

uchar count=0; //定義現在接收第幾位變量

uint i=0; //此處變量用來在下面配合連續監測9MS 內是否有高電平

prem=1;

for(i=0;i《1100;i++) //以下FOR語句執行時間為8MS左右

{

if(prem) //進入遙控接收程序首先進入引導碼的前半部判斷,即:是否有9MS左右的低電平

return; //引導碼錯誤則退出 ,注意與break語句的區別

}

while(prem!=1); //等待引導碼的后半部 4.5 MS 高電平開始的到來。

delaytime(50); //延時大于4.5MS時間,跨過引導碼的后半部分,來到真正遙控數據32位中

//第一位數據的0.56MS開始脈沖

for(ramc=0;ramc《4;ramc++)//循環4次接收4個字節

{ for(count=0;count《8;count++) //循環8次接收8位(一個字節)

{

while(prem!=1); //開始判斷現在接收到的數據是0或者1 ,首先在這行本句話時,

//保已經進入數據的0.56MS 低電平階段

//等待本次接受數據的高電平的到來。

delaytime(9);//高電平到來后,數據0 高電平最多延續0.56MS,而數據1,高電平可延續1.66MS大于0.8MS 后我們可以再判斷遙控接收腳的電平。

if(prem) //如果這時高電平仍然在繼續那么接收到的數據是1的編碼

{ram[ramc]=(ram[ramc]《《1)+1;//將目前接收到的數據位1放到對應的字節中

delaytime(11); //如果本次接受到的數據是1,那么要繼續延遲1MS,這樣才能跨

//下個位編碼的低電平中(即是開始的0.56MS中)

}

else //否則目前接收到的是數據0的編碼

ram[ramc]=ram[ramc]《《1; //將目前接收到的數據位0放到對應的字節中

} //本次接收結束,進行下次位接收,此接收動作進行32次,正好完成4個字節的接收

}

if(ram[2]!=(~(ram[3]&0x7f))) //本次接收碼的判斷

{ for(i=0;i《4;i++) //沒有此對應關系則表明接收失敗,清除接受到的數據

ram[i]=0;

returned;}

main()

{

IT0=1; //設定INT0為邊沿觸發

EX0=1; //打開外部中斷0

EA=1; //全局中斷開關打開

while(1)

{

switch(dis_num)

{

case 0x81: num=0; break;

case 0xcf: num=1; break;

case 0x92: num=2; break;

case 0x86: num=3; break;

case 0xcc: num=4; break;

case 0xa4: num=5; break;

case 0xa0: num=6; break;

case 0x8f: num=7; break;

case 0x80: num=8; break;

case 0x84: num=9; break;

case 0x88: num=10;break;

case 0xe0: num=11;break;

case 0xb1: num=12;break;

case 0xc2: num=13;break;

case 0xb0: num=14;break;

case 0xb8: num=15;break;

}

P2=table[num];

P1=0x01;

delaytime(5);

}

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

    關注

    0

    文章

    158

    瀏覽量

    29686
  • 紅外遙控
    +關注

    關注

    22

    文章

    347

    瀏覽量

    45639
  • HS0038
    +關注

    關注

    1

    文章

    5

    瀏覽量

    13398
收藏 人收藏

    評論

    相關推薦

    單片機應用之紅外HS0038資料和程序

    單片機應用之紅外HS0038資料和程序
    發表于 03-26 21:02

    HS0038B紅外接收問題

    大家給看一下什么問題? 我現在做一個紅外接收裝置,用0038接收紅外管發射頻率38KHZ沒問題,用示波器看過,為什么接收這段沒反應呢?
    發表于 02-25 15:03

    請問在Proteus中紅外接收HS0038A2怎么找

    請問在Proteus中紅外接收HS0038A2怎么找?
    發表于 06-12 14:17

    5mm 紅外發射管940nm的接收管可以用hs0038接收嗎?

    5mm 紅外發射管940nm的接收管可以用hs0038接收嗎?還是要與之對應的接收管?
    發表于 06-02 21:53

    解調38K載波的信號的紅外接收電路該如何設計?

    HS0038一體化紅外接收器件內部的解調38K載波電路該如何設計呢,現在需要自己設計一個紅外接收
    發表于 11-21 18:00

    紅外接收設計問題

    of theperiod. This leaves at most another 1/3 of the period to spend in transition. 我目前設計了一個電路:使用HS0038B這個紅外接收
    發表于 12-09 10:46

    紅外遙控接收HS0038是如何與紅外遙控器相匹配的?紅外接收器的工作原理是怎么樣的?

    `附件為從HS0038接收到的波形,紅外遙控器發射過來的數據中有地址碼,接收器是如何處理地址碼的、 `
    發表于 07-13 08:28

    紅外接收HS0038A2

    紅外接收HS0038A2
    發表于 11-05 14:49

    單片機的紅外線發射和接收配置端口的問題

    紅外接收頭打算采用以下這些型號:電平型”紅外接收頭:IRM138C、IRM38BC、IRM138S-2、IRM38BL-2……“脈沖型”紅外
    發表于 07-21 13:23

    基于STC89C52芯片和HS0038紅外接收探頭的紅外通信系統該如何去設計?

    紅外遙控系統是由哪幾部分組成的?基于STC89C52芯片和HS0038紅外接收探頭的紅外通信系統該如何去設計?
    發表于 07-06 08:13

    如何對基于STC89C52和HS0038紅外通信進行實驗呢

    紅外遙控電路是由哪些部分組成的?如何對基于STC89C52和HS0038紅外通信進行實驗呢?
    發表于 10-28 07:01

    在用HS0038接收要遙控器的信號時,通常識用IO口查詢還是外部中斷?

    在用HS0038接收要遙控器的信號時,通常識用IO口查詢還是外部中斷。
    發表于 10-28 06:19

    紅外接收電路

    紅外接收電路資料,個人收藏資料參考,方便各位學習
    發表于 05-16 17:38 ?0次下載

    51單片機軟件解碼程序的核心要點

    紅外接收頭的型號有很多HS0038 VS838等 功能大致相同,只是引腳封裝不同。
    的頭像 發表于 11-21 09:30 ?1.2w次閱讀
    51單片機軟件解碼程序的核心要點

    迅為i.MX6Q開發板-紅外 hs0038 測試

    型號:i.MX6Q開發板、紅外hs0038本文檔配套資料在網盤“iTOP-IMX6開發板資料匯總(不含光盤資料)\06_iTOP-iMX6開發板最小linux系統源碼、鏡像以及應用\03_應用測試
    的頭像 發表于 11-16 17:18 ?1020次閱讀
    迅為i.MX6Q開發板-<b class='flag-5'>紅外</b> <b class='flag-5'>hs0038</b> 測試
    主站蜘蛛池模板: 2019夜夜| 给个男人都懂的网址2019| 亚洲精品久久久无码AV片软件| 无限好资源免费观看| 性做久久久久久久久浪潮| 亚洲国产精品天堂在线播放 | 国产成人精视频在线观看免费 | 一本大道无码AV天堂欧美 | 少妇伦子伦精品无码| 午夜性爽视频男人的天堂在线| 亚洲成人国产| 最近最新的日本字幕MV| 超碰在线视频人人AV| 国产精品免费观看视频播放| 精品久久久久久久久免费影院| 芒果影院网站在线观看| 日本阿v片在线播放免费| 午夜DV内射一区区| 在线电影一区二区| 被高跟鞋调教丨vk| 国产在线伊人| 妺妺窝人体色777777野大粗 | 黄色软件视频app| 男人J进入女人P免费狂躁| 视频区 国产 欧美 日韩| 亚洲一级电影| 把她带到密室调教性奴| 国产欧美国日产在线播放| 久久全国免费观看视频| 日本国产黄色片| 亚洲欧美一级久久精品| couo福利姬图库| 果冻传媒在线完整免费播放| 免费毛片在线播放| 收集最新中文国产中文字幕| 伊人影院网| 福利视频久久| 久久伊人天堂视频网| 日韩一区二区天海翼| 曰批国产精品视频免费观看| 村上里沙快播|