标题: 简单的51单片机电机驱动程序与Proteus仿真图(启停与快慢控制) [打印本页]

作者: cangyuan    时间: 2021-7-11 16:45
标题: 简单的51单片机电机驱动程序与Proteus仿真图(启停与快慢控制)
控制方向和变速,有仿真工程文件和源代码
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载).


单片机源程序如下:
  1. #include "reg51.h"
  2. #define u8 unsigned char
  3. sbit pwm1=P2^0;
  4. sbit pwm2=P2^3;
  5. sbit key=P2^7;
  6. u8 sudu=0,fang=0;//0停1慢2快
  7. void delay(long i)
  8. {
  9.         while(i--)
  10.         {
  11.                 if(key==0)//有按下
  12.                 {
  13.                         while(key==0);//等待放手
  14.                         sudu++;
  15.                         if(sudu==3)sudu=0;
  16.                 }
  17.         }
  18. }
  19. void dong()
  20. {
  21.         if(fang==0)
  22.                 {
  23.                 if(sudu==0)//停机状态
  24.                 {
  25.                         pwm1=1;//两边高电平
  26.                         pwm2=1;
  27.                         delay(100);//等待按下更改
  28.                 }
  29.                 if(sudu==1)//调速状态
  30.                 {
  31.                         pwm1=1;//转动的时间
  32.                         pwm2=0;
  33.                         delay(50);
  34.                         pwm1=1;//停止的时
  35.                         pwm2=1;
  36.                         delay(250);        }
  37.                 if(sudu==2)               
  38.                 {pwm1=1;
  39.                 pwm2=0;
  40.                         delay(300);}
  41.                 }
  42.                 if(fang==1)
  43.                 {
  44.                 if(sudu==0)//停机状态
  45.                 {
  46.                         pwm1=1;//两边高电平
  47.                         pwm2=1;
  48.                         delay(100);//等待按下更改
  49.                 }
  50.                 if(sudu==1)//调速状态
  51.                 {
  52.                         pwm1=0;//转动的时间
  53.                         pwm2=1;
  54.                         delay(50);
  55.                         pwm1=1;//停止的时
  56.                         delay(250);        }
  57.                 if(sudu==2)               
  58.                 {pwm1=0;
  59.                         pwm2=1;
  60.                         delay(300);}
  61. }}

  62. void main()
  63. {
  64.         EA=1;IT0=1;EX0=1;
  65.         while(1)
  66.         {
  67.                 dong();
  68.         }
  69. }

  70. void bian() interrupt 0
  71. {
  72.          fang=!fang;
  73. }
复制代码

所有资料51hei提供下载:
直流电机-pwm驱动.7z (41.93 KB, 下载次数: 34)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1