基于51单片机的步进电机调速系统(含完整代码) - 图文(5)

2019-05-18 22:57

运行状态实时显示步进机速度。

------------------------------------------------*/ voidtestcar() { if(flag1==0) { if(d == 0) { flag = 1; //测试状态下,保证方向按键无效 if(a==0) reverse(); else forward(); } else { display(7,0); flag = 0; } } }

/*------------------------------------------------

键盘扫描程序。功能:f为设置键,g为加键,h为减键, 按下g键次数: 1:速度设置 2:步数设置 3:确认

按下g键对应数+1 按下h键对应数-1

------------------------------------------------*/ voidkeyscan() { if(f==0) { delay(5); if(f==0) { while(!f); snum++; flag1 = 1; if(snum==1) { write_com(0xc6); write_com(0x0f); }

}

}

if(snum==2) { write_com(0xc0+15); }

if(snum==3) { write_com(0x0c); snum=0; flag1 = 0; time = setnum+40; display(7,time); write_com(0x0c); if(stepnum!=0) steprun(); if(setnum!=0) setrun(); }

if(snum!=0) { if(g==0) { delay(5); if(g==0) { while(!g); if(snum==1) { setnum = setnum+10; if(setnum==99) setnum=0; display(0x40+4,setnum+40); write_com(0xc0+6); } if(snum==2) { stepnum++; if(stepnum==99) stepnum=0; display(0x40+13,stepnum); write_com(0xc0+15); }

} } if(h==0) { delay(5); if(h==0) { while(!h); if(snum==1) { setnum = setnum-10; if(setnum<0) setnum=99; display(0x40+4,setnum+40); write_com(0xc0+6); } if(snum==2) { stepnum--; if(stepnum<0) stepnum=99; display(0x40+13,stepnum); write_com(0xc0+15); } } } } }

/*------------------------------------------------ 初始化程序

------------------------------------------------*/ voidinit() { step = 0; time = 100; flag = 0; lcden = 0; snum=0; p=0; e=1; j=1; k=1;

m=1; write_com(0x38); //初始化1602液晶 write_com(0x0c); //开显示,光标不闪烁 write_com(0x06); //指针加一,整屏不移 write_com(0x01); //清屏 write_com(0x80); //初始化显示位置 TH0=(65536-100)/256; TL0=(65536-100)%6; TMOD=0x01; ET0=1; EX1=1; IT1=1; //外部中断触发方式设置为下降沿触发 EA=1; TR0=1; count1=5; }

/*------------------------------------------------ LCD1602初始显示程序

------------------------------------------------*/ void lcd1602() { for(num=0;num<14;num++) { write_dat(table5[num]); delay(5); } write_com(0xc0); for(num=0;num<16;num++) { write_dat(table6[num]); delay(5); } }

void main() { init(); lcd1602(); while(1) { run(); if(p==0)

{ keyscan(); testcar(); } receive(); } }

void timer0() interrupt 1 //定时器0 { TH0=(65536-100)/256; TL0=(65536-100)%6; t++; }

void rupt() interrupt 2 //外部中断1 { n=1; }


基于51单片机的步进电机调速系统(含完整代码) - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:java复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: