女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

詳細解讀紅外遙控解碼

工程師鄧生 ? 來源:云創硬見 ? 作者:云創硬見 ? 2020-01-16 17:00 ? 次閱讀

紅外遙控是我們現實生活中必不可少的一員。遙控,顧名思義即在遙遠的地方進行控制,其實也就是說遠程通信。紅外遙控就是以紅外線為傳輸介質的遙控。

紅外遙控器是怎么工作的?其實它內部就是有一個單片機,單片機的I/O口控制一個紅外LED燈(當然一般會加外部放大電路以增大傳輸距離),在內部編碼后發送出去,然后電視或者空調之類的可以用紅外遙控控制的電器在接收到紅外信號后就會進行解碼,并根據制定好的協議執行特定動作,比如電視可能換臺、調節音量等。現在有的手機就帶有紅外遙控功能,其實也是用單片機的功能實現的。

紅外遙控解碼

有的時候,我們希望模擬一些遙控器的功能,這時候就要對這些遙控器的數據進行解碼。

在進行解碼前,我們先來了解一下紅外編碼。紅外編碼有很多種,最常用的編碼是NEC編碼。NEC格式的編碼如下:

詳細解讀紅外遙控解碼

NEC格式的紅外編碼是連續的32位二進制碼組。32位二進制碼組之前的引導碼,用于區分每次的傳輸;在起始碼之后的才是32位二進制碼組,其中8位用戶識別碼和8位反碼(反碼主要用于)校驗,用戶識別碼的作用主要是區分不同品牌的遙控器;接著就是8位操作碼和反碼,用于表示哪個按鍵被按下。

NEC格式的編碼除引導碼和起始碼外,用于交互數據的信息采用脈寬調制的串行碼,在38kHz的載波下,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如下所示:

了解了紅外編碼,就可以進行紅外解碼了。

實現方法

一般,進行紅外解碼我們需要先將接受到的有效信號與外界環境的干擾信號分離開,這就是載波的作用。現在市面上有很多一體化紅外接收頭,內部是紅外接收二極管 +放大電路 +解調器。當接收到紅外信號后,先將其放大,然后把38kHz的信號保留下來。需要注意的是一般一體化紅外接收頭接收到信號時輸出是低電平,沒有接收信號時是高電平。

上面是常用紅外接收頭的引腳,“OUT”腳接單片機的I/O口,“-”腳接電源負極,“+”腳接電源正極。

接好電路,就要進行解碼工作了.其實解碼工作主要是識別引導碼,還有數據“0”“1”。我們看波形圖,只要識別紅外接收頭“OUT”引腳高低電平持續的時間就可以了。這個可以用定時器中斷完成,也可以用延時來判斷。由于只完成解碼工作,我們就用延時的方法更方便。

首先,紅外接收頭沒有接到信號時是高電平,等待其變低。之后,每隔900us測量一次,若在10次內電平變高,說明這不是引導碼,退出重新開始;若10次內并沒有變高,說明這就是引導碼,繼續下一步。接著可以不判斷起始碼,就是直接等待引腳電平變高再變低,就可以接收數據了。

接收數據,就是進行判斷“0”和“1”。從位的定義我們可以發現“0”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據高電平的寬度區別“0”和“1”。

每一位“0”或者“1”在接收頭接收信號即低電平的時間都是一樣的,直接等待低電平過去,在高電平時延時600us,如果600us時還是高電平,說明是“1”;如果是低電平即高電平過去了,說明是“0”。將這些數據結合到一起,就是接收到的編碼了。

將單片機的串口與電腦接好,就可以在串口顯示我們讀到的紅外遙控數據了。

實現代碼:

#include <reg52.h>

// --- 紅外接收一體化輸出口 ----------------------------------

sbit IR_Out = P3^2;

bit START_Flag = 0;

bit BOOT_REPEATING_CODE_Flag = 0;

unsigned char DATA[4] = {0};

bdata unsigned char TEMP_BIT;

sbit B0 = TEMP_BIT^0;

sbit B1 = TEMP_BIT^1;

sbit B2 = TEMP_BIT^2;

sbit B3 = TEMP_BIT^3;

sbit B4 = TEMP_BIT^4;

sbit B5 = TEMP_BIT^5;

sbit B6 = TEMP_BIT^6;

sbit B7 = TEMP_BIT^7;

// --- 有無遙控信號判斷函數 ----------------------------------

bit START_Judge();

// --- 連發碼判斷函數 ----------------------------------------

bit BOOT_REPEATING_CODE_Judge();

