打印

不知道哪位仁兄 能给小弟讲讲pmw。。。

[复制链接]
1701|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱学小生|  楼主 | 2009-11-6 16:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天学习pmw,看了一会源程序。。。没看懂。。。不知谁能给我讲解讲解。。。。程序如下
#include <reg52.h>
sbit LED = P1^2;
unsigned char CYCLE;
unsigned char PWM_ON ;
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
bit Flag;
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;  
TR0=1;
CYCLE = 50;// 时间可以调整 这个是10调整 8位PWM就是256步
while(!Flag)
  {
   delay(20000); //延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效果
   PWM_ON++;     //这个使用较长延时,以便能看清楚变化过程
   if(PWM_ON == CYCLE)
     {           //这个里可以添加其他程序 如到最亮时候控制设备
      Flag=1;
   }
  }
while(Flag)     //亮度递减 同上,是个相反的过程
  {
   delay(20000);
   PWM_ON--;
   if(PWM_ON == 0)
     {
      Flag=0;
   }
  }
}
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-100)/256;
TL0=(65536-100)%256;
if (count==PWM_ON)
    {
     LED = 1;  
    }
  count++;
if(count == CYCLE)
    {
    count=0;
if(PWM_ON!=0) //如果左右时间是0 保持原来状态
    LED = 0;
    }
}

相关帖子

沙发
man417022791| | 2009-11-6 17:58 | 只看该作者
共同学习吧,我也是新手...

使用特权

评论回复
板凳
man417022791| | 2009-11-6 18:08 | 只看该作者
PWM不就是矩形波吗,还写的这么麻烦,而且还不对...

主程序应该有while(1){……}

使用特权

评论回复
地板
爱学小生|  楼主 | 2009-11-6 21:01 | 只看该作者
....三楼解释一下呗。。。那个程序是 买实验板带的源程序,是控制一个灯由亮到灭。。pmw不懂。。。。

使用特权

评论回复
5
ZWLCG| | 2009-11-7 08:24 | 只看该作者
俺也来学习学习!

使用特权

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

本版积分规则

32

主题

138

帖子

2

粉丝