《单片机控制的步进电机正反转和加速减速c程序.docx》由会员分享,可在线阅读,更多相关《单片机控制的步进电机正反转和加速减速c程序.docx(3页珍藏版)》请在第一文库网上搜索。
1、单片机控制的步进电机正反转和加速减速C程序日期:2008-09-06来源:net作者:佚名字体:大中小(投递新闻)这是一个群里朋友发给我的步进电机实现正转反转和加速减速的单片机c语言源程序,这里给大家共享下,有需要的朋友直接狂制到kei1里编译就可以了,程序己测试成功。单4拍正转zheng=0x01,0x08,0x04,0x02)单4拍反转fang=0x01,0x02,0x04,0x08)双4拍正转Zheng1J=0x09,0x0c,0x06,0x03)双4拍反转fang=0x03,0x06,OxOc,0x09)单双8拍正转zheng=(0x01,0x09,0x08,OxOc,0x04,0x0
2、6,0x02,0x03)单双8拍反转fang=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09)#inc1udereg51.h#inc1udeintrins.h#defineucharunsignedchar#defineuintunsignedintbitfront_move,back_move;ucharjzaj(void);单4拍正转zheng=0x01,0x08,0x04,0x02);单4拍反转fang=0x01,0x02,0x04,0x08);voidajc1(ucharjz);voidde1ay(ucharde1);ucharcodezheng=(0x
3、01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03);ucharcodefangJ=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09);voidtimer()interrupt1(staticucharjz;THO=Oxfc;T1O=Ox18;jz=jzaj();if(jz)ajc1(jz);)voidmain()ucharcount=0;TMOD=OxOI;THO=OxFC;T1O=Ox18;TRO=1;ETO=1;EA=I;whi1e(1)(if(front_move)(P2=zhengcount;de1ay(100);count+;i
4、f(count=8)count=0;)if(back_move)(P2=fangcount;de1ay(IOO);count+;if(count=8)count=0;UCharjzaj(Void)(ucharhz,1z;P1=OxK);置所有行为低电平,行扫描,列线输入(此时)if(P1&OxfD)!=OXf0)/判断是否有有键按下(读取列的真实状态,若第4列有键按下则P1的值会变成OInOOo0),有往下执行(de1ay(10);延时去抖动(IOms)if(P1&0xft)!=OXfo)再次判断列中是否是干扰信号,不是则向下执行(hz=0xfe;逐行扫描初值(即先扫描第1行)WhiIe(hz
5、&0x10)!=0)行扫描完成时(即4行己经全部扫描完成)sccode为1110I111停止whi1e程序(P1=hz;输出行扫描码if(PI&hz)!=hz)*(P2&0xft)!=0xf0*也可这样本行有键按下(即P1(真实的状态)的高四位不全为1)(IZ=(P1&OxfD)IoXof;列Whi1e(P1&0xft)!=OxfD);re1um(hz)(1z);返回行和列break;有按键返回提前退出循环e1se所扫描的行没有键按下,则扫描下一行,直到4行都扫描,此时SCCOde值为I11O11I1退出whi1e程序hz=_Cro1(hz,1);行扫描码左移一位e1sereturn0;无键按下,返回O)voidajc1(ucharjz)(if(jz=0x11)(back_move=0;front_move=1;)if(jz=0x21)(front_move=0;back-move=1;)if(jz=0x41)(P2=0x00;front_move=0;back_move=0;voidde1ay(ucharde1)(uchari;for(;de10;de1-)for(i=0;i125;i+)(;)参考链接: