打印

大大们看下红外发射的程序有木有什么问题

[复制链接]
2738|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
直接发代码了 红外解码部分用遥控器芯片是TC9012测试过没问题  用以下程序发出的红外信号接收端接收不到  是什么问题啊
#include<msp430g2553.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uint a=0;
void produce_strcode();
void produce_pwm(unsigned char c);
void IO_Init(void) ;
uchar val,i;
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/8000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/8000.0))
/****************************************************************************/
// 产生PWM波,发送9ms高电平,4.5ms低电平作为 起始码
//*****************************************************************************
void produce_strcode()
{
TACTL |=TACLR;  //ACLK,不分频,清TAR
  TACTL |=TASSEL_1;
  CCR0=442;       //PWM周期,13.5ms
  CCTL1=OUTMOD_7;    //模式7 复位/置位
  CCR1=295;        // 先输出一个9ms高电平,4.5ms低电平作为 起始码
  TACTL |= MC_1; //启动定时器A 为增计数模式
  while((TACTL & 0x01) == 0);   //等待溢出标志,进入下一个周期
  TACTL &= ~TAIFG;  //清标志
}
/********************************************************************************
// 产生PWM波8个用户码,8个用户反码,8个的数据码,之后是8个数据码的反码
//其中以0.56ms高电平,1.125ms周期表示“0”,中以0.56ms高电平,2.25ms周期表示“1”
//
***************************************************************************/
void produce_pwm(unsigned char c)
{
  TACTL |=TACLR;  //ACLK,不分频,清TAR
  TACTL |=TASSEL_1;
  CCTL1=OUTMOD_7;    //模式7 复位/置位
  TACTL |= MC_1; //启动定时器A 为增计数模式
  for (i=0;i<8;i++)   //发送8位数据码
  {
    if (c&0x01)   
    val=1;
    else val=0;
    while((TACTL & 0x01) == 0);   //等待溢出标志,进入下一个周期
     if (val)
      { CCR0=74;       //PWM周期,2.25ms
        CCR1=18;  }        //0.56ms的高电平 占空比1/4 “1”的编码
     else
     { CCR0=37;       //PWM周期,1.125ms
       CCR1=18;  } //0.56ms的高电平 占空比 1/2 “0”的编码
     c>>=1;
     TACTL &= ~TAIFG;  //清中断标志
  }

  for (i=0;i<8;i++)   //发送8位数据反码
  {
    if (c&0x01)   //检测第i位数据反码
    val=0;
    else val=1;
    while((TACTL & 0x01) == 0);   //等待溢出标志,进入下一个周期
     if (val)
      { CCR0=74;       //PWM周期,2.25ms
        CCR1=18;  }        //0.56ms的高电平 占空比1/4 “1”的编码
     else
     { CCR0=37;       //PWM周期,1.125ms
       CCR1=18;  }        //0.56ms的高电平 占空比 1/2 “0”的编码
     c>>=1;
     TACTL &= ~TAIFG;  //清中断标志
  }
}

//****************************************************************************
//PWM 初始化IO   P1高四位按键中断响应
  void IO_Init(void)
{

  P1DIR |= 0x04;              
  P1SEL |= 0x04;             //P1.2输出PWM,TA1

}
//***********************************************************************
//主函数系统时钟初始,PWM的IO口初始化,
//*****************************************************************************
void main(void)
{ WDTCTL=WDTPW+WDTHOLD;                    //关看门狗
DCOCTL=CALDCO_8MHZ;
        BCSCTL1=CALBC1_8MHZ;

  IO_Init();//PWM波的IO口初始

  while(1)
  {
          produce_strcode();     // 发送pwm波,  

                      produce_pwm(a);

                      produce_pwm(0x18);
                      while((TACTL & 0x01)==0);
                       TACTL= TACLR;     //数据码发送完,关timer_A
                      P1OUT|=BIT2;   
                      delay_ms(30000);
  }
}

相关帖子

沙发
dirtwillfly| | 2013-8-3 21:31 | 只看该作者
本帖最后由 dirtwillfly 于 2013-8-3 21:33 编辑

这个问题看程序是看不出问题的。
不知道楼主测过发出的红外信号吗?

使用特权

评论回复
板凳
wonderfri|  楼主 | 2013-8-3 23:04 | 只看该作者
dirtwillfly 发表于 2013-8-3 21:31
这个问题看程序是看不出问题的。
不知道楼主测过发出的红外信号吗?

要用示波器测吗

使用特权

评论回复
地板
dirtwillfly| | 2013-8-3 23:10 | 只看该作者
wonderfri 发表于 2013-8-3 23:04
要用示波器测吗

