链接:https://pan.baidu.com/s/1iPc7IgRSygBC_tNnggvFaQ?pwd=yyds
提取码:yyds
实现功能:
51单片机
实现步进电机正反转、加减速、启动和停止。
用LCD显示电机工作状态
仿真截图
部分程序
void main()
{
init_1602();
TMOD|=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
//按键检测
if(!k1)//启动
{
start=1;
}
if(!k2)//停止
{
start=0;
}
if(!k3)//正转
{
fang=0;
}
if(!k4)//反转
{
fang=1;
}
if(!k5)//加速
{
if(speed<9)
speed++;
while(!k5);
}
if(!k6)//减速
{
if(speed>0)
speed--;
while(!k6);
}
}
}
//定时器中断
void Timer0() interrupt 1
{
if(start==1)//启动
{
if(time<10-speed)//速度0-9
{
time++;
}
else
{
time=0;
if(fang==0) //正转
{
switch(flag)
{
case 0:BB=1;break;
case 1:AA=0;break;
case 2:CC=1;break;
case 3:BB=0;break;
case 4:DD=1;break;
case 5:CC=0;break;
case 6:AA=1;break;
case 7:DD=0;
}
if(flag<7)//下一个状态
flag++;
else
flag=0;
}
else //反转
{
switch(flag)
{
case 0:DD=1;break;
case 1:AA=0;break;
case 2:CC=1;break;
case 3:DD=0;break;
case 4:BB=1;break;
case 5:CC=0;break;
case 6:AA=1;break;
case 7:BB=0;
}
if(flag<7)//下一个状态
flag++;
else
flag=0;
}
}
}
//=================显示
if(sec<50)//0.5s
sec++;
else
{
sec=0;
disp1[5]=speed+0x30;//速度
write_string(1,0,disp1);
if(start)
{
if(fang==0)
{
write_string(2,6,"right");
}
else
{
write_string(2,6,"left ");
}
}
else
{
write_string(2,6,"stop ");
}
}
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
}