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

c51单片机怎么实现pwm波

9d08c432e100b3c1 2019-12-08 浏览量:1034
c51单片机怎么实现pwm波
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 使用定时器中断就可以完成,可以应用两个定时器T0和T1来实现(相对比较简单)定时器T0来控制频率,定时器T1来控制占空比。
    • 发布于 2019-12-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 通过定时器来模拟pwm,比如你要1khz的频率,占空比是100等份,那么定时器就要设置100khz,在定时中断函数里面判断占空比控制引脚的开启和关闭
    • 发布于2019-12-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用延时函数控制高低电平时间和频率就可以产生PWM波
    • 发布于2019-12-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。
    用一个定时器时(如定时器T0)首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。
    因为这里我们是产生周期为1ms(1000HZ)的PWM所以可设置中断的时间基准为0.01ms,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n。
    • 发布于2019-12-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 定义一个静态变量,程序每次进入定时器的中断函数中时判断是否满足你说要求的占空比,没达到就继续对变量值进行累加直到满足条件后使输出PWM波的那个引脚电平反转。
    • 发布于2019-12-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用定时器吧,定时最好使用最小定时单位,这样的你PWM的分辨率和精度会更高。


    • 发布于2019-12-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 传统的51单片机没有PWM外设,只能用定时器中断翻转IO来模拟PWM,一些改良版的,比如STC系列的,自带硬件PWM
    • 发布于2019-12-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以直接用单片机控制引脚输出IO电平,模拟PWM输出
    • 发布于2020-01-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机只要控制IO口固定的输出高低电平,就可以实现PWM的输出
    • 发布于2020-01-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

c51单片机怎么实现pwm波