9264|7

32

帖子

0

资源

一粒金砂(中级)

单片机倍频问题 [复制链接]

想把50Hz的脉冲信号经51单片机后变为500Hz输出,写了一个程序却实现不了,望大神指点一下,谢谢!对输入信号的检测时间是0.5S,检测完后输出500Hz。输出部分没什么问题,就是检测输入信号想不明白怎么处理
#include"reg52.h"
sbit PWM_out=P1^0;  //定义输出脚
sbit PWM_in=P1^5;  //定义输入脚
unsigned int  count=0;         //计脉冲个数
void main()
{
        TMOD=0x01;                                 //定时器0工作方式1
        TH0=(65536-1000)/256;         //12M晶振1ms计时常数
        TL0=(65536-1000)%256;
        EA=1;                                         //开总中断
        ET0=1;                                         //开定时器0中断
        TR0=0;                                         //暂不启动定时器0         
            while(1);   
       if ((P1^5==1)&&(P1^5==0))
                {
                 count++;
                 
                 if((count >= 45)&&(count <= 55))
                 {   
                         TR0=1;
                 }
                 else
                 {
                  TR0=0;
                 }
       
        }
        }

void T0_time(void) interrupt 1          //中断函数,启动后每1ms进入一次中断
{
        TH0=(65536-1000)/256;             //12M晶振1ms计时常数
        TL0=(65536-1000)%256;
                 if(PWM_out)
                                 PWM_out=0;      //输出脚取反
                 else
                                 PWM_out=1;
                                 
}

此帖出自51单片机论坛

回复

168

帖子

0

资源

一粒金砂(中级)

这个要用定时器输入捕获来做呀,你这种做法有点不对,count也没有清0

回复

7

帖子

0

资源

一粒金砂(初级)

   if ((P1^5==1)&&(P1^5==0))这个什么时候能成立啊而且count一直在加

回复

2589

帖子

0

资源

五彩晶圆(中级)

楼主的问题,显然是输入的信号在50赫兹左右波动而要求输出频率始终是输入的100倍,因为如果输入不变也就不需要这个电路了,直接做一个500赫兹的信号就行了。
所以,这个问题实际上是要做一个软件锁相环,藉此实现100倍频。楼主在首帖给出的解决方案似乎是过于简单了。

点评

你好大神又见面了。之前想用纯硬件解决倍频问题,可后来发现难度重重,虽然有大神提供的资料做辅助但还是没做出来,又领导催得紧不得不换方案,故用单片机解决倍频问题。总体思路是这样的,ARM想要驱动步进电机,但  详情 回复 发表于 2018-5-13 06:04

回复

32

帖子

0

资源

一粒金砂(中级)

gmchen 发表于 2018-5-12 21:12
楼主的问题,显然是输入的信号在50赫兹左右波动而要求输出频率始终是输入的100倍,因为如果输入不变也就不 ...

你好大神又见面了。之前想用纯硬件解决倍频问题,可后来发现难度重重,虽然有大神提供的资料做辅助但还是没做出来,又领导催得紧不得不换方案,故用单片机解决倍频问题。总体思路是这样的,ARM想要驱动步进电机,但给步进电机的脉冲信号频率大于1K就会出现ARM系统卡顿的现象,频率小于1K没有问题。总共需要8种频率,在不同的情况下让步进电机有不同的转速。驱动频率为0.5K,1K,1.6K,2.1K,2.6K,3.1K,3.6K,4.1K。所以想让ARM输出低频,通过单片机倍频电路后转为放大10倍的高频。现求助大神给个处理输入脉冲信号的程序,后续的再自己琢磨

点评

既然只有这8种频率,而且是已知的固定频率,那要什么倍频?直接由ARM给一个指令,然后单片机输出指定的频率不就行了?  详情 回复 发表于 2018-5-13 08:17

回复

2589

帖子

0

资源

五彩晶圆(中级)

HT001 发表于 2018-5-13 06:04
你好大神又见面了。之前想用纯硬件解决倍频问题,可后来发现难度重重,虽然有大神提供的资料做辅助但还是 ...

既然只有这8种频率,而且是已知的固定频率,那要什么倍频?直接由ARM给一个指令,然后单片机输出指定的频率不就行了?

点评

这点真没想到,周一我再和程序员确定一下,谢谢!  详情 回复 发表于 2018-5-13 08:34

回复

32

帖子

0

资源

一粒金砂(中级)

gmchen 发表于 2018-5-13 08:17
既然只有这8种频率,而且是已知的固定频率,那要什么倍频?直接由ARM给一个指令,然后单片机输出指定的频 ...

这点真没想到,周一我再和程序员确定一下,谢谢!

回复

4001

帖子

0

资源

版主

你先做测频率呀,如果只是这个指标51也是可以应付来的。

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表