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

合集下载

基于8086的步进电机控制系统设计2说明书内容

基于8086的步进电机控制系统设计2说明书内容

目录一、电路总体设计 (2)1.1系统功能与实现方式 (2)1.2系统的总体组成 (2)二、各部分电路原理图设计 (3)2.1 8086最小方式系统 (3)2.2存储器的设计 (4)2.3步进电机控制电路 (6)2.4键盘和显示电路 (8)三、设计心得与总结 (9)四、参考资料 (9)一、电路总体设计1.1系统功能与实现方式该系统采用8086最小方式,用8255作为接口芯片,用于连接控制步进电机的变频控制器,芯片62256和2764分别作为数据存储扩展芯片和程序存储扩展芯片,步进电机的工作时间控制由82C54芯片来确定,步进电机的工作方式由按键板块接收操作信号,然后由程序判定并执行操作。

1.2系统的总体组成1)处理器芯片选用8086,当8086的MN/MX引脚接+5V电压时,8086工作在最小方式下:时钟发生器采用82C54芯片主微处理器CPU选用8086芯片数据收发器用来对数据进行缓冲和驱动,并控制数据发送和接收方向,向CPU传送I/O的数据或向IO传送CPU提供的数据。

同样由于8086中数据线只有8条,所以数据收发器只要一个8286就可以了。

地址译码器用74LS138,用地址线直接控制。

在最小方式下,8086CPU会直接产生全部总线控制信号。

2)只读存储器采用ROM芯片2764,随机存储器62256。

3)8255和82C54去控制步进电机4)键盘控电路5)时钟电路、加电复位和复位电路。

6)地址分配:8255: 00100---001FF2764: 01000---01FFF62256: 04000---07FFF键盘相关:100H—103H显示相关:140H—141H步进电机相关:200H—207H功能描述:在最小方式下,8086CPU产生全部总线控制信号,由2764和62256构成了8k的ROM和32KB 的RAM,在此基础上,分别实现接口逻辑。

本系统采用8086位处理器工作在最小方式系统下,采用8282、8286、8284构成了最小系统,形成总线逻辑。

微机原理课程基于80x86的步进电机控制系统

微机原理课程基于80x86的步进电机控制系统

微机原理课程基于80x86的步进电机控制系统《微机原理与接口技术》课程设计姓名:厉小洋学号:0945533117班级:09电气1班专业:电气工程及其自动化学院:电气与信息工程学院江苏科技大学张家港校区2012年9月目录一理论部分 (2)1课题要求与内容 (2)2 系统方案设计 (3)3 系统硬件的设计 (4)4 系统软件设计 (5)二实践部分 (6)1 系统硬件原理简介 (6)2 系统硬件调试中出现的问题及解决措施 (10)3 系统软件 (11)3.1 软件设计 (11)3.2软件调试中出现的问题及解决措施 (14)三附录 (15)题目:《基于80x86的步进电机控制系统》第一章、理论部分一微机原理课程设计课题要求与内容内容要求:(1)使用8255A控制步进电机的运转。

(2)使用数码管LED显示速度的大小。

(3)使用8253定时器调节速度的大小。

(4)使用4个独立按键控制步进电机,即“正传”、“反转”、“停止”、“调速”。

(5)使用8259A产生中断控制按键;(6)使用DAC0832显示速度的波形。

拓展功能:(1)按键部分可以增加“加速”、“减速”等功能;(2)考虑可以加蜂鸣器来区分“正转”和“反转”;(3)其他可以有自己特色的功能均可。

二系统方案设计在课程要求的前提下,步进电机为四相八拍步进电机,这样可以用8255的一个端口控制电机的驱动,LED显示为十六位图1系统流程图在8255中可用两个端口控制,按键单元可与电机共用一个八位端口,由8254产生可编程脉冲,进入8259产生中断,反馈给80x86,控制8255。

再执行到步进电机及其LED显示上,一个脉冲步进电机一拍。

由按键读入系统状态。

具体的系统设计如图1为系统概况流程图三系统硬件设计在硬件设计中,主要是通过步进电机模块、8255模块、LED模块、8254模块。

在8255芯片上用A,B口控制数码管的显示(A为位选B为段选),C口的高四位为四个按键单元,低四位作为输出,控制步进电机。

基于单片机的步进电机的控制课程设计报告

基于单片机的步进电机的控制课程设计报告

单片机课程设计报告步进电机控制学院:电气学院班级:电气0904:王浩学号:3090501097一.设计任务了解步进电机的原理,设计一套以51单片机为核心的步进电机控制器,步进电机采用四相四拍或四相八拍工作方式,键盘和显示器采用实验室试验箱。

了解十六只键组成的键盘(用于输入)及六只LED构成的显示器(用于显示)的原理,分别设计他们的程序,在电脑上进行仿真。

具体要求1、从键盘上输入正、反转命令,转速参数(16级)和转动步数显示在LED显示器上。

2、显示器上显示:第一位为0表示正转,为1表示反转;第二位0~F为转速等级,第三到第六位设定步数。

3、单片机依显示器上显示的正、反转命令,转速级数和转动步数进行相应动作,转动步数减为零时停止转动。

二.工作原理1、步进电机基本原理如图,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。

那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。

相数:产生不同对极N、S磁场的激磁线圈对数。

拍数:指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB或A-B-C-D-A,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.步距角:对应一个脉冲信号电机转子转过的角位移. 步距角=360/(转子齿数*拍数)2、LED显示器原理LED显示器由七条发光二极管组成显示字段,有的还带有一个小数点。

将七段发光二极管阴极连在一起,称为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。

共阳极接法是将LED的所有阳极并联后接到+5v上,当某一字段的阴极为0时,对应的字段就点亮。

3、键盘接口原理键盘实际上是又排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU输入数据、地址和命令。

本设计采用8155接口芯片构成的4*8键盘的接口电路,其中A口为输出,作为列线;C口为输入,作为行线。

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验报告实验八:8086中断实验实验十二:步进电机实验微机原理上机实验(八)实验报告实验八:8086中断实验一、实验目的1、了解8086内部响应中断的机制;掌握中断向量的作用。

2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。

3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验内容1、编制程序:拨动单脉冲开关,“”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上注意:给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。

三、实验原理图本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。

同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整四、实验步骤1、连线说明:B4区:CS244、BLE ——C1区:GNDB4区:RD(IO区)——A3区:INTAA3区:INTR ——B2区:单脉冲B4区:JP57(D0..D7) ——A3区:JP41B4区:JP52(IN0..7) ——F4区:JP27(1..8)D3区:CS、A0、A1 ——A3区:CS1、A0、A1D3区:PC0、PC1 ——F5区:KL1、KL2D3区:JP20、B、C ——F5区:A、B、C2、运行程序3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

五、实验代码EXTRN InitKeyDisplay:NEAR, Display8:NEAR_STACK SEGMENT STACKDW 100 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'BUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA, SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL InitKeyDisplay ;对键盘、数码管控制器8255初始化CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: LEA SI,BufferCALL Display8CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1WriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HRETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1CALL LedDisplayDELAY: PUSH BXPUSH CXPUSH DIPUSH SIMOV CX,20DELAY1: LEA SI,BufferCALL Display8loop DELAY1POP SIPOP DIPOP CXPOP BXPOP AX六、实验思考题1.绘制本实验的详细实验电路图?微机原理上机实验(十二)实验报告实验十二:步进电机实验一、实验目的1、了解步进电机的基本原理,掌握步进电机的转动编程方法2、了解影响电机转速的因素有那些二、实验内容编写程序:使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。

步进电机控制课程设计报告

步进电机控制课程设计报告

(封面)XXXXXXX学院微机原理课程设计实验报告题目:院(系):专业班级:学生姓名:指导老师:时间:年月日课题名:步进电机控制一、课题内容和提示:编程提示:(1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋转。

调节输入脉冲的频率可改变步进电机的转速。

(2)编写程序使步进电机按正转10圈,反转5圈,再正转10圈,再反转5圈的规律旋转。

(3)调整延时参数,使步进电机的转动速度为每秒5转。

二、报告要求:每秒5转对应的延时参数是多少?,这个数字与微机的速度有什么关系?为什么?三、设计思路:(1)前言:步进电机具有控制简便、定位准确等特点。

随着科学技术的发展,在许多领域将得到广泛的应用。

鉴于传统的脉冲系统移植性不好,本文提出微机控制系统代替脉冲发生器和脉冲分配器,用软件的方法产生控制脉冲,通过软件编程可以任意设定步进电机的转速、旋转角度、转动次数和控制步进电机的运行状态。

以简化控制电路,降低生产成本,提高系统的运行效率和灵活性。

在此基础上提出了双三拍步进电机程序控制的硬件接口电路、程序流程图和汇编程序。

步进电机是自动控制系统中常用的执行部件。

步进电机的输入信号为脉冲电流,它能将输入的脉冲信号转换为阶跃型的角位移或直线位移,因而步进电机可看作是一个串行的数/模转换器。

由于步进电机能够直接接受数字信号,而不需数/模转换,所以使用微机控制步进电机显得非常方便。

(2)步进电机有以下优点:(1)通常不需要反馈就能对位置和速度进行控制;(2)位置误差不会积累;(3)与数组设备兼容,能够直接接收数字信号;(4)可以快速启停。

(3)步进电机的工作原理:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。

大学毕设论文__基于8086的步进电机控制论文课程设计

大学毕设论文__基于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. 扩展设计:可以在以上功能基础上,增加控制步进电机单步转动的开关;增加控制电机加速转动的开关;增加控制电机减速的开关。

步进电机课程设计

步进电机课程设计

步进电机控制设计摘要步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

步进电机控制系统以8086作为控制的核心元件,利用8255的C口控制步进电机,同时获取控制转动方向(即正转和反转),A口连接键盘,以选取不同档的移动速度,B口连接LED显示器,以显示当前的速度档,8253作为定时器,提供必要的时钟信号。

本课程设计报告通过步进电机的基本介绍、系统的软硬件设计(包括最小系统介绍、接口电路设计、延时程序设计、步进电机的驱动程序设计等几个主要模块)、完整的汇编语言程序等,我们完成了对步进电机系统的设计,并完成了相应的任务,如正转、反转、显示步数及设定速度等,使我们进一步掌握了汇编语言,也使我们能很好的把书本上的知识与实践相结合,大大提高了我们的动手能力。

关键词:步进电机,脉冲信号,方向控制,时钟信号目录1 绪论 (1)1.1课题描述 (1)1.2步进电机控制工作原理 (1)2 步进电机系统的总体设计 (2)2.1系统设计方框图 (2)2.2方框图的描述 (3)3 步进电机的软件设计 (7)3.1主程序流程图 (7)3.2中断子程序流程图 (7)3.3步进电机系统程序 (7)4 步进电机系统的总原理图及元器件清单 (9)4.1系统总原理图 (9)4.2元器件清单 (11)总结 (12)致谢 (13)参考文献 (14)1 绪论1.1 课题描述步进电机将脉冲信号转换成的机械角位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成比例,通过改变电脉冲频率,可在大范围内调速,同时,该电机还能快速起动、制动、反转.此外,步进电机易于实现与单片机机或其它数字元件接口,适用于数字控制系统,并可取得较高的控制精度,系统硬件实施比较简单。

这次数控原理的课程设计方案是基于单片机的步进电机运行控制系统。

基于8086步进电机课程设计

基于8086步进电机课程设计

皖西学院本科课程设计步进电机电机控制设计摘要:8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface,PPI),它是为Intel系列微处理器设计的配套电路,也可以用于其他微处理系统中。

通过它进行编程,芯片可工作于不同的工作方式。

在微型计算机系统中,用8255A作为接口是时,通长常不需要附加外部逻辑电路就可直接为CPU与外设之间提供数据通道,因此它得到了极为广泛的应用。

其次步进电机具有快速启动和停止的能力,它的步矩角和转速不受电压波动和负载变化的影响,也不受环境条件如:温度、气压、冲击和振动等影响,仅与脉冲频率有关。

它每转一周都有固定的步数,在不丢失步的情况下运行,其步矩误差不会长期累积。

正因为步进电机具有快速启动、精确步进以及能直接接收数字量的特点,所以在定位场合中得到了广泛的应用。

比如在打印机中,数控车床、自动记录仪表、数模交换装置和计算机等数字控制系统中。

随着微机的发展,步进电机的使用领域将更加广阔。

本次设计正是利用并介绍了可编程并行I/O接口芯片8255A为8086CPU与步进电机之间提供数据通道,通过芯片的A口输入,B口输出的方式来实现控制步进电机的停转、快慢及正反转。

关键词:可编程并行I/O接口芯片8255A;8086CPU;ULN2003A驱动芯片;步进电机目录1 课程设计题目及课题分析 --------------------------------------------------------------------------- 11.1课程设计题目----------------------------------------------------------------------------------- 11.2步进电机介绍----------------------------------------------------------------------------------- 11.4软硬件运行环境及开发工具----------------------------------------------------------------- 12 步进电机控制系统各部件功能原理介绍--------------------------------------------------------- 22.1设计原理及实现方法-------------------------------------------------------------------------- 22.1.1 步进电机控制原理-------------------------------------------------------------------- 22.1.2微机步进电机控制系统原理图 ----------------------------------------------------- 22.1.3 运行方式与方向的控制——循环查表法 ---------------------------------------- 32.1.4步进电机的停转及快慢控制——设置开关 -------------------------------------- 42.2步进电机控制设计流程图-------------------------------------------------------------------- 53 步进电机控制系统软件编写与仿真 --------------------------------------------------------------- 63.1 硬件设计与实现 ------------------------------------------------------------------------------- 63.2仿真结果----------------------------------------------------------------------------------------- 63.2.1 并行接口I/O芯片8255A ----------------------------------------------------------- 63.2.2 驱动部分与步进电机----------------------------------------------------------------- 73.2.3步进电机与外部开关 ----------------------------------------------------------------- 83.2.4 仿真结果-------------------------------------------------------------------------------- 83.3软件设计----------------------------------------------------------------------------------------- 93.3.1正向慢转子程序 ----------------------------------------------------------------------- 93.3.2正向快转子程序 ----------------------------------------------------------------------- 93.3.3反向慢转子程序 ---------------------------------------------------------------------- 103.3.4反向快转子程序 ---------------------------------------------------------------------- 103.3.5长延时子程序-------------------------------------------------------------------------- 103.3.6短延时子程序-------------------------------------------------------------------------- 114 系统调试与操作说明 -------------------------------------------------------------------------------- 124.1系统调试---------------------------------------------------------------------------------------- 124.2 操作说明 --------------------------------------------------------------------------------------- 125 课程设计总结与体会 -------------------------------------------------------------------------------- 13 致谢------------------------------------------------------------------------------------------------------ 14 参考文件献 ----------------------------------------------------------------------------------------------- 15 附录步进电机控制系统源程序---------------------------------------------------------------------- 16皖西学院本科课程设计1 课程设计题目及课题分析1.1课程设计题目步进电机控制设计,运用汇编语言编写程序对8255A控制,通过emu8086编译成.com文件并载入8086CPU中并用74LS373、74LS130、ULN2003A等一些列芯片通过连接实现对步进电机的控制。

微机原理课程设计 太阳能热水器控制 8086

微机原理课程设计 太阳能热水器控制 8086

J I A N G S U U N I V E R S I T Y微机系统与接口技术课程设计说明书题目:太阳能热水器的数显控制学院名称:机械工程学院专业班级:测控1401姓名学号:指导教师:2016 年12 月目录引言 (1)一、结构设计 (1)1.1温度传感器 (1)1.1.1 DS18B20数字温度传感器 (1)1.1.2 AD590温度传感器 (2)1.2水位传感器 (3)1.2.1开关式液位传感器 (3)二、硬件设计 (4)2.1功能分析 (4)2.1.1温度读取与显示 (4)2.1.2水位的读取与显示 (6)2.1.3低温保护功能 (6)2.1.4手动注水功能 (7)2.2存储器 (7)2.3总体接线 (8)三、程序设计 (9)3.1.2 手动注水子程序 (11)四、功能测试 (12)4.1低温保护功能测试 (12)4.2水位显示和手动注水功能测试 (14)五、总结 (17)参考文献 (18)原件清单 (19)微机系统与接口技术课程设计任务书一、设计目的:1、建立微机系统概念,加深对微机系统的理解和认识,提高微机系统的应用能力。

2、进一步学习和掌握微机程序设计方法,通过应用程序的编写和调试,学习程序的调试方法。

3、进一步熟悉违纪典型接口芯片的使用,接口及外部设备与系统的连接方法,二、题目:微机系统与接口技术应用系统的设计-------------太阳能热水器数显控制器三、设计要求:1、以8086(8088)CPU为主控单元,构建微机应用系统。

2、应用系统的硬件设计,画出电路原理图和线路连接图。

3、应用系统的软件设计,画出软件流程图,写出主要程序。

4、根据实验条件,进行微机应用系统的部分模拟调试工作,写出调试说明。

5、整理设计说明书,列出参考文献清单。

6、列出使用的元件和设备清单引言目前,中国已成为世界上最大的太阳能热水器生产国,年产量约为世界各国之和。

但是与之相配套的太阳能热水器控制器却一直处在研究与开发阶段。

微机原理步进电机控制课程设计报告

微机原理步进电机控制课程设计报告

河北科技大学课程设计报告学生姓名:学号:专业班级:课程名称:学年学期: 2 0 —2 0 学年第学期指导教师:2 0 年月课程设计成绩评定表目录一、设计题目……………………………………………………………….二、设计目的……………………………………………………………….三、设计原理及方案……………………………………………………….四、实现方法……………………………………………………………….五、实施结果……………………………………………………………….六、改进意见及建议……………………………………………………….七、设计体会……………………………………………………………….、一、设计题目编程实现步进电机的控制二、设计目的1.了解步进电机控制的基本原理2.掌握控制步进电机转动的编程方法3.了解8086控制外部设备的常用电路4.掌握8255的使用方法三、设计原理及方案设计原理步进电机驱动原理是通过对每相线圈中的电流的顺序切换实验中的步进电机有四相线圈,每次有二相线圈有电流,有电流的相顺序变化,来使电机作步进式旋转;驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速;利用 8255对四相步进电机进行控制;当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动;每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度一个步距角;当通电状态的改变完成一个循环时,转子转过一个齿距;四相步进电机可以在不同的通电方式下运行,常见的通电方式有单单相绕组通电四拍A-B-C-D-A…,双双相绕组通电四拍AB-BC-CD-DA-AB…,八拍A-AB-B-BC-C-CD-D-DA-A…等;通过编程对8255的输出进行控制,使输出按照相序表给驱动电路供电,则步进电机的输入也和相序表一致,这样步进电机就可以正向转动或反向转动;硬件连接图四.实现方法.步进电机控制程序流图.程序代码ASTEPEQU01H BSTEPEQU02H CSTEPEQU04H DSTEPEQU08H CODESEGMENT ASSUMECS:CODESTART:MOVDX,8003H;8255控制口地址MOVAL,82H;PA口输出,B口输入OUTDX,AL;写控制字K0:MOVDX,8000H;PA口地址MOVAL,0;输出低电平OUTDX,AL;电机停止转动MOVDX,8001H;PB口地址INAL,DX;读开关状态TESTAL,01H;PB0位K0=0吗JNZK1;不是零转K1JMPSTEP8;是零转单/双八拍工作方式K1:INAL,DX;读开关状态TESTAL,02H;PB1位K1=0吗JNZK2;不是零转K2JMPSTEP4;是零转双四拍工作方式K2:INAL,DX;读开关状态TESTAL,04H;PB2位K2=0吗JZSTEP41;是零转单四拍反转工作方式JMPK0;循环;单/双八拍工作方式:A→AB→B→BC→C→CD→D→DA→A STEP8:MOVBX,9000H;设置初始延时时间MOVDX,8000H;PA口地址MOVAL,ASTEPOUTDX,ALCALLDELAYMOVAL,ASTEP+BSTEPOUTDX,ALCALLDELAYMOVAL,BSTEPOUTDX,ALCALLDELAYMOVAL,BSTEP+CSTEPOUTDX,ALCALLDELAYMOVAL,CSTEPOUTDX,ALCALLDELAYMOVAL,CSTEP+DSTEPOUTDX,ALCALLDELAYMOVAL,DSTEPOUTDX,ALCALLDELAYMOVAL,DSTEP+ASTEPOUTDX,ALCALLDELAYJMPK0;双四拍工作方式:AB→BC→CD→DA→AB STEP4:MOVBX,5000H;设置延时时间MOVDX,8000H;PA口地址MOVAL,ASTEP+BSTEP;PA0PA1AB相输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,BSTEP+CSTEP;BC输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,CSTEP+DSTEP;CD输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,DSTEP+ASTEP;DA输出高电平OUTDX,ALCALLDELAY;调延时JMPK0;单四拍反转工作方式:D→C→B→A→D STEP41:MOVBX,1000H;设置延时时间MOVDX,8000H;PA口地址MOVAL,DSTEP;D输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,CSTEP;C输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,BSTEP;B;输出高电平OUTDX,ALCALLDELAY;调延时MOVAL,ASTEP;A输出高电平OUTDX,ALCALLDELAY;调延时JMPK0DELAYPROCNEAR;延时子程序PUSHCXMOVCX,BXDD1:NOPLOOPDD1POPCXRETDELAYENDP;延时子程序结束CODEENDS;代码段结束ENDSTART五.实施结果.操作步骤1、硬件测试WINXP步进电机2、在硬件测试通过后,要注意三个相一致1PNP地址和数据段中的端口地址;2控制字和接线;3代码段中的端口地址和接线;3、把程序代码烧进写实验箱中.运行结果1K0扳下表示启动,步进电机转动;K0扳下表示停止,步进电机停止;2K1扳下表示顺时针转,速度慢;3K2扳下表示逆时针,即倒转,速度快;六.改进意见及建议程序设计没有实现加速和减速,在步进电机的转动函数里,每次循环都改变延时的大小即可实现变速;延时时间依次变长则步进电机减速,延时时间依次变短则步进电机加速;再配合开关即可实现加速减速的任意控制;七.设计体会这次做的实验是一个比较综合的实验,实验中主要是微机原理的编程,但还涉及到步进电机的有关知识以及一些专业基础课的知识,所以要做好这次实验我们需要做的有很多;首先,在查找资料的过程中,我更加理解了8255在微型计算机中的重要作用,理解了8255的基本的编程结构和基本控制字的设计方法,也锻炼了自己的动手能力和创新意识;其次,在编写汇编程序过程中,由于早先对汇编语言学习的不扎实,我们遇到了很大的困难,但是随着对问题理解的逐渐深入,这些问题最终都一一化解了;通过这次步进电机控制代码的编写,让我有了一个更深刻的认识:要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的;在这个过程中,不仅提高了实际动手操作能力,培养了治学严谨的态度,激发了我学习此专业课程的兴趣,而且让我们深刻的体验到理论知识与实践经验的密切联系,要成为一个高技术人才,必须理论与实践两手都要硬;在设计时,对不同方案的构思、分析、比较到最后的方案确定,这些工作,可以增强了我们分析、解决问题的能力,培养了我们的创新意识;。

微型计算机控制技术课程设计 设计题目:步进电机控制系统概要

微型计算机控制技术课程设计   设计题目:步进电机控制系统概要

微型计算机控制技术课程设计设计题目:步进电机控制系统班级:电升本1103姓名:何世宁学号:29小型步进电机控制系统一、课程设计目的课程设计是本科教学全过程中的重要环节。

《微机应用系统设计与综合实验(实践)》课程设计主要培养我们自动化专业学生,运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生运用计算机编程语言综合编程能力、程序调试技能和微机系统接口综合应用及电路设计能力。

1、学习在PC系统中扩展简单的I/O接口的方法。

2、熟练掌握和运用汇编和C语言编写程序控制8255各口的输入输出,并正确带动数码管及步进电机;能熟练运用汇编和C语言实现8254的定时功能,以确保8255输出的脉冲频率稳定。

3、熟练掌握ISA总线配置方式下硬件实验的调试,并能独立的排除故障,以确保实验的顺利进行。

4、.巩固和加深课堂所学知识;5、学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;6、通过步进电机控制系统设计与制作,深入了解与掌握步进电机的运行方式、方向、速度、启/停的控制。

二、设计的题目名称及要求设计题目:小型步进电机控制系统设计。

设计要求:(1)分别用C语言和汇编语言编程完成硬件接口功能设计;(2)基于80x86微机接口硬件电路设计调试;(3)控制功能要求:小键盘给定分段速度,数码管显示当前步进电机启动与停止、方向、速度信息;(4)具有本地与远程(串行方式下)功能。

三、实验设备PC机一台(装有TDPIT软件)、唐都AEDK8688ET实验箱。

使用硬件:8086 PC,8255芯片,键盘数码管,步进电机驱动电路,步进电机。

系统设计:键盘采用实验板提供的4*4键盘,使用4个数码管实时显示系统当前状态。

四、设计的思想和实施方案4.1.2 步进电机的工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

微机原理课设 步进电机设计

微机原理课设 步进电机设计

学号:0120911360218课程设计题目步进电机学院自动化学院专业自动化班级自动化0902班姓名指导教师徐小强2012 年 1 月12 日课程设计任务书学生姓名:专业班级:自动化0902指导教师:徐小强工作单位:自动化学院题目:步进电机初始条件:用汇编语言设计一个步进电机的控制,在Proteus仿真环境下完成,功能上实现步进电机的基本功能。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 通过键盘控制步进电机的启动和停止,正转和反转;2. 编制完整的程序并调试;3.撰写符合学校要求的课程设计说明书,内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:1. 1月04日----1月05日查阅资料及方案设计2.1月06日----1月08日编程3.1月09日----1月10日调试程序4.1月11日----1月12日撰写课程设计报告5.1月13日上午准备答辩,下午正式答辩指导教师签名:年月日系主任(或责任教师)签名:年月日摘要步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

其种类比较多,分为机电式、磁电式及直线式三种基本类型。

磁电式步进电动机主要有永磁式、反应式和永磁感应子式3种形式。

它主要用于数字控制系统中,精度高,且运行可靠。

步进电动机目前已广泛地应用于数字控制系统中,如数模转换装置、数控机床、计算机外围设备、自动记录仪、钟表等之中,另外在工业自动化生产线、印刷设备等中亦有应用。

因此可知,步进电机在现代控制领域中起着非常重要的作用。

本次设计中,要求使用8086CPU作为主控制器,通过与外部接口芯片的配合工作,以实现控制步进电机的启动、停止、正转、反转等功能。

设计要求为,通过编写正确的汇编程序,并使用仿真软件PROTEUS进行该控制系统的仿真。

基于8086的计算机+步进电机控制

基于8086的计算机+步进电机控制

课程设计课程名称题目名称步进电机的角度控制(1)学生学院专业班级学号学生姓名指导教师2009年 6 月25日题目1:按要求控制步进电机,使步进电机每转360度停5秒;程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar step[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}void main(){int,I,j;outp(CON,0x81);while(1){for(j=0;j<12;j++){for(i=0;i<8;i++){outp(PC,step[i]);delay(5);}delay(200);}delay(5000);}}题目2:按要求实现键盘显示程序设计的程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,flag,num,key;uchar jiou;uchar a1,a2,a3,a4;void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);uchar keyscan();void main(){flag=0;jiou=0;outp(CON,0x81);while(1){display(a4,a3,a2,a1);key=keyscan();if(flag==1){flag=0;a4=a2;a3=a2;a2=a1;a1=key;}}}void display(uchar w4,uchar w3,uchar w2,uchar w1) {outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}uchar keyscan(){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=9;break;case 0x01:num=5;break;}while(temp!=0x03){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=0;break;case 0x01:num=6;break;}while(temp!=0x03){outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=1;break;case 0x01:num=7;break;}while(temp!=0x03){outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){flag=1;temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:num=2;break;case 0x01:num=8;break;}while(temp!=0x03){outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;display(a4,a3,a2,a1);}}}return num;}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}题目3:测试AD转换器的性能程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,flag,num,key;uchar jiou;uchar a1,a2,a3,a4;void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);void main(){outp(CON,0x81);while(1){uint dat;outp(0x00,0x0d);dat=inp(0x00);a3=dat/16;a4=dat%16;display(0,0,a3,a4);dat=inp(0x00);}}void display(uchar w4,uchar w3,uchar w2,uchar w1){outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--); }题目四:步进电机的角度控制(1)设计的程序如下:#include<conio.h>#define CON 0x63#define PA 0x60#define PB 0x61#define PC 0x62#define uchar unsigned char#define uint unsigned intuchar step[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};uchar table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xfb}; uchar xuan[]={0x7f,0xbf,0xdf,0xef};uchar temp,num,key;uchar jiou;int max;uchar set,clr,start;uchar ge,shi,bai;int ge1,shi1,bai1;int xianshi;int adc();void clear();void dianji(int degree);void delay(uint zz);void display(uchar w4,uchar w3,uchar w2,uchar w1);void keyscan();void main(){int tt,kk,chazhi;max=0;xianshi=0;tt=0;kk=0;chazhi=0;xianshi=0;jiou=0;ge=0;shi=0;bai=0;ge1=0;shi1=0;bai1=0;outp(CON,0x81);while(1){keyscan();if(set==1){ge=0;shi=0;bai=0;while(1){display(0,bai,shi,ge);keyscan();if(clr==1){clear();break;}if(start==1)break;}if(start==1){max=bai*100+shi*10+ge;while(clr!=1){kk=max/15*(adc())/0xff; //下一次的角度;tt=kk-(xianshi/15);//和上一次相差的度數;if(tt!=0)dianji(tt);keyscan();}clear();}}display(0,0,0,0);}}void display(uchar w4,uchar w3,uchar w2,uchar w1){bai1=xianshi/100;shi1=xianshi%100/10;ge1=xianshi%10;outp(PA,table[w1]);outp(PB,xuan[0]);delay(5);outp(PA,table[w2]);outp(PB,xuan[1]);delay(5);outp(PA,table[w3]);outp(PB,xuan[1]);delay(5);outp(PA,table[w4]);outp(PB,xuan[1]);delay(5);}void keyscan(){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;switch(temp){case 0x02:set=1;break;case 0x01:break;}while(temp!=0x03){outp(PB,0xef);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:clr=1;break;case 0x01:if(start==0){shi++;if(shi>9)shi=0;}break;}}while(temp!=0x03){outp(PB,0xdf);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:if(start==0){ge++;if(ge>9)ge=0;}break;case 0x01:start=1;break;}}while(temp!=0x03){outp(PB,0xbf);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){delay(5);temp=inp(PC);temp=temp&0x03;while(temp!=0x03){temp=inp(PC);temp=temp&0x03;if(set==1){switch(temp){case 0x02:break;case 0x01:if(start==0){bai++;if(bai>9)bai=0;}break;}}while(temp!=0x03){outp(PB,0x7f);temp=inp(PC);temp=temp&0x03;display(0,bai,shi,ge);}}}}void dianji(int degree) //电机程序,精度为15度{int i,j,k,l;if(degree>0){for(i=degree;i>0;i--){if(jiou==0){for(j=0;j<4;j++){outp(PC,step[j]);display(0,bai1,shi1,ge1);}jiou=1;goto loop_1;}if(jiou==1){for(k=4;k<8;k++){outp(PC,step[k]);display(0,bai1,shi1,ge1);}jiou=0;goto loop_1;}loop_1: xianshi=xianshi+15;display(0,bai1,shi1,ge1);}}if(degree<0){for(i=-(degree);i>0;i--){if(jiou==0){for(j=7;j>3;j--){outp(PC,step[j]);display(0,bai1,shi1,ge1);}jiou=1;goto loop_2;}if(jiou==1){for(k=3;k>-1;k--){outp(PC,step[k]);display(0,bai1,shi1,ge1);}jiou=0;goto loop_2;}loop_2: xianshi=xianshi-15;display(0,bai1,shi1,ge1);}}}void clear(){int huiwei;huiwei=-xianshi;huiwei=huiwei/15;if(huiwei!=0)dianji(huiwei);ge=0;bai=0;shi=0;xianshi=0;start=0;set=0;clr=0;}int adc() //ad转换函数{uint dat;outp(0x00,0x0d);dat=inp(0x00);display(0,bai1,shi1,ge1);dat=inp(0x00);return dat;}void delay(uint zz){uint x,y;for(x=zz;x>0;x--)for(y=110;y>0;y--);}系统设计说明:此系统运行后,如果没有按set键,按其他键不起任何作用;当按下set后,可以由相应的个位键、十位键、百位键,以每按一次加一的形式输入任意三位数。

步进电机设计实验开题报告

步进电机设计实验开题报告

步进电机控制电路设计论文题目步进电机控制电路的设计步进电机控制电路设计自动化专业微机原理课程设计开题报告附录:设计方案 一、总体方案本次设计采用8086作为控制的核心元件,利用8255的C 口控制步进电机,同时获取控制转动方向(即正转和反转),A 口连接键盘,以选取不同档的移动指导教师设计内容分析论证(可加附页)此次我们所设计的是一个步进电机控制系统,主要由8086CPU ,并行输入/输出接口8255A ,4相步进电机,7段数码管,及一些其他相关元件设计而成。

可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,使同样由开关来选择工作模式,这次设计使用键盘来输入运转步数。

运转时,用4位7段数码管来输出剩余步数。

最后根据思路所设计出来的硬件图设计相适应的软件,详细的设计方案见附录。

系统总体设计思路:本次设计采用8086作为控制的核心元件,利用8255的C 口控制步进电机,同时获取控制转动方向(即正转和反转),A 口连接键盘,以选取不同档的移动速度,B 口连接LED 显示器,以显示当前的速度档,8253作为定时器,提供必要的时钟和延时信号。

系统对8255的A 口进行查询,确定用户设置的速度档,并通过8255的B 口显示速度档。

延迟时间通过8255的C 口的第四位循环送节拍信号来驱动步进电机工作。

循环送节拍信号的方向有C 口高四位中的第5位确定,此第5位在硬件上与控制转动方向开关相连。

设计条件要求要求:键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;并能将相应的数据用四位数码管显示。

目标:能基本实现步进电机的前进和后退,能调节电机的速度,我们从中能掌握自己课本中的所学,可以把自己学到的知识很到的运用的实验中,培养我们的实践能力。

设计进程安排三人任务分配:第一周设计任务:(1)明确课题对程序功能,运算精度等方面的要求及硬件条件;(2)把复杂问题分解为若干模块,确定各模块处理方法,画出流程图;第二周设计任务:(3)编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序;(4)对程序进行汇编,调试和修改,直到程序运行结果正确为止; (5)实验报告的整合与撰写。

步进电机控制设计课设报告

步进电机控制设计课设报告

步进电机控制设计课设报告引言步进电机是一种电动机根据控制信号的脉冲数进行角度移动的设备。

它具有精准的位置控制、高转矩和低功耗等优点,被广泛应用于各个领域。

本次课设旨在设计一套步进电机控制系统,通过编程控制步进电机的转动角度,实现不同工作环境下步进电机的精确控制。

设计方案我们基于`Arduino`开发板和`EasyDriver`驱动板来搭建步进电机控制系统。

材料准备1. Arduino开发板2. EasyDriver驱动板3. 步进电机4. 电源5. 连接线硬件连接1. 首先,将Arduino开发板与EasyDriver驱动板通过引脚连接线连接好。

其中,Arduino的数字引脚9、10、11分别连接到EasyDriver驱动板的Step、Dir、EN引脚,GND与GND相连,以及VCC与5V相连。

2. 将EasyDriver驱动板与步进电机连接。

EasyDriver的A和B引脚分别与步进电机的两个相连接。

软件编写1. 首先,在Arduino开发环境中创建一个新的项目。

