找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3593|回复: 3
收起左侧

51单片机PWM控制直流电机Proteus仿真+代码

[复制链接]
ID:4572 发表于 2019-4-30 23:09 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
Proteus仿真.JPG

单片机源程序如下:
  1.   /*用PWM控制电机脉冲频率应控制在25HZ~35HZ之间*/
  2.   /*定时1ms,1个周期30ms,脉冲频率为33HZ                   */                        
  3.   /*                                                                                   */
  4.    
  5. #include   <reg51.h>   
  6.   typedef   unsigned   char   uchar;   
  7.   sbit   P0_0=P0^0;
  8.   sbit   P0_1=P0^1;
  9.   sbit   P0_2=P0^2;
  10.   sbit   P0_3=P0^3;
  11.   sbit   P0_4=P0^4;
  12.   sbit   P2_0=P2^0;
  13.   sbit   P2_1=P2^1;
  14.   sbit   P2_2=P2^2;
  15.   sbit   P2_3=P2^3;
  16.   sbit   P2_4=P2^4;
  17.   sbit   P3_4=P3^4;   

  18.   uchar   time=0;   
  19.   uchar   period=30;   
  20.   uchar   high=10;
  21.   uchar   th0=0;
  22.   uchar   tl0=1;
  23.   bit    dir;
  24.   
  25.    
  26.   void dealy()
  27.   {
  28.    uchar i;
  29.    for(i=0;i<100;i++);

  30.   }


  31.   
  32.   void   timer0()   interrupt   1   using   1   
  33.   {   
  34.             TH0=0xfc;     /*定时器初值重装载*/   
  35.             TL0=0x18;
  36.             
  37.             time++;
  38.                         P3_4=~P3_4;  
  39.       if(dir==1)
  40.           {
  41.                         
  42.                         if(time==high)   /*高电平持续时间结束,变低*/   
  43.                P2_0=th0;                 /*经过反相器反相*/
  44.                            
  45.                            
  46.             else   if(time==period)     /*周期时间到,变高*/   
  47.                       {   time=0;   
  48.                           P2_0=tl0;                /*经过反相器反相*/
  49.                                                   
  50.                                                    
  51.                       }   
  52.                      
  53.                 }
  54.                  else          if(time==high)   /*高电平持续时间结束,变低*/   
  55.             
  56.                            P2_1=th0;                 /*经过反相器反相*/
  57.                            
  58.                            
  59.                   else   if(time==period)     /*周期时间到,变高*/   
  60.                       {   time=0;   
  61.                           P2_1=tl0;                /*经过反相器反相*/
  62.                                                   
  63.                       }
  64.    
  65.                
  66. }



  67. void   main()   
  68.   {   

  69.                 P0=0x00;
  70.                 P2=0x00;

  71.         TMOD=0x01;   /*定时器0方式1*/   
  72.         TH0=0xfc;     /*定时器装载初值,设置脉冲信号的占空比为1/5*/   
  73.         TL0=0x18;
  74.                
  75.          
  76.         ET0=1;   /*开定时器0中断*/   
  77.         TR0=1;    /*启动定时器0*/
  78.         
  79.         
  80.         

  81.         while(1)   
  82.         {
  83.                         if(P0_0==1)
  84.                 EA=1;     /*开CPU中断*/

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

  87.                         if(P0_2==1)
  88.                         {
  89.                         dir=~dir;  /*转向控制*/
  90.                         while(P0_2!=0)
  91.                         {};

  92.                         }

  93.                         if(P0_3==1)
  94.                         {

  95.                          high++;
  96.                          if(high==30)
  97.                          high=0;
  98.                         while(P0_3!=0)
  99.                         {};
  100.                          }
  101.                  }   
  102.    

  103. }        
  104.    

复制代码


PWM_motor.rar

18.65 KB, 下载次数: 63, 下载积分: 黑币 -5

PWM_motor源码.rar

932 Bytes, 下载次数: 48, 下载积分: 黑币 -5

评分

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

查看全部评分

回复

使用道具 举报

ID:525460 发表于 2019-5-1 10:12 来自手机 | 显示全部楼层
感谢分享,领教了
回复

使用道具 举报

ID:4572 发表于 2020-4-2 23:56 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:785808 发表于 2020-6-21 14:54 | 显示全部楼层
感谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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