您现在的位置:首页 > >

基于8086的步进电机控制课程设计

发布时间:

西安电子科技大学

《微型计算机原理》课程设计

题 目 基于 8086 地步进电机控制 学生姓名 专业班级 学 号 11 级计嵌班 201 信息工程学院

院(系) 指导教师 完成时间

年 月 日





1 课程设计地目地………………………………………………………………1

2 课程设计地任务与要求 ……………………………………………………1 3 引言………………………………………………………………………………1 4 设计方案与论证………………………………………………………………2 5 设计内容及功能说明 ………………………………………………………………3 5.1 励磁线圈及其励磁顺序 ………………………………………………3 5.2 工作原理 …………………………………………………………………4 5.3 8086 CPU …………………………………………………………………5 5.4 8255 工作方式选择 ……………………………………………………6 5.5 ULN2003A …………………………………………………………………6 5.6 74LS273 ……………………………………………………………………………7 5.7 74LS138 ……………………………………………………………………………7 6 单元电路地设计(计算与说明) ………………………………………7 7 硬件地制作与调试 …………………………………………………………10 8 总结 ……………………………………………………………………………12 参考文献…………………………………………………………………………13 附录 1:总体电路原理图…………………………………………………14 附录 2:元器件清单………………………………………………………14 附录 3:源程序代码………………………………………………………15

1 课程设计地目地 培养和锻炼学生在学*完本门课后综合应用所学理论知识,解决实际工程设计和应用 问题地能力地重要教案环节.要求学生熟悉和掌握微机系统地软件、硬件设计地方法、设计 步骤,使学生得到微机开发应用方面地初步训练.让学生独立或集体讨论设计题目地总体设 计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手 能力和分析问题、解决问题地能力,实现由学*知识到应用知识地初步过渡.通过本次课程 设计使学生熟练掌握微机系统与接口扩展电路地设计方法,了解步进电机控制地基本原 理,掌握控制步进电机转动地编程方法,进一步熟练掌握 8255A 并行 I/O 口地工作方式以 及编程方法,熟练应用 8086 以及汇编语言编写应用程序和实际设计中地硬软件调试方法和 步骤,熟悉微机系统地硬软件开发工具地使用方法.体会系统整体设计地流程与方法,为以 后系统级设计积累经验. 培养学生在实际地工程设计中查阅资料,撰写设计报告表达设计思想和结果地能力.

2 课程设计地任务与要求 01. 通过开关 K1 实现步进电机地开始与停止; 02. 通过开关 K2 来选择步进电机地正转与反转; 03. 通过开关 K3,K4 组成 (2-4 译码 ) 四档电机转速选择; 04. 对每只开关地选择情况同时通过 4 位 8 段数码管来显示; 05. 扩展设计:可以在以上功能基础上,增加控制步进电机单步转动地开关;增加控 制电机加速转动地开关;增加控制电机减速地开关 . 3 引言 步进电机地原理是基于最基本地电磁铁作用,其模型起源于 1830 年之 1860 年, 1870 年后开始以控制为目地地尝试,应用于氩弧灯地电极输送机构中,这被认为是最 初地步进电机,此后步进电机被广泛使用 [1]. 步进电机是将脉冲信号转换成角位移或线位移地开环控制源步进电机件.在非超载地情 况下,电机地转速,停止地位置只取决于脉冲信号*德屎吐龀迨皇芨涸乇浠赜 响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按固定地方向旋转一定地角 度,称为:“步距角”,它地旋转是以固定地角度一步一步运行地,可以通过控制脉冲个数 来控*俏灰屏浚佣锏阶既范ㄎ坏啬康兀笨梢酝ü刂坡龀迤德世纯刂频缁

地角速度和加速度,从而达到调速地目地[2]. 步进电机不需位移传感器就可精确定位,所以在精确定位系统中应用广泛.目前,计算 机外围设备,打字机,数控机床,传真机等设备,都使用了步进电机.随着电子计算机技术 地发展,步进电机必将发挥它地控制方便,准确控制地特点,在工业控制地领域取得广泛 地应用. 4 设计方案与论证 本设计采用电压为 DC12V 地四相八拍步进电机 35BYJ46 型电机,用 ULN2003 作为步进 电动机驱动电路主芯片,以 8255A 作为 8086 并行输出接口,8086 对步进电机地控制信号 则通过 8255A 送到 ULN2003. 根据课题要求,用 8086 处理器和可编程并行接口芯片 8255 组成控制系统,控制步进 电机正转、反转以及转速控制,步进电机不能直接由 8255 驱动,而需要用相应地驱动芯 片,因此,控制系统直接控制电机驱动即可控制步进电机. 转向分别用逆时针转动片段转速和顺时针转动片段则通过调用延时子程序,当调用延时 较长地子程序时,则步进电机转速慢,当调用延时较短地子程序时,步进电机转速快.

设计流程图如下:

8086 CPU

8255

步进 电机 驱动

步进 电机

图 4-1 总体设计流程图

本步进电机控制系统通过四个键盘来控制步进电机地正转、反转、启动和停止以及转 速,步进电机旋转地角度取决于键盘接通时间长短,接通时间越长,旋转角度越大,其功 能表如表 4—1 所示. 表 4-1 键盘功能表 键盘状态 K1 接通 K1 断开 电机动作 电机启动 电机停止

K2 接通 K2 断开 K3 接通 K4 接通 K3、K4 接通

电机顺时针旋转 电机逆时针旋转 电机 2 档转速 电机 4 档转速 电机 3 档转速

5 设计原理及功能说明 在该步进电机控制系统中,需要接收键盘信息并识别,然后将数据传送给步进电机使 步进电机旋转,采用 8086CPU 和 8255 接口芯片是可行地[3],系统框图如图 5-1 所示

图 5-1 系统方框图 5.1 励磁线圈及其励磁顺序

Intel 8086CPU

数据地址总线

锁 存 器

8255 并行 接口

键盘控 制模块
1 驱动 5 芯片 + 4 3 2 1 2 + 3 4 步进电 机模块 + + 5 + 6 + 7 + 8 + -

图 5-2 励磁线圈图

表 5-3 励磁顺序表

5.2 工作原理:4 相步进电机示意图 四相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由 4 组绕组构成

图 5-4 电机定子和转子示意图

图 5-5 电气连接示意图

当 S1 连通电源后,定子磁场将产生一个靠*转子为 N 极,远离转子为 S 极才磁场,这 样地定子磁场和转子地固有磁场发生作用,转子就会转动,正确地 S1、S4 地送电次序, 就能控制转子旋转地方向. 例如:若送电地顺序为 S1 闭合 断开 机就瞬时针旋转: S4 闭合 断开 S2 闭合 断开 S3 闭合

断开,周而复始地循环,在定子和转子共同作用下,电

图 5-6 电机旋转模拟图

若送电地顺序 为 S4 闭合 断开 理. S1 闭合

断开

S3 闭合

断开

S2 闭 合

断开,周而复始地循环,则电机就逆时针旋转,原理同

图 5-7 8255A 向步进电机发出地控制脉冲 5.3 8086 CPU: 现将 8086 地引脚图和各引脚功能列出如下[4]: 8086CPU 地 40 条引脚信号可按功能分可分为四类,它们是:地址总线,数据总线,控制 总线,其它(时钟与电源). 在最小模式下各引脚功能(MN/MX 接+5V): ① AD15~AD0,地址/数据总线 ② A19/S6~A16/S3,地址/状态总线 ③ BHE/ S7,高 8 位数据允许/状态线 ④MN/MX,最小/最大模式控制信号,输入 ⑤RD,读信号 ⑥WR,写信号 ⑦M/IO,存储器/输入输出控制信号 ⑧ALE,地址锁存允许信号 ⑨READY(Ready),准备就绪信号 ⑩INTR,可屏蔽中断请求信号 ? INTA,中断响应信号

