基于单片机控制的步进电机课程设计内容摘要:

程序NO = 1。 ZH EN G = 1 ?F AN = ?AS = 0 ?SS = 0 ?把 R 0 中的值改为 10 HYE SNOYE S主程序加速子程序减速子程序NONONOYE SYE S返回正转时的开始程序 10 ( 图 7) 注:电机反转流程图 把反转标志FAN 单元清零DE C R 0把 R 0 中的值送给 AR 0 = 0 EH。 把以 R 0 中值为地址其单元中的值通过 P 2 口输出 , 同时把以 R 1 中值为地址单元中的值送到R 5调用延时子程序NO = 1 ?ZHENG = 1 ?FAN = 1 ?AS = 1 ?SS = 1 ?R 0 = 0 FH ?NONO把 R 0 中的值置为17 HYES主程序NONOYESYESNO减速子程序加速子程序反转开始程序YESYES 11 当中断返回后 FAN 单元中的值为 1时,主程序就会调用反转子程序,此时电机开始反转。 进入反转子程序后,寄存器 R0 中的值被减 1,如果 R0 中的值不等于 0EH 且不等与 0FH 时(如果和其中的任何一个值相等,则把 R0 中的值置为 17H。 因为驱动电机转动的序列存储在 10H 到 17H 八个单元中),则把以 R0 中值为地址的单元中的值通过 P2 口低 4位输出,把其高低电平信号送到步进电机驱动芯片 ULN2020A,通过 ULN2020A 的输出信号去推动步进电机转动。 同时把以 R1 中值为地址的单元中的值通过间接寻址方式送给 R5。 调用延时子程序 DELAY,在延时值程序返回后分别把停止 (NO)、正转 (ZHENG)、反转 (FAN)标志单元中的值送到A,把 NO 单元中值送到 A后,如果 =1,则反转子程序执行结束,返回主程序,否则顺序执行。 当 NO 单元中值为 0 时,把 ZEHNG 单元中的值送给 A,如果=1 时,反转子程序执行结束,返回主程序。 否则顺序执行。 当 ZHENG 单元中的值为 0 时,把 FAN 单元中的值送到 A,如果 =1,则返回主程序,否则顺序执行。 把 AS 单元中的值送到 A,如果 =1,则调用加速子程序,否则把SS单元中的值送到 A,如果 =1,则调用减速子程序,否则跳转到反转子程序的开始程序继续执行,电机一直反转。 ( c) 程序及注释 正转子程序: GO: ANL ZHENG,00H ;把正转标志位清零 INC R0 ; R0 中的值加 1 MOV A,R0 ;把 R0 中的值赋给 A CJNE A,18H,GO2 ;如果A中值和18H不相等则GO2,否则顺序执行 MOV R0,10H ;给R0送10H GO2: MOV P2,@R0 ;通过间接寻址方式给P2口赋值 MOV A,@R1 ;通过间接寻址给 A赋值 MOV R5,A ;把 A得到的值送到寄存器 R5 LCALL DELAY ;调用延时子程序 MOV A,NO ;把 NO 单元中的内容送到 A JB ,RETURN ;如果 ACC .0=1(即 NO 单元中值为 1)则 RETURN MOV A,ZHENG ;把 ZHENG 单元中的内容送到 A JB ,RETURN ;如果 ACC .0=1(即 ZHENG 单元中值为 1)则RETURN MOV A,FAN ;把 FAN 单元中的内容送到 A JB ,RETURN ;如果 ACC .0=1(即 FAN 单元中值为 1)则 RETURN MOV A,SS ;把 SS单元中的内容送到 A JNB ,GO3 ;如果 ACC .0=0(即 SS 单元中值为 0)则 GO3 LCALL JIAN ;调用 JIAN(减速)子程序 GO3: MOV A,AS ;把 AS 单元中的内容送到 A 12 JNB ,GO4 ;如果 ACC .0=0(即 AS 单元中值为 0)则 GO4 LCALL JIA ;调用 JIA(加速 )子程序 GO4: AJMP GO ;跳转到 GO 反转子程序: BACK: ANL FAN,00H ;把反转标志位清零 DEC R0 ; R0 中的值减 1 MOV A,R0 ;把 R0 中的值送到 A CJNE A,0EH,TT ;如果 A中的值与立即数 0E 不相等则 TT MOV R0,17H ;把立即数 17H 送给 R0 SJMP BACK2 ;跳转到 BACK2 TT: CJNE A,0FH,BACK2 ;如果 A中的值与立即数 0FH 不相等则 BACK2 MOV R0,17H ;把立即数 17H 送到 R0 BACK2: MOV P2,@R0 ;通过间接寻 址方式给 P2 口送值 MOV A,@R1 ;通过 R1 间接寻址给 A赋值 MOV R5,A ;把 R5中的值送给 A LCALL DELAY ;调用延时子程序 MOV A,NO ;把 NO 单元中的值送给 A JB ,RETURN ;如果 为 1则 RETURN MOV A,ZHENG ;把 ZHENG 单元中的值送给 A JB ,RETURN ;如果 为 1则 RETURN MOV A,FAN ;把 FAN 单元中的值送给 A JB ,RETURN ;如果 为 1则 RETURN MOV A,AS ;把 AS单元中的值送给 A JNB ,BACK3 ;如果 为 1则 BACK3 LCALL JIA ;调用加速子程序 BACK3: MOV A,SS ;把 SS单元中的值送给 A JNB BACK4 ;如果 为 1则 BACK4 LCALL JIAN ;调用减速子程序 BACK4: AJMP BACK ;跳转到 BACK RETURN :RET ;返回 步进电机加、减速子程序 (a)流程图(如图 如图 9) 13 (图 8) (图 9) 注:加速子程序流程图 注:减速子程序流程图 ( b)分析 当加速按键被按下后程序进入中断把加速标志单元 AS 中送入 1,中断返回后,程序会进入加速子程序。 进入加速子程序后,先把加速标志单元中的值清零,同时把 R1单元中的值送到 A中,用来判断 R1 中的值是否等于 23H,如果 A 中的值不等于 23H,则 R1 中的值加 1,然后返回,如果 A 中值等于 23H 表明以经加速到最大值,然后直接返回。 当减速按键被按下后程序进入中断把减速标志单元 SS 中送 入 1,中断返回后,程序会进入减速子程序。 进入减速子程序后,先把减速标志单元中的值清零,同时把 R1单元中的值送到 A中,用来判断 R1 中的值是否等于 20H,如果 A 中的值不等于 20H,则 R1 中的值减 1,然后返回,如果 A 中值等于 20H 表明以经减速到最小值,然后直接返回。 ( c) 程序及注释 JIA: ANL AS,00H ;把加速标志 AS 清零 MOV A,R1 ;把 R1单元中的值送到 A 加速标志单元 AS 清零把 R 1 单元中的内容送给 AA = 23 H。 I NC R 1返回YESNO减速标志单元 SS 清零把 R 1 单元中的内容送给 AA = 20 H。 DE C R 1返回YESNO 14 CJNE A,23H,JIA1 ;如果 A中值不等 23H 则 JIA1 RET ;加速子程序返回 JIA1: INC R1 ; R1 中的值加 1 RET ;加速子程序返回 JIAN: ANL SS,00H ;把减速标志 SS 清零 MOV A,R1 ;把 R1 中的值送给 A CJNE A,20H,JIAN1 ;如果 A 不等于 20H 则 JIAN1 RET ;减速子程序返回 JIAN1: DEC R1 ; R1 中的值减 1 RET ;减速子程序返回 中断程序 ( a)流程图(图 10) ( b)分析 当单片机复位后。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。