单片机汇编语言步进电机转速控制系统

合集下载

51单片机汇编语言步进电机转速控制系统

51单片机汇编语言步进电机转速控制系统

大连理工大学本科设计报告题目:步进电机转速控制系统设计课程名称:单片机综合设计学院(系):电子信息与电气工程学部专业:班级:学号:学生姓名:成绩:2013 年7 月20 日题目:步进电机转速控制系统设计1 设计要求1)利用ZLG7290的键盘控制直流电机(或步进电机的转速、转向);2)也可以利用ADC模块(与电位器配合),利用电位器控制转速;3)利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。

2 设计分析及系统方案设计实验要求使用步进电机作为被控制对象,由ZLG7290做人机对话平台,利用单片机的P1(8位)和P3(部分口线)构造系统。

实验最终实现功能、设计思路以及方案设计如以下几个小节所述。

2.1 系统设计实现功能根据设计要求、现有设备以及知识储备,完成功能如下:①由按键S1~S8实现转速切换,其中S1~S4正转,S5~S8反转②按键S16作为停止键,按下S10后步进电机停止转动,再按S1~S16步进电机按照按键对应转速以及转向转动③按键S10作为复位键,当按下S10后,无论当前处于何种状态,系统恢复至初始态④8为LED数码管显示当前步进电机转速(speed=0/1 1~4),转速前0表示正转,1表示反转⑤若按下停止键,数码管显示当前转速;若按下复位键,数码管显示初始态speed=002.2 设计思路本次的设计是LED显示与步进电机相结合以及若干功能键的组合的一种设计。

根据之前学习的按键中断显示实验和定时器实验,使用INT0和INT1,INT0作为按键中断,INT1作为定时器。

在主程序中实现LED初始显示、定时器计时初始、按键中断初始。

INT0中断调用中断服务子程序实现对按键键值的判断,并根据相应的按键值实现对应步进电机的变化,并显示该按键对应的转速。

INT1定时器中断根据INT0的按键键值,对定时器设定相应的初值,实现步进电机按规定的转速转动。

对于按键停止,则是利用中断优先级,当INT0的中断优先级高时,系统进入中断,此时INT1停止计时,也就实现了步进电机的停止,当改变定时器与按键中断的优先级时,即把INT0设为低优先级,INT1设为高优先级,步进电机重新开始转动。

51单片机步进电机控制汇编语言程序

51单片机步进电机控制汇编语言程序

51单片机步进电机控制汇编语言程序;本程序是通过秒信号触发中断来实现的,要求中断程序必须在1S内执行完毕;步进电机转速控制是通过8255输入信号在每次执行中断程序内调整控制信号的循环次数来实现的CODE SEGMENTASSUME CS:CODESTART: PUSH CSPOP DS;数据段和代码段共用一个地址JMP MAINNUM DB 08H,04H,02H,01H; 定义循环控制信号DAT1 DB 0H ;定义循环参量DAT2 DB 0H;---------初始化8253计数器-----------MAIN:MOV DX,203H;计数器0初始化,工作在方式3 MOV AL,36HOUT DX,ALMOV DX,200H;给计数器0赋计数初值960H(2400)MOV AL,60H ;低8位OUT DX,ALMOV AL,09H ;高8位OUT DX,ALMOV DX,203H;计数器1初始化,工作在方式3 MOV AL,76HOUT DX,ALMOV DX,201H;给计数器1赋计数处值80H(128) MOV AL,80H ;低8位OUT DX,ALMOV AL,00H ;高8位OUT DX,AL;-----------初始化8255--------------- MOV DX,021BH;A口输入,B口输出MOV AL,90HOUT DX,AL;-----------初始化向量表8号中断-------- MOV AX,0;ES:DIMOV ES,AXMOV DI,20H;4*8=32MOV AX,OFFSET INTP;装载中断函数的偏移地址MOV ES:[DI],AXMOV AX,8100H;MOV ES:[DI+2],AX;-------------初始化8259A--------------MOV DX,210H;ICW1初始化MOV AL,13H;上升沿触发,单片,要ICW4OUT DX,ALMOV DX,211H;ICW2初始化MOV AL,08H;初始化中断类型码范围,08-0F对应INT0-INT7OUT DX,ALMOV DX,211H;ICW4初始化MOV AL,01H;OUT DX,AL;--------------打开中断-------------- MOV DX,211H;打开8259A八号中断IN AL,DXAND AL,0FEH;1111 1110OUT DX,ALSTI;开CPU中断,IF=1MOV BX,OFFSET NUM;取控制信号的偏移地址MOV SI,0 ;将SI循环归零LOP: MOV AX,0JMP LOP;死循环,等待中断到来;------------中断程序开始----------INTP PROC FAR;LTP:MOV DX,219HMOV AL,[BX+SI]OUT DX,ALINC SICMP SI,04HJNZ NEXTMOV SI,0NEXT: MOV CX,03FFFH ;简短延时LOOP $CALL REFRESH;调用按键扫描子程序DEC DAT1 ;循环次数减一JNZ LTP ;循环次数减为零时跳出循环MOV AL,DAT2;重新填装DAT1的值MOV DAT1,ALMOV DX,210H;中断结束命令MOV AL,20HOUT DX,ALIRET;中断返回INTP ENDP;-------按键扫描程序---------- REFRESH PROC FARMOV DX,218HIN AL,DXCMP AL,00HJNZ NEXT1 ;若输入信号为00,则循环参量置为1 MOV DAT2,01HNEXT1: CMP AL,01HJNZ NEXT2 ;若输入信号为01,则循环参量置为2 MOV DAT2,02HNEXT2: CMP AL,03HJNZ NEXT3 ;若输入信号为11,则循环参量置为3 MOV DAT2,03HNEXT3: CMP AL,07HJNZ NEXT4 ;若输入信号为111,则循环参量置为4 MOV DAT2,04HNEXT4 MOV DAT1,0HRETREFRESH ENDP;-------按键扫描结束----------CODE ENDSEND START。

单片机课程设计-单片机控制步进电机

单片机课程设计-单片机控制步进电机

单片机课程设计-单片机控制步进电机单片机课程设计单片机控制步进电机一、引言在现代自动化控制领域,步进电机以其精确的定位和可控的转动角度,成为了众多应用场景中的关键组件。

而单片机作为一种灵活、高效的控制核心,能够实现对步进电机的精确控制,为各种系统提供了可靠的动力支持。

本次课程设计旨在深入研究如何利用单片机来有效地控制步进电机,实现特定的运动需求。

二、步进电机的工作原理步进电机是一种将电脉冲信号转换为角位移或线位移的开环控制电机。

它由定子和转子组成,定子上有若干个磁极,磁极上绕有绕组。

当给绕组依次通电时,定子会产生磁场,吸引转子转动一定的角度。

通过控制通电的顺序和脉冲数量,可以精确地控制电机的转动角度和速度。

三、单片机控制步进电机的硬件设计(一)单片机的选择在本次设计中,我们选用了常见的_____单片机。

它具有丰富的引脚资源、较高的运算速度和稳定的性能,能够满足控制步进电机的需求。

(二)驱动电路为了驱动步进电机,需要使用专门的驱动芯片或驱动电路。

常见的驱动方式有全桥驱动和双全桥驱动。

我们采用了_____驱动芯片,通过单片机的引脚输出控制信号来控制驱动芯片的工作状态,从而实现对步进电机的驱动。

(三)接口电路将单片机的引脚与驱动电路进行连接,需要设计合理的接口电路。

接口电路要考虑信号的电平匹配、抗干扰等因素,以确保控制信号的稳定传输。

四、单片机控制步进电机的软件设计(一)控制算法在软件设计中,关键是确定控制步进电机的算法。

常见的控制算法有脉冲分配法和步距角细分法。

脉冲分配法是根据电机的相数和通电顺序,按照一定的时间间隔依次输出控制脉冲。

步距角细分法则是通过在相邻的两个通电状态之间插入中间状态,来减小步距角,提高电机的转动精度。

(二)程序流程首先,需要对单片机进行初始化设置,包括引脚配置、定时器设置等。

然后,根据用户的输入或预设的运动模式,计算出需要输出的脉冲数量和频率。

通过定时器中断来产生控制脉冲,并按照预定的顺序输出到驱动电路。

单片机控制步进电机系统(C语言源代码)

单片机控制步进电机系统(C语言源代码)

题目:单片机控制步进电机系统摘要很多工业控制设备对位移和角度的控制精度要求较高, 一般电机很难实现, 而步进电机可精确实现所设定的角度和转数。

本设计主要是运用51 单片机控制六线4相步进电机系统, 由单片机产生驱动脉冲信号, 控制步进电机以一定的转速向某一方向产生一定的转动角度。

同时能够利用单片机实现电机的正、反转及速度控制,并能在数码管上显示出相应的速度。

本文中给出了该系统设计的硬件电路,软件设计,人机交互等。

并对各个功能模块进行了详细的说明。

主要内容包括以下几个方面:单片机控制步进电机的一般原理。

电机驱动及控制的实现。

控制系统整体设计以及模块划分说明。

原理图。

代码。

关键词:单片机;步进电机;系统;驱动AbstractMany Industrial control equipment have a highly requirement in displacement and angle with control accuracy, the most motor can't carry out .but the step motor can carry out the displacement and angle that you enactmented in accuracy. This design mainly used SCM to control step motor system.The step motor is formed six lines and four phasic.Through SCM generate the drive pulse signal.Control stepper motor through a certain speed in a direction to get a certain degree of rotation angle.At the same time, It can use SCM to realization of the motor is , reverse and speed control. and showed the speed in the digital tube.In this paper, given the design of the system hardware circuit,software design, human-computer interaction and so on.and it given the details description of each functional module.the main contents include the following:(1) The general principles of signal_chip controlling step motor.(2) The realization of motor driving and controlling(3) Control system overall design and description module division(4) Schematic Diagram(5) CodeKey Words:SCM; stepper motor; system; drive目录引言41 单片机控制步进电机的一般原理41.1 步进电机41.1.1 步进电机介绍41.1.2 步进电机分类51.1.3 技术指标51.1.4 步进电机工作原理51.2 单片机72 步进电机驱动实现82.1简介82.2驱动选择83 系统硬件设计93. 1 单片机控制电机93.2 键盘93.3 显示部分10程序流程图11总结12致谢13参考文献13附录13C代码13引言目前,在工业控制生产以及仪器上应用十分广泛。

单片机pwm控制步进电机原理

单片机pwm控制步进电机原理

单片机pwm控制步进电机原理单片机(Microcontroller)是一种集成了处理器、存储器和输入输出接口的微型计算机系统,它在现代电子技术中有着广泛的应用。

而步进电机(Stepper Motor)是一种特殊的电机,通过控制电流的方向和大小,可以使电机按照一定的步进角度进行旋转。

那么,如何利用单片机的PWM(Pulse Width Modulation)功能来控制步进电机呢?本文将从基本原理、控制方法以及相关应用方面进行介绍和分析。

我们来了解一下PWM的基本原理。

PWM是一种用脉冲信号来模拟模拟量的技术,通过改变脉冲信号的占空比(High电平的时间占整个周期的比例),可以实现对电压、电流等模拟量的精确控制。

在单片机中,PWM信号一般通过定时器/计数器模块来生成,通过改变定时器的计数值和比较值,可以控制PWM信号的频率和占空比。

接下来,我们介绍如何利用单片机的PWM功能来控制步进电机。

步进电机一般需要控制电流的方向和大小,以实现旋转。

通过控制步进电机的控制信号,我们可以实现电机的正转、反转、停止等动作。

而单片机的PWM功能可以通过改变输出的脉冲信号的频率和占空比,来控制步进电机的转速和转向。

在具体的控制步骤中,首先需要通过单片机的IO口来控制步进电机的驱动器。

驱动器一般包括多个MOS管和电流检测电阻,通过控制MOS管的导通和断开,可以实现电机的正转和反转。

而电流检测电阻可以用于检测步进电机的电流,以保护电机不被过载。

我们需要配置单片机的定时器/计数器模块,来生成PWM信号。

定时器/计数器模块一般有多个通道,每个通道可以独立生成一个PWM信号。

通过改变定时器的计数值和比较值,可以调整PWM 信号的频率和占空比。

需要注意的是,步进电机的驱动器一般有两个输入端口,一个用于控制正转,一个用于控制反转。

因此,我们需要至少两个PWM信号来控制步进电机的转向。

我们需要在单片机的程序中编写相应的控制算法。

通过改变PWM 信号的频率和占空比,可以实现步进电机的转速和转向控制。

步进电机控制(单片机C语言)

步进电机控制(单片机C语言)

步进电机控制(单⽚机C语⾔)模块⼆简单应⽤实例调试任务2 步进电机控制(H22)⼀、任务要求⽤单⽚机P1端⼝控制步进电机,编写程序输出脉冲序列到P1⼝,控制步进电机正转、反转,加速,减速。

⼆、任务⽬的1.了解步进电机控制的基本原理。

2.掌握控制步进电机转动的编程⽅法。

三、电路连线框图步进电机电流⼩于0.5A时可采⽤ULN2003A进⾏驱动(反相)四、原理控制说明步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。

切换是通过单⽚机输出脉冲信号来实现的。

所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转⽅向。

步进电机的转速应由慢到快逐步加速。

电机驱动⽅式可以采⽤双四拍(AB→BC→CD→DA→AB)⽅式,也可以采⽤单四拍(A→B→C→D→A)⽅式,或单、双⼋拍(A→AB→B→BC→C→CD→D→DA→A)⽅式。

控制时公共端是接在VCC上的,所以实际控制脉冲是低电平有效。