用另一个红外接收设备,最好是能显示波形的接收设备,或者把接收波形信号接到示波器上。
看一看你的红外发送设备产生的真实波形是怎么样的

使用特权

评论回复
5
wonderfri|  楼主 | 2013-8-3 23:20 | 只看该作者
dirtwillfly 发表于 2013-8-3 23:10
用另一个红外接收设备,最好是能显示波形的接收设备,或者把接收波形信号接到示波器上。
看一看你的红外 ...

木有示波器怎么办

使用特权

评论回复
6
dirtwillfly| | 2013-8-3 23:21 | 只看该作者
wonderfri 发表于 2013-8-3 23:20
木有示波器怎么办

:L没有就比较蛋痛。有逻辑分析仪也行

使用特权

评论回复
7
wonderfri|  楼主 | 2013-8-3 23:30 | 只看该作者
dirtwillfly 发表于 2013-8-3 23:21
没有就比较蛋痛。有逻辑分析仪也行

逻辑分析仪 也木有

使用特权

评论回复
8
dirtwillfly| | 2013-8-3 23:34 | 只看该作者
wonderfri 发表于 2013-8-3 23:30
逻辑分析仪 也木有

:L
调信号没有太好的办法

使用特权

评论回复
9
wonderfri|  楼主 | 2013-8-4 00:06 | 只看该作者
dirtwillfly 发表于 2013-8-3 23:34
调信号没有太好的办法

那版主有没有关于430的红外发射程序啊给个参考下啊

使用特权

评论回复
10
dirtwillfly| | 2013-8-4 08:04 | 只看该作者
11
wonderfri|  楼主 | 2013-8-4 13:39 | 只看该作者
借到了学校实验室钥匙现在有示波器了 测接收端波形 没测到波形出来

使用特权

评论回复
12
wonderfri|  楼主 | 2013-8-4 13:48 | 只看该作者
dirtwillfly 发表于 2013-8-4 08:04
http://wenku.baidu.com/view/bc42311ffad6195f312ba6b2.html
http://wenku.baidu.com/view/647501c69ec3d5 ...

这2个都没怎么看明白

使用特权

评论回复
13
dirtwillfly| | 2013-8-4 14:00 | 只看该作者
wonderfri 发表于 2013-8-4 13:39
借到了学校实验室钥匙现在有示波器了 测接收端波形 没测到波形出来 ...

难怪没反应:L

使用特权

评论回复
14
wonderfri|  楼主 | 2013-8-4 14:20 | 只看该作者
dirtwillfly 发表于 2013-8-4 14:00
难怪没反应

这到底是为什么啊

使用特权

评论回复
15
dirtwillfly| | 2013-8-4 20:06 | 只看该作者
wonderfri 发表于 2013-8-4 14:20
这到底是为什么啊

我也不知道啊。你的发射有波形吗?

使用特权

评论回复
16
wonderfri|  楼主 | 2013-8-4 21:24 | 只看该作者
dirtwillfly 发表于 2013-8-4 20:06
我也不知道啊。你的发射有波形吗?

没有直接测过发射 测接收没波形

使用特权

评论回复
17
dirtwillfly| | 2013-8-4 23:35 | 只看该作者
wonderfri 发表于 2013-8-4 21:24
没有直接测过发射 测接收没波形

如果有条件的话,可以测测。确定下是哪部分的原因

使用特权

评论回复
18
wonderfri|  楼主 | 2013-8-5 08:01 | 只看该作者
dirtwillfly 发表于 2013-8-4 23:35
如果有条件的话,可以测测。确定下是哪部分的原因

应该是发射的程序有问题,接收用遥控器试过了 没错啊 没人用430开发过这个吗 给点意见啊

使用特权

评论回复
19
dirtwillfly| | 2013-8-5 12:18 | 只看该作者
wonderfri 发表于 2013-8-5 08:01
应该是发射的程序有问题,接收用遥控器试过了 没错啊 没人用430开发过这个吗 给点意见啊 ...

:L建议还是实际测一下吧,不要想当然。
另外,如果可以的话建议你把电路图也上传一下,让大家帮你看看

使用特权

评论回复
20
wonderfri|  楼主 | 2013-8-5 15:16 | 只看该作者
dirtwillfly 发表于 2013-8-5 12:18
建议还是实际测一下吧,不要想当然。
另外,如果可以的话建议你把电路图也上传一下,让大家帮你看看 ...

发射电路图是一个三极管(我用8550)和 一个红外发光管和2个1K电阻构成的,接收就只用个1838

QQ图片20130805151344.jpg (11.43 KB )

QQ图片20130805151344.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

29

帖子

0

粉丝