找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC12C5A60S2片内PWM按键控制直流电机正转、反转、加减速源程序

[复制链接]
跳转到指定楼层
楼主
ID:785043 发表于 2020-11-24 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC12C5A60S2单片机控制直流电机,可以进行正转、反转和相应的加减速,亲测有效。
程序源码如下:
#include "STC12C5A60S2.h"

#define uint unsigned int
#define uchar unsigned char  


sbit forward_up=P3^5; //正转加速
sbit forward_down=P3^4; //正转减速
sbit reversal_up=P3^3;//反转加速
sbit reversal_down=P3^2;//反转减速
sbit In1=P0^0;
sbit In2=P0^1;
sbit In3=P0^2;
sbit In4=P0^3;

void DelayMs(uchar ms);  
void init_PWM(); //PWM 初始化
void PWM0_change(uchar type,uchar change);//PWM调整函数
void PWM0_set(uchar empty);//直接赋PWM的值
void turnback();//反转
void run();//正转
void stop();//停止
//stc10f系列 单周期指令的ms级延时
void DelayMs(uchar ms) //这个延时可能不对,非关键部分,可自己修改
{        
        uint i;  while(ms--)  
        {     
                for(i = 0; i < 850; i++);
         }
}
void init_PWM()
{     
        CCON=0X00;   
         CH=0;   
         CL=0;
//时钟分频也就是输出的频率。 0X00:以系统时钟/12 为时钟源,0X02:系统时钟/2,0x08:系统时钟     
        CMOD=0X02;      
//起始占空比,0XC0:占空比为25%,0X80:占空比为50%,0X40:占空比为75%   
        PWM0_set(0XC0); // (与CL比较,当CL<CCAP0L时输出低电平,反之高电平)
        PCA_PWM1=0x00;
        PCA_PWM0=0x00; //控制占空比的第九位为0   
//0X42:8位PWM P1.3输出, P1.4输出,无中断;0X53:8位PWM输出,下降沿产生中断;
//0X63:上升沿产生中断;0X73:跳变沿产生中断
        CCAPM0=0X42;  
        CCAPM1=0X42;
         CR=1;          //计时器开始工作
}
void PWM0_set(uchar empty)  //直接设置占空比
{      
        CCAP0L=empty;   
        CCAP0H=empty;
        CCAP1L=empty;   
        CCAP1H=empty;
}
//占空比调节函数
void PWM0_change(uchar type,uchar change) //type=0减占空比,1增加占空比         
//change: 0X0C 约5%,0X05约2%
{         
        if(type==0)   
         {      
                 if(CCAP0L<0XE6)   //<90%   
                {      
                         CCAP0L+=change;     
                          CCAP0H+=change;  
                        CCAP1L+=change;     
                          CCAP1H+=change;
                  }           
         }   
else   
{   
          if(CCAP0L>0X19)  //>10%      
        {      
                 CCAP0L-=change;     
                  CCAP0H-=change;  
                CCAP1L-=change;     
                  CCAP1H-=change;
         }         
}

}

void main()
{   
         init_PWM();      //初始化,PWM输出  
          while(1)   
          {  

          if(forward_up==0) //按键加PWM占空比
                  {   
                            DelayMs(500);  //按键消抖   
                           while(forward_up==0); //按键释放才跳出执行下一步   
                         PWM0_change(1,0X0c); //change: 0X0C 约5%,0X05约2%
                         run();                              
                  }   
                  if(forward_down==0)//按键减PWM占空比
                  {   
                           DelayMs(500);  
                     while(forward_down==0);   
                         PWM0_change(0,0X0c); //change: 0X0C 约5%,0X05约2%  
                         run();
                  }
                  if(reversal_up==0) //按键加PWM占空比
                  {   
                            DelayMs(500);  //按键消抖   
                           while(reversal_up==0); //按键释放才跳出执行下一步   
                         PWM0_change(1,0X0c); //change: 0X0C 约5%,0X05约2%
                         turnback();                              
                  }   
                  if(reversal_down==0)//按键减PWM占空比
                  {   
                           DelayMs(500);  
                     while(reversal_down==0);   
                         PWM0_change(0,0X0c); //change: 0X0C 约5%,0X05约2%  
                         turnback();                                                                        
                   }                                                                                
           }
}



void turnback()   
{

     In1=0;In2=1;In3=0;In4=1;   
}

void run()   
{

     In1=1;In2=0;In3=1;In4=0;   
}

void stop()   
{
     In1=1;In2=1;In3=1;In4=1;   
}

全部程序51hei下载地址:
PWM直流电机调速.rar (28.62 KB, 下载次数: 62)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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