打印

PWM用延迟怎么写??

[复制链接]
1736|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mage心寒|  楼主 | 2010-8-11 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhoukok| | 2010-8-11 14:36 | 只看该作者
2个计数单元 一个控制高,一个控制低,根据数值来延时,当pwm升高时,高计数加,低计数减,以保证周期不变则可

使用特权

评论回复
板凳
mage心寒|  楼主 | 2010-8-11 14:39 | 只看该作者
楼上可以举个例子吗??谢谢。。

使用特权

评论回复
地板
new1988| | 2010-8-11 15:15 | 只看该作者
本帖最后由 new1988 于 2010-8-11 15:19 编辑

unsigned char i;
while(1)
{
        P1^1 = 1;
        delay(i);
        P1^1 = 0;
        delay(256 - i );
}                 高电平占空比 = i/256,频率 = 1/delay(1)*256
这是八位的PWM,16位的就把i定义为unsigned int , 把delay(256-i)改成65536-i就可以了。

使用特权

评论回复
5
mage心寒|  楼主 | 2010-8-11 15:21 | 只看该作者
我编程实验看下。。谢谢4楼。。

使用特权

评论回复
6
zhoukok| | 2010-8-11 15:33 | 只看该作者
呵呵  俺不习惯这样写的  不过这是可行的

使用特权

评论回复
7
mage心寒|  楼主 | 2010-8-11 15:57 | 只看该作者
6楼你一般怎么写说说。。

使用特权

评论回复
8
zhoukok| | 2010-8-11 16:47 | 只看该作者
你去看本版块的 如何让灯渐明渐暗 帖子吧

使用特权

评论回复
9
mage心寒|  楼主 | 2010-8-11 18:39 | 只看该作者
我用定时器会,不会用延迟写。。

使用特权

评论回复
10
mage心寒|  楼主 | 2010-8-12 09:10 | 只看该作者
void pwm()
      {
          uchar i;
          for(i=1;i<=5;i++)
          {
          if(i<=PWM_ON)
                   pwm1=1;          
          if(i>PWM_ON)
          pwm1=0;
          delayus(100);
          }
           }
这是昨晚写的,灯是变暗了,可是再调节可以变亮,但最暗的就是那样。。请教高手。。

使用特权

评论回复
11
hellozj| | 2010-8-12 14:26 | 只看该作者

void pwm(uchar percent){//占空比
    uchar i,t;
    t=1;//延时倍数
    for(i=0; i<100*t; i++){
         if(i<percent)
              pwm1=1;
         else
              pwm1=0;
   }
}        
         
void main(){
         while(1){
            pwm(20);//占空比20%
         }
}  


}

使用特权

评论回复
12
mage心寒|  楼主 | 2010-8-12 18:43 | 只看该作者
楼上的程序很好。。谢谢。。

使用特权

评论回复
13
mage心寒|  楼主 | 2010-8-12 18:43 | 只看该作者
楼上的程序很好。。谢谢。。

使用特权

评论回复
14
goldbright| | 2010-8-12 20:32 | 只看该作者
谢谢这些无私的人。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

1019

帖子

13

粉丝