51单片机控制步进电机实现正转 反转 加速 减速的仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
- uchar code REV[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit K3=P3^2;
- sbit K4=P3^3;
- sbit K5=P3^4;
- void delayMS(uint ms)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<120;i++);
- }
- }
- void SETP_MOTOR_FFW(uchar n)
- {
- uchar i,j;
- uint ms=200;
-
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- if(K3==0) break;
- if(K2==0) break;
- if(K4==0)
- {
- P0=0xf6;
- ms=50;
- }
- if(K5==0)
- {
- P0=0xee;
- ms=500;
- }
- P1=FFW[j];
- delayMS(ms);
- }
- }
- }
- void SETP_MOTOR_REV(uchar n)
- {
- uchar i,j;
- uint ms=200;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {
- if(K1==0) break;
- if(K3==0) break;
- if(K4==0)
- {
- P0=0xf5;
- ms=50;
- }
- if(K5==0)
- {
- P0=0xed;
- ms=500;
- }
- P1=REV[j];
- delayMS(ms);
- }
- }
- }
- void main()
- {
- uchar N=3;
- while(1)
- {
- uchar ms=50;
- if(K1==0)
- {
- P0=0xfe;
- SETP_MOTOR_FFW(N);
- if(K3==0) break;
- }
- else if(K2==0)
- {
- P0=0xfd;
- SETP_MOTOR_REV(N);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
步进电机.rar
(36.04 KB, 下载次数: 141)
|