红外发射必须加上载波吗,直接发射38khz的信息脉冲可以吗

2020-01-21 21:35发布

用红外发射发射头发射脉冲,接收头记录脉冲个数,我买的板子接收头和发射头都没连接到外部中断上,现在的情况是用遥控器发射,接收头可以检测到低电平并且进行计数。但是用程序发射信号就行不通了,红外发射必须加上载波吗,直接发射38khz的信息脉冲可以吗?求解决
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
lurendezi
1楼-- · 2020-01-21 23:57
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char


uchar num,aa;
sbit keysj=P3^0;
sbit key=P3^4;
sbit a=P2^5;
sbit b=P2^6;
sbit c=P2^7;
sbit wr=P3^6;
sbit ir_pin=P1^1;    //SM0038红外接口
sbit ir_out=P1^0;

uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e
};
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void wela()
{
        c=1;
        b=1;
        a=0;       
        wr=0;
}

void dula()
{
        c=1;
        b=1;
        a=1;
        wr=0;
}

/*void deng()

{
        c=1;
        b=0;
        a=0;
        wr=0;
}*/

void display(uint tt)
{

        dula();
        P0=        table[tt/100];
        wr=1;
        wela();
        P0=0x02;
        wr=1;
        delay(2);


        dula();
        P0=        table[tt%100/10];
        wr=1;
        wela();
        P0=0x04;
        wr=1;
        delay(2);

        dula();
        P0=        table[tt%10];
        wr=1;
        wela();
        P0=0x08;
        wr=1;
        delay(2);
}

/*clearmen()
{
        ir_out=0;         //关遥控输出
        TMOD=0x20;          //8位自由重复模式
        TH1=0xf3;          //40KHZ初值
        TL1=0xf3;
        ET1=1;
        EA=1;

}
/*************发射函数******************/
/*sed(uint s)
{   while(s--)
       {
        TR1=1;
                delay(1);
                TR1=0;
                ir_out=1;
            delay(2);

        TR1=1;
                delay(1);
                TR1=0;
                ir_out=0;
            delay(3);

        }         
       
//        delay(10);
}*/

/**************主函数*******************/
main()
{
//        keysj=0;
//        key=1;
//        clearmen();
                while(1)
                {
/*                        if(key==0)
                        {
                                  _nop_();_nop_();_nop_();_nop_();
                                          _nop_();_nop_();_nop_();_nop_();

                                if(key==0)
                                {
                                        while(!key);
                                 sed(3);
                                  }
                        }*/
                        if(ir_pin==0)        //接收
                                num++;
       
                        display(num);
                }
}
/***************40kHz发生器************/
//定时中断T1
/*void time_intt1(void) interrupt 3
{
        ir_out=~ir_out;
}*/
lurendezi
2楼-- · 2020-01-22 02:30
 精彩回答 2  元偷偷看……
linminsong
3楼-- · 2020-01-22 05:09
38khz 就是载波啊
linls
4楼-- · 2020-01-22 07:35
看您买的接收头是不是带解调38khz的,一般是有的,那想要接收头收到发射信号,这个发射信号就要38Khz载波调制。
zspzwal
5楼-- · 2020-01-22 10:14
编码中高电平发射38khz脉冲,低电平不发射
cjlong007
6楼-- · 2020-01-22 15:25
发射函数有问题,在定时中断中高电平发射为脉冲(即不断取反),低电平发射为0即不发射

一周热门 更多>