找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 875|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

紅外接收接收不了,麻煩各位師兄幫忙看一下。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:342739 發(fā)表于 2024-12-17 16:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/*************  本程序功能說明  **************

單片機(jī)型號(hào):STC89C52

晶振頻率  :11.0592MHz

復(fù)位電路  :內(nèi)部復(fù)位電路

功能描述  :演示紅外接收點(diǎn)亮LED。

LED對(duì)應(yīng)IO口:P1.0-P3.7-P3.6-P3.5-P3.4-P3.3-P3.2-P3.1

******************************************/

#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit IR_INPUT=P3^2;               //紅外接收引腳
bit IRflag=0;                                       //紅外接收結(jié)束標(biāo)志
uchar IRcode[4];                       //紅外代碼接收緩沖區(qū)
void Initinfrared();

void main()
{
        Initinfrared();  
  while(1)
  {
                switch(IRcode[2])
                {
                        case 0x15:P1=0x7f;break;
                        case 0x07:P1=0xbf;break;
                        default:P1=0xff;break;
                }
        }

}

void Initinfrared()
{
    IR_INPUT=1;
                TMOD=0x01;
                EA=1;
                ET0=0;   //打開T0中斷
    EX0=1;         //打開外部中斷0
    IT0=1;          //下降沿觸發(fā)

}
/*獲取當(dāng)前高電平的結(jié)束時(shí)間*/
unsigned int GetHighTime()
{
                TH0=0;  
    TL0=0;
    TR0=1;
                while(IR_INPUT)
                {
                        if(TH0>=0x40)  //  12/11.0592*16384≈18mS
                        break;
                }
                TR0=0;
                return(TH0*256+TL0);
}
/*獲取當(dāng)前低電平的結(jié)束時(shí)間*/
unsigned int GetLowTime()
{
                TH0=0;  
    TL0=0;
    TR0=1;
                while(!IR_INPUT)
                {
                        if(TH0>=0x40)
                        break;
                }
                TR0=0;
                return(TH0*256+TL0);
}

void EXINT1_ISR() interrupt 0 // 外部中斷服務(wù)程序
{
                uchar i,j;  
    uchar buf;
                uchar time;
                time=GetLowTime();
                if((time<7833)||(time>8755)) // 引導(dǎo)碼9ms判斷  12/11.0592*X≈8500 (8.5ms~9.5ms之間)
                {
                        EX0=1;
                        return;
                }
                time=GetHighTime();
                if((time<3686)||(time>4608)) // 引導(dǎo)碼頭4.5ms判斷  12/11.0592*X≈4000 (4ms~5ms之間)
                {
                        EX0=1;         // 打開外部中斷0
                        return;         // 返回
                }
                for(i=0;i<4;i++)                                                 // 接收4個(gè)字節(jié)處理程序
                {
                        for(j=0;j<8;j++)                                  // 接收8個(gè)位/字節(jié),處理程序
                        {
                                time=GetLowTime();
                                if((time<313)||(time>718))  // 判斷560us低電平  12/11.0592*X≈560us (500us~600us之間)
                                {
                                        EX0=1;
                                        return;
                                }
                                time=GetHighTime();
                                if((time>313)&&(time<718))        // 判斷560us高電平  12/11.0592*X≈560us (500us~600us之間)
                                {
                                        buf>>=1;
                                }                        // 當(dāng)確認(rèn)是0時(shí),把變量buf循環(huán)右移,將低位移到高位
                                else if((time>1345)&&(time<1751)) // 判斷1.68ms高電平  12/11.0592*X≈1680us (1.46ms~1.9ms之間)
                                {
                                        buf>>=1;                       // 當(dāng)確認(rèn)是1時(shí),右移1位
                                        buf|=0x80;
                                }
                                else
                                {
                                        EX0=1;
                                        return;
                                }
                        }
                        IRcode[i]=buf;  // 接收完數(shù)據(jù)后把數(shù)據(jù)傳給數(shù)組對(duì)應(yīng)的位置。
                }
                IRflag=1;                // 將結(jié)束標(biāo)志位置1,代表接收完成,中斷返回。
                EX0=1;

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:57657 發(fā)表于 2024-12-18 11:13 | 只看該作者
遙控接收需要紅外接收頭,接收管沒有解調(diào)放大電路用不了的,具體需要有原理圖才知道是什么問題。
回復(fù)

使用道具 舉報(bào)

板凳
ID:517951 發(fā)表于 2024-12-19 07:51 | 只看該作者
用示波器,或邏輯分析儀接到紅外接收管輸出腳量測(cè)一下有沒有輸出波形, 軟件對(duì)應(yīng)的IO端口有沒有與紅外端口正確對(duì)應(yīng).
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表