- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无刷电调2051程序
无刷电调2051程序
;定义各驱动端口
AXZ BIT P3.7 ;P3.7为A线圈接电源正极控制端
;按照本电路的接法,当P3.7为低电位时(P3.7=0),驱动A线圈的三极管TIP42导通,A线圈接到电源正极
;当P3.7为高电位时(P3.7=1),驱动A线圈的三极管TIP42截止
;
AXF BIT P1.0 ;P1.0为A线圈接电源负极极控制端
;当P1.0为低电位时(P1.0=0),驱动A线圈的三极管TIP41导通,A线圈接到电源负极
;
BXZ BIT P1.1 ;P1.1为B线圈接电源正极控制端
;当P1.1为低电位时(P1.1=0),驱动B线圈的三极管TIP42导通,B线圈接到电源正极
;
BXF BIT P1.6 ;P1.6为B线圈接电源负极控制端
;当P1.6为低电位时(P1.6=0),驱动B线圈的三极管TIP41导通,B线圈接到电源负极
;
CXZ BIT P1.5 ;P1.5为C线圈接电源正极控制端
;当P1.5为低电位时(P1.5=0),驱动C线圈的三极管TIP42导通,C线圈接到电源正极
;
CXF BIT P1.7 ;P1.7为C线圈接电源负极极控制端
;当P1.7为低电位时(P1.7=0),驱动C线圈的三极管TIP41导通,C线圈接到电源负极
;
;定义各探测端口
ADUAN BIT P1.2 ;P1.2为A线圈感应电动势检测端
BDUAN BIT P1.3 ;P1.3为B线圈感应电动势检测端
CDUAN BIT P1.4 ;P1.4为C线圈感应电动势检测端
;定义各按键端口
ZZHUAN BIT P3.5 ;P3.5为正转控制端口
FZHUAN BIT P3.4 ;P3.4为反转控制端口
STOP BIT P3.3 ;P3.3为停转控制端口
;以上端口可以根据实际情况自行设置
;********
;
ORG 0
JMP START
;
ORG 0BH
JMP SUBTIMER0
;********
;初始化程序
START:
MOV SP,#65H
MOV TMOD,#1
MOV IE,
MOV P1,#0FFH
MOV P3,#0FFH
MOV R6,#0
MOV R7,#0
;********
;按键检测程序
KONGZHI:
SETB AXZ
SETB AXF
SETB BXZ
SETB BXF
SETB CXZ
SETB CXF
;以上指令作用是将各驱动端口拉到高电位,即不驱动各推动管,让所有线圈断电
JNB ZZHUAN,ZZHUAN0 ;如果“正转”按钮被按下,则跳至正转部分程序
JNB FZHUAN,FZQD00 ;如果“反转”按钮被按下,则跳至反转部分程序
JMP KONGZHI ;如果上述按钮未按下,则返回并重新检测
;********
;下面两条指令起跳板作用。
;JNB指令的跳转范围是前、后128个地址,
;如果超过这个范围,可以先跳到一个较近的地址,
;再由这个地址跳到最终的目的地址。
FZQD00:
JMP FZHUAN0
;********
;正转程序
;正转程序的第一相序
ZZHUAN0:
SETB CXZ
SETB AXF
;以上两条指令的作用是让上一相序的通电的线圈断电
CLR TR0 ;取消上一相序中还未产生的定时中断。为什么用到定时器中断呢?下面再解释
JNB STOP,KONGZHI ;如果“停止”按钮被按下,则返回按键检测程序,电机停止转动
CLR AXZ ;将A线圈接到电源的正极
CLR BXF ;将B线圈接到电源的负极
;给A、B线圈通电,电流方向:从A流到B。到这里本相序才真正开始
MOV TL0,R6 ;将R6寄存器的数值传给TL0寄存器
MOV TH0,R7 ;将R7寄存器的数值传给TH0寄存器
;上面两条指令实际上决定了产生定时中断的时间长短
SETB TR0 ;启动定时器0中断
;采用定时中断的主要目的是为了以后进行调速作准备
;假如再检测到换相之前就让原来的线圈断电,那么电机的转速就要比换相前线圈一直通电要慢。
;而且通电时间越短,转速就越慢。
;因此,适当改变线圈在换相前通电时间的长短,就可以改变电机的转速,这就是无刷调速的原理。
;在定时中断子程序中,关闭了所有的驱动,也就是给所有的线圈都断了电。
;这样,我们只要适当改变R6、R7的数值就可以改变这一相序中线圈在达到换相位置前通电时间的长短,从而达到调速的目的。
;如果想让电机达到最大转速,只要让线圈在换相前一直通电就行了,
;即定时中断的时间大于线圈从通电到换相所需时间就行了。
;比如说我们可以把定时中断的时间设为定时器的最长定时时间,即R6=0,R7=0。
;
文档评论(0)