单⽚机的P1⼝输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。

五、程序框图# include#define Astep 0x01#define Bstep 0x02#define Cstep 0x04#define Dstep 0x08unsigned char dly_c;void delay(){unsigned char tt,cc;cc = dly_c; //外循环次数tt = 0x0; //内循环次数do{do {}while(--tt);}while(--cc);}void main(){dly_c = 0x10;// 双四拍⼯作⽅式while(1){P1= Astep+Bstep;delay();P1= Bstep+Cstep;delay();P1= Cstep+Dstep;delay();P1= Dstep+Astep;delay();if (dly_c>3) dly_c --; // 加速控制};。

基于单片机控制的步进电机调速系统的设计51单片机步进电机调速

基于单片机控制的步进电机调速系统的设计51单片机步进电机调速

基于单片机控制的步进电机调速系统的设计51单片机步进电机调速基于单片机控制的步进电机调速系统的设计|51单片机步进电机调速前言步进电机最早是在1920年由英国人所开发。

1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。

以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。

在生产过程中要求自动化、省人力、效率高的机器中。

步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。

步进电机可以直接用数字信号驱动,使用非常方便。

一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。

步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。

在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。

因此非常适合于单片机控制。

步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。

步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。

传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

第一章步进电机概述第一节步进电机的特点一般步进电机的特点有以下三个特点:1)一般步进电机的精度为步进角的3-5%,且不累积。

2)步进电机的力矩会随转速的升高而下降。

当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。

单片机控制步进电机转动程序设计_概述及说明

单片机控制步进电机转动程序设计_概述及说明

单片机控制步进电机转动程序设计概述及说明1. 引言1.1 概述在现代工业和科技领域中,步进电机常被用于各种自动化设备和精密控制系统中。

步进电机以其精准的定位和可控性而被广泛应用于数控机床、印刷设备、医疗仪器等领域。

单片机是一种高度集成的微处理器,具有强大的计算能力和丰富的外设接口,可以为步进电机提供有效的控制信号和驱动能力。

本文将介绍单片机对步进电机转动程序设计的概念、原理和实现过程,并进行相关实验与结果分析。

通过深入了解单片机与步进电机之间的关系,我们可以更好地理解并合理设计步进电机转动程序,提高整个系统的稳定性和效率。

1.2 文章结构本文分为五个主要部分。

引言部分旨在说明文章背景、目的及结构安排,从而使读者对文章内容有清晰的认识。

接下来将介绍单片机控制步进电机转动程序设计的相关概念、原理和要点,并详细描述硬件准备与连接配置。

然后,将着重阐述步进电机驱动程序的设计与编码实现过程。

随后,将介绍转动程序的测试方法和优化技巧。

最后,通过实验数据的分析和讨论,总结结论并展望未来针对问题的研究方向及相关工程应用前景。

1.3 目的本文的目的是探讨单片机控制步进电机转动程序设计的相关要点,并提供具体的硬件连接配置、驱动程序设计和优化方法。

通过阅读本文,读者将能够了解并应用单片机在步进电机控制中的原理和技巧,从而实现更加精确和可靠的步进电机转动控制。

同时,本文还旨在为有关领域研究者提供有关步进电机转动程序设计的参考资料,并预测其未来在工程应用中可能展示出来的前景及意义。

2. 单片机控制步进电机转动程序设计:2.1 步进电机概述:步进电机是一种将电动机转换为角位移输出的装置。

与直流电机不同,步进电机可以精确地控制角度和位置。

它由多个绕组(相)构成,每个绕组都被称为一个相位。

通过在不同的相之间交替通电,可以使步进电机转动一个固定的角度。

2.2 单片机控制步进电机原理:单片机是一种微处理器芯片,它具有强大的计算和控制能力。

基于单片机的步进电机转速控制全解

基于单片机的步进电机转速控制全解

电子器件市场调研与系统设计实践专业:***班级:姓名:学号:指导教师:****大学****学院**** 年 **月**日基于单片机的步进电机调速与正反转控制系统1 系统要求步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。

随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。

本设计基于单片机控制的步进电机设计课题是以单片机为主控制模块,从而实现电机的启停、正反转和调速的目的的一个设计课题。

在课题设计之前,通过互联网了解到了当前步进电机的发展状况及发展前景。

同时也了解了当今最先进的步进电机所具备的功能,方便为课题设计提供参考和借鉴;最后,通过画原理框图的形式,以最直观的方式为整个课题设计制定了流程及要求。

1.1 设计目的《电子器件市场调研与系统设计实践》是本专业的重要实践教学环节,强调实际应用技能训练。

