基于8255扩展的步进电机的控制

        近期一直在搞单片机,其实对于步进电机的控制并不是很难,但是,通过8255扩展端口来实现的话,就比较麻烦,因为只有A存储器可以使用,8255已经将单片机的地址端口都用得差不多了。简单的说,就是通过8255扩展端口实现步进电机的顺时针转动,逆时针转动,以及减速加速。理论的东西就不多说了,直接贴代码:

org 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV R0,#33H
MOV DPTR,#828BH    ;初始化8255
MOV A,#8BH
MOVX @DPTR,A
BJ1:LCALL BJDEL
MOV DPTR,#8288H
MOV R1,A
MOV A,R0
MOVX @DPTR,A
MOV A,R1
MOV DPTR,#828AH
MOVX A,@DPTR
MOV B,A
ANL A,#7FH       ;将acc.7(k7)开关初始化状态设为低电平,即默认状态电机是顺时针转动的
CJNE A,#00H,BJ2
LJMP BJ1
BJ2:LCALL BJPD
MOV A,B
JNB ACC.7,BJ3    ;判断顺时针、逆时针转动
MOV A,R0
RL A
MOV R0,A
LJMP BJ1
BJ3:MOV A,R0
RR A
MOV R0,A
LJMP BJ1
BJPD:JNB ACC.6,BJPD1    ;判断速度
MOV R5,#10
LJMP BJPDEND
BJPD1:JNB ACC.6,BJPD2
MOV R5,#15
LJMP BJPDEND
BJPD2:JNB ACC.6,BJPD3
MOV R5,#20
LJMP BJPDEND
BJPD3:JNB ACC.6,BJPD4
MOV R5,#25
LJMP BJPDEND
BJPD4:JNB ACC.6,BJPD5
MOV R5,#30
LJMP BJPDEND
BJPD5:JNB ACC.6,BJPD6
MOV R5,#35
LJMP BJPDEND
BJPD6:JNB ACC.6,BJPDEND
MOV R5,#40
LJMP BJPDEND
BJPDEND:
RET  
BJDEL:MOV R6,#255      ;延时子程序
DJNZ R6,$
DJNZ R5,BJDEL     
RET
END
接线情况为:8255的PA口接步进电机四项接口,PC口接逻辑电平开关,PC0·7接K0·7,8255的CS口接Y1(I/O)口,运行程序,K0~K6控制转速,K0转速最小,K6最大。K7则控制顺逆时针。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值