正转,转四相步进电机,每相间隔70ms。C51程序 51单片机通用
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint time
- void timer1(void) interrupt 1 using 1{ //定时器0中断,定时1ms//
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- time++;
- }
- void delay(uint n){ //一般延时
- while(--n);
- }
- void delay(uint dtime){ //延时
- TR0=1;
- while(time<=dtime);
- time=0;
- TR0=0;
- }
- void moto(bit cf,uchar n,uint dtime){ //电机驱动子程序,
- uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8};
- uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78};
- uchar i,l=0;
- if(cf==0) //正转,A-B-C-A
- for(i=0;i<n;i++){
- P1=zhpai[l];//P1.7~1.4为输出口,分别为A、B、C、D
- l++;
- delay(dtime);
- if(l==4)l=0;
- }
- else{ //反转,C-B-A-C
- for(i=0;i<n;i++){
- P1=fpai[l];
- l++;
- delay(dtime);
- if(l==4)l=0;
- }
- }
- }
- void main(){
- TMOD=0x01;
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- EA=1;
- ET0=1;
- while(1){
- moto(0,4,70);//正转,转四相,每相间隔70ms
- delay(10000);
- moto(1,4,70);//反转,转四相,每相间隔70ms
- delay(10000);
- }
- }
复制代码
|