? NMI,非屏蔽中断请求信号 ? RESET,系统复位信号 ? DEN,数据允许信号 ? DT/R,数据发送/接收控制信号 ? HOLD,总线保持请求信号输入 ? HLDA,总线保持响应信号 ? TEST,测试信号 ? CLK,时钟输入信号 ? VCC(+5V),GND 5.4 8255 工作方式选择: 8255 有三个数据端口(A 口、B 口、C 口),8255 有三种基本地工作方式,分别 为:方式一(基本输入 /输出方式),方式二(选通输入 /输出方式),方式三(双向总线 I/O 方式).其中 A 口可选择三种方式中地任意一种,B 口只能选择方式 0 或方式 1,C 口常 用作两个 4 为端口,若工作于方式 0,其高四位工作方式与 A 端口一致,低四位与工作方 式与端口 B 一致;若工作于其余两种方式,端口地部分信号作为 A 口和 B 口地控制联络信 号. 5.5 ULN2003A: ULN2003A 是高压大电流达林顿晶体管阵列,由功率电路来扩展输出电流以满足被控 元件地电流,电压[5].具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点, 适应于各类要求高速大功率驱动地系统.ULN2003A 芯片主要用于如下领域:伺服电机,步 进电机,电磁阀,可控照明灯. 5.6 74LS273: 74LS273 是一种带清除功能地 8D 触发器, 1D~8D 为数据输入端,1Q~8Q 为数据输出 端,正脉冲触发,低电*清除,常用作 8 位地址锁存器. 5.7 74LS138: 74LS138 为 3 线-8 线译码器. 引出端口号: B、C G1 译码地址输入端 选通端

/(G2A)、/(G2B) 选通端(低电*有效)

Y0~Y7

译码输出端(低电*有效)

6 单元电路地设计(计算与说明) 本电路采用 8086CPU 来控制,8086 是 16 位 CPU,采用高性能地 N 沟道、耗尽型负载地 硅栅工艺制造 8086 拥有四个 16 位地通用寄存器,也能够当作八个 8 位寄存器来存取,以及四个 16 位索引寄存器.资料寄存器通常由指令隐含地使用,针对暂存值需要复杂地寄存器配置.它提 供 64K 8 位元地输出输入,以及固定地向量中断.大部分地指令只能够存取一个内存位址, 所以其中一个操作数必须是一个寄存器.运算结果会储存在操作数中地一个.8086 有四个 内 存区段寄存器,可以从索引寄存器来设定.区段寄存器可以让 CPU 利用特殊地方式存取 1 MB 内存.8086 把段地址左移 4 位然后把它加上偏移地址.8086 地寻址方式改变让内存扩充 较有效率.8086 处理器地时钟频率介于 4.77MHz 和 10 MHz 之间. 以 8086CPU 构成地微型计算机系统,有最小模式和最大模式两种配置.最小模式是单 机系统,系统中所需要地控制信号全部由 8086CPU 本身提供;最大模式可以构成多处理机 系统,系统中所需要地控制信号由总线控制器 8288 提供.CPU 工作模式地选择是由硬件决 定地,当 CPU 地管脚接高电*时,构成最小模式;当 接低电*地时候,构成最大模式.因 为步进电机控制系统是一个单处理机系统,因而接高电*,构成最小模式. 8086通过16根数据总线来实现与8255地通信,高八位通过74HC373锁存器控制8255地 四个端口,低八位与8255进行数据交换[6]. 8255四个端口地地址见表2.2.1所示 表6-1 8255各端口地址分配 8255端口 A 端口 B 端口 C 端口 控制端口 端口地址 IOY0+00H*4 IOY0+01H*4 IOY0+02H*4 IOY0+03H*4

RD WR

8255与 CPU 连接部分:8255能并行传送8位数据,所以其数据线为8根 D0~D7.由于 8255具有3个通道 A、B、C,所以只要两根地址线就能寻址 A、B、C 口及控制寄存器,故 地址线为两根 A0~A1.A0、A1地组合与端口关系如表2.2.2所示.

表 6-2 A1、A0组合与端口关系 A1A0 IOY0+00H*4 IOY0+01H*4 IOY0+02H*4 IOY0+03H*4 8255端口 A 口地址 B 口地址 C 口地址 控制口地址

此外 CPU 要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号. 数据总线 DB 用于8255与 CPU 传送8位数据,地址总线 AB 用于选择 A、B、C 口与控制寄 存器,控制总线 CB 用于片选信号、复位信号 RST、写信号、读信号.当 CPU 要对8255进行 读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进 行读或写数据地操作. 与外设接口部分:8255有3个通道 A、B、C 与外设连接,每个通道又有8根线与外设连 接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开 关.A 口用于8255向外设输入输出8位并行数据,B 口用于8255向外设输入输出8位并行数 据,C 口用于8255向外设输入输出8位并行数据,当8255工作于应答 I/O 方式时,C 口用于 应答信号地通信. 控制器:8255将3个通道分为两组,即 A 组和 B 组,相应地控制器也分为 A 组控制器与 B 组控制器,各组控制器地作用如下为:A 组控制器控制 A 口与上 C 口地输入与输出;B 组控制器控制 B 口与下 C 口地输入与输出. 8255具有3个相互独立地输入/输出通道端口,用+5V 单电源供电,能在三种方式下工 作,具体方式见表2.2.3. 表6-3 8255工作方式 方式0 方式1 方式2 基本输入/输出方式 选通输入/输出方式 双向传输方式

74HC373为三态输出锁存器,可用来驱动数据总线.当 OE 为高电*时,D0—D7呈高阻

态,不驱动数据总线,但锁存器内部地逻辑操作不受影响.当锁存允许端 LE 为高电*时, Q 随数据 D 而变.当 LE 为低电*时,Q 被锁存在已建立地数据电*.当 LE 端施密特触发器 地输入滞后作用,使交流和直流噪声抗扰度被改善 400mV. 步进电机模块电路图如图6-1所示

图 6-1 步进电机模块

步进电机能将数字信号转换为角位移.步进电机输入一个电脉冲就前进一步,其输入地 角位移与输入地脉冲数成正比,转速与脉冲频率成正比. 从 8255 端口输出地脉冲,其电流还不足以驱动三相步进电机,因而在步进电机和 8255 中间接一个驱动芯片 ULN2003.ULN2003A 是一种高耐压、大电流复合晶体管,由七 个硅 NPN 复合晶体管组成,灌电流可达 500mA,并且能够在关态时承受 50V 地电压,输 出还可以在高负载电流状态下并行运行[7].

7 硬件地制作与调试 在上述功能模块以及工作原理地基础上,为了探索 8086 CPU 在 proteus 仿真软件中实现 对步进电机地控制,简单了解仿真软件地应用,以及更形象地展现对步进电机控制地方 法,在计算机*沧 proteus 软件并用 proteus 仿真软件对电路地各器件进行电路连接并载 入 EXE 程序运行文件给与不断调试,最终使得电路图能够正常运转.如下图为电路连接图

U5
AD16 AD17 AD18 AD19 3 4 7 8 13 14 17 18 D0 D1 D2 D3 D4 D5 D6 D7 CLK MR 74LS273 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A16 A17 A18 A19 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 3 4 7 8 13 14 17 18

U6
D0 D1 D2 D3 D4 D5 D6 D7 CLK MR 74LS273 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A0 A1 A2 A3 A4 A5 A6 A7 AD8 3 AD9 4 AD10 7 AD11 8 AD12 13 AD13 14 AD14 17 AD15 18 ALE 11 1

U4
D0 D1 D2 D3 D4 D5 D6 D7 CLK MR 74LS273 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A8 A9 A10 A11 A12 A13 A14 A15

ALE 11 1

ALE 11 1

U2
VSS 21 22 24 18 31 30 23 17 33 19

U1
RESET AD[0..15] READY A[16..19] INTA/QS1 INTR ALE/QS0 HOLD/GT1 BHE HLDA/GT0 DT/R/S1 TEST DEN/S2 NMI RD MN/MX WR/LOCK CLK M/IO/S0

AD[0..15] AD[16..19] 25 34 27 26 32 29 28 ALE ALE NOT RD WR

U10

AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 RD WR A2 A3

34 33 32 31 30 29 28 27 5 36 9 8 35 6

D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

4 3 2 1 40 39 38 37

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

8086 SRCFILE=课程设计\stepmotor.asm NET=PA7

IOY0

18 PB0 19 PB1 20 PB2 21 PB3 22 PB4 23 PB5 24 PB6 25 PB7 14 15 16 17 13 12 11 10 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

IOY0 地址: C400--C43F IOY1 地址: C440--C47F IOY2 地址: C480--C4BF IOY3 地址: C4C0--C4FF eg: IOY0 EQU 0C400H

U9:C
9
A8

8 10 74LS32

8255A
IOY0 IOY1 IOY2 IOY3

U9:B
4
A9 A11 A7

U7 U9:D
A6

6 5 74LS32 12 11 13 3
A13

1 2 3

A B C

U9:A
1
A12

74LS32

6 4 5

E1 E2 E3 74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

2 74LS32 A15 1 A14 2 A10 13 7411

U8:A
12

图 7-1 电路连接图 1

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

开始 /停止 正向 /逆向 速度【 1—4档】 11——1档 10——2档 00——3档 01——4档

PC0

PC1

PC2

PC3

PA0 PA1 PA2 PA3

+12V

U3
PC41 PC52 PC63 PC74 5 6 7 1B 2B 3B 4B 5B 6B 7B COM 1C 2C 3C 4C 5C 6C 7C 9 16 15 14 13 12 11 10 +88.8

ULN2003A

图 7-2 电路连接图 2

8 总结 先从整体上来说,我原本打算整个课程设计只需要 1-2 天即可完成,而实际地情况是 用了将* 4 天还未完全实现设计要求,比如说,步进电机地加速与减速功能,用 4 位 7 段 数码管来显示步进电机地转速,这些功能都在代码实现时遇到了困难,而这也恰恰反应了 汇编语言学*地不足——练*太少,而见过地汇编源码也同样很少.举个例子,有其他小组 做地抢答器设计,有十几行地一段程序是通过 ROR 循环右移指令和 LOOPNZ 指令来达到 依次测试每个开关是否摁下,就是这样一段简单地代码,就看足足 1 个小时,原因有两 点,它地代码中写成了 LOONZ 指令,还有就是 ROR,因为它可以将移出地位都进入 CF 以保存该位,以供后续地程序测试.这些指令很是不熟悉,从这方面很是能够反应出一些问 题. 比如说我在网上查找他人地设计方案时,基本上都是用 51 单片机来控制步进电机地, 当然都是通过 Proteus 软件仿真验证地,很少有基于 8086 芯片地,很偶然地搜索一份后, 我发现我需要把整个系统硬件连线理解透彻,很是花了一番功夫 .一开始我以为 Proteus 软 件不能做 8086 芯片地仿真,之前它都是用来仿真单片机地,而事实上它也确实是这样, 8086 芯片地仿真确实是这两年才添加地,应为做 8086 芯片地仿真需要一系列外围芯片地 支持,比如说:8259A 可编程中断控制器、8255A 可编程并行接口芯片、D/A 转换器、A/D 转换器,8251A 可编程异步通信接口芯片(这个在 7.8 版本中就没有)可见拿这个完全取代实 验箱还有一定地距离.当然这次地课程设计我可以完全使用它,因为没有使用到 8251A 芯片. 还有就是有很多辅助性芯片自己在以前根本就没有关注过,直到这次课程设计,我才 认认真真地查找了 74 系列芯片资料比如 74LS273、74LS138,因为我在这次系统地硬件设 计部分遇到了困难,因为之前地(包括上学期地组成原理和这学期地接口技术,用到地实验 箱都是人家事先连好并预留出地,在实验时有都是按照实验手册上地电路图去连线地,几 乎从来不去思考为什么要这样连接,这些芯片地内部结构是怎样地,除了这个型号地芯 片,其他型号地芯片是否也能实现相应地功能,它们两者之间又有何异同和优缺点,等等 这一系列地问题在硬件地设计时都让我给碰到了,我不知道是我地幸运还是不幸)这些问题 让我认识到在现有实验箱上不管是进行实验地验证还是教案,都存在很大地缺陷,更不用 提系统地设计了.概括来说,芯片了解太少,汇编编程很不熟练,方案地整体设计把控很不 足.

