搜索
bottom↓
回复: 8

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

[复制链接]

出0入0汤圆

发表于 2011-9-27 15:52:27 | 显示全部楼层 |阅读模式
用红外发射发射头发射脉冲,接收头记录脉冲个数,我买的板子接收头和发射头都没连接到外部中断上,现在的情况是用遥控器发射,接收头可以检测到低电平并且进行计数。但是用程序发射信号就行不通了,红外发射必须加上载波吗,直接发射38khz的信息脉冲可以吗?求解决

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-9-27 16:18:52 | 显示全部楼层
#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;
}*/

出0入0汤圆

 楼主| 发表于 2011-9-28 13:35:41 | 显示全部楼层
请大侠们指点一下,菜鸟不胜感激,也许您的一句话将为像我这样的菜鸟节省一天的时间,谢谢

出0入0汤圆

发表于 2011-10-8 15:30:33 | 显示全部楼层
38khz 就是载波啊

出0入0汤圆

发表于 2011-10-9 08:47:45 | 显示全部楼层
看您买的接收头是不是带解调38khz的,一般是有的,那想要接收头收到发射信号,这个发射信号就要38Khz载波调制。

出0入0汤圆

发表于 2011-10-9 16:00:29 | 显示全部楼层
编码中高电平发射38khz脉冲,低电平不发射

出0入0汤圆

发表于 2014-12-12 23:00:39 | 显示全部楼层
发射函数有问题,在定时中断中高电平发射为脉冲(即不断取反),低电平发射为0即不发射

出0入0汤圆

发表于 2014-12-13 00:30:16 | 显示全部楼层
lurendezi 发表于 2011-9-27 16:18
#include
#include
#define uint unsigned int

在代码中
去控制发射与不发射就可以了
无须单独搞载波

出0入0汤圆

发表于 2014-12-13 22:57:42 | 显示全部楼层
最近准备搞这个,先mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表