我们从2011年坚守至今,只想做纯粹的技术论坛,请不要发布和技术无关的话题。  本站有两万多份高大上的PCB和原理图下载,每日更新中,欢迎常回来看看

 找回密码
 立即注册
搜索
查看: 2028|回复: 12

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

[复制链接]

18

主题

115

回帖

477

积分

二级逆天

积分
477

终身成就奖原创先锋奖

QQ
发表于 2017-6-11 15:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
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

主题

5132

回帖

5082

积分

二级逆天

积分
5082

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

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

使用道具 举报

  • 打卡等级:以坛为家II
  • 打卡总天数:265
  • 打卡月天数:0
  • 打卡总奖励:882
  • 最近打卡:2025-11-17 14:46:45

3

主题

2491

回帖

5131

积分

二级逆天

积分
5131

终身成就奖优秀斑竹奖

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

使用道具 举报

  • 打卡等级:初入少年
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:9
  • 最近打卡:2025-10-03 08:40:46

10

主题

1801

回帖

3270

积分

二级逆天

积分
3270

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

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

使用道具 举报

  • 打卡等级:以坛为家I
  • 打卡总天数:78
  • 打卡月天数:0
  • 打卡总奖励:262
  • 最近打卡:2026-04-21 17:03:37

6

主题

3753

回帖

3815

积分

二级逆天

积分
3815

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

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

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:616
  • 打卡月天数:7
  • 打卡总奖励:1824
  • 最近打卡:2026-11-12 12:13:14

7

主题

3133

回帖

3155

积分

二级逆天

积分
3155

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

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

使用道具 举报

6

主题

521

回帖

580

积分

二级逆天

积分
580

终身成就奖

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

使用道具 举报

29

主题

807

回帖

834

积分

二级逆天

积分
834

社区居民终身成就奖

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

使用道具 举报

1

主题

349

回帖

804

积分

二级逆天

积分
804

终身成就奖

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

使用道具 举报

23

主题

136

回帖

294

积分

二级逆天

积分
294

终身成就奖

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

使用道具 举报

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

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表