电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
c51单片机怎么实现pwm波
已解决
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
yhj416606438
通过定时器来模拟pwm,比如你要1khz的频率,占空比是100等份,那么定时器就要设置100khz,在定时中断函数里面判断占空比控制引脚的开启和关闭
发布于
2019-12-09
举报
评论 0
0
0
WQS1314
使用延时函数控制高低电平时间和频率就可以产生PWM波
发布于
2019-12-09
举报
评论 0
0
0
FEItwo
用两个定时器的方法是用定时器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
FEItwo
定义一个静态变量,程序每次进入定时器的中断函数中时判断是否满足你说要求的占空比,没达到就继续对变量值进行累加直到满足条件后使输出PWM波的那个引脚电平反转。
发布于
2019-12-09
举报
评论 0
0
0
川楠
使用定时器吧,定时最好使用最小定时单位,这样的你PWM的分辨率和精度会更高。
发布于
2019-12-13
举报
评论 0
0
0
chen0000009
传统的51单片机没有PWM外设,只能用定时器中断翻转IO来模拟PWM,一些改良版的,比如STC系列的,自带硬件PWM
发布于
2019-12-25
举报
评论 0
0
0
Eddit
可以直接用单片机控制引脚输出IO电平,模拟PWM输出
发布于
2020-01-13
举报
评论 0
0
0
Jing_Wang
51单片机只要控制IO口固定的输出高低电平,就可以实现PWM的输出
发布于
2020-01-15
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
c51单片机怎么实现pwm波
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: