




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机应用系统设计与综合实验设计报告设计题目 小型步进电机控制系统设计 指导老师 设 计 者 专 业 班 级 学 号 设 计 日 期 目录摘要.3一. 课程设计目的.4二. 设计题目名称及要求.4三. 实验设备.4四. 设计的思想和实施方案.5五. 硬件原理图.11六. 典型程序模块及典型编程技巧.13七. 课程设计中遇到的问题及解决方法.16八. 程序流程图.19九. 汇编程序清单及程序注释23十. C 语言程序清单及注释.30十一. 收获体会.37十二. 参考文献.38摘 要在现代电子产品中,步进电机广泛应用于 ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业控制系统、办公自动化、机器人等领域。所以步进电机的控制是一门很实用的技术。本实验主要是基于唐都PIT 试验箱的步进电机控制的设计。主要使用到了并行接口电路8255、LED 七段数码管电路、8086cpu、步进电机等元件。主要是通过按键的不同来设置直流电机的转速、运行状态和方向。软件部分采用了汇编语言编写程序代码和 C语言编写的步进电机控制程序,通过判断、跳转、循环、延时等基本技术实现。此系统可以通过键盘输入相关数据, 并根据需要, 实时对步进电机工作方式进行设置, 具有实时性和交互性的特点。该设计可应用于步进电机控制的大多数场合关键词: 步进电动机 调速 方向控制 并行接口 七段数码管小型步进电机控制系统设计报告4 / 392010 年 12 月 27 号小型步进电机控制系统一、 课程设计目的课程设计是本科教学全过程中的重要环节。 微机应用系统设计与综合实验(实践 )课程设计主要培养我们自动化专业学生,运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生运用计算机编程语言综合编程能力、程序调试技能和微机系统接口综合应用及电路设计能力。1、学习在 PC 系统中扩展简单的 IO 接口的方法。2、熟练掌握和运用汇编和 C 语言编写程序控制 8255 各口的输入输出,并正确带动数码管及步进电机;能熟练运用汇编和 C 语言实现 8254 的定时功能,以确保 8255 输出的脉冲频率稳定。3、熟练掌握 ISA 总线配置方式下硬件实验的调试,并能独立的排除故障,以确保实验的顺利进行。4、.巩固和加深课堂所学知识;5、学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;6、通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制。二、 设计的题目名称及要求设计题目:小型步进电机控制系统设计。设计要求:(1)分别用 C 语言和汇编语言编程完成硬件接口功能设计;(2)基于 80x86 微机接口硬件电路设计调试;(3)控制功能要求:小键盘给定分段速度,数码管显示当前步进电机启动与停止、方向、速度信息;(4)具有本地与远程(串行方式下)功能。三、实验设备PC 机一台(装有 TDPIT 软件) 、唐都 AEDK8688ET 实验箱。使用硬件:8086 PC,8255 芯片,键盘数码管,步进电机驱动电路,步进电机。小型步进电机控制系统设计报告5 / 392010 年 12 月 27 号系统设计:键盘采用实验板提供的 4*4 键盘,使用 4 个数码管实时显示系统当前状态。四、设计的思想和实施方案4.1.2 步进电机的工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机动态指标及术语: 1、步距角精度:步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100% 。不同运行拍数其值不同,四拍运行时应在 5%之内,八拍运行时应在 15%以内。2、失步:电机运转时运转的步数,不等于理论上的步数。称之为失步。3、失调角:转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。4、电机正反转控制:当电机绕组通电时序为 AB-BC-CD-DA 或()时为正转,通电时序为 DA-CA-BC-AB 或 ()时为反转。驱动控制系统组成:使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框图如下:脉冲信号的产生:脉冲信号一般由单片机或 CPU 产生,一般脉冲信号的占空比为 0.3-0.4 左右,小型步进电机控制系统设计报告6 / 392010 年 12 月 27 号电机转速越高,占空比则越大。下图步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图 1 是该四相反应式步进电机工作原理示意图。 图 1 四相步进电机步进示意图开始时,开关 sb 接通电源,sa、sc、sd 断开,b 相磁极和转子 0、3 号齿对齐,同时,转子的 1、4 号齿就和 c、d 相 绕组磁极产生错齿,2、5 号齿就和 d、a 相绕组磁极产生错齿。当开关 sc 接通电源,sb、sa、sd 断开时,由于 c 相绕组的磁力线和 1、4号齿之间磁力线的作用,使转子转动,1、4 号齿和 c 相绕组的磁极对齐。而0、3 号齿和 a、b 相绕组产生错齿, 2、5 号齿就和 a、d 相绕组磁极产生错齿。依次类推,a 、b、c 、d 四相绕组轮流供电,则转子会沿着 a、b、c、d 方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c 所示:小型步进电机控制系统设计报告7 / 392010 年 12 月 27 号a. 单四拍 b. 双四拍 c 八拍图 2.步进电机工作时序波形图 4.1.2 8255A 的功能简介Intel 8086/8088 系 列 的 可 编 程 外 设 接 口 电 路 ( Programmable Peripheral Interface)简 称 PPI, 型 号 为 8255( 改 进 型 为 8255A 及8255A-5) , 具 有 24 条 输 入 /输 出 引 脚 、 可 编 程 的 通 用 并 行 输 入 /输 出 接 口电 路 。 它 是 一 片 使 用 单 一 +5V 电 源 的 40 脚 双 列 直 插 式 大 规 模 集 成 电 路 。8255A 的 通 用 性 强 , 使 用 灵 活 , 通 过 它 CPU 可 直 接 与 外 设 相 连 接 。8255A 在 使 用 前 要 写 入 一 个 方 式 控 制 字 , 选 择 A、 B、 C 三 个 端 口 各 自的 工 作 方 式 , 共 有 三 种 ;方 式 0 : 基 本 的 输 入 输 出 方 式 , 即 无 须 联 络 就 可 以 直 接 进 行 的 I/O方 式 。 其 中 A、 B、 C 口 的 高 四 位 或 低 四 位 可 分 别 设 置 成 输 入 或 输 出 。方 式 1 : 选 通 I/O,此 时 接 口 和 外 围 设 备 需 联 络 信 号 进 行 协 调 , 只 有 A 口 和 B 口可 以 工 作 在 方 式 1, 此 时 C 口 的 某 些 线 被 规 定 为 A 口 或 B 口 与 外 围 设 备 的 联 络 信 号 ,余 下 的 线 只 有 基 本 的 I/O 功 能 , 即 只 工 作 在 方 式 0.小型步进电机控制系统设计报告8 / 392010 年 12 月 27 号方 式 2: 双 向 I/O 方 式 , 只 有 A 口 可 以 工 作 在 这 种 方 式 , 该 I/O 线 即 可 输 入 又 可 输出 , 此 时 C 口 有 5 条 线 被 规 定 为 A 口 和 外 围 设 备 的 双 向 联 络 线 , C 口 剩 下 的 三 条 线可 作 为 B 口 方 式 1 的 联 络 线 , 也 可 以 和 B 口 一 起 方 式 0 的 I/O 线 。4.1.3 设计思想和实施方案初 步 设 计 的 模 块 图 如 下 :步进电机8086CPULED 数码显示模块小键盘输入模块 8255 模块进一步的设计图:小型步进电机控制系统设计报告9 / 392010 年 12 月 27 号电机状态显示模块CPU8255LED 显示模块步进电机模块键盘扫描模块本 次 设 计 , 对 8255 的 使 用 是 这 样 的 : 8255 工 作 于 方 式 0, A 口 低 四位 接 键 盘 及 数 码 管 显 示 单 元 的 X1X4;C 口 低 四 位 接 键 盘 及 数 码 管 显 示 单 元的 Y1Y4; C 口 高 四 位 接 步 进 电 路 的 驱 动 电 路 , 使 电 机 转 动 起 来 ; B 口 接数 码 管 的 A、 B、 C、 D、 E、 F、 G 和 DP, 以 使 数 码 管 显 示 电 机 的 转 向 和 转速 。 8255 的 A 口 高 四 位 本 次 课 程 设 计 没 有 用 到 。此 外 , 本 次 设 计 还 用 到 了 实 验 箱 中 的 键 盘 及 数 码 管 显 示 单 元 :方 向 键 : 控 制 步 进 电 机 运 行 方 向 , 无 论 电 机 处 于 运 行 或 停 止 状 态 , 每 按 下 一次 , 电 机 转 动 方 向 反 向 ;运 行 /暂 停 键 : 控 制 电 机 运 行 与 否 。 电 机 转 动 时 按 下 , 电 机 暂 停 , 当 前 电 机 运小型步进电机控制系统设计报告10 / 392010 年 12 月 27 号行 参 数 不 变 , 再 次 按 下 时 , 电 机 继 续 按 暂 停 前 参 数 运 行 ;停 止 键 : 无 论 电 机 处 于 任 何 状 态 , 按 下 此 键 , 电 机 停 止 转 动 , 电 机 各 运 行 参数 复 位 , 默 认 参 数 为 : “顺 时 针 , 停 止 状 态 , 1 档 ”;档 位 键 : 无 论 电 机 处 于 任 何 状 态 , 均 可 设 定 电 机 档 位 。数 码 管 显 示 信 息 :左 起 第 一 个 数 码 管 显 示 当 前 电 机 的 运 行 状 态 : S(Stop) 表 示 当 前 电 机为 停 止 状 态 ; E(Enable)表 示 当 前 电 机 为 运 行 状 态 ; P(Pause)表 示 当 前 电 机为 暂 停 状 态 。第 二 个 数 码 管 未 使 用 , 只 有 小 数 点 点 亮 。第 三 个 数 码 管 显 示 电 机 运 行 方 向 : C(Clockwise)表 示 电 机 运 行 方 向 为顺 时 针 ; A(Anti-clockwise)表 示 电 机 运 行 方 向 为 逆 时 针 。第 四 个 数 码 管 显 示 电 机 的 档 位 : 1、 2、 3、 4 分 别 表 示 1、 2、 3、 4 档 。键 盘 数 码 管 内 部 连 线 如 下 图 :小型步进电机控制系统设计报告11 / 392010 年 12 月 27 号五、硬件电路原理图图 步进电机控制系统硬件电路原理如 上 图 示 : 该 原 理 图 涉 及 到 系 统 总 线 、 可 编 程 外 围 接 口 芯 片 8255、 键盘 及 数 码 管 显 示 单 元 和 步 进 电 机 及 其 驱 动 电 路 8255 的 D0D7 依 次 接 系统 总 线 的 XD0XD7, A1 和 A0 依 次 接 系 统 总 线 的 XA3 和 XA2;WR 和 RD 依 次 接 系 统 总 线 上 的 XIOW 和 XIOR; 8255 的 CS 接 系 统 总 线 的 IOY0, 小型步进电机控制系统设计报告12 / 392010 年 12 月 27 号8255 的 A 口 低 四 位 PA0PA4 依 次 接 小 键 盘 的 X1 X4(列 ); C 口 低 四 位PC0PC3 分 别 接 小 键 盘 的 Y1Y4(行 ); C 口 高 四 位 PC4PC7 依 次 接 驱动 电 路 的 A、 B、 C 和 D; B 口 PB0PB7 分 别 接 数 码 管 的A、 B、 C、 D、 E、 F、 G 和 DP;A 口 高 四 位 没 用 到 。 MotrSepI6NV9OULJRWT图 步进电机模块此模块的主要功能是通过接收 8255 的 C 口输入信号来控制步进电机的转动,A,B,C,D 分别代表不同的四个相位,分别接入到 PC0,PC1,PC2 和 PC3,实现转动控制。QKHabcdfg图 LED 模块小型步进电机控制系统设计报告13 / 392010 年 12 月 27 号六、典型程序模块及典型编程技巧分析1.主函数模块主函 数 MAIN 主 要 是 综 合 调 用 各 子 函 数 , 以 完 成 对 四 项 八 拍 步 进 电 机 转 速和 转 向 的 控 制 , 并 在 数 码 管 上 实 时 显 示 电 机 的 运 行 状 态 、 转 向 和 转 速 档 位 。本 次 设 计 的 电 机 转 速 分 为 四 个 档 , 分 为 一 二 三 四 档 , 在 数 码 管 的 档 位 部 分 显 示 ,分 别 显 示 1,2,3,4。当 程 序 开 始 运 行 时 , 数 码 管 上 显 示 初 始 状 态 : S( 停 止 ) ,小 数 点 ( 该 位 不 用 )C( 顺 时 针 )1( 速 度 为 1 档 )小 键 盘 “0” 控 制 电 机 转 向 :程 序 默 认 初 始 态 为 C( 顺 时 针 ) ;按 下 该 键 , 电 机 可 以 切 换 转 向 , C(Clockwise)表 示 电 机 运 行 方 向 为 顺 时 针 ; A(Anti-clockwise)表 示 电 机 运 行 方 向 为 逆 时 针 。 无 论 电机 处 于 运 行 或 停 止 状 态 , 每 按 下 一 次 , 电 机 转 动 方 向 反 向 。 小 键 盘 “1”控 制 电 机 开 始 和 暂 停 两 个 状 态 之 间 的 切 换 :电 机 转 动 时 按 下 , 电 机 暂 停 , 当 前 电 机运行参数不变,再次按下时,电机继续按暂停前参数运行。E(Enable)表示当前电机为运行状态;P(Pause)表示当前电机为暂停状态。 小键盘“2”控制电机的停止复位(S:Stop ):按下该键,电机停止转动,并且恢复到初始参数状态。小键盘“4” “5”“6”“7”控制电机的四个转速档位:当按下这四个键时,分别是电机运行在 1,2,3,4,转速档位。即实现了电机的调速,并且可以实现任意档速的切换。2. 键盘扫描与显示子程序模块此子函数是用来扫描小键盘哪行哪列有键按下,当确定某行某列有键按下时,再把相应的键值保存起来。小键盘有四行四列共 16 个按键,第一行从左到右依次是 03;第二行从左到右依次是 47;第三行从左到右依次是 8B;第二行从左到右依次是 CF。为了实现判断功能,在 C语言中设置三个标志位:小型步进电机控制系统设计报告14 / 392010 年 12 月 27 号1.运行状态标志 MODE:0 = 停止(Stop) ;1 = 运行(Enable) ;2 = 暂停(Pause) 。2.方向标志 DIR(Direction):0 = 逆时针(Anti-clockwise) ;1 = 顺时针(Clockwise) 。3.档位标志 GRD(Grade):1 = 1 档;2 = 2档;3 = 3档;4 = 4档。数组 a中存放数码管的编码,一次为:“S” 、 “E”、 “P”、 “A”、 “C”、 “1”、“2”、 “3”、 “4”、 “.”。数组 b中分别存放四个数码管应显示的编码在数组 a中对应的位置,例如:b的初值为:0,9,4,5,则数码管会对应显示:“ S . C 1 ”。在汇编程序中,用 DTABLE1中存放数码管的编码。SISI+2SI+4SI+6 中分别存放四个数码管应显示的编码在 DTABLE1中对应的位置。与 C程序中不同,汇编程序中取消了 dir、mode、grd 三个独立的变量,而是直接用SISI+4SI+6来代表,即:SI=0时,表示停止状态;SI=1时,表示运行状态;SI=2时,表示暂停状态;SI+4=3时,表示方向为逆时针;SI+4=4时,表示方向为顺时针;SI+6=5时,表示档位为 1档;SI+6=6时,表示档位为 2档;SI+6=7时,表示档位为 3档;SI+6=8时,表示档位为 4档。首先保证使计数值 i在 0-7之间变化,若正转,则递增;反转则递减。判断是否运行,如运行,则跳出循环,给步进电机发驱动脉冲。3 .保存键值子程序小型步进电机控制系统设计报告15 / 392010 年 12 月 27 号此函数完成在按下小键盘按键后,将其相应的电机运行状态、转向和转速数值保存起来,以备其它子程序使用。4. 扫描是否有按键闭合子程序此子函数用来扫描小键盘是否有键按下。通过 8255 的 C 口高四位,使X1X4(列) 全选通,然后由 8255 的 C 口低四位判断各列所对应的行是否有键安下,无任何键按下则 C 口低四位读入的全是“1”,若有键按下则 C 口低四位读入的对应行是“0”,其余全是“1”,经取反(NOT) 后扫描小键盘的子程序 CCSCAN 的功能变为:若小键盘无键按下则 AL 寄存器数据为“ 0”; 若小键盘有键按下则AL 寄存器数据为非“0” 。为减少引线,键盘采用矩阵式。键盘的识别采用行扫描法,程序使某行为低电平,则说明行列交叉点处的键被按下,然后,再具体确定按下的是哪个键。为此先使所在行输出为 0,再检查列线是否有 0。如果有零的话,此时由于不能确定闭合键所在的行,于是再用行扫描法来具体定位。如果读得数据全部为1,则说明无键闭合。硬件上将 8255 端口 C 的上、下半部分分别用作键盘的行线和列线。用电平逻辑开关输出高低电平来代替键盘按键。5. 显示键值子程序将保存示值子函数中保存下的电机运行状态、转向和转速值送到数码管上显示。数码管的段位顺序如右图所示:一般来说在一个字节中按照 abcdefg dp 的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1” ,则 b、c 段需被点亮,因此在段选线中写入60H。对应规则:a-D7 b-D6c-D5d-D4 e-D3 f-D2g-D1 图 3-2 数码管显示dp-D0小型步进电机控制系统设计报告16 / 392010 年 12 月 27 号LED 显示器的显示方法有两种静态显示法和动态扫描显示法。静态显示就是每一个显示器各笔画段都要独占具有所存功能的输出口线,CPU 把要显示的字符代码送到输出口上,就可以是显示器显示所需的数字后符号。但由于它站用的 I/O 口线较多,硬件成本高。所以我们选用了动态扫描显示法。6. 清除数码管显示子程序将段位置 0 即可清除数码管显示,即将 00H 分别送入 A 口(驱动 LED 灯和B 口( 驱动数码管)便可实验此功能7. 软件延时子程序延时子函数,可供别的程序调用以实现较好的显示和操作效果。读取键盘时要有一定的延时,来跳过键盘在刚按下时产生的抖动。判断档位,进行相应的延时,注意延时的时候也应每隔一定时间调用keyscan()键盘扫描及显示程序,已保证及时响应键盘输入,和刷新数码管,使数码管常亮。应注意调用子程序前要将 CX 与 AX 寄存器的内容入栈进行保护。七、课程设计中遇到的问题及解决方法在本次课程设计过程中,我遇到了一下问题:首先,在显示模块中,在做数码管显示时,每次可以输出四位信息,而且要输出的字符须转化为相应的 ASCII 才行,否则就不能输出想要的东西。显示模块的调试一般是程序问题,硬件连接很简单,一般不会出错,我在调试时,开始没有初始化 8255,导致结果不能输出。再就是相应的端口一定不能定义错误。这在显示模块调试中应该多注意。在这里还有一个比较难解决的问题,即调用了数码管显示程序而却看不到数码管有示数,这主要是调用数码管显示子函数的频率不够高,可以把数码管显示子函数换个位置,或者是多调用几次就可以解决了。至于数码管好像是全亮,情况正好相反,是数码管显示子函数调用的频率过高,把数码管显示子函数换个位置,或者是在关键位置调用一下延时函数就可以解决了。还有,DIS和 CLEAR 成对调用可使数码管有个较好的显示效果。在刚开始编程时,各种功能大部分是由主程序来完成的。由于主程序过于复杂,可读性不高。使得在以后的程序的调试中遇到了很大的麻烦。后来把主小型步进电机控制系统设计报告17 / 392010 年 12 月 27 号程序的部分功能转化成子程序来实现,并在一些重要的地方增加了注释,使的程序的可读性大大加强。调试也变的比较简单了。其次,在使用小键盘时容易死机。出现死机的原因有很多,有时候同一个程序换台机子运行就会死机,有时候同一台机子同一个程序运行多次就会死机,不过总的来看死机的出现多少是和所编写的程序有关,记得我以前用小键盘时就是很容易就死机了,不过在这次的课程设计中 我把所有的和小键盘有关的程序都用了子函数代替,大大简化了主程序的结构,这样就基本再也没发生过死机现象了。再者,当小键盘按下不松时电机也停止转动这种情况出现在电机的加速、减速和改变转向中,这主要是在原有的 keyscan 程序中有一段判断按键是否弹起的程序,将此段换成一个合适的软件延时便可以起到很好的效果(按键不松时可以连续的加速和减速) 。再就是寄存器的使用问题。在编程时,子程序的调试也是相当重要,由于子程序不可避免的使用 AXBXCXDX 通用寄存器一个或几个。使得原主程序中的通用寄存器的内容很容易被覆盖,对子程序中所有的通用寄存器出入栈即可以避免上诉的问题,不用考虑使用的是哪几个寄存器,使用起来又比较简单方便。数码转换问题,首先查找许多相关的典型程序,例如:十六位二进制数转换为 10 进制 BCD 码,可将 AX 中的二进制数先后除以1000,100,10,每次除法所得的商,即是 BCD 的千位、百位和十位数,余数是个位。TRAN: PUSH CX SHL DX,CLPUSH DX XCHG AL,AHSUB DX,DX SUB AH,AHMOV CX,1000 MOV CL,10DIV CX DIV CLXCHG AX,DX ADD DL,ALMOV CL,4 MOV CL,4SHL DX,CL SHL DX,CLMOV CL,100 ADD DL,AHDIV CL MOV AX,DXADD DL,AL POP DX小型步进电机控制系统设计报告18 / 392010 年 12 月 27 号MOV CL,4 POP CX而在算术运算方面也遇到了不少的问题,由于设计过程中存在着小数所以很多时候总会出现算术方面错误,具体表现为结果的溢出或者结果小数点位置错误。解决的方法通常是先将所要计算的数值乘以 10、100 等使得数值为整数,然后再进行计算,而在结果输出时再除以相映的数值从而实现小数的算术运算功能,而不需要采用定义浮点型去计算小数以避免出现数值定义的错误。另一个常见的错误就是自定义存储空间之间的数值存放,因为在许多时候总是需要将结果保存在某一段存储空间里面,由于对存储空间的定义使得其大小范围各有不同,所以对其赋值时总是会出现溢出或数值转换的错误。而在子程序调用以循环方面存在的问题是指针的计数以及标志位清零或置1 搞错从而使子程序运算错误或者进入死循环等。所采取的解决方法是对指针计数值在各个部分运算结束后进行清零以保证指针初值的正确。最后的问题就是 DOS 系统功能调用和 BIOS 中断调用,因为本课题设计中要实现软件时钟,所以需要对软件延迟以及中断调用有一定的了解,对此在设计时查阅了一些相关的软件中断命令。当个模块都调试成功后,即可合成到一起运行。本系统电机的速度可以通过速度增减键来控制。通过验证各按键是否被有效采用,来检验该系统是否正确的完成了指定的功能。小型步进电机控制系统设计报告19 / 392010 年 12 月 27 号八、实验程序的流程图主流程图:电机停止转动键值为0?延时等待仍在按下?初始化 8255开始小键盘有键按下?改变电机转向(速度置最低)电机运行电机速度方向不变电机暂停键值为2?键值为3?键值为 47结束小键盘有键按下?键值为1?数码管同步显示电机的状态、转速和方向是否否是是否否否是是是否 是否是否 电机速度档位小型步进电机控制系统设计报告20 / 392010 年 12 月 27 号扫描与显示流程图:小型步进电机控制系统设计报告21 / 392010 年 12 月 27 号键盘显示子程序流程图:小型步进电机控制系统设计报告22 / 392010 年 12 月 27 号开始B X 指向数据缓冲区 ,使最右边的 L E D 灯位选有效取右边第一个 L E D 待显示数据到 A L , 段码表首送 B X , 取出段码段码送段口 P A , 位码扫描延时 1 m s扫描完一遍了吗?扫描结束 , 子程序返回取下一个待显示数 ,取下一个位码YN键盘扫描子程序流程图:小型步进电机控制系统设计报告23 / 392010 年 12 月 27 号开始将 8 2 5 5 A 的控制字送端口 C 地址调键盘扫描有键按下 ?往所有行线 ( P C 0 P C 2 ) 上输出 0读所有列线 ( P C 4 P C 7 ) 电平标志是否有列线处于低电平送键号初值 0 及扫描初值把行数送到 C X扫描一行修改行扫描值 有列线是否为低电平 ?返回键号 B LB L = 0 F F H扫描完毕 ?返回键号存储器 B L = BL + 1 继续B L = 0 F F HYYYNNNYN小型步进电机控制系统设计报告24 / 392010 年 12 月 27 号九、汇编程序清单及程序注释;步进电机实验IOY0 EQU 0e400H ;片选 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 STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTDTABLE1 DB 6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,80HDTABLE3 DB 10H,30H,20H,60H,40H,0C0H,80H,90HDATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,3000HMOV SI,00HMOV SI+2,09HMOV SI+4,04HMOV SI+6,05HMOV SI+8,01HMOV DX,MY8255_MODE ;初始化 8255工作方式 MOV AL,81H ;方式 0,A 口、B 口输出,C 口低 4位输入 OUT DX,ALKAISHI: MOV SI,3000H MOV DH,SI+8CMP DH,8JA ZHI1CMP DH,1小型步进电机控制系统设计报告25 / 392010 年 12 月 27 号JB ZHI8JMP JIXUZHI1: MOV SI+8,01HJMP JIXUZHI8: MOV SI+8,08HJIXU: CALL KEYSCANMOV AH,1 ;判断是否有按键按下INT 16HJZ SFRUN ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出INT 21HSFRUN: MOV SI,3000H MOV DH,SICMP DH,01HJNZ JIXUMOV DH,SI+4CMP DH,04HJNZ ZIJIANINC SI+8JMP RUNKAISHI1: JMP KAISHIZIJIAN: DEC SI+8RUN: MOV AL,SI+8MOV BX,OFFSET DTABLE3AND AX,00FFH ADD BX,AXDEC BX MOV AL,BX MOV DX,MY8255_C OUT DX,ALDANG1: MOV DH,SI+6CMP DH,05HJNZ DANG2PUSH CXMOV CX,10HDA1: CALL DALLY1CALL DALLY1小型步进电机控制系统设计报告26 / 392010 年 12 月 27 号CALL DALLY1CALL DALLY1CALL KEYSCANJMP KAISHIDANG2: CMP DH,06HJNZ DANG3DA2: CALL DALLY1CALL DALLY1CALL DALLY1JMP KAISHIDANG3: CMP DH,07HJNZ DANG4DA3: CALL DALLY1CALL DALLY1JMP KAISHIDANG4: CMP DH,08HJNZ KAISHI1DA4: CALL DALLY1CALL KEYSCANJMP KAISHIDALLY1 PROC NEAR ;软件延时子程序PUSH CXPUSH AX MOV CX,00AFHD11: MOV AX,5000HD22: DEC AXJNZ D22PUSH CXPUSH AXCALL KEYSCANPOP AXPOP CXLOOP D11POP AXPOP CXRET小型步进电机控制系统设计报告27 / 392010 年 12 月 27 号DALLY1 ENDPKEYSCAN PROC NEAR ;键盘扫描子程序BEGIN: CALL DIS ;显示刷新 CALL CLEAR ;清屏CALL CCSCAN ;扫描按键JNZ GETKEY1 ;有键按下则跳置 GETKEY1 JMP GOBACK1GETKEY1:CALL DIS ;显示刷新CALL DALLY CALL DALLYCALL CLEAR ;清屏CALL CCSCAN ;再次扫描按键JNZ GETKEY2 ;有键按下则跳置 GETKEY2JMP BEGIN ;否则跳回开始继续循环GETKEY2:MOV CH,0FEHMOV CL,00H ;设置当前检测的是第几列COLUM: MOV AL,CH ;选取一列,将 X1X4 中一个置 0 MOV DX,MY8255_A OUT DX,ALMOV DX,MY8255_C ;读 Y1Y4,用于判断是哪一行按键闭合 IN AL,DXL1: TEST AL,01H ;是否为第 1行JNZ L2 ;不是则继续判断 MOV AL,00H ;设置第 1行第 1列的对应的键值JMP KCODEBEGIN1: JMP BEGINL2: TEST AL,02H ;是否为第 2行JNZ L3 ;不是则继续判断MOV AL,04H ;设置第 2行第 1列的对应的键值JMP KCODEL3: TEST AL,04H ;是否为第 3行JNZ L4 ;不是则继续判断MOV AL,08H ;设置第 3行第 1列的对应的键值JMP KCODEL4: TEST AL,08H ;是否为第 4行小型步进电机控制系统设计报告28 / 392010 年 12 月 27 号JNZ NEXT ;不是则继续判断MOV AL,0CH ;设置第 4行第 1列的对应的键值KCODE: ADD AL,C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美敦力2023上半年ESG绩效报告:关注医疗器械的绿色转型
- 网红食品标签法规-洞察及研究
- 藤材生命周期-洞察及研究
- 酮症酸中毒早期诊断-第1篇-洞察及研究
- 肩关节不稳的生物力学机制-洞察及研究
- 非线性声散射机制-洞察及研究
- GB∕T22081-2024《网络安全技术-信息安全控制》之45:“6人员控制-6.8信息安全事态的报告”专业深度解读和应用指导材料(雷泽佳编制-2025A0)
- 2025年陶瓷阀芯行业研究报告及未来发展趋势预测
- 2025年专用设备行业当前发展趋势与投资机遇洞察报告
- 2025年语言服务行业当前竞争格局与未来发展趋势分析报告
- 2025年医师定期考核法律法规试题及答案
- 学堂在线 大学计算机基础 章节测试答案
- 县域共配仓农村物流配送成本控制报告
- 二级实验室生物安全管理手册
- 2024-2025学年北京市西城区人教版五年级下册期末测试数学试卷(含答案)
- 全国“安康杯”职工安全健康意识与应急技能知识竞赛试卷附答案
- 2025年taca试题及答案
- 皮肤科说课课件
- 中国古代教育的发展历程
- 骨科术后并发肺栓塞的急救与护理
- 房地产市场报告 -2025年成都房地产市场半年报
评论
0/150
提交评论