课 程 设 计
课程名称 微机接口与接口技术
题 目 步进电机控制系统设计
专 业 计算机科学与技术(网络) 班 级 学 号 姓 名
成 绩 _________________ 指导教师
2010 年 6 月 25 日
课程设计任务书
设计题目:步进电机控制系统设计
设计目的:
1.巩固和加深课堂所学知识;
2.学习掌握计算机控制系统的软硬件的设计方法和查阅、运用资料的能力;
3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行原理和控制方式。
设计任务:
1.画出硬件原理图(接口芯片和外设部分)和实验连线图;
2.用1个开关控制步进电机起停,1个开关控制正反转,1个开关控制速度的快与慢(电机正转→停→反转;反之相同);
3.送电时和步进电机停止时,彩灯全部点亮;步进电机正转时,彩灯正向循环点亮。步进电机逆转时,彩灯反向循环点亮;
*4.步进电机转速较快时,彩灯循环速度也较快。
时间安排:
6月21日 6月22日~6月24日 6月25日 布置题目,确定任务、查找相关资料 功能分析,硬件设计,拟定实验电路,编写程序,调试程序、运行系统; 答辩后撰写设计报告。 具体要求:设计报告撰写格式要求(按提供的设计报告统一格式撰写)
具体内容如下: ① 设计任务与要求 ② 总体方案与说明 ③ 硬件原理图与说明 ④ 实验电路图与说明 ⑤ 软件主要模块流程图 ⑥ 源程序清单与注释
⑦ 问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想); ⑧ 小结与体会
附录:① 源程序(必须有简单注释)
② 使用说明 ③ 参考资料
指 导 教 师 签 名: 10 年 6 月 21 日
教研室主任(或责任教师)签名: 10 年 6 月 21 日
目录
设计任务与要求 ........................................................................................ 4
设计目的 ................................................................................................................................... 4 设计任务 ................................................................................................................................... 4
总体方案与说明 ........................................................................................ 4
步进电机 ................................................................................................................................... 4 总体方案 ................................................................................................................................... 4
实验电路图和原理图 ................................................................................ 5 程序设计 .................................................................................................... 7
程序流程图 ............................................................................................................................... 7 分段功能子程序(参考) ....................................................................................................... 7
实验操作与调试 ...................................................................................... 10 实验小结与体会 ...................................................................................... 10 参考文献 .................................................................................................. 10 附录 ........................................................................................................... 11
源程序代码 ............................................................................................................................. 11
设计任务与要求
设计目的
1.巩固和加深课堂所学知识;
2.学习掌握计算机控制系统的软硬件的设计方法和查阅、运用资料的能力;
3.通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行原理和控制方式。
设计任务
1.画出硬件原理图(接口芯片和外设部分)和实验连线图;
2.用1个开关控制步进电机起停,1个开关控制正反转,1个开关控制速度的快与慢(电机正转→停→反转;反之相同);
3.送电时和步进电机停止时,彩灯全部点亮;步进电机正转时,彩灯正向循环点亮。步进电机逆转时,彩灯反向循环点亮;
*4.步进电机转速较快时,彩灯循环速度也较快。
总体方案与说明
步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
实验室给定步进电机为4相,为了使步进电机转动更加稳定,设计为双8拍脉冲,即:AB—ABC—BC—BCD—CD—CDA—DA—DAB—AB反转就从右到左。
如果给步进电机发一个控制脉冲 ,它就转一步 ,再发一个脉冲 ,它会再转一步。2 个脉冲的间隔越短 ,步进电机就转得越快。调整送给步进电机的脉冲频率 ,就可以对步进电机进行调速。
总体方案
此次我们所设计的是一个步进电机控制系统并行输入/输出接口8255A,4相步进电机,8位发光二极管,及一些其他相关元件设计而成。可以通过一个开关来控制系统的启/停工作,当系统运转时,再用一个开关来控制方向,并使相应的指示灯亮起,另外一个开关控制步进电机的转速。
步进电机为4拍,可以利用8255的输出口提供给电机4根线路,给与不同的脉
冲,脉冲的设计可以事先做一个相序表,8255的C口的0位作为步进电机的A相,1作为B相,2作为C相,3作为D相,相序表如表1. 绕组与数据线的连接 D7 D6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D5 0 0 0 0 0 0 0 0 D4 0 0 0 0 0 0 0 0 D D3 0 0 0 1 1 1 1 1 C D2 0 1 1 1 1 1 0 0 B D1 1 1 1 1 0 0 0 1 A D0 1 1 0 0 0 1 1 1 运行方式 双八拍 AB ABC BC BCD CD CDA DA DAB 相序表 加电代码 03H 07H 06H 0EH 0CH 0DH 09H 0BH 地址代码 400H 401H 402H 403H 404H 405H 406H 407H 查表方向 正转 反转 表1 那么8相的脉冲可以计算出分别为:
00000011 00000111 00000110 00001110 00001100 00001101 00001001 00001011
换成汇编语言中常中的16进制,则为:
03H 07H 06H 0EH 0CH 0DH 09H 0BH
将这8种数字信号按正或反序输给步进电机就能实现步进电机的转动了 8255的B口0位接K1开关,控制延时,延时长则步进电机转速慢,延时短则步进电机转速快。1位接K2开关,通过控制输出相序表的方向达到控制步进电机正反转的目的。2位按K3开关,控制步进电机和LED灯的启动与停止。
8255的A口的0到7位作为输出接口接8个LED灯。 8255的C口的0到3位作为输出接口接步进电机的四相。
实验电路图和原理图
实验中主要用到8255芯片,利用汇编程序设计芯片A口和C口为输出,B口为输入,用到了A口的PA0,PA1,PA2,PA3,用到了B口的PB0,PB1,PB2,用到C口PC0-PC7;PB0对应开关K0控制启动开关, PB1对应开关K1控制电机的旋转方向, PB2对应开关K2控制电机的旋转快慢。
PB3 PB2 PB1 PB0 8255A PA2 PA1 PA0 D D’ C C’ B B’ A A’ motor unit K2 K1 K0 Kk UNIT 4 3 2 1 Motor
D D7 … … D0 A1 A0 CPU A6 A7 M/IO ----- PB3 D D’ C C' C B D7 PB2 PB1 D0 PB0 8255A A1 A0 G1 G2A 译 G2B 码 -------Y4--__B B' A A A +12v A2 ——PA2 CS PA1 PA0 K2 K1 K0 A5 A4 A3 C 器 B 4 … +5v A
图1
软件设计
软件流程图
开始 8255初始化 K0=1 Y 判断K1K2的值 N 长延时 Y 00 N 10 N 01 N 11 正慢旋转 Y 短延时 反慢旋转 Y 正快旋转 Y 反快旋转 结束
图2
分段功能子程序(参考)
1.测试开关,读取步进电机旋转参数和LED灯点亮参数
分别检测PB口读入的开关的数值,PB0=0, 步进电机开始转动,灯开始循环点亮;PB1 = 1 步进电机开始逆向转动,灯循环向左点亮;PB1 = 0 步进电机开始正向转动,
灯循环向右点亮;PB2 = 1 步进电机开始慢速转动;PB2 = 0 步进电机开始快速转动。 JIANCE: MOV DX,61H IN AL,DX
TEST AL,01H JZ JIANCE
TEST AL,04H JZ MAN KUAI: MOV AH,01H JMP ZF
MAN: MOV AH,00H
ZF: TEST AL,02H JZ BEGIN2
2.控制正向转动 BEGIN1:
XOR AL,AL
ZHENG: MOV DX,PORT_A MOV BX,OFFSET TABLE1
ZHUAN1: PUSH AX XLAT
OUT 60H,AL POP AX INC AL
CALL LIANG1
TEST AH,01H JZ MANSU1 CALL DELAY1 MANSU1: CALL DELAY3 CMP AL,07H JNZ ZHUAN1 MOV AL,00H JMP JIANCE
3.控制逆向转动 BEGIN2:
MOV AL,07H
ZHUAN2: PUSH AX XLAT
OUT 60H,AL
;B0开。则继续做 ;检测快慢 ;检测B1的值,为后面的正反转设定跳转 ;为1是逆时针 ;逆时针 ;顺时针 POP AX DEC AL
CALL LIANG2
TEST AH,01H JZ MANSU2 CALL DELAY1 MANSU2: CALL DELAY3 CMP AL,00H JNZ ZHUAN2 MOV AL,07H
JMP JIANCE
4.两段延时子程序
分别用两个loop循环作为软延时 DELAY1: MOV CX, 0FFFFH DELAY2: LOOP DELAY2 RET
DELAY3: MOV CX, 5FFFH DELAY4: LOOP DELAY4 RET
5.两个点亮LED灯的子程序
通过循环左移和右移来使LED灯循环点亮 LIANG1: PUSH AX MOV AL,CANSHU ROL AL,1H OUT 62H,AL MOV CANSHU,AL POP AX RET
LIANG2: PUSH AX MOV AL,CANSHU ROR AL,1H OUT 62H,AL MOV CANSHU,AL POP AX RET
实验操作与调试
1根据连线图连好线,确认连线正确。 2打开电源,运行程序。
3打开开关k2(即将k0置为1), 步进电机开始转动,LED灯开始循环点亮 4打开开关k1(即将k1置为1), 步进电机开始逆向转动,灯循环向左点亮 5关闭开关k1(即将k1置为0), 步进电机开始正向转动,灯循环向右点亮 6打开开关k0(即将k2置为1), 步进电机开始慢速转动 7关闭开关k0(即将k2置为0), 步进电机开始快速转动 实现了步进电机的转速与正反向转动的控制
表4.1 各开关对应的步行电机状态表 开关 K2 0 1 1 1 1 K2 0 0 0 1 1 K0 0 0 1 0 1 步进电机运行状态 停止 正向慢转 正向快转 反向慢转 反向快转 实验小结与体会
通过这一星期的课程设计,使我更加懂得理论是为实践做基础的,带着目标在实践中学习,远比单纯的课本知道灌输式学习更加有效率,而且实践中也可以应证理论知识的正确性,知识印象更加深刻,更重要的是从而提高自己的实际动手能力和独立思考的能力。
通过实践,进一步掌握了8255A各引脚的功能, 8255A和系统总线之间的连接,8255A和CPU之间的数据交换,以及8255A的内部逻辑结构;掌握了软件设计和调试的基本方法和技巧
参考文献
[1] 周佩玲,彭虎,傅忠谦 《微机原理与接口技术》 北京,电子工业出版社 2005 [2] 沈美明,温东婵 《IBM-PC汇编语言程序设计》 北京,清华大学出版社 1993
附录
源程序代码
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TAB DB 03H,07H,06H,0EH,0CH,0DH,09H,0BH ;进步电机的控制字 CANSHU DB 0FEH DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX mov al,82h OUT 63H,AL MOV BX,OFFSET TAB mov al,01h out 62h,al
MAIN: MOV AL,0ffH
out 60h,al ;A口控制灯 in al,61h ;B口控制开关 AND AL,04H CMP AL,00H JZ MAIN in al,61h AND AL,03H CMP AL,00H JZ ZMan CMP AL,01H JZ ZKuai CMP AL,02H JZ NMan CMP AL,03H JZ NKuai
ZMan: MOV AL,[BX] ; 正向慢转子程序
CMP AL,0BH ; 检查是不是最后一个加电代码 JNZ XH1 ; 不等于时,跳转到XH1 SUB BX,8 ; BX-8
XH1: INC BX ; 指针作加1运算,及实现向后移动 MOV AL,[BX]
out 62h,al ; 从a口输出 CALL Deng2
CALL DELAY1 ;调用长延时 JMP MAIN
ZKuai: MOV AL,[BX] ; 正向快转子程序 CMP AL,0BH ;比较
JNZ XH2 ;不等时跳转 SUB BX,8 XH2: INC BX MOV AL,[BX] out 62h,al
CALL Deng2
CALL DELAY2 ;调用短延时 JMP MAIN
NMan:MOV AL,[BX] CMP AL,03H JNZ FXH1 ADD BX,8 FXH1:DEC BX MOV AL,[BX] out 62h,al
CALL Deng1 CALL DELAY1 JMP MAIN
NKuai:MOV AL,[BX] ;检查是不是第一个加电码 CMP AL,03H JNZ FXH2
ADD BX,8 ;若是第一个加电码,则指针加8跳到最后一个加电码 FXH2:DEC BX ;指针减1,实现向前移动 MOV AL,[BX] out 62h,al
CALL Deng1
CALL DELAY2 ;调用短延时子程序 JMP MAIN
DELAY1:PUSH CX
MOV CX,0D300H ;通过修改CX的值来提高旋转的速度 ADD1: PUSH AX POP AX LOOP ADD1 POP CX RET
DELAY2:PUSH CX
MOV CX,03300H ; CX的值 就为循环的次数,通过循环来达到延时 ADD2: PUSH AX
POP AX LOOP ADD2 POP CX RET
Deng1: PUSH AX ; 循环左移使LED灯循环点亮 MOV AL,CANSHU ROL AL,1H out 60h,al MOV CANSHU,AL POP AX RET
Deng2: PUSH AX MOV AL,CANSHU ROR AL,1H out 60h,al MOV CANSHU,AL POP AX RET CODE ENDS END START
; 循环右移使LED灯循环点亮 设计过程中质疑(或答辩)记载: 1. 如何进行使进步电机正转和反转的? 答:正向输入进步电机控制字和反向输入进步电机控制字来控制进步电机正转和反转。 2. 8255芯片是如何进行输入输出的? 答:A口输出控制LED灯,B口输入接受开关的信号,C口输出控制进步电机旋转。 指导教师评语: 评分: 签名: 年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容