结合自动化专业系列课程的学习,培养我们对电子器件的认知,锻炼我们的市场调研能力,加深我们对自动化专业系列课程知识的掌握。

通过课程设计环节培养学生与人交往、独立思考和处理问题的能力。

1.2 设计内容及要求本次课程设计所选的步进电机是四相步进电机,采用的方法是利用单片机控制步进电机的驱动。

步进电机是一种将电脉冲转化为角位移的执行机构。

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

本次课程设计就是通过改变脉冲频率来调节步进电机的速度的,并且通过数码管显示其转速的级别。

步进电机控制实验c语言程序,用AT89C51单片机控制步进电机的汇编源程序

步进电机控制实验c语言程序,用AT89C51单片机控制步进电机的汇编源程序

步进电机控制实验c语⾔程序,⽤AT89C51单⽚机控制步进电机的汇编源程序:单⽚机(2540)源程序(50)步进电机(282)汇编语⾔(64)下⾯程序完成的主要功能:实现的正反转,加速、减速;显⽰电机转速(转速级别)和⼯作状态(正转、反转、不转)。

源程序SPEED EQU 10H ;SPEED为转速等级标志,共7级,即1~7FX EQU 11H ;FX 为⽅向标志COUNT EQU 12H ;COUNT次数标志ORG 0000HAJMP MAINORG 0003H ;外部中断0⼊⼝地址,加速⼦程序AJMP UPORG 0013H ;外部中断1⼊⼝地址,减速⼦程序AJMP DOWNORG 000BH ;定时器0中断⼊⼝地址,控制中断次数来达到控制转速 AJMP ZDT0ORG 0030HMAIN: MOV SP,#60HMOV TMOD,#01H ;⼯作于定时、软件置位启动,模式1(16 位计时器)MOV TH0,#0CFHMOV TL0,#2CHMOV COUNT,#01HSETB ET0 ;定时/计数器允许中断CLR IT0 ;外部中断为电平触发⽅式,低电平有效CLR IT1SETB EX0 ;外部允许中断SETB EX1SETB EA ;开总中断MOV R1,#11H ;四相单四拍运⾏,共阳数码管⽅向显⽰8,速度值显⽰0MOV SPEED,#00HMOV FX,#00HXIANS: MOV A,SPEEDMOV DPTR,#LEDMOVC A,@A+DPTR ;查表获取等级对应数码管代码MOV P2,A ;第⼆个数码管显⽰转速等级MOV A,FX ;准备判断转向CJNE A,#11H,ELSMOV P0, #0F9H ;第⼀个数码管显⽰ 1,表⽰正转AJMP QDELS: CJNE A,#00H,ZHENGMOV P0,#0C0H ;第⼀个数码管显⽰ 0,表⽰不转AJMP QDZHENG: MOV P0,#0BFH ;第⼀个数码管显⽰-,表⽰反转QD: JB P3.4,DD ;P3.4 接启动开关 K1,P3.4=1 时启动CLR TR0 ;停⽌定时/计数器MOV P0,#0C0H ;第⼀个数码管显⽰ 0,表⽰不转MOV P2,#0C0H ;第⼆个数码管显⽰ 0,表⽰转速为 0 MOV SPEED,#00H ;重新赋初值MOV FX,#00HAJMP QDDD: MOV A,SPEEDJNZ GO ;A 不等于 0,即初始速度不为零,则转移到 GO CLR TR0 ;停⽌定时/计数器AJMP QDGO: SETB TR0 ;开启定时/计数器ACALL DELAYAJMP XIANSDELAY: MOV R6,#10 ;延时⼦程序DEL1: MOV R7,#250HERE1: DJNZ R7, HERE1DJNZ R6,DEL1RET。

基于单片机的步进电机调速系统设计

基于单片机的步进电机调速系统设计

基于单片机的步进电机调速系统设计摘要:随着科学技术水平的日益提高,生活水平的逐步提高,平稳,噪音低的步进电机逐步走进生活、学习和办公的各个领域。

这次步进电机调速系统的设计引进了加、减速和正、反转按键控制功能,同时也用数码管显示步进电机转速的7个不同的等级,用彩色二极管显示电机的正转,反转,停止和运行。

通过编写程序烧录到单片机然后给步进电机输入信号进而得以控制步进电机的速度和加速度,从而实现单片机对步进电机调速系统的控制。

关键词:步进电机;调速系统;单片机1引言当今社会各行各业的崛起、发展、繁荣都已经离不开电子电路,手机,电脑,电梯已经成为当今人类离不开的生活必须品,而电机是这些电子电气产品中不可或缺的器件,所以对电机的控制以及电机的精准运行显得尤为重要,本次设计将围绕电机的正转反转,转速等级,以及电机启动停止的控制展开系统的设计。

