• 设为首页
  • 收藏本站
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    查看: 1415|回复: 12

    [技术文章] 51单片机实现PWM控制

    [复制链接]

    该用户从未签到

    19

    主题

    150

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖原创先锋奖

    QQ
    发表于 2017-6-11 15:20:42 | 显示全部楼层 |阅读模式
    51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。

    一般可以使用两个定时器来实现,如果单片机是S51的话使用T0和T1,如果是S52的话建议使用T0和T2,因为定时器在工作方式2的八位重装模式下定时比较准确,这里我们使用T0和T1


    用T0定时器完成PWM输出,脉宽固定,T1来决定高平的宽带来进行PWM调制
    具体程序如下:

    其中晶振12M,载波频率20KHZ,直接用P0.1来驱动直流电机,直流电机正极接电源正,单片机低平驱动,这样灌电流大。



    #include < reg51.h >
    #include < intrins.h >

    sbit K1 =P1^4 ;                    //增加键
    sbit K2 =P1^5 ;                    //减少键
    sbit P00 =P0^1;
    sbit BEEP =P3^7 ;                //蜂鸣器
    unsigned char PWM=0xe7;   //赋初值

    void Beep();
    void delayms(unsigned char ms);
    void delay(unsigned char t);

    /*********************************************************/
    void main()
    {

        P1=0xff;
       TMOD=0x21 ;
       TH0=0xff ;             //50us延时常数
       TL0=0xce ;            //频率调节

       TH1=PWM ;            //脉宽调节
       TL1=0 ;

        EA=1;
        ET0=1;
        ET1=1;
       
        TR0=1 ;

      while(1)
       {
        do{
               if(PWM!=0xff)
              {PWM++ ;delayms(10);}
              else Beep() ;
            }
         while(K1==0);

        do{
              if(PWM!=0xce)
             {PWM-- ;delayms(10);}
              else Beep() ;
             }
        while(K2==0);
       }
    }

    void timer0() interrupt 1
    {
       TR1=0 ;
       TH0=0xff ;
       TL0=0xce ;
       TH1=PWM ;
       TR1=1 ;
       P00=0 ;      //启动输出
    }


    void timer1() interrupt 3
    {
       TR1=0 ;
       P00=1 ;     //结束输出
    }
    回复

    使用道具 举报

    该用户从未签到

    12

    主题

    7221

    回帖

    100

    积分

    游客

    积分
    100

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2017-6-11 15:57:28 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    前天 08:30
  • 签到天数: 128 天

    [LV.7]常住居民III

    3

    主题

    3761

    回帖

    4643

    积分

    二级逆天

    积分
    4643

    终身成就奖优秀斑竹奖

    QQ
    发表于 2017-6-11 16:17:00 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    24

    主题

    2224

    回帖

    3257

    积分

    二级逆天

    积分
    3257

    社区居民忠实会员社区劳模最爱沙发优秀斑竹奖终身成就奖

    QQ
    发表于 2017-6-11 17:04:12 | 显示全部楼层
    广告位出租,价格可以商量。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-7 09:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    4981

    回帖

    3456

    积分

    二级逆天

    积分
    3456

    终身成就奖社区居民优秀斑竹奖

    QQ
    发表于 2017-6-11 19:13:34 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    12 分钟前
  • 签到天数: 116 天

    [LV.6]常住居民II

    8

    主题

    2462

    回帖

    2311

    积分

    二级逆天

    积分
    2311

    终身成就奖优秀斑竹奖特殊贡献奖

    QQ
    发表于 2017-6-11 21:26:00 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    6

    主题

    656

    回帖

    684

    积分

    二级逆天

    积分
    684

    终身成就奖

    QQ
    发表于 2017-6-12 08:35:54 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    34

    主题

    967

    回帖

    77

    积分

    二级逆天

    积分
    77

    社区居民终身成就奖

    QQ
    发表于 2017-6-12 08:47:27 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    585

    回帖

    803

    积分

    二级逆天

    积分
    803

    终身成就奖

    QQ
    发表于 2017-6-12 08:54:44 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    23

    主题

    165

    回帖

    1

    积分

    二级逆天

    积分
    1

    终身成就奖

    QQ
    发表于 2017-6-12 08:56:59 | 显示全部楼层
    回复

    使用道具 举报

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

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    QQ 手机版 小黑屋 监管台 遇到问题请联系QQ1308068381 逆天PCB论坛

    Powered by Discuz! X3.5 © 2001-2023

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