找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机用PWM控制电压时,PWM的周期如何确定呢?

[复制链接]
跳转到指定楼层
楼主
ID:106698 发表于 2016-3-4 00:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做毕业设计中,希望各路大神指点
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:102389 发表于 2016-3-4 09:10 | 只看该作者
用定时器做
回复

使用道具 举报

板凳
ID:106698 发表于 2016-3-4 11:37 | 只看该作者

恩,我是不知道如何确定周期。比如我要得到原电压的一半,那么高电平的频率和低电平的频率在一个周期内是相等的,关键是这个周期可以是500us 1ms 或者1s   ,这个周期如何确定呢?
回复

使用道具 举报

地板
ID:102389 发表于 2016-3-4 13:01 | 只看该作者
void timer0(void) interrupt 1 //using 2
{
   static uchar click=0;              /*中断次数计数器变量*/
   TH0=T_TH0;                         /*恢复定时器初始值*/
   TL0=T_TL0;
   ++click;
   if (click>=100) click=0;

   /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
   if (click<=PWM1)   P10=1;
   else  P10=0;
}

定时器时间*100就是PWM周期
回复

使用道具 举报

5#
ID:97867 发表于 2016-3-4 15:46 | 只看该作者
本帖最后由 解放君 于 2016-3-4 15:47 编辑

设置定时器1MS 中断一次  设置一个变量N M   每中断一次N M自加一次   假设N=60 你复位管脚状态  m>你设置的PWM  更新引脚状态   

简单的写下 就是

{
  n++;
m++;
if(n==100)
{
    p0.1=0;
n=0;
m=0;
}

if(m<你设的pwm值)
{
    p0.1=1;
}
else
{
    p0.1=0;
}


设想一下  假设1ms 中断一次 n+100次 就是100ms   假设你PWM设置的值为60  那个M 在小于60的时候  管脚是不是高电平 在60《m《100  的时候 管脚是不是为低电平   那么占空比 不就是60/100了吗
回复

使用道具 举报

6#
ID:106698 发表于 2016-3-5 00:56 | 只看该作者
解放君 发表于 2016-3-4 15:46
设置定时器1MS 中断一次  设置一个变量N M   每中断一次N M自加一次   假设N=60 你复位管脚状态  m>你设置 ...

懂了 谢谢
回复

使用道具 举报

7#
ID:106698 发表于 2016-3-5 00:56 | 只看该作者
Accordion 发表于 2016-3-4 13:01
void timer0(void) interrupt 1 //using 2
{
   static uchar click=0;              /*中断次数计数器 ...

懂了 谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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