然后,导入`AccelStepper`库,该库提供了进行步进电机控制的相关功能。

2. 在代码中初始化步进电机对象,并设置电机类型为`FULL3WIRE`,也就是设置步进电机的引脚数为3。

3. 设置步进电机的速度和加速度等参数。

这些参数可以根据实际需求进行调整。

4. 在主循环中,通过调用步进电机对象的`runSpeedToPosition`函数来控制电机的转动角度。

参数为目标位置的步数。

如果希望电机一直转动,则可以将参数设置为`NAN`。

5. 最后,上传代码到Arduino开发板中运行。

实验过程及结果我们将步进电机控制系统连接好后,通过编写相应的代码进行控制。

首先,我们进行了简单的步进电机测试,调整电机的速度和加速度参数,分别观察电机的转动情况。

通过调整参数,我们成功实现了不同速度和加速度下电机的转动控制。

接着,我们设计了一个简单的应用场景来测试步进电机的精确控制能力。

步进电动机正反转控制系统设计..

步进电动机正反转控制系统设计..

课程设计报告题 目 步进电动机正反转控制系统设计课 程 名 称 微机原理及应用院 部 名 称 机电工程学院专 业 电气工程及其自动化班 级学 生 姓 名学 号课程设计地点 工科楼 C304课程设计学时 20指 导 教 师金陵科技学院教务处制摘要步进电机是工业生产过程控制及仪表中的主要控制元件之一。

在数字控制系统中,由于它可以直接接受计算机输出的数字信号,而不需要进行数/模/转换,用起来非常方便。

此次微机原理的课程设计,是对计算机系统和微处理器以及汇编语言、外围芯片的研究学习。

本设计就是基于8086CPU的微机控制,利用汇编语言、74273、74LS244芯片、ULN2003A驱动等综合应用实例,连接上硬件驱动电机电路,通过对按键输入信号的检测实施对步进电动机正反转的控制。

关键词:8086CPU;正反转;步进电机目录摘要……………………………………………………………………………………一、概述………………………………………………………………………………1.1 课程设计的目的………………………………………………………………1.2 课程设计的要求………………………………………………………………二、总体设计方案及说明……………………………………………………………2.1 系统总体设计方案……………………………………………………………2.2 系统工作框图…………………………………………………………………三、系统硬件电路设计………………………………………………………………3.1 8086微处理器的简介………………………………………………………3.2 74273和74LS244芯片的简介………………………………………………3.3 ULN2003A的简介…………………………………………………………3.4 步进电机的工作原理…………………………………………………………3.5 微型处理器最小控制模块…………………………………………………3.6按键输入模块………………………………………………………………3.7驱动电动机模块…………………………………………………………3.8系统电路原理图…………………………………………………………四、系统软件部分设计………………………………………………………………4.1 系统流程图……………………………………………………………………4.2 系统软件源程序………………………………………………………………五、课程设计体会…………………………………………………………………5.1 系统调试………………………………………………………………………5.2 问题分析与解决方案…………………………………………………………5.3 心得体会………………………………………………………………………六、参考文献…………………………………………………………………………附录:原理图……………………………………………………………………………一、概述1.1 课程设计的目的通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安电子科技大学《微型计算机原理》课程设计题目基于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.5ULN2003A (6)5.674LS273 (7)5.774LS138 (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驱动,而需要用相应的驱动芯片,因此,控制系统直接控制电机驱动即可控制步进电机。

转向分别用逆时针转动片段转速和顺时针转动片段则通过调用延时子程序,当调用延时较长的子程序时,则步进电机转速慢,当调用延时较短的子程序时,步进电机转速快。

设计流程图如下:图4-1 总体设计流程图本步进电机控制系统通过四个键盘来控制步进电机的正转、反转、启动和停止以及转速,步进电机旋转的角度取决于键盘接通时间长短,接通时间越长,旋转角度越大,其功能表如表4—1所示。

表4-1 键盘功能表5 设计原理及功能说明在该步进电机控制系统中,需要接收键盘信息并识别,然后将数据传送给步进电机使步进电机旋转,采用8086CPU和8255接口芯片是可行的[3],系统框图如图5-1所示图5-1系统方框图5.1 励磁线圈及其励磁顺序图表5-3励磁顺序表5.2 工作原理:4相步进电机示意图四相步进电机示意图见下左图,转子由一个永久磁铁构成,定子分别由4组绕组构成图5-4电机定子和转子示意图图5-5电气连接示意图当S1连通电源后,定子磁场将产生一个靠近转子为N极,远离转子为S 极才磁场,这样的定子磁场和转子的固有磁场发生作用,转子就会转动,正确地S1、S4的送电次序,就能控制转子旋转的方向。

例如:若送电的顺序为S1闭合断开S2闭合断开S3闭合断开S4闭合断开,周而复始的循环,在定子和转子共同作用下,电机就瞬时针旋转:图5-6电机旋转模拟图若送电的顺序为S4闭合断开S3闭合断开S2闭合断开S1闭合断开,周而复始的循环,则电机就逆时针旋转,原理同理。

图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),GND5.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所示8255与CPU连接部分:8255能并行传送8位数据,所以其数据线为8根D0~D7。

由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。

A0、A1的组合与端口关系如表2.2.2所示。

此外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口的输入与输出。

相关文档
最新文档