⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 步进电机.lst

📁 L298N直流电机步进电机两用驱动器
💻 LST
字号:
C51 COMPILER V8.05a   步絖电籣                                                             10/23/2010 16:06:23 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 步絖电籣
OBJECT MODULE PLACED IN 步进电机.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 步进电机.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:上位机控制步进电机程序
   5          使用芯片:AT89S52 或者 STC89C52
   6          晶振:11.0592MHZ
   7          编译环境:Keil
   8          作者:zhangxinchunleo
   9          网站:www.ourhc.cn
  10          淘宝店:汇诚科技 http://shop36330473.taobao.com
  11          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  12          
  13          *********************************************************************/
  14          
  15           #include<reg52.h>
  16           #define uchar unsigned char
  17           #define uint unsigned int
  18           
  19           //电机控制专用数据
  20          /*****P1.0=A ;P1.1=B ;P1.2=B' ; P1.3=A'****/ 
  21          
  22          /*******************************正转数组**************************************************/
  23            code uchar runz[8]={
  24                                0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04
  25                                                   }; 
  26                                        //两相四线八拍工作方式
  27          /*******************************反转数组**************************************************/
  28            code uchar runf[8]={
  29                                0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05
  30                                                   }; 
  31                                         //两相四线八拍工作方式
  32           uchar keycan=0;                //键值
  33           uchar i,j,k,z;
  34           unsigned char receive_count; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  35           uchar add_temp=0,rdu_temp=0;//定义加减速的控制值
  36           uchar oper_temp=0;
  37          
  38           int y=10;//定义转动速度,数值越大电机转速越慢反之则快
  39          
  40           sbit P2_0=P2^0;//正转按键
  41           sbit P2_1=P2^1;//反转按键
  42           sbit P2_2=P2^2;//电机加圈
  43           sbit P2_3=P2^3;//电机减圈
  44          
  45          /***************************************************************************
  46                                         函数声明
  47          ***********************************************************************/
  48           void delay(i) ;
  49           void zrun();
  50           void frun() ;
  51           void Init_Com(void);
  52           
  53           /********************************************************************
  54                                 主程序
  55           *********************************************************************/
C51 COMPILER V8.05a   步絖电籣                                                             10/23/2010 16:06:23 PAGE 2   

  56          main()
  57          {        
  58   1         Init_Com();
  59   1         while(1)
  60   1           {
  61   2       
  62   2                 if ( RI ) //扫描判断是否接收到数据,
  63   2               {
  64   3                  receive_count = SBUF; 
  65   3                  RI=0; //RI 
  66   3                       //判断串口接收的字符类型
  67   3                  switch( receive_count) 
  68   3                                 {              
  69   4                                       case 'A': keycan=1;break;          //接收到的字符为B 是keycan=1
  70   4                                           case 'B': keycan=2;break;          //接收到的字符为C 是keycan=1
  71   4                                           case 'C': add_temp=1;break;    //接收到的字符为D 是电机加速add_temp=1
  72   4                                           case 'D': rdu_temp=1;break;        //接收到的字符为E是 电机加减速rdu_temp=1
  73   4                                           case 'E': 
  74   4                                                                          keycan=0;
  75   4                                                                              rdu_temp=0;
  76   4                                                                              add_temp=0;
  77   4                                                                              break;     //接收到的字符为F 是keycan=0
  78   4                                  }
  79   3                   }
  80   2             switch (keycan)   //判断电机的工作状态
  81   2                     {
  82   3                                case 0: break;
  83   3                        case 1:
  84   3                                       { 
  85   4                                                  zrun();
  86   4                                                }
  87   3                                                break;
  88   3                        case 2: 
  89   3                                        {
  90   4                                                   frun();
  91   4                                                 }
  92   3                                                 break;
  93   3                       }
  94   2          if(P2_0==0) //如果电机正转按键按下
  95   2            {
  96   3              keycan=1;        //键值等于1
  97   3             }
  98   2          if(P2_1==0) //如果电机反转按键按下
  99   2            {
 100   3              keycan=2;        //键值等于2
 101   3             }
 102   2      
 103   2          if((P2_2==0)||(rdu_temp==1)) //  电机加速
 104   2               {
 105   3                       delay(200);
 106   3                   y=y+2;     
 107   3                          rdu_temp=0;
 108   3                }
 109   2         if((P2_3==0)||(add_temp)) 
 110   2              {       
 111   3                    delay(200);                // 电机减速
 112   3                        y=y-2;
 113   3                        add_temp=0;
 114   3              }
 115   2         }
 116   1      }
 117           
C51 COMPILER V8.05a   步絖电籣                                                             10/23/2010 16:06:23 PAGE 3   

 118          /***************************************************************************************
 119                                串口初始化函数
 120          ***************************************************************************************/
 121          void Init_Com(void)
 122          {
 123   1      TMOD = 0x20;
 124   1      PCON = 0x00;
 125   1      SCON = 0x50;
 126   1      TH1 = 0xFd;
 127   1      TL1 = 0xFd;
 128   1      TR1 = 1;
 129   1      }
 130          
 131           /********************************************************************
 132                                延时程序
 133           *********************************************************************/          
 134          void delay(i)//延时函数
 135            {
 136   1            for(j=0;j<i;j++)
 137   1            for(k=0;k<150;k++);
 138   1        }
 139          
 140           /********************************************************************
 141                                步进电机正传程序
 142           *********************************************************************/ 
 143          
 144          void zrun()// 正转运行
 145          {  
 146   1      
 147   1                 for(z=0;z<8;z++)
 148   1               {
 149   2                   P1=runz[z];
 150   2                   delay(y);
 151   2               }
 152   1      }
 153           /********************************************************************
 154                                 步进电机反转程序
 155           *********************************************************************/ 
 156          void frun()// 反转运行
 157           {
 158   1                  for(z=0;z<8;z++)
 159   1                {
 160   2                  P1=runf[z];
 161   2                  delay(y);
 162   2                }
 163   1      }
 164           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    243    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -