8255控制步进电机.docx
《8255控制步进电机.docx》由会员分享,可在线阅读,更多相关《8255控制步进电机.docx(13页珍藏版)》请在冰豆网上搜索。
8255控制步进电机
微型计算机原理综合实验
题目:
步进电机控制
学院电子信息工程学院
学科门类工科
专业电子科学与技术
学号*******019
姓名张少雄
指导教师高芳
2008年12月21日
步进电机控制
摘要:
在本实验中,通过汇编语言对可编程I/O口扩展芯片8255编程,控制其输出信号。
8255的输出端连接驱动电路,使驱动电路按照程序设定好的方式导通,来控制步进电机的转动。
并且在程序中设定,由键盘控制步进电机的转向。
关键词:
步进电机、微处理器、8255、控制、转向。
一.实验目的--------------------------------------2
二.设计要求------------------------------2
三、设计原理------------------------------3
四.硬件工作原理--------------------------4
五.程序框图------------------------------5
六.总结与体会-----------------------------5
参考文献----------------------------------6
附录--------------------------------------7
一.实验目的
1.1掌握8255的使用方法
掌握8255可编程I\O扩展芯片的编程方法,通过对工作方式的设定,使其能够对步进电机的驱动电路起到控制作用。
1.2掌握步进电机的工作原理
了解步进电机的工作原理,熟悉型号为30BYJ011的步进电机的性能参数和四相八拍工作方式的特点,
1.3掌握模拟电路的基本知识
通过对步进电机的驱动电路的设计,进一步掌握模拟电路在实际中的应用。
二.设计要求
2.1外设电路要求
设计外设电路,使电路能够驱动步进电机的转动,符合步进电机的使用要求。
本实验采用的步进电机型号为30BYJ011,工作方式为四相八拍,工作电压为DC12V。
2.2程序要求
使用汇编语言编写程序,使程序能够控制步进电机的转动,并且可以控制转动方向。
三、设计原理
3.1工作过程
利用8255对四相步进电机进行控制。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A…),双(双相绕组通电)四拍(AB-BC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…)等。
本实验中步进电机工作方式为四相八拍,其相序表如下:
1
2
3
4
5
6
7
8
Vcc
+
+
+
+
+
+
+
+
A
-
-
-
B
-
-
-
C
-
-
-
D
-
-
-
驱动电路由工作在饱和区的NPN三极管9014构成,8255的输出端控制9014的基极电压,从而控制其导通状态。
步进电机的绕组和集电极10K电阻并联,来获取工作电压。
通过编程对8255的输出进行控制,使输出按照相序表给驱动电路供电,则步进电机的输入也和相序表一致,这样步进电机就可以正向转动或反向转动。
3.2器件简介
3.2.18255引脚图
3.2.2实验电机简介
本实验使用30BYJ011型四项八拍电机,电压为DC12V,其励磁线圈及励磁顺序如下所示:
四.硬件工作原理
4.1需要的器件
电阻10K欧4个,电阻10欧4个,三级管4个,导线若干
4.2硬件电路
4.2.1驱动电路图
将8255输出的2.4V电压放大至12V,为步进电机供电。
4.2.2实验线路框图如下
步进电机驱动电路图
五.程序框图
5.1.步进电机程序流图
程序流程图如图所示。
六.总结与体会
这次做的实验是一个比较综合的实验,实验中主要是微机原理的编程,但还涉及到步进电机的有关知识以及一些专业基础课的知识,所以要做好这次实验我们需要做的有很多。
首先,在查找资料的过程中,我更加理解了8255在微型计算机中的重要作用,理解了8255的基本的编程结构和基本控制字的设计方法,也锻炼了自己的动手能力和创新意识。
其次,就硬件而言,此次的硬件焊接与以往有着明显的不同,以前总是有现成的电路,只是按照电路排好器件,再焊接就完事了,这次的电路却是自己设计的。
而就焊接而言,此次的焊接虽然简单但去不容失误,一个步骤错误就有可能导致最后产品的质量问题。
所以说每一个步骤做到最好,才能把保重产品最终的质量。
再次,在编写汇编程序过程中,由于早先对汇编语言学习的不扎实,我们遇到了很大的困难,但是随着对问题理解的逐渐深入,这些问题最终都一一化解了。
通过这次步进电机控制代码的编写,让我有了一个更深刻的认识:
要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。
在这个过程中,不仅提高了实际动手操作能力,培养了治学严谨的态度,激发了我学习此专业课程的兴趣,而且让我们深刻的体验到理论知识与实践经验的密切联系,要成为一个高技术人才,必须理论与实践两手都要硬。
在设计时,对不同方案的构思、分析、比较到最后的方案确定,这些工作,可以增强了我们分析、解决问题的能力,培养了我们的创新意识。
参考文献
[1]张欣,微机系统实验指导书.河北大学内部教材,2008年9月,13-14页
[2]王克义,微机原理与接口技术教程,北京大学出版社,2004年12月,15-90页
[3]陈春华,夏利,微机原理与接口技术教程,东北大学出版社,2004年1月,5-68页
[4]王永山,微型计算机原理及应用,西安电子科技大学出版社,1999年12月
附录
实验程序:
datasegment
bufdb'press"F"toForwardrotation',0dh,0ah,'press"R"toReverserotation',0dh,0ah,'press"S"toStop',0dh,0ah,'press"E"toexit$'
strdb'controlspeed1,2$'
d1dw?
pstadb08h,0ch,04h,06h,02h,03h,01h,09h;相序表正
pstbdb01h,03h,02h,06h,04h,0ch,08h,09h;相序表反
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movdx,ax
show:
leadx,buf
movah,09h
int21h
movdx,203h
moval,10000000b
outdx,al;初始化8255
first:
movah,01h
int21h
cmpal,46h;入口判断
jeforward
cmpal,66h
jeforward
cmpal,52h
jereverse
cmpal,72h
jereverse
cmpal,53h
jestop
cmpal,73h
jestop
cmpal,45h
jeexit
cmpal,65h
jeexit
jmpshow
forward:
movdi,offsetpsta
jmpcircle
Reverse:
movdi,offsetpstb
jmpcircle
circle:
movd1,560h;设置延迟初值
reload:
movsi,di
movcx,7;设8拍循环次数
lop:
moval,[si]
movdx,200h
outdx,al;将相序表送到控制口
movbx,d1;延时数值
delay1:
movdx,800
delay2:
movah,01h
int16h
jnztime
decdx
jnzdelay2
decbx
jnzdelay1;延时
incsi;相序表+1
deccx
jnzlop;循环7次
jmpreload;完成7次,重新赋值
time:
movah,01h
int21h
cmpal,31h
jes1
cmpal,32h
jes2
cmpal,46h;判断是否变换方向和速度
jeforward
cmpal,66h
jeforward
cmpal,52h
jereverse
cmpal,72h
jereverse
cmpal,53h
jestop
cmpal,73h
jestop
jmpexit
s1:
movd1,01h;延迟(即速度控制),可以添加更多的延迟以达到精确控制
jmpreload
s2:
movd1,02h
jmpreload
stop:
jmpshow
exit:
movah,4ch
int21h
codeends
endstart
实验整体电路: