《51单片机控制步进电机程序及硬件电路图.docx》由会员分享,可在线阅读,更多相关《51单片机控制步进电机程序及硬件电路图.docx(4页珍藏版)》请在三一文库上搜索。
1、WTALi翻片工网=0j3DGFO.2WD3 口)通口1 ROJ.DIPOJ&总髓 =0总/郎 巾g 口五P2COP2的0P3 IjaIO R2 5*1.11 PZHMdW P2 213 理W 口25P3JM 信打工咆 九二通n pjanTFT网刎.P3 旬口_ 年息任 P3啦-#include static unsigned int count; 计数static int step_index;步进索引数,值为 07static bit turn;/步进电机转动方向static bit stop_flag;/步进电机停止标志static int speedlevel; 步进电机转速参数,数值
2、越大速度越慢,最小值为 1,速度最快static int spcount;步进电机转速参数计数void delay(unsigned int endcount);延时函数,延时为 endcount*0.5 毫秒void gorun();/步进电机控制步进函数void main(void)count = 0;step_index = 0;spcount = 0;stop_flag = 0;P1_0 = 0;P1_1 = 0;P1_2 = 0;P1_3 = 0;EA = 1;允许CPU中断TMOD = 0x11;设定时器0和1为16位模式1ET0 = 1;定时器0中断允许TH0 = 0xFE;TL
3、0 = 0x0C;/ 设定时每隔 0.5ms 中断一次TR0 = 1;/ 开始计数turn = 0;speedlevel = 2;delay(10000);speedlevel = 1;dospeedlevel = 2;delay(10000);speedlevel = 1;delay(10000);stop_flag=1;delay(10000);stop_flag=0;while(1);/ 定时器 0 中断处理void timeint(void) interrupt 1TH0=0xFE;TL0=0x0C; /设定时每隔0.5ms 中断一次count+;spcount-;if(spcount=0)spcount = speedlevel;gorun();void delay(unsigned int endcount)count=0;dowhile(count7) step_index=0; else step_index-;if (step_index0) step_index=7;