基于51单片机步进电机控制设计
- 格式:wps
- 大小:2.67 MB
- 文档页数:17
基于51单片机步进电机的控制及细分驱动电路悬赏分:20|解决时间:2009-6-22 21:11 |提问者:sailorman123我的邮箱sailor3848352@拜求高手指点,希望能附带相应的电路图,和一定的说明。
谢谢给位大虾了!!!最佳答案参考:/chary8088/blog/item/177332ce39cef70a92457ea9.html接触单片机快两年了,不过只是非常业余的兴趣,实践却不多,到现在还算是个初学者吧。
这几天给自己的任务就是搞定步进电机的单片机控制。
以前曾看过有关步进电机原理和控制的资料,毕竟自己没有做过,对其具体原理还不是很清楚。
今天从淘宝网买了一个EPSON的UMX-1型步进电机,此步进电机为双极性四相,接线共有六根,外形如下图所示:拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。
地线与四线接触的顺序相反,电机的转向也相反。
如果用单片机来控制此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。
通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。
所以,设计了如下电路图:C51程序代码为:代码一#include <AT89X51.h>static unsigned int count;static unsigned int endcount;void delay();void main(void){count = 0;P1_0 = 0;P1_1 = 0;P1_2 = 0;P1_3 = 0;EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许TH0 = 0xFC;TL0 = 0x18; //设定时每隔1ms中断一次TR0 = 1; //开始计数startrun:P1_3 = 0;P1_0 = 1;delay();P1_0 = 0;P1_1 = 1;delay();P1_1 = 0;P1_2 = 1;delay();P1_2 = 0;P1_3 = 1;delay();goto startrun;}//定时器0中断处理void timeint(void) interrupt 1{TH0=0xFC;TL0=0x18; //设定时每隔1ms中断一次count++;}void delay(){endcount=2;count=0;do{}while(count<endcount);}将上面的程序编译,用ISP下载线下载至单片机运行,步进电机便转动起来了,初步告捷!不过,上面的程序还只是实现了步进电机的初步控制,速度和方向的控制还不够灵活,另外,由于没有利用步进电机内线圈之间的“中间状态”,步进电机的步进角度为18度。
2020.19设计研发基于51单片机的步进电机正反转可控设计与仿真李建中(江苏省海门中等专业学校,江苏南通,226100)摘要:步进电机是伺服控制中的关键部件,对步进电机进行精确高效地控制,是实现精密运动、制造等的重要手段。
釆用51单片机作为电机的控制核心-ULN2003A作为电机的驱动芯片,选用额定电压为5V的小型步进电机,设置正转、反转、停止、加速、减速5个按钮,其中正转、反转和停止均有对应的LED指示灯。
通过Keil进行控制程序的编写,在Proteus 中进行仿真电路的连接,结果表明:电路设计正确;步进电机能够根据按钮指令进行运转,达到了设计预期;系统可应用于某些需要高精度控制的场合。
关键词:步进电机;51单片机;ULN2003A;Keil;ProteusDesign and Simulation of Positive and Negative Rotation ofStepping Motor Based on51Single Chip MicrocomputerLi Jianzhong(Jiangsu Province Haimen Secondary Vocational School,Narrtong Jiangsu,226100)Abst r act;St epper motor is the key compone n t in servo cont r ol.It is an import a n t means to realize precise motion and manufacture to control stepping motor accurately and efficiently.51single chip microcomputer is used as the cont r ol core of the mot o r,uln2003a is used as the driving chip of the motor,the small st e pping motor with:r ated volt a ge of5V is selec t ed,and five buttons of forward rotation,reverse rotation,stop,acceleration and deceleration are set,and the corresponding LED indicator lights are used for forward rotation,reverse rotation and stop.The resuIts show that:the circuit design is correct;the stepper motor can operate according to the button command,which meets the design expectation;the system can be applied to some occasions requiring high-precision control.Keywords:stepper motor;51single chip microcomputer;ULN2003A;Keil;Proteus0引言步进电机在工业制造、数控机床、各种伺服系统中均有应用。
D10-基于单片机旳步进电机控制系统一、理解什么是步进电机以及其工作原理步进电机是数字控制电机,步进电机旳运转是由电脉冲信号控制旳,其角位移量或线位移量与脉冲数成正比,每个一种脉冲,步进电机就转动一种角度(不距角)或前进、倒退一步。
步进电机旋转旳角度由输入旳电脉冲数确定,因此,也有人称步进电机为数字/角度转换器。
步进电机旳各相绕组按合适旳时序通电,就能使步进电机转动。
当某一相绕组通电时,对应旳磁极产生磁场,并与转子形成磁路,这时,假如定子和转子旳小齿没有对齐,在磁场旳作用下,由于磁通具有力图走磁阻最小途径旳特点,则转子将转动一定旳角度,使转子与定子旳齿互相对齐,由此可见,错齿是促使电机旋转旳原因。
二、步进电机旳特点(1)步进电机旳角位移与输入脉冲数严格成正比,因此当它转一转后,没有合计误差,具有良好旳跟随性。
(2)由步进电机与驱动电路构成旳开环数控系统,既非常以便、廉价,也非常可靠。
同步,它也可以有角度反馈环节构成高性能旳闭环数控系统。
(3)步进电机旳动态响应快,易于启停、正反转及变速。
(4)速度可在相称宽旳范围内平滑调整,低速下仍能保证获得很大旳转矩,因此一般可以不用减速器而直接驱动负载。
(5)步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
(6)步进电机自身旳噪声和振动比较大,带惯性负载旳能力强。
三、步进电机旳控制步进电机旳控制重要包括换相次序旳控制、速度控制、速度控制、加减速控制等,控制系统就是运用单片机旳功能实现以上控制旳系统,即本次设计旳目旳。
四、示意图五、硬件设计计划本设计旳硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。
最小系统只要是为了使单片机正常工作。
控制电路只要由开关和按键构成,由操作者根据对应旳工作需要进行操作。
显示电路重要是为了显示电机旳工作状态和转速。
驱动电路重要是对单片机输出旳脉冲进行功率放大,从而驱动电机转动。
(1)控制电路根据步进电机旳工作原理可以懂得,步进电机转速旳控制重要是通过控制通入电机旳脉冲频率,从而控制电机旳转速。
51系列单片机控制步进电机调速实验实验目的及要求:1、熟悉步进电机的工作原理2、熟悉51系列单片机的工作原理及调试方法3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量)4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号42BYG )由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。
速度设定由键盘设定,步进电机的反馈速度由LED数码管显示。
实验原理:步进电机控制原理一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
因此步进电动机是一种把脉冲变为角度位移(或直线位移)的执行元件。
步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。
由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。
随着数字控制系统的发展,步进电动机的应用将逐渐扩大。
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机的驱动电路根据控制信号工作,控制信号可以由单片机产生。
电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。
0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定转子的展开图:(图2所示)图1 是反应式步进电动机结构示意图,它的定子具有均匀分布的六个磁极,磁极上绕有绕组。
课程设计报告设计题目:遥控小车——基于51单片机的步进电机调速系统学院:专业:班级:学号:姓名:电子邮件:时间:成绩:指导教师:华南农业大学理学院应用物理系课程设计(报告)任务书学生姓名指导教师职称学生学号专业电子信息科学与技术题目基于51单片机的步进电机调速系统(遥控小车)任务与要求1. 设计并制作电路,利用单片计控制步进电机运转。
2. 通过键盘可以不间断地设定改变电机的转速、转向。
3. 利用显示器实时显示转速等参数。
4. 扩展功能:可设定转动步数。
开始日期2014 年3 月完成日期2014 年3 月1引言步进电机是一种将电脉冲转化为角位移的执行机构。
目前,步进机已经广泛应用于领域,例如工业生产中的机械臂的控制,照明装置和监控摄像机转动等。
步进机在装置转动、精确位移方面有很重大的作用。
本系统是基于STC89C51 单片机的遥控小车。
采用STC89C51单片机作为控制核心,通过ULN2003A驱动步进机(28BYJ-48)转动,由按键和显示屏1602组成人机交互模块,同时通过315M无线发射和接收模块向单片机输入控制信号,将整个系统固定于简易小车上,最终实现小车测试和远程遥控功能。
基本达到预定的设计要求以及功能的扩展。
2系统的设计与理论分析2.1系统总体设计2.2理论分析本设计分为两种工作模式:测试模式、遥控模式。
在电路板上有一个带锁的开关进行设置。
测试模式工作时,通过控制小车上的按键进行加速、减速、反转、设置、步数增、步数减等按键,单片机扫描按键,通过软件控制液晶模块显示对应的转速、设置的速度和步数,同时控制步进机模块进行相应的转动。
步进机的是由ULN2003A达林顿管驱动,由单片机控制输入脉冲的频率来控制步进机的转速,单片机是通过程序查表对4个I/O口输出脉冲,本次设计采用的是两相四线减速步进机,步进角为5.625°,减速比为64:1,程序采用的是8拍查表,具有较好的扭矩。
遥控模式工作时,遥控部分五个按键分别输入前、后、左、右、暂停,单片机扫描按键,通过无线发射模块发射串行编码,小车的无线接收模块接收对应的编码,送至单片机进行解码,从而控制液晶模块的显示和步进机模块的工作,进而完成功能。
基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
51单片机驱动步进电机的方法一、步进电机简介步进电机是一种将电脉冲转化为角位移的执行机构,广泛应用于各种自动化设备中。
其工作原理是,当一个脉冲信号输入时,电机转动一个步距角,从而实现电机的精确控制。
二、51单片机驱动步进电机的方法1、硬件连接需要将51单片机与步进电机连接起来。
通常,步进电机需要四个引脚,分别连接到单片机的四个GPIO引脚上。
同时,还需要连接一个驱动器来提高电机的驱动能力。
2、驱动程序编写接下来,需要编写驱动程序来控制步进电机的转动。
在51单片机中,可以使用定时器或延时函数来产生脉冲信号,然后通过GPIO引脚输出给电机。
同时,还需要设置电机的步距角和转向,以保证电机的精确控制。
3、示例程序以下是一个简单的示例程序,用于演示如何使用51单片机驱动步进电机:cinclude <reg52.h> //包含51单片机的头文件sbit motorPin1=P1^0; //定义连接到P1.0引脚的电机引脚sbit motorPin2=P1^1; //定义连接到P1.1引脚的电机引脚sbit motorPin3=P1^2; //定义连接到P1.2引脚的电机引脚sbit motorPin4=P1^3; //定义连接到P1.3引脚的电机引脚void delay(unsigned int time) //延时函数unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);void forward(unsigned int step) //正转函数motorPin1=0;motorPin2=0;motorPin3=0;motorPin4=0; //清零电机引脚delay(step); //延时一段时间motorPin1=1;motorPin3=1;motorPin2=0;motorPin4=0; //设置转向和步距角delay(step); //延时一段时间void backward(unsigned int step) //反转函数motorPin1=0;motorPin2=0;motorPin3=0;motorPin4=0; //清零电机引脚delay(step); //延时一段时间motorPin2=1;motorPin4=1;motorPin3=0;motorPin1=0; //设置转向和步距角delay(step); //延时一段时间void main() //主函数unsigned int step=1000; //设置步距角为1000微步forward(step); //正转一圈backward(step); //反转一圈while(1); //循环等待,保持电机转动状态在这个示例程序中,我们使用了四个GPIO引脚来控制步进电机的转动。
重庆工商大学计算机与信息工程学院学院《单片机原理及应用》课程实验报告实验名称:步进电机综合控制实验实验班级:2010级自动化专业班级:2010级自动化三班指导老师:文远熔组员:陶园2010133330 王路2010133344江洋2010133335陈娅2010133326张琴芳2010133317张丹2010133320(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。
步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。
利用ZLG7290模块驱动LED数码管显示速度设定值。
通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。
关键词:51单片机步进电机ZLG7290 ULN2003二、设计内容与要求:1、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。
所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。
2、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。
三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。
在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。
其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1步进电机1.1.1相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。
电机相数不同,其步距角也不同。
b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。
本实验程序运行前要先测量步进电机的步距角。
用51单片机控制两相四线步进电机最近学习步进电机的驱动原理,照着教材自己实践了一下用ULN2003驱动28BYJ-48两相5线步进电机,可以正常转动。
手头有一个旧光驱,拆开发现里面有三个电机,其中有一个控制激光头寻迹的两相四线步进电机,我就用51的单片机让它也转起来。
一开始照葫芦画瓢用ULN2003驱动,结果发现无论如何也不行。
原来ULN2003基本没输出电流,只能驱动有公共端的两相五线、两相六线步进电机,不能驱动2相4线步进电机。
然后改用L293D驱动,可以转动。
通过按钮控制正反转时发现,按键释放后,电机迅速发热,烫手。
用万用表测量,发现电机A,A-或B,B-直接存在电位差!应该是按键释放时,IN1-IN4没有归零。
找到问题,就容易解决了。
修改程序,可以完美运行,键1按下正转,释放停下,键2按下反转,释放停下。
IN1-IN4分别接P1口的低四位。
工作方式选用8拍。
A 1 1 0 0 0 0 0 1A- 0 0 0 1 1 1 0 0B 0 1 1 1 0 0 0 0B- 0 0 0 0 0 1 1 1附上源程序,仅供参考。
#include#define uint unsigned int#define uchar unsigned charsbit K3=P2^5;sbit K4=P2^4;//k3正转。
k4反转。
释放停止uchar code step_table[]={0x8,0xa,0x2,0x6,0x4,0x5,0x1,0x9};void delay(unsigned int m){unsigned int i,j;for(i=m;i>0;i--)for(j=110;j>0;j--);}void xp()//x轴正转{while(!K3){uint i;for(i=0;i<8;i++){P1=step_table[ i];delay(10);}}P1=0;//按键释放时,反转P1停在table某处,导致电机有电压从而使电机发热,需要归零。
文章标题:基于51单片机的步进电机红外控制系统的设计引言在现代科技发展迅速的时代,控制系统已经被广泛应用于各个领域。
其中,基于51单片机的步进电机红外控制系统的设计,不仅在工业领域有着重要的作用,同时也在家电领域、智能家居等方面得到了广泛的应用。
本文将从步进电机控制系统的设计原理、红外控制的基本概念以及基于51单片机的系统设计方案等方面展开深入探讨。
一、步进电机控制系统的设计原理步进电机是一种将电脉冲信号转换为机械位移的执行元件,其控制系统设计原理是核心。
以步进电机为执行元件的控制系统通常包括电脉冲发生电路、电流驱动电路、位置控制逻辑电路以及接口电路等模块。
在系统设计中,需要考虑步进电机的类型、工作方式、转动角度以及控制精度等因素,以选择合适的控制方案和相关元器件。
针对步进电机的控制系统设计,首先需要从硬件电路和软件控制两个方面进行综合考虑。
硬件方面需要设计合适的脉冲发生电路和驱动电路,并根据具体场景考虑相关的接口电路,以实现步进电机的控制和驱动。
而软件控制方面,则需要编写相应的控制程序,使得系统能够根据具体的控制要求进行精准的控制和调节。
二、红外控制的基本概念红外控制是一种常见的无线遥控技术,通过使用红外线传输信号来实现对设备的控制。
通常包括红外发射器和红外接收器两个部分,发射器将控制信号转换成红外信号发送出去,接收器接收红外信号并将其转换成电信号进行处理。
在实际应用中,红外控制技术已经被广泛应用于各种家电遥控器、智能家居系统以及工业自动化领域。
红外控制的基本原理是在发射器和接收器之间通过红外线进行双向通信,通过调制解调的方式进行信号的传输和解析。
设计基于红外控制的步进电机系统需要考虑红外信号的发射和接收过程,以及相关的解析算法和信号处理。
信号的稳定性、抗干扰能力以及传输距离等也是需要考虑的重要因素。
三、基于51单片机的系统设计方案在步进电机红外控制系统的设计中,选择合适的控制芯片和处理器是至关重要的。
基于单片机的步进电机的控制器设计在现代工业自动化和控制领域中,步进电机因其精确的定位和可控的旋转角度而得到了广泛的应用。
而设计一个高效、稳定且易于操作的基于单片机的步进电机控制器则成为了实现精确控制的关键。
一、步进电机的工作原理要设计步进电机的控制器,首先需要了解步进电机的工作原理。
步进电机是一种将电脉冲信号转换成角位移或线位移的开环控制电机。
它由定子和转子组成,定子上有若干个磁极,磁极上绕有绕组。
当给定子绕组依次通电时,产生的磁场会驱动转子按照一定的方向和步距角转动。
步距角是指每输入一个电脉冲信号,转子所转过的角度。
步距角的大小取决于电机的结构和控制方式。
常见的步距角有 18°、09°等。
通过控制输入电脉冲的频率和数量,可以精确地控制步进电机的转速和转角。
二、单片机的选择在设计控制器时,单片机的选择至关重要。
常见的单片机如 51 系列、STM32 系列等都可以用于控制步进电机。
51 系列单片机价格低廉,开发简单,但性能相对较低;STM32 系列单片机性能强大,资源丰富,但开发难度相对较大。
考虑到控制的精度和复杂程度,我们可以选择STM32 系列单片机。
例如,STM32F103 具有较高的处理速度和丰富的外设接口,能够满足步进电机控制器的需求。
三、控制器的硬件设计硬件设计主要包括单片机最小系统、驱动电路、电源电路等部分。
单片机最小系统是控制器的核心,包括单片机芯片、时钟电路、复位电路等。
STM32F103 的最小系统通常需要外部晶振提供时钟信号,以及合适的复位电路保证单片机的可靠启动。
驱动电路用于放大单片机输出的控制信号,以驱动步进电机工作。
常见的驱动芯片有 ULN2003、A4988 等。
以 A4988 为例,它可以接收来自单片机的脉冲和方向信号,并输出相应的电流来驱动步进电机。
电源电路则为整个系统提供稳定的电源。
通常需要将外部输入的电源进行降压、稳压处理,以满足单片机和驱动电路的工作电压要求。
摘要本设计中首先介绍了步进电机的工作原理、控制特点和运行状态,然后给出了步进电机的单片机控制系统的总体设计方案。
在这个控制系统中,单片机选用AT89C51,其作为控制核心,担负着产生脉冲,发送、接受控制命令等任务;脉冲分配采用硬件方法,由8713接收到单片机的控制信号后产生相应的控制脉冲,避免了软件法在不停地产生脉冲时占用的时间;采用单电压驱动的方法驱动电机带动负载运行;利用键盘、显示专用芯片8279能够以较简单的硬件电路和较少的软件开销实现微型机与键盘和LED显示器接口。
本设计最后详细介绍了硬件部分和软件部分的实现方法。
关键词:单片机;步进电机;速度控制;ZLG7290;显示器AbstractThe design introduces the working principle of stepper motor, control features and operations, and then gives the stepper motor microcontroller control system design programs. In this control system, the SCM selecting AT89C51, the control center of the shoulder produces pulses, sending, receiving control commands and other tasks; pulse distribution method using hardware from the 8713 chip control signals received resulting from the corresponding control pulse, to avoid software method to generate pulses in constant time occupied; adopt a single voltage-driven approach drive motor to drive the load operation; use of keyboard, display 8279 can be dedicated to simple hardware and less software overhead to achieve keyboard and LED display interface. Finally introduce the hardware and software implementation methods in detail.Key words: SCM; stepper motor; speed control;ZLG7290;display;目录摘要 (I)Abstract .................................................... I I 第一章绪论. (1)1.1步进电机概述 (1)1.2课题研究的主要内容 (2)1.2.1研究内容 (2)1.2.2论文安排 (2)第二章步进电机控制系统设计方案 (3)2.1步进电机的系统 (3)2.2步进电机的失步现象 (5)2.3步进电机控制系统的组成 (6)2.4系统的控制过程 (7)第三章步进电机控制系统硬件部分 (9)3.1硬件电路图 (9)3.2采用51系列单片机AT89C51作为控制器 (10)3.2.1 AT89C51的主要性能 (10)3.2.2 AT89C51引脚功能说明 (10)3.3步进电机的驱动电路 (15)3.4 LED显示电路 (16)3.4.1 LED显示器的结构原理 (16)3.4.2 LED显示接口 (18)3.5可编程键盘/显示控制器ZLG7290电路工作原理 (19)3.5.1 ZLG7290概述 (19)3.5.2管脚、引线与功能 (21)3.5.3 ZLG7290键盘、显示接口电路设计 (24)3.6脉冲分配 (26)第四章步进电机控制系统软件部分 (30)4.1定时器中断服务 (30)4.1.1定时器初值 (30)4.1.2定时器中断服务子程序 (31)4.2 速度控制 (31)第五章总结 (35)致谢 (36)参考文献 (37)附录 (38)第一章绪论本章将简要介绍步进电机的发展过程、步进电机在日常生活中的广泛应用、步进电机作为数字控制电动机的主要特点以及本次研究的主要内容和论文安排。
设计方案与原理1 设计方案设计一个51单片机四相步进电机控制系统要求系统具有如下功能:(1)由I/O口产生的时序方波作为电机控制信号;(2)信号经过驱动芯片驱动电机的运转;(3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。
2 设计原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。
步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。
从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。
四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。
在本次设计中,我们使用的是四相单八拍的工作方式。
通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。
图 2.1 步进电机内部结构截图根据步进电机的相关相序表我们可以正常的控制电机的步进运行。
3 硬件设计根据设计要求和设计原理,我们可以绘制出基本的功能方框图,以便之后我们连接实际电路时的方便和可靠。
用键盘控制具体的功能模块,这样更能直观方便的控制整体的系统,使其达到我们预期的操作效果。
图3.1中简单描述了整个单片机系统的控制模式和控制流程,包括通过时钟电路和键盘电路,来控制ULN2003驱动电机动作。
图表图 3.1 硬件电路功能方框图4 电路原理图4.C程序代码#include <reg52.h>#define KeyPort P3#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^2;//定义锁存使能端口段锁存sbit LATCH2=P2^3;// 位锁存unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量sbit A1=P1^0; //定义步进电机连接端口sbit B1=P1^1;sbit C1=P1^2;sbit D1=P1^3;#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//DA相通电,其他相断电#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电unsigned char Speed=1;bit StopFlag;void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);unsigned char KeyScan(void);/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t)while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------主函数------------------------------------------------*/ main(){unsigned int i=512;//旋转一周时间unsigned int n=0;unsigned char num,vo,v;Init_Timer0();Coil_OFF;while(1) //正向{num=KeyScan(); //循环调用按键扫描if(num==1)//第一个按键,速度等级增加{if(Speed<15)Speed=Speed+2;}if(num==2)//第二个按键,速度等级减小{if(Speed>1)Speed=Speed-2;}if(num==3)//第三个按键,电机停转{Coil_OFFStopFlag=1;}if(num==4)//第四个按键,电机启动{StopFlag=0;TR0=1;}if(num==5)//第五个按键,电机反转{TR0=0;TR1=1;}if(num==6)//第六个按键,电机正传{TR0=1;TR1=0;}vo=(0.25*(20-Speed)*64*32)/1000;v=60/vo;TempData[0]=dofly_DuanMa[v/10]; //分解显示信息,如要显示68,则68/10=6 68%10=8TempData[1]=dofly_DuanMa[v%10];}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。
基于51单片机的步进电机直线插补目录第1章概述............................................................................................. 错误!未定义书签。
第2章设计内容的介绍.. (2)2.1步进电机原理 (2)2.2步进电机的选择 (4)2.3直线插补原理 (5)2.4设计目标 (7)第3章设计思路具体内容 (7)3.1设计思路 (7)3.2单片机及其最小系统 (7)3.3 按键电路 (8)3.4 步进电机驱动电路 (9)3.5液晶显示 (9)第四章程序设计 (11)第五章总结 ............................................................................................ 错误!未定义书签。
参考文献 . (12)附录 (13)摘要本设计为基于51单片机,利用两个四相八拍步进电机,实现四个象限中直线插补的过程。
其中一个电机正反转实现X正负方向的插补,另一个电机正反转代表Y轴正负方向插补。
并对该插补算法的原理及其实现过程进行了阐述,通过按键启动插补过程,插补结束后电机自动停止。
通过LCD1602液晶实现插补过程中插补方向的显示,最终完成了步进电机的插补过程。
关键词步进电机直线插补液晶显示第1章概述数字控制是近代发展起来的一种自动控制技术,利用数字化信号对机床及其加工过程进行自动控制,主要用于数控机床、线切割机、焊接机、气割机以及低速小型数字绘图仪等。
数控机床可以加工形状复杂的零件,具有加工精度高、生产效率高、便于改变加工零件品种等众多优点,是实现机床自动化的一个重要发展方向。
逐点比较法是数控机床在加工曲线时常用的一种方法,是常用的脉冲增量插补方法。
它是以阶梯折线来逼近直线或圆弧等曲线,与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,当脉冲当量足够小时,就可以达到相当高的加工精度。
基于51单片机的步进电机控制系统设计与实现步进电机控制系统是基于51单片机的一种控制系统,它主要用来控制步进电机的转动方向和转速等参数。
下面详细解释一下这个系统的设计和实现。
1. 系统硬件设计步进电机控制系统的硬件主要包括51单片机、驱动电路、步进电机和电源等部分。
其中,驱动电路是控制步进电机的关键,它通常采用L298N芯片或ULN2003芯片等常用的驱动模块。
在硬件设计方面,主要需要考虑以下几个方面:(1)步进电机的种类和规格,以便选择合适的驱动电路和电源。
(2)驱动电路的接线和参数设置,例如步进电机的相序、脉冲频率和电流大小等。
(3)电源的选取和参数设置,以满足系统的供电要求和安全性要求。
2. 系统软件设计步进电机控制系统的软件设计主要包括编写控制程序和调试程序。
其中,控制程序是用来实现步进电机的正转、反转、加速和减速等控制功能,而调试程序则用来检测系统的电路和程序的正确性和稳定性。
在软件设计方面,主要需要考虑以下几个方面:(1)确定控制程序的算法和流程,例如使用“循环控制法”或“PID控制法”等控制方法。
(2)选择编程语言和编译器,例如使用汇编语言或C语言等。
(3)编写具体的控制程序和调试程序,并进行测试和调试,以确保程序的正确性和稳定性。
3.系统实现步进电机控制系统的实现主要包括硬件组装和软件烧录两个部分。
在硬件组装方面,需要按照硬件设计图纸进行零部件的选取和电路的组装,同时进行电源和信号线的接入。
在软件烧录方面,需要使用专用的编程器将程序烧录到51单片机的芯片中,并进行相应的设置和校验。
总之,基于51单片机的步进电机控制系统是一个功能强大、应用广泛的控制系统,可以实现精密控制和自动化控制等多种应用,具有很高的实用价值和研究价值。
本科生毕业设计(文献综述)题目:步进电机的设计与仿真姓名:学号:系别:电气工程专业:电气工程及其自动化年级:指导教师:步进电机控制器的设计与仿真——文献综述一选题的背景与意义步进电机作为一种将电脉冲信号转化为机械角位移或者线位移的机电元件,它能够在不涉及伺服系统复杂反馈环路的情况下实现良好的定位精度,并且具有性价比高、易于控制及无累计误差等优点,在民用、工用的经济型数控开环定位系统中获得了广泛的应用,且具有较高的实用价值。
步进电动机与一般电动机不同。
它的角位移量或者直线位移量正比于电脉冲数,而其线速度或者转速则正比于脉冲频率。
并且,在负载能力变化范围内,不会因电源电压、负载、环境条件的波动而变化[5]。
另外,步进电动机还可以在较宽的范围内,通过改变脉冲频率来调速;能够快速起动、制动和正反转;并且步进电动机还有一定的自锁功能。
由于步进电动机具有上述特点,因此由它和驱动控制器组成的开环数控系统,既具有较高的控制精度,良好的控制性能,又能稳定可靠的工作。
这些优点使得步进电动机在庞大的电机家族中占有不可替代的位置。
而混合式步进电动机的设计方法使得它就像是反应式和永磁式步进电动机的结合,可以像反应式一样的小步距,也具有永磁式控制功率小、绕组电感较小的特点。
目前广为使用的是两相混合式步进电动机,它的典型结构是定子8个极,转子齿数为50个,步距角为1.8度,它是上世纪60年代的美国专利,70年代初因应用于计算机外设,且专利保护的取消而迅速发展,但是它存在着两个明显的固有缺点,一个是步距角较大,使得低速转动时有较严重的振动和噪声,另一个是当频率突变过大时容易堵转、丢步或者过冲,这两个缺点对定位系统的精度会产生较大的影响。
步进电机作为一种机电一体化设备,电机本身固有的问题可通过驱动器或者控制器来弥补。
采用细分驱动技术可以大大减少低速转动时的振动和噪音,还可以起到减小步距角、提高分辨率、增大输出力矩的效果;采用升降频控制技术,则可以克服步进电机高速起停时存在的堵转、丢步或者过冲等问题,使步进电机转动得更加平稳、定位更加精确一个好的控制器可以使步进电动机控制更灵活,在很大程度上改善其运行性能。
项目设计报告项目名称:步进电机的控制课程名称:单片机应用工程技术训练学院:机电学院专业:机械工程及自动化学号:2010090301304/22/37姓名:张梦迪张博文崔剑锋成绩:2013年05月28 日1.设计任务设计基于51单片机的步进电机测控系统。
基本功能:可6键控制步进电机的启动/停止、加速/减速和正转/反转。
扩展功能:可在LED显示器上实时显示步进电机的运行状态。
2. 设计要求2.1. 基本功能(1)利用2按键控制步进电机的启停与停止。
系统上电后,等待启动命令;按“启动”键后,步进电机开始正转(默认转向和转速);在转动过程中,按“停止”键后步进电机停止转动,程序回到上电状态。
要求按键作消抖处理。
(2)利用2个按键改变步进电机的转动方向,使其在转动过程中按“正转”键时步进电机正转;按“反转”键时步进电机反转,要求按键作消抖处理。
在LCD显示器上显示步进电机的转向。
(3)利用2按键改变步进电机的转速,使其在转动过程中按“加速”键时步进电机的转速增加10r/min,按“减速”键时步进电机的转速减少10r/min,转速控制在10~100r/min的范围内。
默认值为50r/min。
2.2.扩展功能电机运行后,在LED显示器上实时显示步进电机的运行状态。
2.3. 材料清单表1. 材料清单序号数量步进电机的控制规格1 1 四相步进电机2 1 电机驱动器ULN20033 6 独立式按键4 1 LED显示器3、总体方案设计3.1 步进电机控制设计要点本系统中驱动的电机为四相步进电机。
该四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动[6]。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
本系统使用的工作方式便为四拍工作方式。
工作方式如图2所示:在用软件控制时,主要设计要点如下:(1)判断旋转方向;(2)按相序确定控制字;(3)按顺序输入控制字;(4)确定控制步数和每一步的延时时间。
系统控制简图如图3所示:图3. 系统控制简图4. 硬件设计4.1 各单元模块功能及电路设计,绘制电路原理图;1)按键设计该系统中运用到六个控制按钮,即正转、反转、启动、停止、加速、减速,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂。
按键电路如图4所示图4. 按键电路图2)显示设计使用LED 实时显示步进电机的转向和转速,方法简单,容易控制,成本低。
控制按键单片机 AT89c51功率驱动电路步进电机数码管显示模块显示电路图如图5所示图5. 显示电路图3)功率驱动电路对单片机发出的脉冲信号进行放大,来控制步进电机运转。
功率驱动电路如图6所示图6. 驱动电路图4.2 电路参数的计算及元器件的选择。
表2.步进电机单4拍方式节拍控制字表通电顺序P1口线输出状态控制字P1.3(D)P1.2(C)P1.1(B) P1.0(A)A000101B001002C010004D100008电路晶振频率为12MHz步进电机步距角为18度5、软件设计通过项目分析,由于随时有可能输入启动停止信号、加减速信号和方向改变信号,因而采用中断方式,这样总共要完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分以及中断部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。
5.1 软件设计及程序流程图1)主程序设计主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。
其中系统初始状态的设置内容较多,该系统中,需要选定定时器工作方式、初始化定时器、开放外部中断,设置标志位及偏移量。
主程序流程图如图7所示。
主程序中开放了正反控制标志位30H,设置默认转速值放于中间寄存器R2,设置步进电机工作方式为单相四拍并存储于中间寄存器R4中。
系统初始化调用显示子程序调用按键扫描程序开始图7. 主程序流程图2)LED显示子程序在显示子程序中,由于需要四位数码管显示,单片机的I/O接口不够用,所以需要使用数码管动态显示,在显示程序中,先要完成送显字符BCD译码,在对译码数据进行送显。
显示子程序如图8所示。
在显示子程序中,由于要对显示进行查表,为避免与按键与电机扫描查表混乱,所以需要对表头地址进行堆栈,保护现场,设置的堆栈地址为40H,41H,42H。
进入取显示数据分离数据取送字位码取送字形码判断3位是否显示完毕返回修改字位码YN 图8. 显示子程序流程图3)按键扫描子程序按键扫描程序中通过扫描单片机P3.0—P3.5引脚是否识别到低电平来确认是否有按键按下,进而修改标志位使电机改变运转方式以及更改数码管显示。
按键扫描子程序如图9所示。
进入检测那个按键启动键按下启动定时结束检测是否有按键按下按下执行相应程序返回YN启动键按下进入启动定时结束返回停止键按下进入停止定时结束返回正转键按下进入设标志位返回启动键按下启动定时结束反转键按下进入设标志位返回取速度表定时加速键按下判断是否为最高速进入进入判断是否为最高速循环次数返回偏移量加一进入YN加速键按下判断是否为最高速进入判断是否为最高速取速度表定时循环次数返回偏移量加一进入YN启动键停止键正转键反转键加速键减速键图9. 按键扫描子程序流程图4)定时中断子程序定时器可以使用查双字表,也可以通过设定一个基本定时时间再循环来实现。
在本次设计中,使用定时器来实现步进电机的转速控制,由于需要多次调用,所以相比较而言,查双字表比较麻烦,所以选用第二种方式;再根据定时器四种工作方式以及本次设计的要求,所以使用定时器1,工作方式TMOD=1,根据步进电机的速度控制要求,设定定时器的基本定时时间为t=2.4ms,计算计数初值:X=216-2.4*10-3*12*106/12=63163=0F6A0H,即定时器初值为:TH1=0F6H TL1=0A0H 定时器的设计如表3所示表3. 定时器设计速度(r/min)10 20 30 40 50 60 70 80 90 100单步所需时间(ms)300 150 100 75 60 50 43 38 33 30基本定时时间(ms)2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4循环次数(n)125 63 42 31 25 21 18 16 14 13定时器子程序流程图如图10所示进入重新赋值判断是否循环完毕压栈DPTR判断是否为正转送控制字偏移量加一判断四步是否走完重赋偏移量初值返回定时器启动取正转控制字取反转控制字YNY NYN6、系统调试及结果6.1列出调试内容、调试方法以及具体步骤;调试内容及具体操作控制方法如下:1、当按电机启动按键时,步进电机根据制定默认状态开始转动;2、当按电机停止按键时,步进电机停止转动;3、当按电机加速按键时,步进电机速度增加10r/min继续转动;4、当按电机减速按键时,步进电机速度减少10r/min继续转动;5、当按电机反转按键时,步进电机反转;6、当按电机正转按键时,步进电机正转;具体调试方法为断点调试方法,单步执行。
6.2说明调试中出现的问题及解决方法。
1.反转不能正常运行解决办法:没有正确运用标志位,通过中断检测和单步运行,找到问题是送给步进电机的控制字不正确,所以一直在抖动。
通过设置标志位,判定正反转,然后再赋表头地址,查表取控制字,然后反转运行正常2.调速不正常解决办法:同样是查表有问题,通过中断检测和位状态监控找到问题,然后通过逻辑分析调整偏移量和表头地址,解决问题3.显示程序与转速冲突解决办法:当加上显示子程序的时候,表达到五个,查表的DPTR产生相互之间的影响,从而是查表混乱,通过设置堆栈指令保护现场,然后在每次查表的时候重新给一下表头地址,这样就可以保证每次查表的正确性。
7、设计总结步进电机的控制可以用硬件,也可以用软件通过单片机实现。
本系统采用了软件方法,即用单片机产生控制脉冲来控制步进电机的运行状态,这种方比采用硬件方法,即采用脉冲分配器芯片进行通用换相控制,电路更加简单,成本更低。
在做本次设计的过程中,我感触最深的当属查阅大量的设计了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的。
在这次课程设计中,我们运用到了以前所学的专业课知识。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
设计结束了,但是从中得到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
此次设计更锻炼了我的毅力,我觉得做任何事情要善始善终,不要中途放弃,只要自己认真的去对待,再难的问题也能找到办法解决。
8、参考资料1. 参考教材一:《单片机接口技术实训指导书》作者:北京联合大学机电学院2. 参考教材二:《微机原理与接口技术实验指导书2009》作者:北京联合大学机电学院3.参考教材三:《单片机应用技术》,科学出版社作者:赵林惠9、附件1. 系统电路原理图见附录I2. 程序清单及注释见附录II成员签字:附录I 系统电路原理图附录II 程序清单及注释DISP_0 EQU 40HDISP_1 EQU 41HDISP_2 EQU 42HORG 0000HAJMP MAINORG 001BHAJMP T1_INORG 0080HMAIN: MOV SP,#65hMOV TMOD,#10H ;定时器1 工作方式1MOV TH1,#0F6H ;定时器初值MOV TL1,#0A0HMOV IE,#88H ;开放中断MOV A,#00HMOV R4,#04 ;单四拍MOV R3,#0SETB 30H ;开放正反转标志位MOV R2,#25 ;默认值为50r/minMOV 60H,R2MOV 45H,#04 ;默认转速值LP: ACALL DISPLAY ;调用显示子程序ACALL KEYSJMP LPKEY: MOV P3,#0FFH ;p3口写1MOV A,P3CPL A ;取反,按下去是1不按是0JZ EXITACALL DELAY ;调用延时消抖MOV A,P3 ;读P3口,验证是否有键按下CPL A ;取反,按下去是1不按是0JZ EXIT ;无键按下,退出子程序。
有键按下,确定键号。
JB ACC.0,KEY1 ;查询1号键正转JB ACC.1,KEY2 ;查询2号键反转JB ACC.2,KEY3 ;查询3号键停止JB ACC.3,KEY4 ;查询4号键启动JB ACC.4,KEY5 ;查询5号键加速JB ACC.5,KEY6 ;查询6号键减速EXIT: RETKEY1: MOV A,P3 ;检查键位是否释放JNB ACC.0,KEY1 ;键未释放,则继续等待,否则向下执行相应的功能程序SETB 30H ;正转RETKEY2: MOV A,P3JNB ACC.1,KEY2CLR 30H ;反转RETKEY3: MOV A,P3JNB ACC.2,KEY3CLR TR1 ;停止JNB ACC.3,KEY4SETB TR1 ;启动RETKEY5: MOV A,P3JNB ACC.4,KEY5MOV A,45HCJNE A,#09H,K5 ;判断转速是否为最大值MOV 45H,#09HSJMP K55K5: INC 45HK55: MOV A,45HMOV DPTR,#TAB3MOVC A,@A+DPTRMOV R2,AMOV 60H,ARETKEY6: MOV A,P3JNB ACC.5,KEY6MOV A,45HCJNE A,#00H,K6 ;判断转速是否为最小值MOV 45H,#00HSJMP K66K6: DEC 45HK66: MOV A,45HMOV DPTR,#TAB3MOVC A,@A+DPTRMOV R2,AMOV 60H,ACLR aRETT1_IN: MOV TH1,#0F6H ;重新赋定时器初值MOV TL1,#0A0HDJNZ R2,T1_ENDMOV R2,60Hpush DPHpush DPLJNB 30H,LP1 ;判断正反转MOV DPTR,#TAB1LB: MOV A,R3MOVC A,@A+DPTRMOV P0,AINC R3CLR ADJNZ R4,T1_ENDSJMP LP3LP1: MOV DPTR,#TAB2SJMP LBLP3: MOV R4,#04HMOV R3,#0T1_END: pop DPLpop DPHL1: MOV R6,#0FAHDJNZ R6,$DJNZ R7,L1 ;延时12ms子程序RETDISPLAY:MOV A,45HMOV DPTR,#TAB4MOVC A,@A+DPTRMOV B,#100;转换为BCD码,送入显示缓冲区DIV ABMOV DISP_2, AMOV A, BMOV B, #10DIV ABMOV DISP_1, AMOV DISP_0, BMOV R0, #DISP_0 ;置显示缓冲区首地址MOV R5, #01H ; 置字位码初值,右边第一位开始亮DIS0: MOV P2,#00H ; 关显示器MOV A, R5MOV P2, A ; 送字位码MOV DPTR, #DISP_TABMOV A, @R0MOVC A, @A+DPTR ; 查表取显示的字符的字形码MOV P1,A ; 送字形码ACALL DELAY1MOV A, R5 ; 取字位码JB ACC.3, DISRET ; 判断3位是否显示完毕RL A ; 修改字位码MOV R5, A ; 保存字位码INC R0SJMP DIS0 ; 继续显示下一位DISRET: RETTAB1: DB 01H,02H,04H,08HTAB2: DB 08H,04H,02H,01HTAB3: DB 125,63,42,31,25,21,18,16,14,13Tab4: DB 10,20,30,40,50,60,70,80,90,100DISP_TAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DHDB 7DH, 07H, 7FH, 6FHDELAY1: MOV R7,#4HDEL: MOV R6,#0FAHDJNZ R6,$ ;T=2*250*4=2msDJNZ R7,DELRETEND。