2设计思路这次步进电机调速系统设计整体可以划分为三个模块:单片机基本单元电路,外围电路和程序编写。

单片机系统的基本单元电路为晶振电路和复位电路,其中晶振电路由两个电容和一个晶振构成,在单片机基本单元电路中晶振电路中的两个电容原件有快速其中和稳定频率的作用;复位电路包含两种,其中一种为上电复位电路,另一种为按键与复位电路。

外围电路由三个模块构成,其中P0口接四个不同颜色的发光二极管实现停止、运行、正反转的显示;P2口接数码管,用来显示步进电机转速的不同等级;P3口分别接有四个不同功能的按键,为加速键,减速键,启动键和反转键;P1口通过74LS04反向器与达林顿管ULN2003相接从而启动步进电机的运行转动。

通过上网查阅资料,编写测试各个子程序块,然后连接组合整理成完整的运行程序,实现对步进电机调速的控制。

3硬件电路80C51单片机基本单元电路。

包含晶振电路和复位电路。

复位电路中当RST 引脚加高电平复位信号时,单片机内部就执行复位操作,当复位信号变为低电平时,单片机便开始执行程序。

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

大连理工大学本科设计报告题目:步进电机转速控制系统设计课程名称:单片机综合设计学院(系):电子信息与电气工程学部专业:班级:学号:学生姓名:成绩:2013 年7 月20 日题目:步进电机转速控制系统设计1 设计要求1)利用ZLG7290的键盘控制直流电机(或步进电机的转速、转向);2)也可以利用ADC模块(与电位器配合),利用电位器控制转速;3)利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。

2 设计分析及系统方案设计实验要求使用步进电机作为被控制对象,由ZLG7290做人机对话平台,利用单片机的P1(8位)和P3(部分口线)构造系统。

实验最终实现功能、设计思路以及方案设计如以下几个小节所述。

2.1 系统设计实现功能根据设计要求、现有设备以及知识储备,完成功能如下:①由按键S1~S8实现转速切换,其中S1~S4正转,S5~S8反转②按键S16作为停止键,按下S10后步进电机停止转动,再按S1~S16步进电机按照按键对应转速以及转向转动③按键S10作为复位键,当按下S10后,无论当前处于何种状态,系统恢复至初始态④8为LED数码管显示当前步进电机转速(speed=0/1 1~4),转速前0表示正转,1表示反转⑤若按下停止键,数码管显示当前转速;若按下复位键,数码管显示初始态speed=002.2 设计思路本次的设计是LED显示与步进电机相结合以及若干功能键的组合的一种设计。

根据之前学习的按键中断显示实验和定时器实验,使用INT0和INT1,INT0作为按键中断,INT1作为定时器。

在主程序中实现LED初始显示、定时器计时初始、按键中断初始。

INT0中断调用中断服务子程序实现对按键键值的判断,并根据相应的按键值实现对应步进电机的变化,并显示该按键对应的转速。

INT1定时器中断根据INT0的按键键值,对定时器设定相应的初值,实现步进电机按规定的转速转动。

对于按键停止,则是利用中断优先级,当INT0的中断优先级高时,系统进入中断,此时INT1停止计时,也就实现了步进电机的停止,当改变定时器与按键中断的优先级时,即把INT0设为低优先级,INT1设为高优先级,步进电机重新开始转动。

此时添加一个对INT0位地址的查询,若有按键即正/反转的4档转速所对应的按键,步进电机开始重新转动。

对于复位功能,则同样是利用按键键值的判断,在对应键值下控制电机初始化。

2.3 系统方案设计系统总设计方案框图如下所示:图1.1 系统总框图3 系统电路图见附录4 外围接口模块硬件电路功能描述本设计主要用到的器件是AT89C51、ZLG7290B和步进电机。

4.1 AT89C51AT89C51的主要参数如下表所示:型号存储器定时器I/0 串行口中断速度(MH)其它特点E²PROM ROM RAM89C51 4K 128 2 32 1 6 24 低电压AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。

其引脚如图1.2所示。

图1.2 单片机的引脚排列ZLG7290AT89C51UL2003按键输入LED显示管脚说明如下:VCC:供电电压GND:接地P0口: 8位漏级开路双向I/O口,每脚可吸收8TTL门电流;P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

P3口也可作为AT89C51的一些特殊功能口,如下所示:P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

4.2 ZLG7290BZLG7290B是数码管动态显示驱动、键盘扫描管理芯片。

接口采用I2C结构。

内部寄存器有13个单元00H-0DH:1)系统寄存器(地址00H),第0位称作按键有效位,为1表示按键按下,为0表示没有按键操作,并且有按键按下的时候在ZLG7290B的/INT引脚会产生一个低电平的中断请求信号。

