89C2051驱动步进电机的电路和源码
如何使用和检测89C2051单片机
如何使用和检测89C2051单片机AT89C2051 是爱特梅尔(ATMEL 公司AT89 系列的与AT89C51 相比,有良好的延续性,仅减少了存储容量和I/O 端口,其余配置与性能不减,是性能价格比最好的8 位单片机。
1)特性a)指令与MCS-51 100%兼容b) 内带2k 可编程闪速存储器(Flash Memory)c)电可擦写次数:1000 次d)数据保留时间:10 年e)工作电压范围Vcc:2.7-6V f)编程电压:5V g)16位定时器/计数器2 个h)中断源5 个i)可编程串行通道VART j)工作频率:0-24MHZ k)输出口可直接驱动LED 。
l)片内含模拟比较器m)低功耗的闲置和掉电模式n)标准的双列直插(DIP)2O 脚塑封0)15 条可编程双向I/0 端口2)引脚排列AT89C2051 的引脚排列如图1 所示。
图1 AT89C2051 的引脚排列如图2 所示是AT89C2051 的最小应用系统,对一般程序不是很大的场合这种电路是非常简洁方便的。
图2AT89C2051 最小应用系统检测AT89C2051 可用指针式万用表电阻检测管脚(10)(接红表笔)和其他各脚之间的电阻值。
下面给出的是用MF47 万用表Rx1k 档时测出的数据供参考。
红表笔接(10)脚,黑表笔接其余各脚的电阻值:(1)一30OkΩ、(2)一2OkΩ、(3)一2OkΩ、(5)一1OOkΩ、(6)一30OkΩ、(7)一2OkΩ、(8)一2OkΩ、(9)一2OkΩ、(10)一2OkΩ、(11)一2OkΩ、(12)一40kΩ、(13)一40kΩ、(14)-2OkΩ、(15)一16OkΩ、(16)一16OkΩ、(17)一2OkΩ、(18)一。
(整理)基于AT89C2051的步进电机驱动器系统电路原理
-------------
基于AT89C2051的步进电机驱动器系统电路原理
步进电机驱动器系统电路原理如图3:
图3 步进电机驱动器系统电路原理图
AT89C2051将控制脉冲从P1口的P1.4~P1.7输出,经74LS14反相后进入9014,经9014放大后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。
使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。
图中L1为步进电机的一相绕组。
AT89C2051选用频率22MHz的晶振,选用较高晶振的目的是为了在方式2下尽量减小AT89C2051对上位机脉冲信号周期的影响。
图3中的RL1~RL4为绕组内阻,50Ω电阻是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。
D1~D4为续流二极管,使电机绕组产生的反电动势通过续流二极管(D1~D4)而衰减掉,从而保护了功率管TIP122不受损坏。
在50Ω外接电阻上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。
与续流二极管串联的200Ω电阻可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。
-------------。
基于89C2051单片机控制的可控硅调速电路设计
基于89C2051单片机控制的可控硅调速电路设计本文主要介绍一种基于89C2051单片机控制的可控硅调速电路设计。
一、可控硅调速电路的基本原理可控硅调速电路是利用可控硅在导通状态时的阻值很小的特性,通过控制相位来控制电路中的电流大小,从而实现电机的调速。
其电路结构简单,成本低廉,广泛应用于工业控制中。
二、89C2051单片机的介绍89C2051单片机是一种高性能、低功耗的8位单片机,具有片内Flash存储器、片内RAM、定时/计数器、串行通信口等多种功能。
其特点是:易学易用,具有较高的可编程性和可扩展性。
三、可控硅调速电路设计步骤1.设计原理图可控硅调速电路的原理图分为两部分,分别是控制单元和功率单元。
其中,控制单元采用89C2051单片机,通过调节单片机端口的高低电平,控制可控硅的触发,从而控制电路中的电流大小。
功率单元包括变压器、可控硅和电机,其中变压器将交流电压转换成适合电机工作的交流低压,可控硅则控制交流电压的大小,从而实现电机的调速。
2.电路元件选型电路中各元件的选型需要根据具体的需求进行选择。
变压器需要选择符合电机工作电压和功率的产品;可控硅则需要根据具体的负载电流进行选择;电机也需要根据工作条件和负载要求进行选择。
3.编写程序编写程序需要根据具体的需求进行设计。
首先需要进行可控硅触发角度的计算,确定电路中可控硅的触发时机。
然后通过编写程序,控制单片机端口的高低电平,实现对可控硅的触发控制,从而控制电路中的电流大小,实现电机的调速。
四、可控硅调速电路设计注意事项1.元件选型时需要注意每个元件的参数和相互匹配的要求,以确保电路的稳定性和可靠性。
2.编写程序时需要注意程序的正确性和有效性,以确保控制的准确性和效率。
3.在搭建电路时需要注意电路的安全性和可靠性,以避免电路故障和安全事故的发生。
以上就是基于89C2051单片机控制的可控硅调速电路设计的相关介绍。
通过合理的电路设计和程序编写,可以实现电机的调速,并在工业生产和控制中得到广泛应用。
AT89C2051管脚图引脚图中文资料
AT89C2051管脚图引脚图中文资料98c2051外部引脚图:(可以直接拷入ASM程序文件中,作注释使用,十分方便)┏━┓┏━┓RET┫1 ┗┛20┣ VccRXD P3.0 ┫2 19┣ P1.7TXD P3.1 ┫3 18┣ P1.6-INT0 P3.2 ┫6 17┣ P1.5-INT1 P3.3 ┫7 16┣ P1.4T0 P3.4 ┫8 15┣ P1.3T1 P3.5 ┫9 14┣P1.2P3.7 ┫11 13┣P1.1 A1(+)X1┫4 12┣ P1.0 A0(-)X2┫5 10┣ GND┗━━━━┛——————————————————————————————————————【引脚电器性能】AT89C2051单片机的P口特点:P1口:P1口是一个8位双向I/O端口,其中P1.2~P1.7引脚带有内部上拉电阻,P1.0和P1.1要求外部上拉电阻。
P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。
P1口输出缓冲器可吸收20mA电流,并能直接驱动LED显示。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P2口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
P3口:P3.0~P3.5、P3.7是带有内部上拉电阻的7个双向I/O端口。
P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O口引脚而只读。
P3口输出缓冲器可吸收20mA电流。
对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口。
P3口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(Iil)。
AT89C51单片机的P口特点:P0口:是一个8位漏极开路输出型双向I/O端口。
作为输出端口时,每位能以吸收电流的方式驱动8 个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序或数据存储器时,它是时分多路转换的地址(低8位)/数据总线,在访问期间将激活内部的上拉电阻。
基于AT89C51单片机控制的步进电机
本文链接:/Periodical_dqpj201410150.aspx
170
消费电子1404-5.indd
170
2014-6-26
19:17:11
基于AT89C51单片机控制的步进电机
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 余晓敏 安阳钢铁集团有限责任公司运输部,河南安阳,455004 消费电子 Consumer Electronics Magazine 2014(10)
Computer AT89C51 单片机控制的步进电机
余晓敏 (安阳钢铁集团有限责任公司运输部,河南安阳 455004) 摘 要:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、 停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。这一线性关系的存在,加上步进电机只有 周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。本设计采用 AT89C51 对步进电机进行控制,通过 IO 口输出的具有时序的方波作为步进电机的控制信号,信号经过 A3967SLB 驱动步进电机;同时,用 4X4 的键盘来对电机的状态进行控制,并用数码管显示电机的转速,并且采用 74LS164 作 为 4 位单个数码管的显示驱动,从单片机输入信号。从而实现对步进电机的控制。 关键词:步进电机;单片机;驱动电路;键盘;数码管 中图分类号:TM383.6 文献标识码:A 文章编号:1674-7712 (2014) 10-0170-01 一、方案比较和论证 (一)对于步进电机驱动的设计 方案一:使用多个功率放大器件驱动电机:通过使用不 同的放大电路和不同参数的器件,可以达到不同的放大的要 求,放大后能够得到较大的功率。但是由于使用的是四相的 步进电机,就需要对四路信号分别进行放大,由于放大电路 很难做到完全一致,当电机的功率较大时运行起来会不稳定, 而且电路的制作也比较复杂。 方案二:使用 A3967SLB 驱动电机:A3967SLB 是驱动二 相步进电机专用驱动器。它的工作电压可达 30V,驱动电流达 750mA,一个 A3967SLB 即可驱动一台二相步进电机,可实现 8 细分驱动。另外,A3967SLB 还能提供完善的保护措施,包括 抑制瞬态电压, 过热保护、 防止电流直通、 欠电压自锁等功能。 通过对两种方案的比较得到:A3967SLB 和微处理器之间 不需要附加其他的接口电路, 该芯片采用 Easy Stepper 接口, 将 8 条控制线减少了 2 条(步长和方向),只要简单输入控 制步进电机的脉冲,其内嵌的转换器就可以实现对步进电机 的控制。A3967SLB 还需要一些电阻、电容来调整其工作参数, 整个驱动电路非常简单。所以在此我选择方案二。 (二)数码管显示电路的设计 方案一:并行接法:使用并行接法时要对每个数码管用 IO 口单独输入数据,占用资源较多。 方 案 二: 串 行 接 法: 设 计 中 要 显 示 4 位 数 字, 用 74LS164 作为显示驱动,其中带锁存,使用串行接法可以节 约 IO 口资源,但要使用 SIO,发送数据时容易控制。 通过对两种方案的比较得到:由于设计中用一块单片机 进行控制,资源有限,选择了方案二。另外,使用锁存也起 到节约资源的作用。 二、单片机控制步进电机原理 步进电机 2 个相邻磁极之间的夹角为 60°。线圈绕过相 对的 2 个磁极,构成一相(A-A′,B-B′,C-C′ )。磁极上 有 5 个均匀分布的矩形小齿,转子上没有绕组,而有 40 个小 齿均匀分布在其圆周上,且相邻 2 个齿之间的夹角为 9°。步 进电机的单片机控制步进电机控制的最大特点是开环控制,不 需要反馈信号。 因为步进电机的运动不产生旋转量的误差累积。 三、硬件设计 (一)基于 A3967SLB 步进电机驱动电路。MS1 和 MS2 是 步进电机细分分辨率选择的逻辑输入口;DIR 是电机运转方 向的选择口;RESET 用于重置芯片初始值, 屏蔽所有外部输出; STEP 为脉冲输入端口;OUT1A、OUT1B、OUT2A、OUT2B 为 H 桥 的两对输出端口。最大限流 Imax 是由取样电阻 Rs 和取样比 较器的输入参考电压 Vref 决定的,整个驱动电路非常简单。 其中 Imax = Vref/8Rs。 (二)通信电路。在最简单的 RS - 232 直接传送通信 系统中,只要发送和接受双方同时准备好,仅用信号发送端 (TXD)、信号接收端(RXD)和信号地(GND)3 根信号线就 可以进行通信;若以应答方式进行数据通信,可使用请求发 送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据 装置准备(DSR)4 个信号进行硬件握手。在 AT89C52 单片机 系统中,分别从 P3.0 和 P3.1 引出串口线 RXD 和 TXD,通过 专用的电平转换芯片转换成 RS - 232 接口标准的电平, 这样, 二者之间就可以通过 RS - 232 接口进行数字信号的传送。 单片机可以通过直接传送或应答握手的方式与主机进行 数据通信,但由于握手方式占用其它端口,而单片机的端口数 量有限, 所以, 计算机与单片机的通信常采用直接传送的方式。 (三)数码管显示电路的设计。数码管的显示驱动使用 74LS164,通过 SPCE061A 的 IOB0 和 IOB1 口对 DATA 和 CLK 发 送数据。 (四) 4x4 键盘电路。 在设计中, 使用了标准的 4x4 键盘, 单片机的 A 口低 8 位为键盘的接口。尽管设计要求中只需要 4 个键对步进电机的状态进行控制,但考虑到对控制功能的 扩展,使用了 4x4 的键盘。 四、软件设计 软件部分的设计主要包括下位机按 MCU 的接收程序、脉 冲控制程序以及上位机的串口发送程序。上位机与下位机之 间进行数据通信。上位机的程序主要通过 Windows 可视化编 程 VC++ 实现。 下位机程序主要负责接受 PC 发来的数据,按照要求产生 控制脉冲,具体流程为:首先对要使用的串口进行初始化, 然后 P2 输出口清零,接着进入住程序的死循环,等待中断触 发。接收一个字节的数据,RI = 1,接着将 RI 清零。当单片 机接收完数据后,标志位置 1。将缓存中的数据存入控制的变 量中, 以便控制时使用 (具体操作时先法数据帧再发启动帧) 。 五、结束语 结合以上介绍的基于 A3967SLB 的步进电机控制系统, 在 VC++ 环境下,利用 MSComm 控件实现了 PC 与单片机之间 的串行通信。实验结果表明,用这种方式实现上位机对基于 A3967SLB 的步进电机的控制系统进行精确的驱动可行有效。 本系统中,利用 PC 的丰富软硬件资源和强大的系统功能,可 进行一些数据处理、显示等工作;而从控制器 AT89C51 则用 于实时控制。另外,该系统为开放式结构,便于系统升级。 参考文献: [1] 李华 . 单片机原理及应用 [M]. 兰州 : 兰州大学出版 社 ,2001. [2] 何立民 . 单片机应用技术选编 [M]. 北京 : 北京航空航 天大学出版社 ,1999. [3] 郝鸿安 . 常用数字集成电路应用手册 [M]. 北京 : 中国 计量出版社 ,1987. [4] 王鸿钰 . 步进电机控制技术入门 [M]. 上海 : 同济大学 出版社 ,1990.
89C51驱动LED数码管的方法
电子世界2003年11期35・・相约单片机图1图2现在驱动LED数码管流行采用单片机设计电路,但发现一些显示(LED数码管)电路设计复杂,没有充分利用单片机的电气特点、没有采用“硬件软化”的方法。
这里向大家介绍几种89C2051驱动LED数码管的方法,并附软件,可直接移植到其它电路中使用。
1.直接驱动5位LED数码管(1)由于89C2051的I/O脚吸入电流可达20mA,故可直接驱动LED数码管,但LED数码管必须采用高亮、共阴型。
由P1口输出段码,P3口输出位选码。
R1~R8为LED数码管提供工作电流(电路见图1)。
(2)在89C2051的RAM中建一个5字节的数码管缓存区,将每一个数码管要显示的数字存入。
输出时采用查表法,将数字对应的段码值送到P1口;位选信号输出,采用直接位寻址方式(程序见本刊网站上的附1)。
2.驱动8位LED数码管(1)在电路中添加一片74LS164串入并出的锁存器,用于锁存输出的段码,R1~R8是限流电阻(电路见图2)。
(2)此软件与附1(见本刊网站)基本相同,只是在段码输出时,要做一段模拟串口发送程序,将段码串行输入到74LS164中(程序见本刊网站上的附2)。
89C2051驱动LED数码管的方法・李 杰・3.驱动24位LED数码管(1)电路使用了3片74LS164(HC164)做位选码输出用,共可驱动8×3=24位,段码由P1口输出。
74LS164的驱动电流可达20mA,可直接驱动LED数码管(电路见图3)。
(2)此时89C2051的绝大部分时间被扫描LED数码管的程序所占用,胜任其它费时的操作已不可能,否则LED数码管会闪烁。
要确保主程序的执行周期<20ms(程序见本刊网站上的附3)。
4.LED数码管的亮度控制LED数码管的亮度控制非常重要,它直接影响LED数码管的使用寿命。
如果采用硬件控制,则电路复杂。
可采用“硬件软化”的方法,由软件控制(程序见本刊网站上的附3)。
步进电机控制实验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。
基于.AT89C51单片机的步进电机控制和驱动电路设计说明书
基于AT89C51单片机的步进电机控制及驱动电路设计引言国内控制器的研究起步较晚.运动控制技术为一门多学科交叉的技术.是一个以自动控制理论和现代控制理论为基础.包括许多不同学科的技术领域。
如电机技术、电力电子技术、微电子技术、传感器技术、控制理论和微计算机技术等.运动控制技术是这些技术的有机结合体。
总体上来说.国内研究取得很大的进步.但无论从控制器还是从控制软件上来看.与国外相比还是具有一定差距。
传统上由纯电路设计的步进电机控制和驱动电路一般较复杂.成本又高.而且一旦成型就难于修改.可移植性差.难以适应一些智能化要求较高的场合。
单片机的普及与应用.为步进电机的应用开辟了广阔的前景.使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现.将会避免复杂电路的设设计.既降低了硬件成本又提高了控制的灵活性、可靠性及多功能性。
本文主要介绍了步进电机的基本原理及AT89C51单片机的性能特点。
设计主要研究了一种基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统。
该系统可分为:控制模块、驱动模块、显示模块、人机交互模块四大部分。
其中采用AT89C51单片机作为控制模块的核心.利用单片机编程实现了对步进电机启动停止、正转反转、加速减速等功能的基本控制。
驱动模块由芯片ULN2003A驱动步进电机工作;显示部分由七段LED共阴数码管组成;人机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器.具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
目录1设计原理及方案 (4)1.1 设计原理 (4)1.2 设计方案 (4)1.2.1 方案一 (5)1.2.2 方案二 (6)1.2.3 方案比较及选择 (7)2 设计实现 (8)2.1 主要元器件介绍 (8)2.1.1 四相六线步进电机的介绍 (8)2.1.2 AT89C51单片机芯片介绍 (10)2.1.3 ULN2003芯片介绍 (11)2.1.4 LED七段数码管介绍 (11)2.2 步进电机控制及驱动系统电路设计实现 (12)2.2.1 硬件设计 (12)2.2.2 软件设计 (15)3 电路调试 (15)3.1 软件的仿真 (16)3.2 硬件电路的调试 (17)4 数据分析及总结 (18)4.1 测试数据及说明 (18)4.2 总结 (19)参考文献 (19)附录 (20)1设计原理及方案1.1 设计原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
课程设计(论文)-基于AT89C51单片机的步进电机控制系统设计模板
摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
本次课程设计是用单片机来控制步进电机的定位和正反旋转。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
整个系统有89C51单片机控制系统,L298驱动电路,4*4的键盘控制电路,LED显示电路。
用89C51单片机控制两相四线步进电机,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲的相序来改变步进电机的转动方向,从而达到的控制正反转的目的。
本系统采用单片机AT89C51为中心器件来控制步进电机,系统实用性强。
关键字:单片机;步进电机;脉冲;步距角目录1 前言 (3)2 步进电机工作原理 (4)2.1两相步进电机结构 (4)2.2两相步进电机的原理 (4)2.3两相步进电机的供电方式 (5)3 硬件系统设计 (6)3.1系统总体设计框图 (6)3.2单片机系统 (6)3.3时钟信号控制电路 (7)3.4电源电路 (8)3.5驱动电路 (8)3.6显示电路 (9)3.7 4*4键盘电路 (9)4 软件系统设计 (10)4.1主程序流程图及源代码 (10)4.2扫描键盘流程图及源代码............... . (11)4.3 LED显示流程图及源代码 (12)5 开发系统简介.............................. . (14)5.1 W A VE6000编译器简介 (14)5.2 protues仿真平台简介 (14)6 仿真结果及分析 (16)7 课程设计总结 (19)附录 (20)1 前言本次课程设计是以步进电机控制和驱动为要求,用单片机来控制步进电机的定位和正反旋转圈数的显示。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
基于AT89C5单片机的步进电机控制系统设计
毕业设计摘要步进电机是数字控制系统中的一种执行元件,它能按照控制脉冲的要求,迅速起动,制动,正反转和调速。
具有步距角精度高,停止时能自锁等特点,因此步进电机在自动控制系统中,特别是在开环的控制系统中得到了日益广泛的应用。
本文以单片机和环形脉冲分配器为核心设计的步进电机控制系统,通过软硬件的设计调试,实现步进电机能根据设定的参数进行自动加减速控制,使控制系统以最短的时间到达控制终点,而又不发生失步的现象;同时它能准确地控制步进电机的正反转,启动和停止。
硬件是以AT89C51单片机为核心的控制电路,主要包括:环形脉冲分配器、键盘显示电路、步进电机的驱动电路等。
软件部分采用C语言编程,主要包括键盘显示程序、步进电机的调速程序、停止判断程序等。
关键词:步进电机控制系统;调速;单片机AbstractStepping motor is a kind of digital control system components. It can achieve quick start-up, positive inversion, stopping and speed control, according to the control pulse. It has high precision step angle, and can be self-locking when it keeps still. As these characteristics, stepping motor in automatic control system, especially in the open loop control system has been widely applied.This article mainly focuses on taking Single-chip Computer and cycle pulse distributor as the core, and designing the stepping motor control system. Through the design of the software and hardware debugging, it realizes controlling the step motor’s accel eration and deceleration automatically, according to parameter setting. Making the system arrive the end point with the shortest time, but not occur outing of step. Besides it can accurately achieve start-up, positive inversion and shutdown. Hardware takes AT89C51 as the core of control circuit, mainly including: cycle pulse distributor, keyboard and display circuit, stepping motor driving circuit, etc. Software part adopts the C language programming, mainly including keyboard and display program, stepping motor speed control program, stop judging program, etc.Key words: Stepping motor control system; speed control; Single-chip Compute目录摘要 (I)Abstract (II)目录 (I)第一章引言 (1)1.1 课题提出的背景和研究意义 (1)1.2 课题的主要研究内容 (2)1.3 本章小结 (2)第二章步进电机控制系统设计 (3)2.1 步进电机的原理 (3)2.1.1 三相单三拍通电方式 (3)2.1.2 三相双三拍通电方式 (5)2.1.3 三相六拍通电方式 (6)2.2 环形脉冲分配器 (8)2.3 续流电路 (12)2.3.1 二极管续流 (13)2.3.2 二极管—电阻续流 (14)2.4 步进电机驱动电路 (15)2.5 步进电机的变速控制 (17)2.5.1 变速控制的方法 (20)2.6 步进电机在自动生产线中的应用 (20)2.7 本章小结 (22)第三章控制系统硬件设计 (23)3.1 硬件系统设计原则 (23)3.2 控制系统组成 (24)3.3 主要元件的选择 (24)3.3.1 单片机的选择 (24)3.3.2 EPROM的选择 (25)3.3.3 可逆计数器的选择 (27)3.4 控制系统接口电路的设计 (28)3.4.1 环形脉冲分配器设计 (28)3.4.2 显示电路设计 (29)3.4.3 外部复位电路设计 (30)3.5 控制系统整体电路设计 (31)3.6 本章小结 (32)第四章控制系统软件设计 (32)4.1 软件系统设计原则 (32)4.2 步进电机控制系统功能设计 (33)4.3 主程序设计 (34)4.3.1 主程序工作过程 (34)4.3.2 主程序工作流程图 (35)4.3.3 定时器T0中断程序流程图 (35)4.4 Proteus仿真 (38)4.5 显示程序设计 (40)4.6 键盘程序设计 (41)4.7 调速程序设计 (42)4.7.1 20BY步进电机参数 (42)4.7.2 步进电机转速与频率的关系 (42)4.8 本章小结 (44)第五章结束语 (44)参考文献 (45)第一章引言1.1 课题提出的背景和研究意义由于步进电机不需要位置传感器或速度传感器就可以实现定位,即使在开环状态下它的控制效果也是令人非常满意的,这有利于装置或设备的小型化和低成本,因此步进电机在计算机外围设备、数控机床和自动化生产线等领域中都得到了广泛的应用。
步进电机C代码和电路
STC89C52 单片机控制的驱动用的是ULN2003 四相六线步进式小电机工作电压12V 步进角7.5度程序要求:能根据单片机提供的高度数据来控制步进式电机带动传送带上升或者下降相应的距离步进式电机的速度恒定即可单片机没有数据传输过来的时候步进式电机停止,一旦有高度数据传送过来,电机即工作,上升或下降相应的距离单片机4个I/O控制相的的顺序本步进电机步进角为7.5度 . 一圈360 度, 需要48 个脉冲完成!!!A组线圈对应P1.4B组线圈对应P1.5C组线圈对应P1.6D组线圈对应P1.7正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转7.5 度)*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//正转脉冲表//unsigned char Table_Run[4]={0x3, 0x60, 0xC0, 0x90};//反转脉冲表//unsigned char Table_Rev[4]={0x3, 0x90, 0xC0, 0x60};///没有ULN2003的情况//unsigned char forword[]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//unsigned char back[]={0x06,0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07};////ULN2003unsigned char forword[8]={0xc0,0x40,0x60,0x20,0x30,0x10,0x90,0x80};unsigned char back[8]={0xc0,0x80,0x90,0x10,0x30,0x20,0x60,0x40}; sbit key1=P2^0; //正转sbit key2=P2^1; //反sbit key3=P2^2; //停止uchar count=0;uint time=0;//函数说明void delay(uint t);void front_move(uint step);void back_move();//定时器0中断void time0() interrupt 1{TH0=(65536-1000)/256;TL0=(65536-1000)%256;//time++;}//主程序void main(){uchar i;TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1;EA=1;TR0=1;while(1){if(key1==0){delay(10);if(key1==0){front_move(12);}}if(key2==0){back_move();}if(key3==0){P1=0X00;}}}//延时//电机驱动子程序void front_move(uint step) {uchar i=0,j;for(j=0;j<step;j++) {for(i=0;i<8;i++) {P1=forword[i];delay(50);}/*if(i<8){i++;}else{i=0;}*/}}//反转void back_move() {uchar i;for(i=0;i<8;i++) {P1=back[i]; delay(145);}}void delay(uint t) /* 对于12M时钟,约延时1ms */ {uint i;while(t--){for (i=0;i<80;i++){}}}。
基于89C2051的步进电机驱动系统设计
基于89C2051的步进电机驱动系统设计作者:北京信息工程学院高晶敏时间:2007-10-06 来源:电子产品世界摘要:设计了一种基于89C2051单片机的步进电机驱动系统。
该系统优化了电机在不同工作频率下的能量供给,取得了高频力矩提升、低频功耗下降的优良效果。
关键词:电源">可控电源; 步进电机;89C2051引言步进电动机驱动方式主要分为恒压驱动、恒流驱动、细分驱动等,其中恒压驱动是成本最低、最简单的解决方案,但是它的显著缺点是:高频力矩下降较快,无法满足某些应用场合的要求。
另外,目前市场上几乎所有的步进电机驱动器都存在着低频热耗散大的缺点。
在成本压力较大、对功耗和高低频力矩都有较高要求的情况下,如何取舍是一件很难抉择的事情。
本设计通过一个低成本电源">可控电源,针对控制频率的全程范围,相应输出若干段电压,低频低压、高频高压。
同时,在同一频率下采用高低压驱动法,在电机启动时刻提供高电压,力矩保持阶段提供低电压,从而实现了低成本下的高频力矩提升、低频功耗下降的优良效果。
硬件设计系统硬件电路主要由单片机电路、电源">可控电源电路和步进电机驱动电路构成。
单片机采用ATMEL公司的89C2051。
实际应用中,用其P1口低4 位输出控制信号给电源">可控电源电路,使电源">可控电源输出不同梯次的驱动电压,当控制信号为“0000”时输出电压最低,控制信号为“1111”时输出电压最高,P1口高4 位用于输出相序控制信号给四相步进电机驱动电路,单片机根据控制策略决定驱动电压的高低和相序的变化。
电源">可控电源电源">可控电源部分主要由LM2576-ADJ、缓冲器、电阻、二极管组成,电路如图1所示。
图中LM2576-ADJ是一个降压型开关稳压源,其输出电压为:图1 电源">可控电源电路其中VH 为缓冲器输出的高电平电压,VD 为二极管结压降,VREF 为参考电压,Di 为单片机I/O口数字量输出。
基于89c2051设计一个简单的激光雕刻机(带C语言程序)
基于89c2051设计一个简单的激光雕刻机(带C语言程序)有人用废旧光驱制作的激光雕刻机,他们的驱动板我不懂,我只知道51单片机的一些东西,于是就手头的材料开始了,先上驱动板的原理图驱动板中标注的1,3脚接电脑并口的2,3脚为步进驱动信号。
驱动板中标注的2,4脚接电脑并口的6,7脚为步进方向信号。
驱动板中标注的5,6,7,8脚接电机驱动板控制一个轴的步进电机,9,10,11,12脚接电机驱动板控制另一个轴的步进电机。
电机驱动板是从淘宝上给买的L9110 电机驱动模块我用的雕刻软件是Mach3,控制软件用C51编写的。
传一下控制软件,很简单。
#include “at89x52.h”void main(void){unsigned int X[8]= {160,32,96,64,80,16,144,128 };//“定义步进电机数组”unsigned char a=0 ; //“定义数组下标变量,变量必须是字符型变量!”unsigned int b; //“定义变量并赋值”P3_1=1;P3_0=1; //“确定P3.1 P3.0 为接受信号模式,P要大写啊!”while (1){do{;} while (P3_0==0); //“确认是否有高电平信号”for([s:9]3_0==1; ); //“判断是否是步进脉冲信号”if (P3_1==1)//“确定正转信号,执行正转”{ P1=X[a];if(a《7) a++ ;else a=0;}else if (P3_1==0)//“确认反转信号,执行反转”{ if(a》0) a-- ;else a=7;P1=X[a];}for (b=0; b《750; b++);//“延时”P1=0;}}技术专区。
STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能
STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能摘要:本设计首先介绍了STC89C51单片机,L297和L298N驱动电路及步进电机的基本原理与功能;其次,设计步进电机实现起停、转向、速度、位置变化的控制方案;再次,在这些器件功能与特点的基础上,拟出设计思路,构建系统的总体框架;最后利用PROTEL软件绘出电路图,同时写出设计系统的运行流程和相关程序。
整个系统通过写入单片机中的程序分配好控制字的存储单元以及相应的内存地址赋值;启动系统后,从单片机的I/O口输出控制脉冲,经过L297、L298N驱动电路对脉冲进行处理,输出能直接控制步进电机的脉冲信号。
在此基础上,重新分配I/O资源,同时增加驱动芯片L297、L298N的个数,在负载能力范围允许内,就能实现多台步进电机独立起停、转向、速度、位置变化的控制。
前言步进电机是一种将电脉冲信号转换成相应角位移的控制电机。
目前,数字技术、计算机技术和永磁材料的迅速发展,推动了步进电机的发展。
本设计针对目前各个领域对自动化的需要,采用STC89C51单片机与L297,L298N驱动芯片驱动多台步进电机同时独立工作,将它应用于各种复杂的控制领域,能使许多半自动控制的系统完全成为真正的全自动,特别是用在机器人等领域,能极大的提高生产力和降低劳动强度。
由于步进电机具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
STC89C51单片机的特点STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,是MCS-51系列单片机的派生产品;它们在指令系统中、硬件系统和片内资源与标准的8052单片机完全兼容,DIP-40封装系列与8051为pin-to-pin兼容,指令代码是与8051完全兼容的单片机。
STC89C51单片机具有增强型12时钟/机器周期、6时钟机器/周期任意选择,工作电压为5.5V-3.4V(5V单片机)/3.8V-2.0V(5V单片机);工作频率范围:0-40MHZ,相当于普通8051的0-80MHZ。
单片机AT89c51控制步进电动机设计.
第一章前言1.1步进电机简介步进电机最早是在1920年由英国人所开发。
1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。
以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。
步进电机可以直接用数字信号驱动,使用非常方便。
一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。
在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。
因此非常适合于单片机控制。
步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
第二章步进电机工作原理及系统方案论证2.1步进电机工作原理2.1.1步进电机结构电机转子均匀分布着40个小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定子和转子的展开图:图2.12.1.2 步进电机的旋转:如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
89C2051驱动步进电机的电路和源码时间:2006-10-26 来源: 作者: 点击:1434 字体大小:【大中小】程序stepper.cstepper.hex/** STEPPER.C* sweeping stepper's rotor cw and cww 400 steps* Copyright (c) 1999 by W.Sirichote*/#include c:\mc51\8051io.h /* include i/o header file */#include c:\mc51\8051reg.hregister unsigned char j,flag1,temp;register unsigned int cw_n,ccw_n;unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}#define n 400/* flag1 mask byte0x01 run cw()0x02 run ccw()*/main(){flag1=0;serinit(9600);disable(); /* no need timer interrupt */cw_n = n; /* initial step number for cw */flag1 |=0x01; /* initial enable cw() */while(1){{tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw();ccw();}}}cw(){if((flag1&0x01)!=0){cw_n--; /* decrement cw step number */if (cw_n !=0)j++; /* if not zero increment index j */else{flag1&=~0x01; /* disable cw() execution */ccw_n = n; /* reload step number to ccw counter */flag1 |=0x02; /* enable cww() execution */}}}ccw(){if((flag1&0x02)!=0){ccw_n--; /* decremnent ccw step number */if (ccw_n !=0)j--; /* if not zero decrement index j */else{flag1&=~0x02; /* disable ccw() execution */cw_n = n; /* reload step number to cw counter */flag1 |=0x01; /* enable cw() execution */}}}tick_wait(){ /* cputick was replaced by simpler ASM code 10ms wait */asm" JNB TCON.5,*"; /* wait for TF0 set */asm" CLR TCON.5"; /* clear TF0 for further set */asm" ORL TH0,#$DC"; /* reload TH0 with $DC, TL0 = 0 */}energize(){P1 = step[(j&0x07)]; /* only step 0-7 needed */}电路图Tags:步进电机89C2051如何用单片机控制步进电机时间:2006-10-26 来源: 作者: 点击:2106 字体大小:【大中小】步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
一、步进电机常识常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛。
二、永磁式步进电机的控制下面以电子爱好者业余制作中常用的永磁式步进电机为例,来介绍如何用单片机控制步进电机。
图1是35BY型永磁步进电机的外形图,图2是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。
要使用步进电机转动,只要轮流给各引出端通电即可。
将COM端标识为C,只要AC、 C、BC、 C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、、B、轮流接地。
下表列出了该电机的一些典型参数:表135BY48S03型步机电机参数型号步距角相数电压电流电阻最大静转距定位转距转动惯量35BY48S03 7.5 4 12 0.26 47 180 65 2.5有了这些参数,不难设计出控制电路,因其工作电压为12V,最大电流为0.26A,因此用一块开路输出达林顿驱动器(ULN2003)来作为驱动,通过P1.4~P1.7来控制各线圈的接通与切断,电路如图3所示。
开机时,P1.4~P1.7均为高电平,依次将P1.4~P1.7切换为低电平即可驱动步进电机运行,注意在切换之前将前一个输出引脚变为高电平。
如果要改变电机的转动速度只要改变两次接通之间的时间,而要改变电机的转动方向,只要改变各线圈接通的顺序。
图135BY48S03型步进电机外形图图235BY48S03型步进电机的接线图图3单片机控制35BY48S03型步进电机的电路原理图三、步进电机的驱动实例要求:控制电路如图3所示,开机后,电机不转,按下启动键,电机旋转,速度为25转/分,按下加1键,速度增加,按下减1键,速度降低,最高速度为100转/分,最低转带为25转/分,按下停止键,电机停转。
速度值要求在数码管上显示出来。
1.要求分析按上面的分析,改变转速,只要改变P1.0~P1.3轮流变低电平的时间即可达到要求,这个时间不应采用延时来实现,因为会影响到其他功能的实现。
这里以定时的方式来实现。
下面首先计算一下定时时间。
按要求,最低转速为25转/分,而上述步进电机的步距角为7.5,即每48个脉冲为1周,即在最低转速时,要求为1200脉冲/分,相当于50ms/脉冲。
而在最高转速时,要求为100转/分,即48000脉冲/分,相当于12.5ms/脉冲。
可以列出下表表1步进电机转速与定时器定时常数关系速度单步时间(us) TH1 TL1 实际定时(us)25 50000 76 0 49996.826 48077 82 236 48074.1827 46296 89 86 46292.6128 44643 95 73 44640.155… … … … …100 12500 211 0 12499.2表中不仅计算出了TH1和TL1,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这个计算值来估算真实速度与理论速度的误差值。
表中TH1和TL1是根据定时时间算出来的定时初值,这里用到的晶振是11.0592M。
有了上述表格,程序就不难实现了,使用定时/计数器T1为定时器,定时时间到后切换输出脚即可。
2.程序实现定义DSB-1A实验板的S1为启动键,S2为停止键,S3为加1键,S4为减1键,程序如下:StartEnd bit 01H ;起动及停止标志MinSpd EQU 25 ;起始转动速度MaxSpd EQU 100 ;最高转动速度Speed DATA 23H ;流动速度计数DjCount DATA 24H ;控制电机输出的一个值,初始为11110 111Hidden EQU 10H ;消隐码Counter DATA 57H ;显示计数器DISPBUF DATA 58H ;显示缓冲区ORG 0000HAJMP MAINORG 000BHJMP DISPORG 001BHJMP DJZDORG 30HMAIN:MOV SP,#5FHMOV P1,#0FFHMOV A,#HiddenMOV DispBuf,AMOV DispBuf+1,AMOV DispBuf+2,AMOV DjCount,#11110111BMOV SPEED,#MinSpd ;起始转动速度送入计数器CLR StartEnd ;停转状态MOV TMOD,#00010001B ;MOV TH0,#HIGH(65536-3000)MOV TL0,#LOW(65536-3000)MOV TH1,#0FFH;MOV TL1,#0FFHSETB TR0SETB EASETB ET0SETB ET1LOOP: ACALL KEY ;键盘程序JNB F0,m_NEXT1 ;无键继续ACALL KEYPROC ;否则调用键盘处理程序m_NEXT1:MOV A,SpeedMOV B,#10DIV ABMOV DispBuf+5,B ;最低位MOV B,#10DIV ABMOV DispBuf+4,BMOV DispBuf+3,AJB StartEnd,m_Next2CLR TR1 ;关闭电机JMP LOOPORL P1,#11110000Bm_Next2:SETB TR1 ;启动电机AJMP LOOP ;主程序结束;---------------------------------------D10ms:……;---------延时程序,键盘处理中调用KEYPROC:MOV A,B ;获取键值JB ACC.2,StartStop ;分析键的代码,某位被按下,则该位为1 JB ACC.3,KeyStyJB ACC.4,UpSpdJB ACC.5,DowSpdAJMP KEY_RETStartStop:SETB StartEnd ;启动AJMP KEY_RETKeySty:CLR StartEnd; ;停止AJMP KEY_RETUpSpd:INC SPEED;MOV A,SPEEDCJNE A,#MaxSpd,K1 ;到了最多的次数?DEC SPEED ;是则减去1,保证下次仍为该值K1:AJMP KEY_RETDowSpd:DEC SPEEDMOV A,SPEEDCJNE A,#MAXSPD,KEY_RET ;不等(未到最大值),返回MOV SPEED,#MinSpd;KEY_RET:RETKEY:……获取键值的程序RETDjZd: ;定时器T1用于电机转速控制PUSH ACCPUSH PSWMOV A,SpeedSUBB A,#MinSpd ;减基准数MOV DPTR,#DjHMOVC A,@A+DPTRMOV TH1,AMOV A,SpeedSUBB A,#MinSpdMOV DPTR,#DjLMOVC A,@A+DPTRMOV TL1,AMOV A,DjCountCPL AORL P1,AMOV A,DjCountJNB ACC.7,d_Next1JMP d_Next2d_Next1:MOV DjCount,#11110111Bd_Next2:MOV A,DjCountRL AMOV DjCount,A ;回存ANL P1,APOP PSWPOP ACCRETIDjH: DB 76,82,89,95,100,106,110,115,119,123,12……DjL: DB 0,236,86,73,212,0,214,96,163,165……DISP: ;显示程序POP PSWPOP ACC……RETIBitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBHDISPTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH END3.程序分析本程序主要由键盘程序、显示器程序、步进电机驱动程序三部份组成,主程序首先初始化各变量,将显示器的高3位消隐,步进电机驱动的各引脚均输出高电平,然后调用键盘程序,并作判断,如果有键按下,则调用键盘处理程序,否则直接转下一步。