51單片機控制步進電機實現正轉 反轉 加速 減速的仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (25 KB, 下載次數: 56)
下載附件
2017-5-22 16:13 上傳
0.png (15.68 KB, 下載次數: 44)
下載附件
2017-5-22 16:13 上傳
0.png (72.58 KB, 下載次數: 91)
下載附件
2017-5-22 16:12 上傳
單片機源程序如下:
- #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)
2017-5-22 12:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|