標題: 單片機步進電機正反轉控制 [打印本頁]

作者: 220660    時間: 2021-6-25 10:16
標題: 單片機步進電機正反轉控制
#include<reg51.h>
sbit S1=P1^4;
sbit S2=P1^5;
sbit S3=P1^7;
unsigned char keyval;
unsigned char ID;
void delay(void)
{
unsigned char i,j;
for(i=0;i<150;i++)
for(j=0;j<150;j++)
;
}
void motor_delay(void)
{
unsigned int i;
for(i=0;i<2000;i++)
;
}
void forward()
{
P2=0xef;
motor_delay();
P2=0xcf;
motor_delay();
P2=0xdf;
motor_delay();
P2=0x9f;
motor_delay();
P2=0xbf;
motor_delay();
P2=0x3f;
motor_delay();
P2=0x7f;
motor_delay();
P2=0x6f;
motor_delay();
}
void backward()
{
P2=0x6f;
motor_delay();
P2=0x7f;
motor_delay();
P2=0x3f;
motor_delay();
P2=0xbf;
motor_delay();
P2=0x9f;
motor_delay();
P2=0xdf;
motor_delay();
P2=0xcf;
motor_delay();
P2=0xef;
motor_delay();
}
void stop(void)
{
P2=0xff;
}
void main(void)
{
TMOD = 0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
keyval=0;

ID=0;
while(1)
{
switch(keyval)
{
case 1:forward();
break;
case 2:backward();
break;
case 3:stop();
break;
}
}
}
void Time0_serve(void) interrupt 1 using 1
{
TR0=0;
if((P3&0xf0)!=0xf0)
{
delay();
if((P3&0xf0)!=0xf0)
{
if(S1==0)
keyval=1;
if(S2==0)
keyval=2;
if(S3==0)
keyval=3;
}
}
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
}

I_@$LILCG5XT41KNIEI%$9W.png (109.2 KB, 下載次數(shù): 111)

I_@$LILCG5XT41KNIEI%$9W.png

I_@$LILCG5XT41KNIEI%$9W.png (109.2 KB, 下載次數(shù): 114)

I_@$LILCG5XT41KNIEI%$9W.png





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1