在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 自制51單片機(jī)常用頭文件(紅外解碼)

            自制51單片機(jī)常用頭文件(紅外解碼)

            作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
            /*--------------------------------------------------------------------------

            IR.H

            本文引用地址:http://www.biyoush.com/article/201611/317355.htm

            The user function is C51.
            Copyright (c) 1988-2004 Keil Elektronik GmbH sum zhaojun
            All rights reserved.
            --------------------------------------------------------------------------*/
            #ifndef __IR_H__
            #define __IR_H__

            #define uchar unsigned char
            #define uint unsigned int

            #define IRIN P3_2 // 紅外引腳
            #define BEEP P3_7 // 蜂鳴器引腳

            uchar IRCOM[4]; // IRCOM[0]和IRCOM[1]存放用戶編碼;IRCOM[2]鍵值碼暫存
            // IRCOM[3]鍵值反碼存放.

            /*======================================== 紅外解碼部分 ======================================================*/

            /*****************************************************
            函 數(shù) 名:void DelayIR(uchar number)
            功 能:延時(shí)程序
            說(shuō) 明:對(duì)紅外信號(hào)進(jìn)行解碼時(shí)的時(shí)間比較
            入口參數(shù):無(wú)
            返 回 值:無(wú)
            *****************************************************/
            void DelayIR(uchar number)//number*0.14MS
            {
            uchar i;

            while (number--)
            {
            for(i=13; i>0; i--);
            }
            }

            /*****************************************************
            函 數(shù) 名:void Delay_bell(void)
            功 能:蜂鳴器延時(shí)程序
            說(shuō) 明:對(duì)蜂鳴器發(fā)音延時(shí)
            入口參數(shù):無(wú)
            返 回 值:無(wú)
            *****************************************************/
            void Delay_bell(void)
            {
            uint i;

            for(i=0; i<20000; i++)
            {
            ;
            }
            }

            /*****************************************************
            函 數(shù) 名:void Buzzer(num)
            功 能:蜂鳴器發(fā)音程序
            說(shuō) 明:對(duì)密碼輸入正確與否、按鍵等的提示
            入口參數(shù):無(wú)
            返 回 值:無(wú)
            *****************************************************/
            void Buzzer(num)
            {
            while (num--)
            {
            BEEP = 0; // 燈亮
            Delay_bell(); // 延時(shí)
            BEEP = 1; // 燈滅
            Delay_bell(); // 延時(shí)
            }
            }

            /*****************************************************
            函 數(shù) 名:void IR_IN()
            功 能:紅外解碼
            說(shuō) 明:把紅外編碼信號(hào)進(jìn)行解碼,并存放在IRCOM[]中
            入口參數(shù):無(wú)
            返 回 值:無(wú)
            *****************************************************/
            // 外中斷0,紅外數(shù)據(jù)接收
            void IR_IN()
            {
            uchar i,j,k,num = 0;

            do // 讀引導(dǎo)碼
            {
            for (i=0; i<4; i++)
            {
            if (IRIN == 0)
            {
            break;
            }
            if (i == 3)
            {
            return;
            }
            }

            DelayIR(20);
            }while (IRIN == 1); // 確認(rèn)IR信號(hào)出現(xiàn)


            while (!IRIN)
            {
            DelayIR(1); // 等IR變?yōu)楦唠娖?br />}

            // 讀4字節(jié)按鍵編碼 = 16位的用戶碼+8位鍵值碼+8位鍵值反碼

            for (j=0; j<4; j++) // 解碼原理:0 = 0.8ms的低電平+0.4ms的高電平;
            { // 1 = 0.8ms的低電平+1.6ms的高電平
            for (k=0; k<8; k++) // 8位一接收
            {
            while (IRIN)
            {
            DelayIR(1); // 等 IR 變?yōu)榈碗娖?br />}

            while (!IRIN)
            {
            DelayIR(1); // 等 IR 變?yōu)楦唠娖?br />}

            while (IRIN) // 計(jì)算IR高電平時(shí)長(zhǎng)
            {
            DelayIR(1);
            num++;

            if (num >= 30)
            {
            return;
            }
            }

            IRCOM[j] = IRCOM[j] >> 1; // 接收數(shù)據(jù)右移一位

            if (num >= 8)
            {
            IRCOM[j] = IRCOM[j] | 0x80; // 電平長(zhǎng)度大于等于8,則寫(xiě)入高電平
            }

            num = 0;
            } // 讀完一字節(jié)
            } // 按鍵4字節(jié)讀完
            // 接收數(shù)據(jù)檢測(cè)
            if (IRCOM[2] != ~IRCOM[3]) // 8位鍵碼!=8位鍵反碼:按鍵錯(cuò)誤
            {
            return;
            }

            Buzzer(1); // 有鍵按下,蜂鳴器響一聲
            }

            /*===================================
            DT9122D 遙控器

            ****** 紅外遙控器鍵值表 ***********

            | 10 | 03 | 01 | 06 |
            - - - - - - - - - - - - - - - - - - -
            | 09 | 1D | 1F | 0D |
            - - - - - - - - - - - - - - - - - - -
            | 19 | 1B | 11 | 15 |
            - - - - - - - - - - - - - - - - - - -
            | 17 | 12 | 16 | 4C |
            - - - - - - - - - - - - - - - - - - -
            | 40 | 48 | 04 | 00 |
            - - - - - - - - - - - - - - - - - - -
            | 02 | 05 | 54 | 4D |
            - - - - - - - - - - - - - - - - - - -
            | 0A | 1E | 0E | 1A |
            - - - - - - - - - - - - - - - - - - -
            | 1C | 14 | 0F | 0C |
            =====================================*/

            #endif



            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