51單片機用C實現(xiàn)控制步進電機正反轉
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (16.02 KB, 下載次數(shù): 100)
下載附件
2018-5-3 01:54 上傳
0.png (45.12 KB, 下載次數(shù): 63)
下載附件
2018-5-3 01:54 上傳
單片機源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char //------8拍-----
- uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正轉
- uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉
- void delay(uint ms)
- { uint t;
- while(ms--)
- for(t=0;t<120;t++);
- }
- void motor_zz(uint n)
- { uint i,j;
- for(i=0;i<5*n;i++)
- { for(j=0;j<8;j++)
- { if(P3==0xfb)
- break;
- P1=zz[j];
- delay(20);
- }
- }
- }
- void motor_fz(uint n)
- { uint i,j;
- for(i=0;i<5*n;i++)
- {
- for(j=0;j<8;j++)
- {if(P3==0xfb)
- break;
- P1=fz[j];
- delay(20);
- }
- }
- }
- void main()
- {
- uint N=3;
- while(1)
- {
- P3=0xff;
- if(P3==0xfe)
- {while(P3==0xfe);
- P0=0xfe;
- motor_zz(N);
- if(P3==0xfb)
- break;
- }
- else if(P3==0xfd)
- {
- while(P3==0xfd);
- P0=0xfd;
- motor_fz(N);
- if(P3==0xfb)
- break;}
- else
- {
- P0=0xfb;
- P1=0x03;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
51控制步進電機正反轉.rar
(15.84 KB, 下載次數(shù): 336)
2018-5-2 20:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|