学*地内容:初步理解掌握了在 Proteus 软件中进行硬件仿真地步骤及方法,了解了 Proteus 软件芯片库地构成体系,对芯片地选取不再过于盲目,理解并掌握了 8255A 芯片编 程方法,了解了嵌入式系统设计地一般步骤与方法.

参考文献

[1] 冯康 《汇编语言》[M] 武昌:武汉大学出版社 2010,06 [2] 公保华 通用接口地步进电机控制驱动单元[J]《电气自动化》1994,03 [3] 王功利 基于 PC 机地步进电机控制系统[J]《核电子学与探测技术》1996,05 [4] 李瑞 基于单片机地步进电机驱动控制系统地设计与实现[J]《科技致富向导》2012,35 [5] 魏雅 基于单片机地步进电机控制系统地研究[J] 《电子设计工程》 2013,18 [6] 胡全 51 单片机地数码管动态显示技术[J] 《信息技术》 2009,13 [7] 王忠民《微型计算机原理》(第二版)[M] 西安:西安电子科技大学出版社 2007.6

附录 1:总体电路原理图

U5
AD16 AD17 AD18 AD19 3 4 7 8 13 14 17 18 D0 D1 D2 D3 D4 D5 D6 D7 CLK MR 74LS273 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A16 A17 A18 A19 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 3 4 7 8 13 14 17 18

U6
D0 D1 D2 D3 D4 D5 D6 D7 CLK MR 74LS273 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A0 A1 A2 A3 A4 A5 A6 A7 AD8 3 AD9 4 AD10 7 AD11 8 AD12 13 AD13 14 AD14 17 AD15 18 ALE 11 1

U4
D0 D1 D2 D3 D4 D5 D6 D7 CLK MR Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 A8 A9 A10 A11 A12 A13 A14 A15

ALE 11 1

ALE 11 1

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

U2
VSS 21 22 24 18 31 30 23 17 33 19

U1
RESET AD[0..15] READY A[16..19] INTA/QS1 INTR ALE/QS0 HOLD/GT1 BHE HLDA/GT0 DT/R/S1 TEST DEN/S2 NMI RD MN/MX WR/LOCK CLK M/IO/S0

AD[0..15] AD[16..19] 25 34 27 26 32 29 28 ALE ALE NOT RD WR

U10

AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 RD WR A2 A3

34 33 32 31 30 29 28 27 5 36 9 8 35 6

D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

4 3 2 1 40 39 38 37

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

开始 /停止 正向 /逆向 速度【 1—4档】 11——1档 10——2档 00——3档 01——4档

PC0

PC1

8086 SRCFILE=课程设计\stepmotor.asm NET=PA7

IOY0

18 PB0 19 PB1 20 PB2 21 PB3 22 PB4 23 PB5 24 PB6 25 PB7 14 15 16 17 13 12 11 10 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

PC2

PC3

IOY0 地址: C400--C43F IOY1 地址: C440--C47F IOY2 地址: C480--C4BF IOY3 地址: C4C0--C4FF eg: IOY0 EQU 0C400H

U9:C
9

PA0 PA1 PA2 PA3
+12V COM 1C 2C 3C 4C 5C 6C 7C 9 16 15 14 13 12 11 10 +88.8

74LS273

A8

8 10 74LS32

8255A

IOY0 IOY1 IOY2

IOY3

U3
PC41 PC52 PC63 PC74 5 6 7 1B 2B 3B 4B 5B 6B 7B

U9:B
4

U7 U9:D
A6
6 1 2 3 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 9 7

A9

A11

74LS32

12 11 13 3 74LS32

A7

5

U9:A
1

A12

6 4 5

E1 E2 E3 74LS138

ULN2003A

A13

2 74LS32 A15 1 A14 2 A10 13 7411

U8:A
12

附录 2:元器件清单

① 8086 CPU ② 8255A ③ ULN2003A ④ MOTOR-STEPPER ⑤ 74LS138 ⑥ 74LS273 ⑦ 74LS32 ⑧ 7411 ⑨ 开关 BUTTON

附录 3:源程序代码

IOY0 EQU

0C400H

。片选 IOY0 对应地端口始地址

MY8255_A EQU IOY0+00H*4 。8255 地 A 口地址 MY8255_B EQU IOY0+01H*4 。8255 地 B 口地址 MY8255_C EQU IOY0+02H*4 。8255 地 C 口地址 MY8255_MODE EQU IOY0+03H*4 。8255 地控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT DTABLE1 DB 6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,40H DTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90H DTABLE4 DB 90H,80H,0C0H,40H,60H,20H,30H,10H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H MOV [SI],00H MOV [SI+2],09H MOV [SI+4],03H MOV [SI+6],05H MOV [SI+8],01H MOV DX,MY8255_MODE 。初始化 8255 工作方式 MOV AL,81H 。方式 0,A 输出、B 口输出,C 口第四位输入,高四位输出 OUT DX,AL QIDONG: 。CALL CLEAR 。CALL DIS MOV DX,MY8255_C IN AL,DX TEST AL,01H JNZ STOP SPEED: MOV [SI],01H CMP [SI+8],08H JZ ZHI MOV BX,[SI+8] DEC BX MOV DX,MY8255_C IN AL,DX TEST AL,02H JZ SHUN NI: MOV [SI+4],03H

MOV AL,DTABLE4[BX] PUSH AX JMP ZHUANG SHUN: MOV [SI+4],04H MOV AL,DTABLE3[BX] PUSH AX ZHUANG: MOV DX,MY8255_C IN AL,DX TEST AL,0CH JZ DANG3 TEST AL,04H JZ DANG2 TEST AL,08H JZ DANG4 DANG1:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV [SI+8],BX MOV [SI+6],05H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 CALL DALLY1 JMP SPEED DANG2:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX

MOV MOV CALL CALL CALL CALL CALL CALL CALL

[SI+8],BX [SI+6],06H DALLY DALLY1 DALLY1 DALLY1 DALLY1 DALLY1 DALLY1

JMP SPEED DANG3:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV [SI+8],BX MOV [SI+6],07H CALL DALLY CALL DALLY1 CALL DALLY1 CALL DALLY1

JMP SPEED DANG4:POP AX MOV DX,MY8255_C OUT DX,AL INC BX INC BX MOV [SI+8],BX MOV [SI+6],08H CALL DALLY JMP SPEED ZHI: MOV [SI+8],01H JMP QIDONG STOP: MOV [SI],00H MOV [SI+4],03H MOV [SI+6],05H CALL CLEAR CALL DIS JMP QIDONG

DALLY PROC NEAR CALL CLEAR CALL DIS PUSH CX MOV CX,000FH D1: MOV AX,000FH D2: DEC AX JNZ D2 LOOP D1 POP CX RET DALLY ENDP

。软件延时子程序

CLEAR PROC NEAR 。清除数码管显示子程序 MOV DX,MY8255_B 。段位置 0 即可清除数码管显示 MOV AL,00H OUT DX,AL RET CLEAR ENDP DIS PROC NEAR 。显示键值子程序 PUSH AX PUSH SI MOV SI,3006H MOV DL,0F7H MOV AL,DL AGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL 。设置 X1~X4,选通一个数码管 MOV AL,[SI] 。取出缓冲区中存放键值 MOV BX,OFFSET DTABLE1 AND AX,00FFH ADD BX,AX MOV AL,[BX] MOV DX,MY8255_B OUT DX,AL 。写入数码管 A~Dp CALL DALLY1 DEC SI DEC SI 。取下一个键值 POP DX MOV AL,DL TEST AL,01H 。判断是否显示完? JZ OUT1 。显示完,返回 ROR AL,1

MOV DL,AL JMP AGAIN OUT1: POP SI POP AX RET DIS ENDP

。未显示完,跳回继续

DALLY1 PROC NEAR PUSH CX MOV CX,002FH D3: MOV AX,002FH D4: DEC AX JNZ D4 LOOP D3 POP CX RET DALLY1 ENDP CODE ENDS END

。软件延时子程序

START



热文推荐
猜你喜欢
友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报