您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 步进电机正反转控制及转速显示
/*****************************************************程序调试成功*********************************************************/#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitwale=P1^4;sbitdula=P1^5;sbitjia_key=P3^3;sbitjian_key=P3^2;sbitZ_key=P3^0;sbitF_key=P3^1;sbitZ_LED=P1^0;sbitF_LED=P1^1;sbitJ_LED=P1^2;sbitJA_LED=P1^3;uintflag;ucharnum,show_num=2,maichong=4,table_begin;ucharcodeSHU[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阳数码管驱动信号0---9,不显示ucharcodetable[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3};//电机正反转voiddelay(ucharx){uinty;for(;x0;x--)for(y=0;y124;y++);}voiddisplay()//显示函数{uinta;a=num;if(a10)a=a+1;elsea=a%10;wale=1;P0=0xfb;wale=0;dula=1;P0=SHU[(num/10)];dula=0;delay(10);wale=1;P0=0xfd;wale=0;dula=1;P0=SHU[flag];dula=0;delay(25);wale=1;P0=0xf7;wale=0;dula=1;P0=SHU[a];dula=0;delay(10);}voidSpeedUp()interrupt0{if(num==19)num=19;elsenum++;J_LED=0;delay(200);J_LED=1;}voidSpeedDowm()interrupt2{if(num==0)num=0;//速度标示减1elsenum--;//达到最小0则保持JA_LED=0;delay(200);JA_LED=1;}voidkey()//按键检测处理函数{if(Z_key==0){delay(5);//正转按键按下if(Z_key==0){flag=0;//正转标识Z_LED=0;delay(200);Z_LED=1;while(Z_key==0);}}if(F_key==0){delay(5);//反转按键按下if(F_key==0){flag=1;//反转标识F_LED=0;delay(100);F_LED=1;while(F_key==0);}}}voiddispose()//根据速度标识进行数据处理{if(flag==1||flag==0){if(flag==1){table_begin=0;//flag为0,正转}elsetable_begin=8;//flag为1,反转}elseP2=0;P1=0xff;}voidqudong()//电机速度,和正反转控制{uchari,j;if(table_begin==0||table_begin==8){for(j=0+table_begin;j8+table_begin;j++){P2=table[j];//读取控制电机转动I/O口表for(i=0;i(num*-1+20);i++){P0=0xff;display();}}}elseP2=0,P1=0xff;}voidmain(){EA=1;IT0=1;//脉冲方式EX0=1;//开外部中断0:加速IT1=1;//脉冲方式EX1=1;//开外部中断1:减速flag=3;table_begin=4;while(1){key();dispose();qudong();}}/********************************************************电路图连接方法**********************************************************/仿真效果(反转)正转
本文标题:步进电机正反转控制及转速显示
链接地址:https://www.777doc.com/doc-6876769 .html