找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2969|回复: 4
打印 上一主题 下一主题
收起左侧

PWM直流电机无极调速

[复制链接]
跳转到指定楼层
楼主
ID:366925 发表于 2018-7-7 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


/****************************************************************

            程序名称:   直流电机无极调速
            版本:      VER1.0
            适用板本:  SP-51学习板      
                        利用定时器控制产生占空比可变的PWM波对直流电机进行无极调速
                        按S2,PWM值增加,则占空比减小,电机减速。(初值电机为最小值)
                        按S3,PWM值减小,则占空比增加,电机加速。
                        当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

            注:直流电机的安装,请查看本文件夹的安装说明.

*****************************************************************/

#include<reg51.h>
#include<intrins.h>
sbit  S2 =P3^4 ;        //PWM值减少键
sbit  S3 =P3^5 ;       //PWM值增加键
sbit  BEEP =P2^3 ;         //蜂鸣器
unsigned char PWM=0x03 ;   //赋初值

///////////////////////////////////////
sbit dula=P2^6;   //数码管的段选信号
sbit wela=P2^7;   //数码管的位选信号
void delay1 (void) //关闭数码管延时程序
{
        int k;
        for (k=0; k<1000; k++);

}
//////////////////////////////////////

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

/*********************************************************/
void main()
{   
    P1=0xff;
    TMOD=0x00 ;
        TH0=0x00 ;           //延时常数
    TL0=0x00 ;           //频率调节
    TH1=PWM ;            //脉宽调节
    TL1=0xff ;
        EA=1;
        ET0=1;
        ET1=1;
    TR0=1 ;

        /////////////////////////////////////////////////////////////////
        P0=0x00;//关掉数码管的信号。阻止数码管受到P0口信号的影响。
        dula=1;
        wela=0;
        delay1();
        dula=0;
        wela=0;
        delay1();
        ////////////////////////////////////////////////////////////////

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

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

/*********************************************************/
// 定时器0中断服务程序  (频率)
/*********************************************************/
void timer0() interrupt 1
{  
    TR1=0 ;
    TH0=0x00;
    TL0=0x00 ;
    TH1=PWM ;
    TR1=1 ;
    P0=0x00 ;      //启动输出
       
}

/*********************************************************/
// 定时器1中断服务程序 (脉宽)
/*********************************************************/
void timer1() interrupt 3
{
    TR1=0 ;
    P0=0xff ;     //结束输出
}

/*********************************************************/
//蜂鸣器子程序
/*********************************************************/

void Beep()     
  {
    unsigned char i  ;
    for (i=0  ;i<100  ;i++)
      {
        delay(100)  ;
        BEEP=!BEEP  ;                //Beep取反
      }
    BEEP=1  ;                        //关闭蜂鸣器
delayms(100);
  }

/*********************************************************/
// 延时子程序
/*********************************************************/  
void delay(unsigned char t)
{
   while(t--)   ;
}

/*********************************************************/
// 延时子程序
/*********************************************************/
void delayms(unsigned char ms)

{
   unsigned char i ;
   while(ms--)
    {
      for(i = 0 ; i < 120 ; i++) ;
    }
}

/*********************************************************/


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:368776 发表于 2018-7-18 14:46 | 只看该作者
感谢分享
回复

使用道具 举报

板凳
ID:274435 发表于 2018-7-30 09:36 | 只看该作者
文夹在哪
回复

使用道具 举报

地板
ID:386237 发表于 2018-8-14 16:22 | 只看该作者
有没有电路分享一下?
回复

使用道具 举报

5#
ID:454712 发表于 2019-5-2 21:06 | 只看该作者
福训的资料
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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