基于51单片机的PWM控制马达电机调速正反转

资料编号:117  下面是相关功能视频演示:

117-基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)

仿真图proteus 7.8(理论上高于7.8均可以打开)
程序编译器:keil 5
编程语言:C语言
有仿真图,源码

采用51单片机,用PWM控制电机脉冲频率应控制在25HZ~35HZ之间
定时1ms,1个周期30ms,脉冲频率为33HZ 来控制马达调速以及正反转

下面是程序部分展示:

 void   timer0()   interrupt   1   using   1   
  {   
            TH0=0xfc;     /*定时器初值重装载*/   
            TL0=0x18;
            
            time++; 
            P3_4=~P3_4;  
      if(dir==1)
      {
            
            if(time==high)   /*高电平持续时间结束,变低*/   
               P2_0=th0;         /*经过反相器反相*/
                
                
            else   if(time==period)     /*周期时间到,变高*/   
                      {   time=0;   
                          P2_0=tl0;        /*经过反相器反相*/
                          
                           
                      }   
              
        }
         else      if(time==high)   /*高电平持续时间结束,变低*/   
            
               P2_1=th0;         /*经过反相器反相*/
                
               
                  else   if(time==period)     /*周期时间到,变高*/   
                      {   time=0;   
                          P2_1=tl0;        /*经过反相器反相*/
                          
                      }           

 void   main()   
  {   

        P0=0x00;
        P2=0x00;

        TMOD=0x01;   /*定时器0方式1*/   
        TH0=0xfc;     /*定时器装载初值,设置脉冲信号的占空比为1/5*/   
        TL0=0x18; 
        
         
        ET0=1;   /*开定时器0中断*/   
        TR0=1;    /*启动定时器0*/ 

        while(1)    
        {
            if(P0_0==1)
            EA=1;     /*开CPU中断*/

             if(P0_1==1)
            EA=0;     /*关CPU中断*/

            if(P0_2==1)
            {
            dir=~dir;  /*转向控制*/
            while(P0_2!=0)
            {};

            }

            if(P0_3==1)
            {

             high++;
             if(high==30)
             high=0;
            while(P0_3!=0)
            {};
             }

 下面是该资料的分享下载链接:

https://pan.baidu.com/s/1UVK4LxdJ9Cea1X9dXeAYtA?pwd=2aft

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值