找回密码
 立即注册

QQ登录

只需一步,快速开始

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

Proteus仿真PWM控制直流电机( 脉冲频率应控制在25HZ~35HZ之间)附源码

[复制链接]
跳转到指定楼层
楼主
PWM控制直流电机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源码:

  /*用PWM控制电机脉冲频率应控制在25HZ~35HZ之间*/
  /*定时1ms,1个周期30ms,脉冲频率为33HZ                   */                        
  /*                                                                                   */

#include   <reg51.h>   
  typedef   unsigned   char   uchar;   
  sbit   P0_0=P0^0;
  sbit   P0_1=P0^1;
  sbit   P0_2=P0^2;
  sbit   P0_3=P0^3;
  sbit   P0_4=P0^4;
  sbit   P2_0=P2^0;
  sbit   P2_1=P2^1;
  sbit   P2_2=P2^2;
  sbit   P2_3=P2^3;
  sbit   P2_4=P2^4;
  sbit   P3_4=P3^4;   

  uchar   time=0;   
  uchar   period=30;   
  uchar   high=10;
  uchar   th0=0;
  uchar   tl0=1;
  bit    dir;


  void dealy()
  {
   uchar i;
   for(i=0;i<100;i++);

  }



  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)
                        {};
                         }
                 }   


}        


全部资料51hei下载地址:
PWM控制直流电机.zip (69.26 KB, 下载次数: 62)

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

使用道具 举报

沙发
ID:456627 发表于 2018-12-27 17:29 | 只看该作者
PWM基于51单片机的pwm直流电机调速proteus仿真
回复

使用道具 举报

板凳
ID:396689 发表于 2018-12-30 09:28 | 只看该作者
PWM的程序呢?凭空造?
回复

使用道具 举报

地板
ID:620780 发表于 2019-12-6 11:10 | 只看该作者
程序跟原理图根本搭不上,大兄嘚
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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