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

C8051F系列单片机IO口使用PWM作为控制端口的设计

wanyanfei1984 2018-04-12 浏览量:951

C8051F系列单片机IO口使用PWM作为控制端口,想使用占空比10,50,100三种模式来实现不同的控制信号,这种算法设计应该如何实现?


是使用一个指令周期的高低电平占比?还是怎么用?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 首先你的思路是对的,然而并不是“一个指令周期的高低电平占比”,而是一段时间内的周期占比。

    根据你被控制的对象的要求进行算法设计,这里有两种方式:

    【注:这里为了方便描述,将低电平-低电平或者高电平-高电平过程看做和高电平-低电平、低电平到高电平过程一样电平发生了改变。】

    ①(以50%占空比举例来说)用一个char型变量i来计数电平改变的次数、初值为1,初始电平假设为低电平,每改变一次电平i自加1,在i不大于50之前一直保持低电平,当i大于50之后立即将电平拉高,之后在i不大于100的时候始终保持为高电平,大于100之后将i置1、电平拉低,再次进入上述循环。

    总之,假设初始电平为低电平,在i从1到100的计数周期内,不大于50时保持低电平,大于50之后保持高电平,i大于100以后重置并拉低电平进入下一个循环,就可以做到50%的占空比。

    ②以在100ms内做到占空比为50%举例来说,假设初始电平为低电平,配置定时器每50ms改变一次电平状态就可以了。

    初始电平的高低并没有影响。

    附注:

    ①占空比定义:首先你的思路是对的,然而并不是“一个指令周期的高低电平占比”,而是一段时间内的周期占比。
    根据你被控制的对象的要求进行算法设计,这里有两种方式:
    【注:这里为了方便描述,将低电平-低电平或者高电平-高电平过程看做和高电平-低电平、低电平到高电平过程一样电平发生了改变。】
    ①(以50%占空比举例来说)用一个char型变量i来计数电平改变的次数、初值为1,初始电平假设为低电平,每改变一次电平i自加1,在i不大于50之前一直保持低电平,当i大于50之后立即将电平拉高,之后在i不大于100的时候始终保持为高电平,大于100之后将i置1、电平拉低,再次进入上述循环。
    总之,假设初始电平为低电平,在i从1到100的计数周期内,不大于50时保持低电平,大于50之后保持高电平,i大于100以后重置并拉低电平进入下一个循环,就可以做到50%的占空比。
    ②以在100ms内做到占空比为50%举例来说,假设初始电平为低电平,配置定时器每50ms改变一次电平状态就可以了。
    初始电平的高低并没有影响。
    附注:
    ①占空比定义:占空比是指高电平在一个脉冲周期中所占的比例。​

    ②PWM定义:PWM 是 Pulse Width Modulation 的缩写, 是一连串的电平总宽度不一样的信号。

    • 发布于 2018-04-12
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 理论就是调整高低电平比,具体的就是根据定时器频率设置电平持续时间
    • 发布于2018-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议用定时器,定时器中断触发时进行IO口翻转
    • 发布于2018-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 通过定时器定时来改变引脚高低电平,输出PWM
    • 发布于2018-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 确定PWM周期,可以使用定时器,修改定时的定时时间,再设置不同的GPIO电平来达到不同的占空比。
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼主的想法是对的,PWM输出比较值就是占空比的大小,不过8051也是有硬件PWM输出的,不需要IO模拟,IO模拟出的PWM精度不是很高,用示波器抓一抓波形就看得出明显区别了。

    • 发布于2018-04-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

C8051F系列单片机IO口使用PWM作为控制端口的设计