标题: 关于STC15单片机定时器问题,自制红外转射频的模块用天猫精灵控制窗帘 [打印本页]

作者: 凤城大六    时间: 2021-5-16 14:12
标题: 关于STC15单片机定时器问题,自制红外转射频的模块用天猫精灵控制窗帘
本帖最后由 凤城大六 于 2021-5-17 07:19 编辑

我刚开始自学单片机,想自己做个红外转射频的模块用天猫精灵控制窗帘,因为自己水平有限,红外接收和射频发射是从网上找的两个程序自己组合修改的,现在遇到过个问题,就是做了个10ns的定时函数,其它地方都调好了,就是正码和反码之间有个31ms的延时怎么也做不出来,最多只能延时到19ms,请大佬给看下要怎么解决?void Delay10us(unsigned int us)                //@11.0592MHz
{
        unsigned int cycle = 0;
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x91;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        while(1)
        {
                if(TF0==1)        //检测定时器0是否溢出
                {
                        TF0 = 0;        //若溢出,则重置检测位TF0
                        TL0 = 0x91;
                        TH0 = 0xFF;
                        cycle++;
                        if(cycle>=us)
                                break;
                }
        }
}
如图前面一组波形正确,后面要跟一个Delay10us(3100);,结果后面那组波形就变形,且间隔时间只有19ms多





试了下Delay10us(1800);,后面的波形就正常


怎么样既能延时31ms又保持波形正常呢?
先谢谢各位了!


作者: amandv    时间: 2021-5-17 19:40
需要精确定时就要用定时中断处理,程序定时受其他中断影响,时间会不稳定。
作者: 凤城大六    时间: 2021-5-19 14:22
要发射的射频码有5组正6组反,正反之前是31ms间隔,组组之间是11ms,加上起始的高低电平时间,逻辑1和逻辑0的高低电平时间,要计算的时间有9个,用的stc15f104w或stc15w104只有两个定时器T0和T2,T2的中断用来接收红外信号了,能用的只有一个T0的中断,试着在中断里加多个标志位来计算不同间隔没成功,应该是水平问题没写对
作者: 凤城大六    时间: 2021-5-21 21:21
发现问题了,之前是从接收模块拍片抓的波形,换到发射脚就正常了,这样确定是发射模块的问题了
作者: 凤城大六    时间: 2021-6-11 19:49
找到原因了,发射模块天线是弹簧式卷着的,拉直就正常了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1