2)键值寄存器(地址01H),如果按下的是普通键,键值寄存器就保存按键对应的兼职(1-56)。

3)连击计数器(02H),就是芯片为普通键提供的一种连击计数功能,当按下某一按键就可以产生连续的中断请求信号。

4)功能键值寄存器(地址03H),功能按键不产生键值,但是在按下和抬起都会产生中断请求信号。

5)命令寄存器(地址07H和08H),向命令寄存器送入相关的控制命令可以实现段寻址,下载显示数据和控制闪烁等功能。

6)闪烁控制寄存器(地址0HCH),闪烁控制寄存器决定闪烁的频率和占空比。

7)扫描位数寄存器(地址0DH),扫描位数寄存器决定着ZLG7290B动态扫描显示的位数,取值0-7,对应的显示1-8位。

8)显示缓冲寄存器(地址10H-17H),八个显示缓冲寄存器直接决定着数码管上显示的字形和显示的位置。

ZLG7290B的引脚图如下:图1.3. ZLG7290B引脚逻辑图4.3 步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

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

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

使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

(一)步进电机的静态指标术语1、相数:产生不同对N、S磁场的激磁线圈对数。

常用m表示。

2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数。

3、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。

(二)步进电机动态指标及术语:1、最大空载起动频率:电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。

2、最大空载的运行频率:电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。

3、电机正反转控制:当电机绕组通电时序为D-DC-C-CB-B-BA-A-AD时为正转,通电时序为AD-A-AB-B-BC-C-CD-D时为反转。

如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

图1.4是该四相反应式步进电机工作原理示意图。

