新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机驱动步进电机protues仿真

51单片机驱动步进电机protues仿真

作者: 时间:2016-11-30 来源:网络 收藏

void show_state()/*状态显示程序*/
{
unsigned char i=0;
P1=0x80;
write1();
while(xx[i]!=)
{
writ2(xx[i]);
i++;
delay();
}
i=0;
while(SD[i]!=)
{
writ2(SD[i]);
delay();
i++;

}
P1=0xc0;
write1();
i=0;
if(RUNState==Right_RUN)
while(state[0][i]!=)
{
writ2(state[0][i]);
i++;
}
else
if(RUNState==Left_RUN)
while(state[1][i]!=)
{
writ2(state[1][i]);
i++;
}
}
void write1()/*lcd写控制字*/
{
RS=0;
RW=0;
E=0;
busy();
E=1;
}
void writ2( unsigned char i)/*lcd写数据*/
{ P1=i;
RS=1;
RW=0;
E=0;
busy();
E=1;
}

void delay()/*延时程序*/
{
unsigned char i;
for(i=0;i<100;i++)
{
i=i;
}

}
void time()
{ unsigned char i,j;
for(i=0;i<100;i++)
{
for(j=0;j<30;j++)
{
j=j;
}
}
}

本文引用地址:https://www.eepw.com.cn/article/201611/323790.htm

void busy() //判断LCD是否忙
{
do
{
P1=0xff;
RS=0;
RW=1;
E=0;
nop;
E=1;
}while(P17==1);

}
unsigned char JIAN()/*判断是否有键按下*/
{
unsigned char i,j;
i=0xff;
PORTA=i;
time();
i=0x00;
PORTB=i;
j=PORTA;
j=~j;
j=j&(0x0f);
return j;
}
unsigned char JIANZHI()/*读键值程序*/
{
unsigned i,j,d,k,m=1;
i=0xfe;
k=0x01;
do
{
PORTB=i;
j=PORTA;
m=j&(0x01);
if(m==0)
d=k/2;
else
{
m=j&(0x02);
if(m==0)
d=k/2+4;
else
{
m=j&(0x04);
if(m==0)
d=k/2+8;
else
{
m=j&(0x08);
if(m==0)
d=k/2+12;
}
}
}
k=k+2;
i=i<<1;
i=i|(0x01);
}while(m!=0);
return d;
}
void OPJIAN() /* 键值处理程序*/
{
switch(INMA)
{
case 0x08: {RUNState=Right_RUN;s=0xf7;}break;
case 0x09: {RUNState=Left_RUN;s=0x01;}break;
case 0x0b: {
flag=1;
t=t-2;
RunSpeed=5000000/(65536-t*256-a);
speed();}break;
case 0x0f: {flag=1;
t=t+2;
RunSpeed=5000000/(65536-t*256-a);
speed();}
}
}
void speed()/*速度处理程序*/
{
unsigned char i=0;
SD[0]=RunSpeed/100+48;
SD[1]=RunSpeed%100/10+48;
SD[2]=RunSpeed%10+48;
}
void time1(void) interrupt 1 using 2
{

TR0=0;
PORTC=s;
if(RUNState==0)
{
s=(s<<1);
if(s==0x10)
s=0x01;

}
else
{
s=s>>1;
if(s==0x0f)
s=0xf7;
}
TH0=t;
TL0=a;
TR0=1;
}


上一页 1 2 下一页

评论


技术专区

关闭