资源描述:
《基于89c51单片机控制步进电机实例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、基于89C51单片机控制步进电机实例一、实物图二、原理图三、参考程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;功能:测试步进电机程序,可以测试不用的相电机,本例只给出测4相电机的程序,其它可以相继加入;操作:使用4个按钮来操作,1个正转,1个反转,1个停止,1个选择不同的相电机,在电机停止的时,可;可以设定不同的相电机程序。;使用资源3.2正转,p3.3反转,p3.4停止P3.5
2、设定相电机,步进电机接p1.0p1.1p1.2p1.3;使用单片机:AT89C51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PRONUMEQU30H;定义要测定那个电机程序ORG00hJMPMAINORG0030H;--------------------------MAIN:MOVSP,#07HMOVPRONUM,#04H;初始化数码管的显示数据CLRP2.0;使数码管处于可用状
3、态PRO:;要求运行的的数码,如果是4则运行四相电机,3则是三相电机LCALLDISPMOVA,PRONUMCJNEA,#04H,PRO1;这里可以增加别的电机调试程序JMPLOOPPRO1:JNBp3.5,ADDPRO;如果p3.5按下跳到下一个程序中执行JMPPROstp:ORLp1,#0ffh;步进电机停止LOOP:JNBp3.2,for2;如果p3.2按下正转JNBp3.3,rev2;如果p3.3按下反转JNBp3.4,stop1;如果p3.4按下停止JNBp3.5,ADDPRO;如果p3.5按下跳到下一个程序中执
4、行LCALLDISPJMPLOOP;反复监测键盘;------------------DISP:MOVA,PRONUMMOVDPTR,#TAB1MOVCA,@A+DPTRMOVP0,ARET;--------------------------程序跳转ADDPRO:CALLdelay;按p3.4的消除抖动JNBp3.5,$;p3.4放开否?CALLdelay;放开消除抖动MOVA,PRONUMINCACJNEA,#0AH,ADDPRO1MOVA,#00HADDPRO1:MOVPRONUM,AJMPPRO;---------
5、-------------------for2:CALLdelay;按p3.2的消除抖动JNBp3.2,$;p3.2放开否?CALLdelay;放开消除抖动MOVr0,#00h;正转到tab取码指针初值for1:MOVa,r0;取码MOVdptr,#table1;MOVCa,@a+dptrCPLa;把acc反向MOVp1,a;输出到p1开始正转JNBp3.4,stop1;如果p3.4按下停止JNBp3.3,rev2;如果p3.3按下反转CALLdelay;转动的速度INCr0;取下一个码CJNER0,#4,FOR1MOVR
6、0,#0JMPfor1;继续正转;-----------------------------rev2:CALLdelay;按p3.3的消除抖动JNBp3.3,$;p3.3放开否?CALLdelay;放开消除抖动MOVr0,#00h;反转到tab取码指针初值rev1:MOVa,r0MOVdptr,#table2;取码MOVCa,@a+dptrCPLa;把acc反向MOVp1,a;输出到p1开始反转JNBp3.4,stop1;如果p3.4按下停止JNBp3.3,rev2;如果p3.3按下反转CALLdelay;转动的速度INC
7、R0;取下一个码CJNER0,#4,FOR1MOVR0,#0JMPrev1;继续反转;------------------------------stop1:CALLdelay;按p3.4的消除抖动JNBp3.4,$;p3.4放开否?CALLdelay;放开消除抖动JMPSTP;----------------------------delay:movr1,#20;步进电机的转速20msd1:movr2,#248djnzr2,$djnzr1,d1ret;------------------------------table
8、1:db03h,09h,0ch,06h;正转表table2:db03h,06h,0ch,09h;反转;-------------------------------TAB1:DB0C0H,0F9H,0A4H,0B0H;0,1,2,3//数码管显示表DB99H,92H,82H,0F8H;?,5,6,7DB