图1.4四相步进电机步进示意图5 主程序中主要变量定义变量名称RAM单元/寄存器功能SDA P3.3 IIC数据总线SCL P3.4 IIC时钟线RST P3.5 IIC复位线BA P1.0 步进电机驱动BB P1.1 步进电机驱动BC P1.2 步进电机驱动BD P1.3 步进电机驱动WSLA 70H 取器件地址(写)RSLA 71H 取器件地址(读)DISDA 20H 源数据块首地址DISCON 08H 写入数据个数DATA_1 30H 变量区首地址6 系统软件中各个子程序的功能描述6主程序程序流程图见附录7程序清单SDA BIT P3.3 SCL BIT P3.4 RST BIT P3.5 BA BIT P1.0 BB BIT P1.1 BC BIT P1.2 BD BIT P1.3 WSLA EQU 70H RSLA EQU 71H DISDA EQU 20H DISCON EQU 08H DATA_1 EQU 30H ORG 8000H LJMP 8100HORG 8003H LJMP INT_7290;按键中断入口地址ORG 801BHLJMP TI_INT;定时器中断入口地址ORG 8100H;********主程序开始************* ;INT0实现按键中断,INT1用于定时器;******************************* START: MOV SP,#60HCLR RST ;复位LCALL DELAYSETB RSTSETB EASETB EX0CLR IT0 ;开INT0中断SETB PX0 ; 高优先级MOV TMOD,#10H ;定时器1设;为模式1MOV TH1,#00HMOV TL1,#00HSETB ET1 ;开INT1中断SETB TR1CLR ASETB F0 ;初始标识位MOV R1,#10H ;节拍初始MOV R5,#08H;******************************* ; 相序表;******************************* MOV 10H,#08H ;D 正转MOV 11H,#0CH ;DCMOV 12H,#04H ;CMOV 13H,#06H ;CBMOV 14H,#02H ;BMOV 15H,#03H ;BAMOV 16H,#01H ;AMOV 17H,#09H ;ADMOV 18H,#09H ;AD 反转MOV 19H,#01H ;AMOV 1AH,#03H ;ABMOV 1BH,#02H ;BMOV 1CH,#06H ;BCMOV 1DH,#04H ;CMOV 1EH,#0CH ;CDMOV 1FH,#08H ;D;******************************* ; 建立变量缓冲区(30H~37H); 显示SPEED=00;******************************* MOV DATA_1,#00HMOV DATA_1+1,#00HMOV DATA_1+2,#12HMOV DATA_1+3,#17HMOV DATA_1+4,#16HMOV DATA_1+5,#16HMOV DATA_1+6,#15HMOV DATA_1+7,#14H;******************************* ; 通过查表建立显示缓冲区;(20H~27H);******************************* MOV DPTR,#LEDSEGMOV R7,#DISCONMOV R0,#DISDAMOV R1,#DATA_1LOOP1: MOV A,@R1MOVC A,@A+DPTRMOV @R0,AINC R1INC R0DJNZ R7,LOOP1;******************************* ; 写入数据;******************************* LOOP: MOV R7,#DISCONMOV R2,#10HMOV R3,#WSLAMOV R0,#DISDALCALL WRNBYTLCALL DELAYSJMP $ ;等待中断;******************************* ; 字形码;******************************* LEDSEG:DB 0FCH,60H,0DAH,0F2HDB 66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EHDB 9CH,7AH,9EH,8EHDB 0FAH,1EH,12H,00HDB 0B6H,0CEH,0DEH,7AH;S P E D;******************************* ; 选择相速(INT1);******************************* TI_INT:PUSH ACCMOV A,29H ;判断键值J0: CJNE A,#00H,J1MOV TH1,#00HMOV TL1,#00HSETB F0;F0高电平正转SJMP OUTPUT ;输出步进J1: CJNE A,#01H,J2MOV TH1,#00HMOV TL1,#00H ;档1SETB F0SJMP OUTPUTJ2: CJNE A,#02H,J3MOV TH1,#60HMOV TL1,#60H ;档2;不同按键设置不同速度,;正反转各设四档SETB F0SJMP OUTPUTJ3: CJNE A,#03H,J4MOV TH1,#90HMOV TL1,#90H ;档3SETB F0SJMP OUTPUTJ4: CJNE A,#04H,J5MOV TH1,#0D0HMOV TL1,#0D0H ;档4SETB F0SJMP OUTPUTJ5: CJNE A,#05H,J6MOV TH1,#00HMOV TL1,#00H ;档1CLR F0SJMP OUTPUTJ6: CJNE A,#06H,J7MOV TH1,#60HMOV TL1,#60H ;档2CLR F0SJMP OUTPUTJ7: CJNE A,#07H,J8MOV TH1,#90HMOV TL1,#90H ;档3CLR F0SJMP OUTPUTJ8: MOV TH1,#0D0HMOV TL1,#0D0H ;档4CLR F0SJMP OUTPUT OUTPUT:MOV A,P1 ;步进电机转ANL A,#0FH ;取低四位MOV A,@R1MOV P1,AINC R1DJNZ R5,OUTJB F0,CWISE;判断正/反 MOV R1,#18H ;反转SJMP NUMCWISE: MOV R1,#10H ;正转NUM: MOV R5,#08HOUT: POP ACCRETI;*******************************;拆分;******************************* CF: PUSH 02HPUSH DPHPUSH DPLMOV DPTR,#LEDSEGMOV R2,AANL A,#0FHMOVC A,@A+DPTRMOV R3,A ;存低4位MOV A,R2SWAP AANL A,#0FHMOVC A,@A+DPTRMOV R4,A ;存高4位POP DPLPOP DPHPOP 02HRET;*******************************;延时程序;******************************* DELAY: PUSH 00HPUSH 01HMOV R0,#00HDELAY1: MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY1POP 01HPOP 00HRET;******************************* ; 7290中断;******************************* INT_7290: PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL DELAY;按键消抖LCALL RDKEY;读键值NOP ;用于观察读入键值CJNE A,#10H,AKEY1 PANDUAN: SETB PT1 ;标志位CLR PX0;交换优先级,用于停止后再继续工作AKEY: JB P3.2,$ ;查询LCALL DELAYLCALL RDKEYCJNE A,#0AH,AKEY1SJMP PANDUANAKEY1: JC INPUT;此时为档速设定键SJMP RESTART INPUT: CJNE A,#05H,NEXT;判断正/反转NEXT: JNC WISELCALL CFMOV 20H,R3MOV 21H,R4MOV 21H,#0FCH;0,正转表示SJMP OVERWISE: SUBB A,#04HLCALL CFMOV 20H,R3MOV 21H,R4MOV 21H,#60H;1,反转表示SJMP OVER RESTART: LCALL CFMOV 20H,R3MOV 21H,R4OVER: LCALL SHOWSETB PX0;重新将INT0的优先级置高POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETI;******************************* ; 读键值;******************************* RDKEY: MOV R0,#28HMOV R7,#04HMOV R2,#00HMOV R3,#WSLAMOV R4,#RSLALCALL RDADDMOV A,29HRET;******************************* ; 显示程序;******************************* SHOW: MOV R7,#02HMOV R2,#10HMOV R3,#WSLAMOV R0,#DISDALCALL WRNBYTLCALL DELAYRET;***************************** ;通用的I2C通讯子程序(略);***************************** END8系统调试运行结果说明、分析所出现得问题,设计体会与建议8.1系统调试运行结果运行程序后,LED显示屏上显示“speed=00”。

相关文档
最新文档