步进电机实验微机原理
- 格式:doc
- 大小:187.50 KB
- 文档页数:10
第1篇一、实验目的1. 熟悉步进电机的工作原理和特性。
2. 掌握步进电机的驱动方式及其控制方法。
3. 学会使用常用实验设备进行步进电机的调试和测试。
4. 了解步进电机在不同应用场景下的性能表现。
二、实验设备1. 步进电机:选型为双极性四线步进电机,型号为NEMA 17。
2. 驱动器:选型为A4988步进电机驱动器。
3. 控制器:选型为Arduino Uno开发板。
4. 电源:选型为12V 5A直流电源。
5. 连接线、连接器、电阻等实验配件。
三、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机。
它具有以下特点:1. 转动精度高,步距角可调。
2. 响应速度快,控制精度高。
3. 结构简单,易于安装和维护。
4. 工作可靠,寿命长。
步进电机的工作原理是:通过控制驱动器输出脉冲信号,使步进电机内部的线圈依次通电,从而产生步进运动。
四、实验步骤1. 搭建实验电路(1)将步进电机连接到驱动器上,确保电机线序正确。
(2)将驱动器连接到Arduino Uno开发板上,使用连接线连接相应的引脚。
(3)连接电源,确保电源电压与驱动器要求的电压一致。
2. 编写控制程序(1)使用Arduino IDE编写程序,实现步进电机的正转、反转、调速等功能。
(2)通过串口监视器观察程序运行情况,调试程序。
3. 调试步进电机(1)测试步进电机的正转、反转功能,确保电机转动方向正确。
(2)调整步进电机的转速,观察电机运行状态,确保转速可调。
(3)测试步进电机的步距角,确保步进精度。
4. 实验数据分析(1)记录步进电机的正转、反转、调速等性能参数。
(2)分析步进电机的运行状态,评估其性能。
五、实验结果与分析1. 正转、反转测试步进电机正转、反转功能正常,转动方向正确。
2. 调速测试步进电机转速可调,调节范围在1-1000步/秒之间。
3. 步距角测试步进电机的步距角为1.8度,与理论值相符。
4. 实验数据分析步进电机的性能指标符合预期,可满足实验要求。
微机原理步进电机课程设计一、课程目标知识目标:1. 让学生掌握微机原理在步进电机控制中的应用,理解步进电机的结构、原理及其特点。
2. 使学生了解步进电机与微控制器之间的接口技术,掌握步进电机的驱动程序编写方法。
3. 让学生掌握步进电机速度和位置控制的基本算法,并运用到实际项目中。
技能目标:1. 培养学生运用微机原理解决实际问题的能力,学会编写和调试步进电机控制程序。
2. 培养学生的动手实践能力,能独立完成步进电机的组装、调试和故障排查。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对微机原理和步进电机控制技术的兴趣,培养其探索精神和创新意识。
2. 培养学生严谨、认真的学习态度,养成良好的实验操作习惯。
3. 增强学生的环保意识,关注步进电机在节能环保领域的应用。
本课程针对高年级学生,课程性质为理论与实践相结合。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果。
教学过程中,注重培养学生的实际操作能力和团队协作精神,使学生在完成课程设计任务的过程中,达到知识、技能和情感态度价值观的全面提升。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 微机原理基础:回顾微控制器的基本原理,重点讲解微控制器与步进电机的接口技术,涉及课本第3章相关内容。
2. 步进电机原理与结构:介绍步进电机的种类、结构、原理及特点,对应课本第5章内容。
3. 步进电机驱动技术:讲解步进电机的驱动电路设计,包括驱动芯片的选型、接口电路设计等,参考课本第6章相关内容。
4. 步进电机控制算法:学习步进电机的速度和位置控制算法,如PID控制、闭环控制等,结合课本第7章内容。
5. 实践操作:分组进行步进电机的组装、调试及控制程序编写,巩固理论知识,培养实际操作能力。
教学大纲安排如下:第1周:微机原理基础回顾,了解步进电机接口技术;第2周:学习步进电机原理与结构,选型及参数了解;第3周:步进电机驱动技术学习,驱动电路设计;第4周:步进电机控制算法学习,编写控制程序;第5周:实践操作,步进电机组装、调试及故障排查;第6周:课程设计总结,成果展示及评价。
步进电机控制实验报告一、实验要求利用P0输出脉冲序列,74LS244输入开关量,开关K2-K8控制步进电机转换(分6挡),K0、K1控制步进电机转向。
必须要K2-K8中一开关和K0、K1中一开关同时为‘1’时步进电机才启动,其他情况步进电机不工作。
步进电机驱动原理是通过对它每线圈中的电流的顺序切换来使电机作步进式旋转。
驱动电路又脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
微电脑控制步进电机最合适。
二、试验目的1、了解步进电机控制的基本原理。
2、掌握控制步进电机转动编程方法。
三、步进电机工作原理步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。
给定一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。
目前常用步进电机的步距角大多为1.8度(俗称一步)或0.9度(俗称半步)。
以步距角为0.9度的进步电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9度;给两个脉冲信号,步进电机就转过1.8度。
以此类推,连续给定脉冲信号,步进电机就可以连续运转。
由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了广泛的应用。
步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;三是步进电机,它有多种控制原理和型号,现在常用的有反应式、感应子式、混合式等。
步进电机的速度控制是通过输入的脉冲频率快慢实现的。
当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。
还可以通过频率的改变而提高步进电机的速度或位置精度。
大连理工大学本科设计报告(计算机原理接口实验综合设计)题目:步进电机控制系统设计课程名称:计算机原理实验学院(系):电信专业:自动化班级:电自1301学号:201382062学生姓名:宁博成绩:2015年12月26 日题目:步进电机1. 设计要求利用实验台上的开关K7控制步进电机的转向,利用电位器控制步进电机的转速。
具体要求如下:1.利用D8255A的PA0-PA3做输出,输出步进电机的相序、驱动步进电机工作,相序之间的时间决定着步进电机的转速,而间隔时间由延时程序中的CX寄存器的初值决定。
2.利用D8255A的PB7做输入控制转向,与K7连接。
其中K7做步进电机的转向控制,用ADC0809实现AD转换,利用电位器控制转速,程序运行时通过K7和电位器对步进电机实施动态控制;3.利用8253做秒脉冲发生器,产生约2秒的周期性方波信号。
其中CNT0做分频器:将1MHZ信号分频为100HZ;CNT1做秒脉冲输出(0.5HZ);4.利用386模块的主8259的MIR5做中断请求输入,将CNT1的OUT1秒信号方波作为中断请求信号,引发中断服务ISR;5.在中断服务程序中实现对步进电机的转速、转向实时控制。
方法如下:在ISR中,对D8255A的PB口进行一次输入操作,并根据输入的数据:1)对D7(与K7对应)位的数据为步进电机的转向控制;2)ADC0809读入的数据为步进电机的转速控制。
2 .设计分析及系统方案设计1.使用“寄存器间接寻址”的方式输出相序信号:将步进电机的相序数据定义在数据段当中,使用SI查表(间接寻址)获取相序数据。
其中查表顺序决定着电机转动方向;2.对8253进行编程,使OUT1输出2秒周期的脉冲方波信号。
为了便于调试,建议使用逻辑笔监测OUT1的输出;3.编制与中断相关的程序。
包括中断屏蔽字的设定、中断向量表的创建以及开中断的操作。
上述这些操作都应当加到程序的初始化中;4.编写中断服务程序ISR。
步进电机微机实验报告步进电机微机实验报告引言:步进电机是一种特殊的电动机,它可以根据输入的电脉冲信号精确地控制转动角度和速度。
在本次实验中,我们使用了微机控制步进电机的转动,通过编写程序和控制电路,实现了步进电机的正转、反转和定位功能。
本报告将详细介绍实验的目的、原理、实验过程和结果,并对实验中遇到的问题进行分析和解决。
一、实验目的本次实验的目的是通过微机控制步进电机的转动,掌握步进电机的工作原理和控制方法。
具体目标包括:1. 理解步进电机的工作原理和结构特点;2. 掌握步进电机的控制方式和驱动电路设计;3. 通过编写程序实现步进电机的正转、反转和定位功能;4. 分析实验中可能遇到的问题,并提出解决方案。
二、实验原理步进电机是一种将电脉冲信号转化为机械转动的电动机。
它由定子、转子和驱动电路组成。
定子上有多个绕组,每个绕组上有若干个磁极。
转子上有多个磁极,与定子的磁极相对应。
通过改变绕组的通电顺序,可以使转子按一定的步距转动。
步进电机有两种常见的控制方式:全步进和半步进。
全步进模式下,每个步进脉冲使电机转动一个步距角度;半步进模式下,每个步进脉冲使电机转动半个步距角度。
在实验中,我们将使用全步进模式进行控制。
三、实验过程1. 设计驱动电路:根据步进电机的额定电流和电压,设计合适的驱动电路。
选择合适的功率晶体管和电流限制电阻,确保电机能够正常工作。
2. 连接电路:按照驱动电路的设计连接步进电机和微机。
注意接线的正确性和稳定性。
3. 编写控制程序:使用合适的编程语言编写步进电机的控制程序。
程序需要实现电机的正转、反转和定位功能。
4. 调试程序:通过调试程序,确保电机能够按照预期的方式工作。
可以通过改变电脉冲的频率和脉冲数来调整电机的转速和转动角度。
5. 实验结果记录:记录电机的转动角度、转速和实际运行情况。
分析实验结果,验证实验的准确性和可行性。
四、实验结果与分析经过实验,我们成功实现了步进电机的正转、反转和定位功能。
一、实验目的1. 熟悉步进电机的工作原理和特性。
2. 掌握通过微机控制步进电机的基本方法。
3. 了解步进电机在微机控制下的应用。
二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是步进角固定,控制精度高,响应速度快。
步进电机的工作原理是:当给步进电机输入一定频率的脉冲信号时,电机就会以一定的步进角进行旋转。
步进电机的控制方式主要有以下几种:1. 单相控制:将步进电机绕组分为A、B、C、D四相,每相依次通电,实现电机的旋转。
2. 双相控制:将步进电机绕组分为A、B两相,通过改变A、B两相的通电顺序,实现电机的旋转。
3. 四相控制:将步进电机绕组分为A、B、C、D四相,通过改变A、B、C、D四相的通电顺序,实现电机的旋转。
三、实验设备1. 微机:一台2. 步进电机驱动器:一台3. 步进电机:一台4. 编程软件:例如Keil、IAR等5. 连接线:若干四、实验内容1. 步进电机基本特性测试(1)观察步进电机在不同脉冲频率下的转动情况。
(2)观察步进电机在不同脉冲数下的转动角度。
2. 步进电机单相控制(1)编写程序,实现步进电机单相控制。
(2)测试步进电机单相控制下的转动情况。
3. 步进电机双相控制(1)编写程序,实现步进电机双相控制。
(2)测试步进电机双相控制下的转动情况。
4. 步进电机四相控制(1)编写程序,实现步进电机四相控制。
(2)测试步进电机四相控制下的转动情况。
5. 步进电机转速控制(1)编写程序,实现步进电机转速控制。
(2)测试步进电机在不同转速下的转动情况。
6. 步进电机转向控制(1)编写程序,实现步进电机转向控制。
(2)测试步进电机正转和反转的情况。
五、实验步骤1. 连接步进电机驱动器和步进电机。
2. 在微机上编写程序,实现步进电机的基本控制。
3. 编写程序,实现步进电机单相、双相、四相控制。
4. 编写程序,实现步进电机转速和转向控制。
5. 运行程序,观察步进电机的转动情况。
微型计算机原理步进电机实验一、实验目的掌握步进电机的基本工作原理和控制方法,理解步进电机与微型计算机的接口原理。
二、实验器材1.电脑2.步进电机3.驱动器电路板4.接口电缆5.实验面包板6.杜邦线7.电源三、实验步骤1.搭建电路连接:将步进电机与驱动器电路板连接,然后将驱动器电路板与微型计算机的接口电缆连接。
2.编写控制程序:使用任何一种编程语言,编写通过微型计算机控制步进电机的程序。
3.载入程序:将编写好的控制程序载入微型计算机。
4.运行程序:执行控制程序,观察步进电机的运动情况。
四、实验内容1.观察步进电机是否正常运转。
2.改变控制程序中的参数,例如步进角度和转速,观察步进电机的运动情况。
3.尝试通过控制程序改变步进电机的运动方向。
4.尝试同时控制多个步进电机。
五、实验原理步进电机是一种能够按照指令进行旋转的电机。
它可以精确控制转动角度和转速,适用于需要精确定位的应用场景。
步进电机的控制通常使用驱动器来实现。
驱动器接受来自微型计算机的指令,然后根据指令来控制步进电机的转动。
步进电机的控制方法有多种,常见的有脉冲信号控制方法和磁场控制方法。
脉冲信号控制方法是通过给步进电机的控制端口发送不同的脉冲信号来实现转动控制;磁场控制方法是通过改变电磁铁的磁场来使步进电机转动。
在本实验中,我们使用脉冲信号控制方法来控制步进电机。
步进电机的转动是按照一定的角度来进行的,这个角度叫做步角。
步进电机通常有两种类型:单圈步进电机和多圈步进电机,它们的步角不同。
每接收到一个脉冲信号,步进电机就会转动一定的步角。
驱动器电路板通常有多个控制端口,用来接收控制信号。
控制信号可以是高电平或低电平的脉冲信号,通过给这些控制端口发送不同的脉冲信号,就可以控制步进电机的转动方向和转动步数。
六、实验问题与解答1.为什么要使用驱动器来控制步进电机?答:步进电机的控制需要精确的脉冲信号来实现转动控制,而微型计算机无法直接提供这种精确的信号。
实验七步进电机控制一、实验目的1、了解步进电机控制的基本原理2、掌握步进电机转动编程方法二、实验说明1.步进电机的基本原理:步进电机是一种静电脉冲信号转换成相应角位移或是线位移的电磁机械装置。
在没有超出负载的情况下,它能在一瞬间实现启动和停止。
步进电机的转动速度只取决于外加脉冲信号的频率和脉冲数,而不受负载变化的影响。
例如,给步进电机施加一个脉冲信号,步进电动机就会转过一个歩距角。
步进电机既能控制转动方向也能控制转动速度。
2.步进电机的驱动脉冲:步进电动机通过控制输入电流形成一个旋转磁场而工作,旋转磁场可以由1相励磁,2相励磁,3相励磁和5相励磁等方式产生。
本次实验使用时小型2相励磁步进电动机有两组励磁线圈是AB。
应用时只需要在两组线圈的4个端口分别输入规定的环形脉冲信号(通过控制单片A和B机的P0.0、P0.1、P0.2和P0.3这四个引脚的高低电平),就可以制定步进电动机的转动方向。
3.本次实验使用独立式键盘控制小型2相励磁步进电机,要求按下S1键,步进电机正传;按下S2键,步进电机反转;按下S3键,步进电机停转。
4.绘制仿真原理图时,步进电机选用“MOTOR-STEPPER”,功率放大集成电路选用“ULN2003A”,逻辑部件选用“74LS04”。
三、实验步骤1.先建立文件夹“ex7”,然后建立“ex7”工程项目,最后建立源程序文件“ex7.c”,输入如下源程序;//独立式键盘控制步进电机实验#include<reg51.h> //包含51单片机寄存器定义的头文件sbit S1=P1^4; //将S1位定义为P1.4引脚sbit S2=P1^5; //将S2位定义为P1.5引脚sbit S3=P1^6; //将S3位定义为P1.6引脚unsigned char keyval; //储存按键值unsigned char ID; //储存功能标号/*软件消抖延时(约50ms)*/void delay(void){unsigned char i,j;for(i=0;i<150;i++)for(j=0;j<100;j++);}/*步进电机转动延时,延时越长,转速越慢*/void motor_delay(void){unsigned int i;for(i=0;i<2000;i++);}/*步进电机正转*/void forward( ){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();}/*步进电机反转*/void backward(){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();}/*步进电机停转*/void stop(void){P0=0xff ; //停止输出脉冲}/*主函数*/void main(void){TMOD=0x01; //使用定时器T0的模式1EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0TH0=(65536-500)/256; //定时器T0赋初值,每计数200次(217微秒)发送一次中断请求TL0=(65536-500)%256; //定时器T0赋初值keyval=0; //按键值初始化为0,什么也不做ID=0;while(1){switch(keyval) //根据按键值keyval选择待执行的功能{case 1:forward(); //按键S1按下,正转break;case 2:backward(); //按键S2按下,反转break;case 3:stop(); //按键S3按下,停转break;}}}/*定时器T0的中断服务子程序:键盘扫描程序*/void Time0_serve(void) interrupt 1 using 1{TR0=0; //关闭定时器T0if((P1&0xf0)!=0xf0) //第一次检测到有键按下{delay(); //延时一段时间再去检测if((P1&0xf0)!=0xf0) //确实有键按下{if(S1==0) //按键S1被按下keyval=1;if(S2==0) //按键S2被按下keyval=2;if(S3==0) //按键S3被按下keyval=3;}}TH0=(65536-200)/256; //定时器T0的高8位赋初值TL0=(65536-200)%256; //定时器T0的低8位赋初值TR0=1; //启动定时器T0}2.用Proteus软件仿真经过Keil软件编译通过后,可利用Proteus软件仿真。
一、实验目的1. 了解步进电机的工作原理,掌握其控制方式和调速方法。
2. 学习使用微机对步进电机进行控制,提高微机应用能力。
3. 培养实验操作和数据分析能力。
二、实验设备及器件1. 微机一台2. 步进电机驱动器一台3. 步进电机一台4. 电源一个5. 连接导线若干三、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,具有定位精度高、响应速度快、控制简单等优点。
步进电机的工作原理是利用电机的磁极与定子磁极之间的磁力相互作用,通过控制脉冲信号的输入,使电机产生相应的角位移。
步进电机的控制方式主要有以下几种:1. 单拍控制:每输入一个脉冲信号,电机转动一个步距角。
2. 双拍控制:每输入两个脉冲信号,电机转动一个步距角。
3. 四拍控制:每输入四个脉冲信号,电机转动一个步距角。
步进电机的调速方法主要有以下几种:1. 脉冲频率调速:通过改变脉冲信号的频率,实现电机转速的调节。
2. 脉冲宽度调速:通过改变脉冲信号的宽度,实现电机转速的调节。
3. 脉冲分配调速:通过改变脉冲信号的分配方式,实现电机转速的调节。
四、实验步骤1. 将步进电机驱动器连接到微机,确保连接正确。
2. 将步进电机连接到驱动器,确保连接牢固。
3. 将电源连接到驱动器,确保电源电压符合要求。
4. 编写程序,实现步进电机的控制功能。
5. 调试程序,观察步进电机的转动情况。
6. 分析实验结果,总结实验经验。
五、实验程序以下是一个简单的步进电机控制程序,实现单拍控制方式:```c#include <reg51.h>#define STEP_PIN P2 // 定义步进电机控制端口void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void main() {while (1) {STEP_PIN = 0x01; // 输入第一个脉冲信号delay(100); // 延时STEP_PIN = 0x00; // 清除脉冲信号delay(100); // 延时}}```六、实验结果与分析1. 在实验过程中,通过改变脉冲信号的频率,实现了步进电机的调速。
大连理工大学本科设计报告(计算机原理接口实验综合设计)题目: 步进电机控制系统设计课程名称:计算机原理实验学院(系): 电信专业: 自动化班级: 电自1301学号: 201382062学生姓名: 宁博成绩:2015年12月26 日题目:步进电机1。
设计要求利用实验台上得开关K7控制步进电机得转向,利用电位器控制步进电机得转速。
具体要求如下:1.利用D8255A得PA0-PA3做输出,输出步进电机得相序、驱动步进电机工作,相序之间得时间决定着步进电机得转速,而间隔时间由延时程序中得CX寄存器得初值决定。
2.利用D8255A得PB7做输入控制转向,与K7连接。
其中K7做步进电机得转向控制,用ADC0809实现AD转换,利用电位器控制转速,程序运行时通过K7与电位器对步进电机实施动态控制;3.利用8253做秒脉冲发生器,产生约2秒得周期性方波信号。
其中CNT0做分频器:将1MHZ信号分频为100HZ;CNT1做秒脉冲输出(0。
5HZ);4.利用386模块得主8259得MIR5做中断请求输入,将CNT1得OUT1秒信号方波作为中断请求信号,引发中断服务ISR;5.在中断服务程序中实现对步进电机得转速、转向实时控制。
方法如下:在ISR中,对D8255A得PB口进行一次输入操作,并根据输入得数据:1)对D7(与K7对应)位得数据为步进电机得转向控制;2)ADC0809读入得数据为步进电机得转速控制。
2 .设计分析及系统方案设计1. 使用“寄存器间接寻址”得方式输出相序信号:将步进电机得相序数据定义在数据段当中,使用SI 查表(间接寻址)获取相序数据。
其中查表顺序决定着电机转动方向;2. 对8253进行编程,使O UT1输出2秒周期得脉冲方波信号。
为了便于调试,建议使用逻辑笔监测OUT1得输出;3. 编制与中断相关得程序。
包括中断屏蔽字得设定、中断向量表得创建以及开中断得操作、上述这些操作都应当加到程序得初始化中;4. 编写中断服务程序ISR 。
在IS R中读取D 8255A 得PB 口数据与AD转换得数据,然后进行数据分析、根据数据来调整CX 寄存器中得数据,因而改变步进电机得转速与转向。
3。
系统电路图。
外围接口模块硬件电路功能描述8253 OUT1 CLK1 GATE1/CSOUT0 CLK0 GATE01MHZ 脉冲K7输入 K6输入Vcc210H8255APA3 PA2 PA1 PA0 D7 ·· D0A1 A0/CSPB7 PB6、、、、 PB0LED3 LED2 LED1 LED0200H 步进 电机 5~12V BJ_IN4BJ_IN3 BJ_IN2 BJ_IN1 系统总线 K7 …… … K00、5HZ 方波 ADC0809模块 IN7 …IN0 VREF(-)/CS D7、、 D0总线区220H /IOW /IOR A0 A1 A1A0 500KH CLOC VCC VREF(+) ADDA ADDB ADDC 图 1 、1 实验参考逻辑电路 +5V8253具有三个独立得16位减法计数器,每个计数器可按照二进制或十进制计数,每个通道都有六种不同得工作方式。
8255有3个8位并行I/O 口。
具有3个通道3种工作方式得可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强、8255可作为主机与多种外设连接时得中间接口电路。
ADC 0809 就是8位逐次逼近式A/D 模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后得信号,只选通8路模拟输入信号中得一个进行A /D 转换,具有转换起停控制端。
模拟输入电压范围0~+5V,不需零点与满刻度校准。
5 主程序中主要变量说明 变量名称 内存单元功能 FLAG AX 转向标志 SPEED SI 可调转速 SD AL 默认转速6。
系统软件中各个子程序得功能描述子程序名称 入口参数 出口参数 功能 描述 se rvic e io8255_BAD C0809SD中断服务 DEL AY 无无 延时spe edin 无无 电机按照一定参数转起来7.主程序程序流程图8。
程序清单IO_AD DR ESStimeequ 210had_io equ220hdata segmentorder1db 01h,03h,02h,06h,04h,0ch,08h,09horder2 db 09h,08h、0ch,04h,06h,02h,03h,01hFLAG db ?speedﻩ dw 0300h,0380h,0480h,0580h,0680h,0780h,0880h SDﻩ dwﻩ0280h ;默认转速data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,IO_ADDRESSadd dx,03mov al,82h ;B端口输入,A、C输出,方式0 out dx,alclimov FLAG,00h ;标志位置0in al,021h;设置中断屏蔽字and al,11011111b;IR5out 021h,alpush ds ;设置中断向量表mov ax,0mov ds,axmov si,35hadd si,siadd si,simov ax,offsetservicemov [si],axpushcspop axmov [si+2],axpop dsmovdx,time ;分频得到0,5s脉冲add dx,03mov al,37h ﻩﻩ;计数器0,方式3,BCD码计数,先低后高outdx,almov dx,timeﻩﻩﻩ;计数器0设初值mov al,0out dx,alout dx,alﻩﻩﻩ;写初值10000mov dx,timeadd dx,03mov al,56hﻩﻩ;计数器1,方式3,二进制计数,低8位outdx,almov dx,time ;设计数器1初值为200inc dxmov al,200 ;产生0。
5s脉冲outdx,alstispeedin:cmp FLAG,01h ﻩ;转向,转速jz cccmov dx,IO_ADDRESSmov cx,08lea si,order1aaa: mov al,[si]out dx,alcall delayinc siloop aaajmp speedinccc: mov dx,IO_ADDRESSmov cx,08lea si,order2ddd: mov al,[si]out dx,alcalldelayinc siloop dddjmp speedinservice proc far ;中断服务子程序push axpushdxpush sipushbxmov dx,IO_ADDRESSinc dxin al,dxmov bl,alshl bl,1jnc mmm ﻩﻩﻩ ;CF=0,则跳转mov ﻩFLAG,01Hmovdx,ad_ioﻩﻩﻩ;ADC启动转换地址out dx,alﻩﻩﻩﻩ;启动ADCmov dx,ad_ioﻩﻩ;获取ADC EOC状态地址 add dx,2L1: inal,dxtest al,01hﻩﻩﻩﻩ;测试EOC=1?jz L1mov dx,ad_io ﻩ;读数据地址inc dxin al,dxcmpal,00Hjnzﻩcmp11mov SD,0280hjmp endsercmp11:cmpﻩal,10Hjncﻩcmp12mov si,WORD PTR speed[0]movﻩSD,sijmp endsercmp12:cmpal,20Hjnc cmp13mov si,WORD PTR speed[2]mov SD,sijmpendsercmp13:cmp al,30Hjncﻩ cmp14mov si,WORD PTR speed[4]mov SD,sijmp endsercmp14:cmp al,40Hjnc cmp15mov si,WORD PTR speed[6]movﻩSD,sijmp endsermmm: jmp cmp20cmp15:cmpﻩ al,50Hjnc cmp16mov si,WORD PTR speed[8]movﻩSD,sijmp endsercmp16: cmp al,60Hjncﻩcmp17movsi,WORD PTR speed[10] mov SD,sijmp endsercmp17:mov si,WORD PTR speed[12]mov SD,sijmp endsercmp20: mov dx,ad_ioout dx,almov dx,ad_ioadd dx,2L2: in al,dxtest al,01hjz L2mov dx,ad_ioincdxin al,dxmov ﻩFLAG,00Hcmp al,00Hjnzﻩcmp21movﻩ SD,0280Hjmpendsercmp21:cmp al,10Hjncﻩcmp22mov si,WORD PTR speed[0] movﻩSD,sijmp endsercmp22:cmp al,20Hjnc cmp23movsi,WORD PTR speed[2]movﻩSD,sijmp endsercmp23:cmpﻩal,30Hjncﻩcmp24mov si,WORD PTR speed[4] mov SD,sijmp endsercmp24:testﻩal,40Hjnc cmp25mov si,WORD PTR speed[6]mov SD,sijmp endsercmp25:cmp al,50Hjnc cmp26mov si,WORD PTRspeed[8]mov SD,sijmp endsercmp26:cmpﻩal,60Hjnccmp27mov si,WORD PTR speed[10]movﻩSD,sijmp endsercmp27:mov si,WORD PTR speed[12]movSD,siendser: ;发EOI命令mov al,20hout 20h,alpop bxpop sipop dxpop axstiiretservice endpdelayproc ;延时程序 push axpush cxpush dxmov dh,6x1: mov cx,SDx2: loop x2decdhjnz x1pop dxpopcxpop axretdelay endpcode endsend start9。
系统调试运行结果说明、分析所出现得问题,设计体会与建议运行结果说明:基本完成了任务要求,可以控制步进电机得转速与旋转方向、问题:通过寄存器间接寻址得方法使电机旋转,在此程序中电机运行状态得改变稍有延迟,原因就是在主程序中,状态得改变就是在一个完整得相序周期结束后才发生得,可能需要等待循环得过程,稍有延迟。