打印
[51单片机]

如何精准产生38k红外调制载波信号?

[复制链接]
22290|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 samsunghellome 于 2013-10-9 18:56 编辑

自己做的红外模块,需要38k调制,本来想用单片机中断直接产生38k,结果38k要独占一格定时器才行,相应中断服务程序里就只能放一句话,i/o口反转,胆敢放些其他语句,用示波器测量出来的波形与38k相差甚远。求坐过红外这块的师傅们帮帮我吧,提供几个产生精准38k载波信号的方案,万分感激!以下是程序部分!一段时间低电平,一段时间38k信号,程序如下,附带我想要产生的波形!
#include <reg51.h>
bit t3;
bit t4;
static unsigned int value3;
static unsigned int value4;                  //Auxiliary register
sbit P32 = P3^2;
void time0init()
{   
    TMOD|= 0x02;                    
    TH0 = 0xF3;                     //初始化计时值
    TL0 = 0xF3;
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;
}
void time0() interrupt 1
{   
    /*if(t3==1)
    {value3--;
         if(value3==0)
         {t3=0;
          t4=1;
          value4=50;
         }
        P32=0;
        }
if(t4==1)
    {value4--;
         if(value4==0)
         {t4=0;
          t3=1;
          value3=50;
         }*/
         P32=!P32;
        }                         //将测试口取反
//}
//-----------------------------------------------
void main()
{   
        t3=1;
        t4=0;
        P32=0;
        value3=50;
        time0init();
    while(1);
}
我想产生的波形







相关帖子

沙发
ZG11211| | 2013-10-9 19:05 | 只看该作者
都如楼主所说的话,就不会出现11.0592这么奇怪的晶振频率了,呵呵

使用特权

评论回复
板凳
samsunghellome|  楼主 | 2013-10-9 19:10 | 只看该作者
ZG11211 发表于 2013-10-9 19:05
都如楼主所说的话,就不会出现11.0592这么奇怪的晶振频率了,呵呵

求解决方法,我的晶振是12M

使用特权

评论回复
地板
ZG11211| | 2013-10-9 19:16 | 只看该作者
本帖最后由 ZG11211 于 2013-10-9 19:18 编辑

我之前也试过。常见的晶振频率怎么也无法整除得到38KHZ.最后只能将就了,实验结果就是,频率只要偏差不大都没什么问题,毕竟一体化接收头有锁相环电路,偏差大了遥控距离就拉不远。

使用特权

评论回复
5
sunlight| | 2013-10-9 20:38 | 只看该作者
用一片555搞定。

使用特权

评论回复
6
wangke2010| | 2013-10-9 21:28 | 只看该作者
楼主会汇编不?用汇编,用软件,很快就能调出这个频率。
我用6M的晶振,几个nop翻转一次引脚电平,就行了

使用特权

评论回复
7
samsunghellome|  楼主 | 2013-10-10 07:33 | 只看该作者
wangke2010 发表于 2013-10-9 21:28  楼主会汇编不?用汇编,用软件,很快就能调出这个频率。  我用6M的晶振,几个nop翻转一次引脚电平,就行了 ...

我用c需要延时或定时器也调出了38k方波,就是容易受单片机执行其他语句的干扰!

使用特权

评论回复
8
samsunghellome|  楼主 | 2013-10-10 07:35 | 只看该作者
ZG11211 发表于 2013-10-9 19:16  我之前也试过。常见的晶振频率怎么也无法整除得到38KHZ.最后只能将就了,实验结果就是,频率只要偏差不大都 ...

我利用红外线的反射原理并编码,距离不用太远,20厘米足够!

使用特权

评论回复
9
samsunghellome|  楼主 | 2013-10-10 07:36 | 只看该作者
ZG11211 发表于 2013-10-9 19:16  我之前也试过。常见的晶振频率怎么也无法整除得到38KHZ.最后只能将就了,实验结果就是,频率只要偏差不大都 ...

我利用红外线的反射原理并编码,距离不用太远,20厘米足够!正在寻找38k可靠解决方案,接受头有范围在35k到40k之间吧!

使用特权

评论回复
10
samsunghellome|  楼主 | 2013-10-10 07:38 | 只看该作者
sunlight 发表于 2013-10-9 20:38  用一片555搞定。

555定时器硬件电路产生的38k稳定性怎么样呢?可以调制红外线吗?

使用特权

评论回复
11
散装805| | 2013-10-10 09:14 | 只看该作者
什么单片机?不带pwm控制?

使用特权

评论回复
12
samsunghellome|  楼主 | 2013-10-10 09:30 | 只看该作者
散装805 发表于 2013-10-10 09:14
什么单片机?不带pwm控制?

stc15L104W,不带pwm控制

使用特权

评论回复
13
coody| | 2013-10-10 11:53 | 只看该作者
何必呢,红外38KHZ信号不需要那么精确,有一定带宽的,36K~40K都可以的。倒是发送时尽量用1/3占空比。
我一般就是9us发送,17.3us停止,大约就是1/3,很多方法都可以产生。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
ocon + 2 赞一个!
14
mohanwei| | 2013-10-10 15:37 | 只看该作者
以前做过是用PWM来产生的……
如果不是追求极限距离,频率偏差7KHz以内都没问题的……

使用特权

评论回复
15
samsunghellome|  楼主 | 2013-10-10 16:06 | 只看该作者
mohanwei 发表于 2013-10-10 15:37
以前做过是用PWM来产生的……
如果不是追求极限距离,频率偏差7KHz以内都没问题的…… ...

定时器中断产生38khz方波很准,但是产生间断38khz波时出现问题,用示波器测量频率,频率与38k不沾边,只有5k左右!!

使用特权

评论回复
16
coody| | 2013-10-10 16:47 | 只看该作者
samsunghellome 发表于 2013-10-10 16:06
定时器中断产生38khz方波很准,但是产生间断38khz波时出现问题,用示波器测量频率,频率与38k不沾边,只 ...

STC的1T MCU速度比较快了,几个us的中断,不要处理太多的事,完全没问题的。

使用特权

评论回复
17
m564522634| | 2013-10-10 16:59 | 只看该作者
做遥控器的吧,好像有许多专用的芯片吧楼主可以考虑下吧

使用特权

评论回复
18
mohanwei| | 2013-10-10 17:45 | 只看该作者
如果系统允许,发码时直接关了中断,直接翻转IO,两个for循环就全部发走了……
延迟就用宏来delay,配合示波器或逻辑分析仪,稍微调整一下常数就可以做得很精确

使用特权

评论回复
19
lyjian| | 2013-10-10 18:50 | 只看该作者
用定时器的频率输出模式,简单得要命

使用特权

评论回复
20
黄小俊| | 2013-10-10 19:18 | 只看该作者
学习了

使用特权

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

本版积分规则

43

主题

198

帖子

0

粉丝