找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1874|回复: 1
打印 上一主题 下一主题
收起左侧

单片机PWM控制C程序语言

[复制链接]
跳转到指定楼层
楼主
ID:300040 发表于 2018-3-31 20:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Sooofia 于 2018-3-31 20:51 编辑

#include "reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit PWM = P1^1;
uchar pluse; //占空比寄存器
void Timer2() interrupt 5
{   
static uchar time;   
TF2=0;   
if(++time==pluse) PWM=0; //达到脉宽设定值时,输出PWM低电平   
else if(time==40) //PWM的频率为1khz左右   
{     
time=0;   
PWM=1;  
}  
}  
void InitTimer2(void) //初始化函数
{   
RCAP2H = 0xff //定时25us初值   
RCAP2L = 0x0e7;   
ET2=1;  
EA=1;  
TR2=1;
}   
void main(void)   
{      
InitTimer2();     
while(1)
{
pluse=20;  
}
}
把PWM波的周期定为1ms,占空比分40级可调(即每级差2.5%),这样定时器T2每25us产生一个定时中断,每40次中断后进入下一个PWM波的周期。在程序中,pluse=20,即占空比为50%,输出的平均电压为12*50%=6V。PWM产生的过程是这样的,开始时PWM为1,当计时到达pluse时(即到达了设定的脉宽宽度时间)PWM=0,随后到达PWM周期时间后PWM=1,此时下一个PWM周期重新开始。

PWM代码.pdf

173.98 KB, 下载次数: 12, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301752 发表于 2018-4-11 17:35 | 只看该作者
什么意思??怎么调?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表