打印

在做红外发射,定时器精度不够如何解决

[复制链接]
2265|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晶振用的12MHZ的,工作于方式1


time0()interrupt 1  //定时器0中断
{
static bit OP=0;
//红外发射管的亮灭
TH0=0xFF;       //25ns溢出一次
TL0=0xE7;
count++;
if(IR_flag==1)
{
  OP=~OP; //发射
}
else
{
  OP = 0; //不发射
}
IR_IN=OP; //IR_IN为发射引脚
}

精度不够可以手动调整,可我用逻辑分析仪读出波形后发现,发射相同时间的红外信号,红外持续的时间不一样,这是怎么回事,

下面是红外发射时间测试程序


time_measure()
{
uint i,endcount;
for(i=0;i<8;i++) //发射8次
{  
  TR0=0;
  endcount=1000;  //定时25毫秒
  IR_flag=1;
  count=0;
  TH0=0xFF;     
  TL0=0xE7;
  TR0=1;
  while(count<endcount); //等待时间到
  TR0=0;
  endcount=1000;   //不发射时间25毫秒
  IR_flag=0;
  count=0;
  TH0=0xFF;     
  TL0=0xE7;
  TR0=1;
  while(count<endcount);  //等待
}
TR0=0;            //关定时器
}

下面是逻辑分析仪出来的波形












}

相关帖子

沙发
zhuanghaiyang|  楼主 | 2012-9-12 15:02 | 只看该作者
如果像上述使用定时器,它的最大误差是多少

使用特权

评论回复
板凳
NE5532| | 2012-9-12 17:13 | 只看该作者
红外发射实际上是OOK调制,你用PWM功能输出载波,找个三极管就调制了。

使用特权

评论回复
地板
yewuyi| | 2012-9-12 17:55 | 只看该作者
25ns?

25us吧!
25us中断一次也够了,不需要太高的精度。

使用特权

评论回复
5
duhemayi| | 2012-9-13 14:23 | 只看该作者
这个还没有搞过

使用特权

评论回复
6
幻梦kfc| | 2012-11-15 19:12 | 只看该作者
学习 下,正在看这方面的资料呢

使用特权

评论回复
7
epherun| | 2013-12-5 17:51 | 只看该作者
学习 下,正在看这方面的资料呢

使用特权

评论回复
8
xhloes大龙| | 2013-12-5 18:02 | 只看该作者
学习,还没仔细做过。。

使用特权

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

本版积分规则

个人签名:广交单片机编程的朋友,QQ:446579893

5

主题

132

帖子

1

粉丝