// --- "0"和"1"識別 ------------------------------------------

bit H_L_LEVEL_Judge();

bit START_Judge()

bit TEMP_Flag = 1;

unsigned char i = 0;

//在正常無遙控信號時,一體化紅外接收頭輸出是高電平,程序一直在循環。

while ( IR_Out == 1);

//重復10次,目的是檢測在6876~8352微秒內如果出現高電平就退出解碼程序

for(i =0;i <9; i++)

DELAY_Us(800); // 測試實際延時約為764~928us

if ( IR_Out == 1 )

TEMP_Flag = 0;

break;

return TEMP_Flag;

bit BOOT_REPEATING_CODE_Judge()

bit TEMP_Flag = 1;

while( IR_Out == 0 ) ; // 等待高電平避開9毫秒低電平引導脈沖

DELAY_Ms(1); // 測試實際延時約為1.007ms

DELAY_Ms(1); // 測試實際延時約為1.007ms

DELAY_Us(200); // 0.086ms

DELAY_Us(200); // 0.086ms

DELAY_Us(200); // 0.086ms

// 共計2.272ms

if( IR_Out == 0 )

TEMP_Flag = 1; // 是連發碼

else

TEMP_Flag = 0; // 不是連發碼,而是引導碼

return TEMP_Flag;

bit H_L_LEVEL_Judge()

while( IR_Out == 0 ); // 等待地址碼第一位的高電平信號

DELAY_Us(800); // 測試實際延時約為764~928us

if ( IR_Out == 1)

DELAY_Ms(1); // 測試實際延時約為1.007ms

return 1;

else

return 0;

// --- 串口初始化 --------------------------------------------

void UART_Initial();

void DELAY_Us(unsigned int Us)

unsigned int x;

for(x = 0; x <= (Us/200-1); x++);

void DELAY_Ms(unsigned int Ms)

unsigned int x,y;

for(x = 0; x <= (Ms-1); x++)

for(y = 0; y <= 120; y++);

void main()

unsigned char i;

UART_Initial();

IR_Out = 1;

while(1)

START_Flag = START_Judge();

BOOT_REPEATING_CODE_Flag = BOOT_REPEATING_CODE_Judge();

if ( START_Flag && !BOOT_REPEATING_CODE_Flag )

for(i =0;i <4; i++)

B0 = H_L_LEVEL_Judge();

B1 = H_L_LEVEL_Judge();

B2 = H_L_LEVEL_Judge();

B3 = H_L_LEVEL_Judge();

B4 = H_L_LEVEL_Judge();

B5 = H_L_LEVEL_Judge();

B6 = H_L_LEVEL_Judge();

B7 = H_L_LEVEL_Judge();

DATA[i] = TEMP_BIT;

for(i =0;i <4; i++)

SBUF = DATA[i];

while( TI == 0 );

TI = 0;

void UART_Initial()

SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收

TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload

TH1 = 0xFD; // TH1: reload value for 9600 baud @

// 11.0592MHz

TR1 = 1; // TR1: timer 1 run

EA = 0; // 關閉總中斷

ES = 0; // 關閉串口中斷

1、紅外遙控的編碼不只NEC,還有很多也有廣泛應用如RC-5,RC-6等。

2、上面的代碼所用指令是STC 89C52單片機,如需用其它芯片請另行更改。
責任編輯:wv

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

    評論

    相關推薦
    熱點推薦

    藍牙無線遙控小車

    藍牙無線遙控小車? ?各種無線遙控都有各自的優缺點和用途,我們稍做對比:1.紅外遙控,需要固定方向,不能有物體遮擋,遙控距離一般在8米以內,
    發表于 04-19 17:08 ?2次下載

    教你一招,破解紅外遙控器(可下載)

    是角度問題了。我就以研究過的身份跟大家一起分析下它是什么,怎么工作的。揭開它神秘的面紗就拿我們生活中最熟悉的遙控器來說,是紅外發送接收,紅外線是一種不可見光,可以用
    發表于 03-13 15:30 ?1次下載

    紅外發射器是什么_紅外發射器怎么安裝

    紅外發射器是一種通過紅外線發射管在一定范圍內發射光線,從而達到控制信號作用的遙控設備。以下是對紅外發射器的詳細介紹:
    的頭像 發表于 01-28 13:46 ?1133次閱讀

    CW32模塊使用 紅外解碼編碼模塊

    格式設備,如大部分電視機、機頂盒、DVD、電風扇等電器設備。 只需要利用到單片機的串口通信知識,通過串口發送指定的指令進行控制模塊發射;通過串口接收方式進行紅外解碼操作,獲取遙控編碼信息。也可以使用2個模塊實現無線操控。 一、模
    的頭像 發表于 01-23 12:56 ?544次閱讀
    CW32模塊使用 <b class='flag-5'>紅外</b><b class='flag-5'>解碼</b>編碼模塊

    華芯紅外智能解碼分析儀介紹

    華芯紅外智能解碼分析儀是根據市場需求自主研發的一款高效能工具,專為紅外編碼分析設計。本設備結合了先進的硬件與軟件技術,旨在提供一個簡單易用且經濟實惠的解決方案,用于接收并解析市場上常見的紅外
    的頭像 發表于 01-20 10:09 ?383次閱讀
    華芯<b class='flag-5'>紅外</b>智能<b class='flag-5'>解碼</b>分析儀介紹

    RF遙控器廠家:射頻遙控器將成為未來的控制主流

    改革開放40余年來,人們的家庭生活發生了巨變——各型家用電器走進了千家萬戶。在此期間,家用電器的發展也在不斷走向多樣化、智能控制化。通常我們所見的電視和空調、投影儀等設備大都是使用紅外遙控器來控制
    的頭像 發表于 12-31 11:47 ?433次閱讀

    高清電視盒子方案分享,紅外遙控適配過程全解析

    應用背景 隨著紅外線設備的應用日益廣泛,例如遙控器和紅外傳感器等。而RK3399作為一款高性能處理器,廣泛應用于電視盒子等智能終端。通過將紅外遙控
    的頭像 發表于 12-17 10:46 ?973次閱讀
    高清電視盒子方案分享,<b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>適配過程全解析

    紅外接收頭的故障有哪些_紅外接收頭的壽命一般是多少

    紅外接收頭是一種能夠收集和轉換遠程遙控器發射的紅外光信號,并解碼出對應的控制命令,從而控制設備開啟、關閉、切換、調節等操作的電子元件。然而,由于多種因素的影響,
    的頭像 發表于 10-21 16:06 ?1225次閱讀

    遙控解碼器怎么使用

    夠接收和解碼遙控器發出的紅外(IR)信號。這些信號通常用于控制電視、空調、音響等家用電器。解碼器可以復制這些信號,從而允許用戶使用新的遙控
    的頭像 發表于 09-30 14:23 ?2150次閱讀

    遙控解碼芯片有哪些

    遙控解碼芯片是無線遙控系統中的重要組成部分,它們負責編碼和解碼信號,以實現遙控功能。以下是一些常見的
    的頭像 發表于 09-30 14:21 ?2412次閱讀

    433M 通訊技術無線遙控器芯片CMT2300A

    433M遙控器原理是通過使用433MHz頻率進行無線通信, 將信號從發射器發送到接收器,并在接收器中執行相應的操作。作為一種與紅外遙控器相補充的遙控器種類,433M無線
    的頭像 發表于 07-15 15:01 ?2235次閱讀
    433M 通訊技術無線<b class='flag-5'>遙控</b>器芯片CMT2300A

    如何連接PSoc4的紅外接收器,以檢查通過NEC協議輸入遙控器的數據?

    你好! 我想連接 PSoc4 的紅外接收器,以檢查通過 NEC 協議輸入遙控器的數據。 有相關代碼或示例嗎?
    發表于 07-04 07:04

    星閃挑戰UWB,指向遙控方案迎來新成員

    的使用體驗打了折扣。目前紅外遙控器品類里以萬能遙控器、學習遙控器更受關注;射頻遙控器品類如藍牙遙控
    的頭像 發表于 06-28 08:05 ?219次閱讀
    星閃挑戰UWB,指向<b class='flag-5'>遙控</b>方案迎來新成員

    紅外遙控燈開關電路圖

    紅外遙控燈開關,簡而言之,是一種利用紅外線技術遠程控制燈具開啟與關閉的裝置。它主要由紅外發射器(遙控器或墻壁開關上的發射模塊)、
    的頭像 發表于 06-24 16:05 ?4947次閱讀
    <b class='flag-5'>紅外</b><b class='flag-5'>遙控</b>燈開關電路圖

    遙控玩具車電機驅動應用中的雙H橋驅動芯片

    遙控玩具車的基本工作原理是通過無線電遙控器發送信號,這些信號被玩具車內的接收器接收并解碼,從而控制玩具車的運行。
    的頭像 發表于 06-12 09:15 ?1934次閱讀
    <b class='flag-5'>遙控</b>玩具車電機驅動應用中的雙H橋驅動芯片