搜索
bottom↓
回复: 22

使用定时器产生PWM

[复制链接]

出0入0汤圆

发表于 2011-9-20 14:35:10 | 显示全部楼层 |阅读模式
由于最近想做一个红外遥控赛车,目前正在准备阶段,现在正在准备的是PWM控制直流电机的部分,这个程序也就是学习定时器产生PWM的一个小成果,实际上这也就是一个呼吸灯
在没打算做遥控车之前零零碎碎的看过PWM但是遇到了一点困难就放弃了,之前都是看别人写的程序,这次是在学习了一篇别人写的论文之后比较有收获而写出的程序,论文我发上来了,有需要的朋友可以参考参考
现在我对于PWM是这么理解的,不知道对不对,PWM就如同是不同海拔高度上空气的稀薄程度,占空比高即如同一定体积空气内含氧量高,反之则低

点击此处下载 ourdev_678058FUBHHQ.pdf(文件大小:121K) (原文件名:PWM直流电机调速论文.pdf)

#include<reg52.h>


sbit led1=P1^1;//变化

unsigned char num,pwm;
bit flag;//明暗方向标志

void init()
{
    flag=0;pwm=0;num=0;//赋初值
       
        TMOD=0x01;//定义定时器1和定时器0 都工作与方式1
    TH0 = 0xFF;//100us=0.1ms
    TL0 = 0x9C;
        EA=1;
        ET0=1;
        TR0=1;

}

void main()
{
  init();
  while(1)
  {
    if(flag==0)//暗---明
        {
          if(num==100)
          {
            num=0;
                pwm++;
                if(pwm==100)
                {
                  flag=~flag;
                }
          }
        }
        if(flag==1)//明---暗
        {
          if(num==100)
          {
            num=0;
                pwm--;
                if(pwm==0)
                {
                  flag=~flag;
                }
          }
        }
        if(num<=pwm)
          led1=0;
        else
          led1=1;
  }
}

void t0() interrupt 1//定时器0
{
  TH0 = 0xFF;//100us=0.1ms
  TL0 = 0x9C;
  num++;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-9-20 14:35:54 | 显示全部楼层
自己先顶一个

出0入0汤圆

发表于 2011-9-20 14:42:37 | 显示全部楼层
本来我还懂PWM的,看了你的比喻,我竟然犯迷糊了

出0入0汤圆

 楼主| 发表于 2011-9-20 15:23:37 | 显示全部楼层
回复【2楼】wuha  致命武器
-----------------------------------------------------------------------
只是我自己的一点理解 实际上我自己也不知道对不对  你怎么觉得的呢

出0入0汤圆

发表于 2011-9-20 15:53:59 | 显示全部楼层
看看,顶一下

出0入0汤圆

发表于 2011-9-20 16:15:26 | 显示全部楼层
第一次听到这个比喻
比如说一杯水 占空比越大 水越满

出0入0汤圆

发表于 2011-9-20 17:12:57 | 显示全部楼层
定时翻转一个脚位电平就可以了,当然是50%占空比的.频率就看你定时的时间了.

出0入0汤圆

发表于 2011-9-20 18:10:33 | 显示全部楼层
PWM有这么难吗!!呵呵

出0入0汤圆

发表于 2011-9-20 18:16:15 | 显示全部楼层
回复【楼主位】hzc171
-----------------------------------------------------------------------

51还是比较麻烦的!
头像被屏蔽

出0入0汤圆

发表于 2011-9-20 18:51:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2011-9-20 22:11:51 | 显示全部楼层
回复【7楼】superAFE  
-----------------------------------------------------------------------

只是因为今天看了一个关于西藏的纪录片

出0入0汤圆

 楼主| 发表于 2011-9-20 22:12:10 | 显示全部楼层
回复【8楼】longwu911  
-----------------------------------------------------------------------
水哎 么的办法

出0入0汤圆

 楼主| 发表于 2011-9-20 22:12:58 | 显示全部楼层
回复【10楼】bbs2009  
-----------------------------------------------------------------------
应该就是的吧

出0入0汤圆

发表于 2011-9-22 20:54:17 | 显示全部楼层
哈哈,就快5分了,我以前也写过,上传一下吧。
#include<reg52.h>
sbit d1=P0^0;
sbit x=P0^1;
unsigned char num;
void timer_init();
void main ()
{
                x=0;
                num=0;
                timer_init();
                while(1);
}
void timer_init()
{
        TMOD=0x01;                                        //16位定时器
        TH0=(65536-100)/256;                //赋初值
        TL0=(65536-100)%256;                //同上
        EA=1;                                          //开总中断
        ET0=1;                                                //开定时器0中断
        TR0=1;                                                //启动定时器0
}

void T0_() interrupt 1
{
        TH0=(65536-100)/256;
        TL0=(65536-100)%256;
        num++;
        if(num==25)
        {
                d1=1;               
        }
        if(num==100)
        {
                d1=0;
                num=0;
        }
}

出0入0汤圆

发表于 2011-9-27 22:17:19 | 显示全部楼层
mark~

出0入0汤圆

发表于 2012-3-8 21:59:04 | 显示全部楼层
回复【2楼】wuha 致命武器
本来我还懂pwm的,看了你的比喻,我竟然犯迷糊了
-----------------------------------------------------------------------

这哥们幽默!

出0入0汤圆

发表于 2012-3-10 17:49:08 | 显示全部楼层
来学习的,mark

出0入0汤圆

发表于 2012-6-8 16:56:26 | 显示全部楼层
baobaoxiaowei 发表于 2011-9-22 20:54
哈哈,就快5分了,我以前也写过,上传一下吧。
#include
sbit d1=P0^0;

谢谢兄弟,我照你这种方式写过不知道以前写的时候是否在哪里有错,一直没弄成,谢谢!mldmicro 加我!

出0入0汤圆

发表于 2012-8-11 18:12:25 | 显示全部楼层
谢谢分享刚刚好需要呵呵

出0入0汤圆

发表于 2012-8-12 13:03:15 | 显示全部楼层
不错 顶一下

出0入0汤圆

发表于 2013-1-21 14:54:38 | 显示全部楼层
谢谢楼主分享!!

出0入0汤圆

发表于 2013-11-18 21:17:37 | 显示全部楼层
baobaoxiaowei 发表于 2011-9-22 20:54
哈哈,就快5分了,我以前也写过,上传一下吧。
#include
sbit d1=P0^0;

x有神马用呢????

出0入0汤圆

发表于 2013-11-26 11:44:47 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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