• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

如何用单片机产生一个100KHZ的方波,占空比50%。

看见未来f 2018-09-19 浏览量:5520
要是输出阶梯波呢,该怎么做?求大佬指教。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 100KHz还是100Hz

    100KHz的话要10us就要进入一次中断,我给你一个51单片机的程序,占空比是50%的


    #include <reg52.h>

    unsigned char PWM_COUNT;    //计数
    unsigned char PWM_VLAUE;    //占空比比对值

    sbit LED = P1^0;

    void Timer0_init()
    {
        TMOD=0x02;          //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)
        TH0=0xf6;               //定时器溢出值设置,每隔10us发起一次中断。
        TL0=0Xf6;
        TR0=1;                  //定时器0开始计时
        ET0=1;                  //开定时器0中断
        EA=1;                       //开总中断
    }
    void Time0Inretrupt() interrupt 1
    {   
        PWM_COUNT++;

        if(PWM_COUNT == PWM_VLAUE)      //判断是否到了点亮LED的时候
            LED = 0;                    //点亮LED

        if(PWM_COUNT == 10)             //当前周期结束
        {
            LED = 1;                    //熄灭LED
            PWM_COUNT = 1;              //重新计时
        }   
    }
    void main()
    {
        PWM_COUNT = 1;
        PWM_VLAUE = 5;      //总量为10,占空比为50%的话,令PWM_VLAUE等于5
        LED = 1;                  //默认LED熄灭   
        Timer0_init()            //定时器0初始化
        while(1);
    }

    • 发布于 2018-09-19
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:19
  • 5微秒就要翻转电平一次,普通单片机难于胜任,arm差不多。
    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 使用一个定时器,改变定时时间,中断里改变IO口电平
    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 如果只是输出100kHz的方波,普通单片机即可实现了,用定时器设置一个5us固定周期,每次进入中断翻转一次IO口;或者使用定时器的PWM功能,设置周期及占空比即可。

    如果要实现阶梯波的功能,普通单片机只能输出0-1,所以输出阶梯波有难度,可以找带DAC输出的单片机,用DAC输出不用的电压,实现阶梯波的功能,但是进度和速度可能会受限。

    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 你的阶梯波形是指什么?

    单独方波就是IO口电平切换可以输出(虽然不够平滑),但阶梯的可能需要DAC啦。

    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 100KHz周期则是10us,因占空比50%,所以高低电平持续时间间隔保持5us即可输出要求的波形。
    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 100kHz的方波的话,周期是10us

    占空比50%,满5us翻转就可以了

    • 发布于2018-09-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 定时器中断,设置好时间,刚好是5us具体程序可以参考三楼的!
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 用定时器才能精确控制频率,5us变化一次电平,

    阶梯波要用dac来做

    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 计算一下100K的频率下的周期是多少,配置定时器的周期是波形周期的一半
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用定时器每5微妙反转一次,这样就是100k 占空50%
    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 100Khz的平率比较高,一般的单片机是适应不了的,可以使用频率发生器芯片来做
    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 用一个定时器定时5us产生一次中断,在中断里面翻转电平
    • 发布于2018-09-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 输出阶梯波需要使用DAC实现,IO无法输出多个电平
    • 发布于2018-09-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个使用单片机的定时器输出PWM就可以了,占空比可以直接配置比较寄存器改,频率可以配置定时器的参数来改。

    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要根据你的IO来配置,不同IO翻转也是不同的,根据的IO来翻转电平
    • 发布于2018-09-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接使用PWM输出就可以了,周期固定占空比可调。
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

如何用单片机产生一个100KHZ的方波,占空比50%。