|
正轉(zhuǎn),轉(zhuǎn)四相步進(jìn)電機(jī),每相間隔70ms。C51程序 51單片機(jī)通用
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint time
- void timer1(void) interrupt 1 using 1{ //定時(shí)器0中斷,定時(shí)1ms//
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- time++;
- }
- void delay(uint n){ //一般延時(shí)
- while(--n);
- }
- void delay(uint dtime){ //延時(shí)
- TR0=1;
- while(time<=dtime);
- time=0;
- TR0=0;
- }
- void moto(bit cf,uchar n,uint dtime){ //電機(jī)驅(qū)動(dòng)子程序,
- uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8};
- uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78};
- uchar i,l=0;
- if(cf==0) //正轉(zhuǎn),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{ //反轉(zhuǎn),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);//正轉(zhuǎn),轉(zhuǎn)四相,每相間隔70ms
- delay(10000);
- moto(1,4,70);//反轉(zhuǎn),轉(zhuǎn)四相,每相間隔70ms
- delay(10000);
- }
- }
復(fù)制代碼
|
|