基于51单片机控制步进电机

合集下载

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

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

基于51单片机的步进电机控制系统设计中文摘要步进电机是一种受脉冲信号控制,并且能将脉冲信号转化为相应的角位移或者线位移的数字电动机。

由于步进电机具有步距误差不积累、运行可靠、结构简单、惯性小、成本低等优点,因此,被广泛使用于计算机外围电路、自动化控制装置以及其他的数字控制装置中,如打印机、钟表、数模转换设备等装置中。

随着科学技术的快速发展,相应的控制系统也产生了很多种类,步进电机的身影在众多领域中可以看到。

其中采用单片机作为控制核心的控制系统,由于其电路简单、成本低、可靠性强等优点,满足众多领域的需求,得到了大量的运用.因此,研究基于单片机的步进电机控制系统,具有重要的现实意义。

本设计研究的是基于51单片机对步进电机的控制系统。

通过单片机的I/O端口输出时序方波作为控制信号,信号经过芯片ULN2003驱动芯片驱动步进电机进行不同的指令进行工作。

根据不同的需要,通过按键电路来控制步进电机的启停、正反转和加减速等功能,并在数码管上实时显示步进电机的工作状态。

本文给出了电路各个模块的电路图,并用Proteus的ISIS软件对控制系统的各个功能进行了仿真,并给出了相应的仿真结果图像。

关键词:单片机;步进电机; 电机驱动; 控制系统AbstractStepper motor controlled by a pulse signal,and a pulse signal can be converted to the corresponding angular displacement or linear displacement of the digital motor。

As the stepper motor has a step error does not accumulate, reliable, simple structure,small inertia, low cost, and therefore,are widely used in computer peripheral circuits,automatic control devices and other digital control devices, such as printers,watches and clocks ,digital to analog conversion equipment,and other devices. With the rapid development of science and technology,the corresponding control system also produced many types of stepper motor figure can be seen in many areas. Which uses microcontroller as the control of the control system,because of its simple circuit, low cost,high reliability, etc。

基于51单片机的步进电机控制

基于51单片机的步进电机控制
7
电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-。。。), 八拍(A-AB-B-BC-C-CD-D-DA-A。。。) 3、系统电路图
(1)接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容 0.1uF (2)接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用 12MHz), 还有辅助电容 20pF (3)接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析 复位工作原理 4、 接配置:EA(PIN31) (1)四个 8 位通用 I/O 端口,对应引脚 P0、P1、P2 和 P3; (2)两个 16 位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) (3)一个串行通信接口;(SCON,SBUF) (4)一个中断控制器;(IE,IP) 根据以上的方案比较与论证确定总体方案,确定硬件原理图。原理图如下:
1.3 步进电机的特点
1.精度高 一般的步进电机的精度为步进角的 3-5%,且不累积。可在宽 广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反 转控制及制动 等,这是步进电动机最突出的优点
2.过载性好——其转速不受负载大小的影响,不像普通电机,当负载加大 时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的 场合;
一、步进电机与驱动电路
1.1 什么是步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱 动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度 (及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目 的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调 速的目的。

基于51单片机控制步进电机毕业设计论文

基于51单片机控制步进电机毕业设计论文

基于51单片机控制步进电机毕业设计论文LTDesign of stepping motor control system based on single chip microcomputerAbstractStepping motor is a kind of by electric pulse signal to control actuator, because it is easy to control, small size and other characteristics, so in the CNC system, automatic production lines, automatic instrument, drawing machine and printer has a widely application. The popularization and application of microelectronic technology and rapid development of micro computer, and gradually into the application field of the motor, which makes before hardware circuit controller of large and complex can now be used software to achieve. This not only reduces the cost of hardware, but also improves the flexibility, reliability and functionality of the control. Because of the stepper motor with instantaneous start, rapid stop, high accuracy, and with the composition of the open loop system is simple, cheap, and very practical. Therefore, the design of based on single-chip stepper motor control system has great value and broad application.This paper mainly studies the design of the stepper motor system based on single chip microcomputer. The content of the subject includes the principle of step motor and single chip microcomputer, the stepper motor drive circuit is analyzed, and the system hardware circuit and program are designed and tested. The design of stepping motor control system adopts the method of software and hardware co simulation, which can effectively reduce the time and cost of the system development. Using Protues simulation software to complete the motor positive inversion, deceleration and stop start and other basic functions, using single chip microcomputer, stepping motor drive chip, character type LCD and keyboard array element module, the design of the controller and the driver for one step into the simulation of motor control system, realizes the function of the stepper motor range setting, position control and real-time display of a step into the working state of the motor. The hardware of the system consists of control circuit, display circuit, alarm feedback circuit and drive circuit, the corresponding software program is designed according to the hardware circuit, and the debugging and analysis are carried out. The design system has the characteristics of clear thinking, high reliability, strong stability and so on.Keywords: stepping motor ;drive circuit;single chip microcomputer;simulation and control system目录第一章绪论 (1)1.1课题背景 (1)1.2课题的目的和意义 (1)1.3课题的内容 (2)第二章步进电机的结构与特点 (3)2.1步进电机的构造 (3)2.2步进电机的工作原理 (4)2.3步进电机的主要特征 (5)2.4步进电机绕组的电气特性 (7)2.5步进电机的选型 (8)第三章设计原理分析 (9)3.1设计目的 (9)3.2设计要求 (9)3.3总体设计方框图 (10)3.4设计方案论证 (10)3.4.1系统控制方案 (10)3.4.2驱动模块方案选择 (13)3.4.3最终方案确定 (15)第四章步进电机控制系统硬件设计 (15)4.1单片机最小系统 (15)4.2 控制电路 (17)4.3 驱动电路 (19)4.4 显示电路 (20)4.5 位移越界报警电路 (21)4.6 状态指示灯显示电路 (22)第五章步进电机控制系统软件设计 (23)5.1主程序设计 (23)5.2 LCD显示程序设计 (25)5.3转速控制程序设计 (27)5.4程序设计 (28)5.5角度设定程序设计 (29)5.6位移设定程序设计 (31)第六章仿真结果与分析 (34)6.1整体硬件设计图 (34)6.2测试 (34)6.3误差分析 (39)第七章总结 (40)参考文献 (42)致谢 (45)第一章绪论1.1课题背景步进电机作为控制执行器,广泛应用于各种控制领域[1]。

基于51单片机的步进电机控制

基于51单片机的步进电机控制

目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (4)2.3功能模块的设计与实现 (5)第3章结果测试及分析 (8)3.1结果测试 (8)3.2结果分析 (8)参考文献 (9)附录A (10)附录B(电路原理图) (15)附录C (元件列表) (16)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容与要求,要实现步进电机的工作过程,步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出位移增量和输入数字脉冲对应的驱动器件。

首先要给步进电机送入脉冲信号来启动,然后在已经设定好的步进电机的正反转及三种节拍工作方式中切换,步进电机的三种节拍工作方式分别为单四拍、双四拍、单双八拍。

步进电机的驱动需要时钟脉冲信号,改变单片机输出脉冲信号来实现的。

改变各脉冲的先后顺序,可以改变电机的旋转方向和工作方式。

步进电机工作方式的转换则通过键盘控制,可以进行启动、停止、正转、反转及三种节拍工作方式的选择。

键盘的控制是在程序中已经给给每个键设置相应的功能,扫描键盘判断是否有键按下,若有,则执行与之对应的功能;若没有键按下,则保持正在运行的状态不变。

1.2 设计思路采用C语言程序设计的方法结合硬件电路设计方法,利用Lab6000实验箱上已有芯片来实现步进电机的工作(包括正转、反转、单四拍、双四拍、单双八拍的节拍工作方式)。

1)提出方案首先,实现步进电机的启动与停止;其次,实现步进电机的正反转;再次,实现在正转时可选择三种节拍工作方式;最后,实现在反转时可选择三种节拍工作方式。

2)方案论证P1口接步进电机的A~D口,键盘接通片选信号,扫描键盘,由于本程序设定固定按键为功能键,所以扫描键盘时,将使用到的按键的相应列扫描码设置为低电平,如果有键按下,74LS374输出的低电平经过按键被接到74LS245的端口上,这样从74LS245读回的数据就会有低位,根据74LS374输出的列信号和74LS245读回的行信号,就可以判断哪个键被按下。

基于51单片机的步进电机调速系统(含完整代码)

基于51单片机的步进电机调速系统(含完整代码)

课程设计报告设计题目:遥控小车——基于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单片机控制步进电机正反转此次采用uln2003模块来链接步进电机;## 步进电机工作原理步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。

每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。

步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。

因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、B、C、D 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。

因此这种通电方式叫做四相单四拍工作方式。

1.电机正转代码unsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};2.电机反转代码unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};代码如下#include <reg52.h>#define uint unsigned int #define uchar unsigned charunsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//²½½øµç»úzhengvoid delay(unsigned int t);sbit S3=P3^4; //反转sbit S4=P3^5; //反停sbit S5=P3^6; // 正停//正转写入数据void motor_z() { unsigned char i,j; for (i=0; i<8; i++) { if(S5==0){break;} for(j=0;j<8;j++){ P1 = tableZ[i]&0x1f; delay(50); } } }//反转写入数据void motor_f(){ unsigned char i,j; for (i=0; i<8; i++) { if(S4==0){break;} for(j=0;j<8;j++){ P1 = tableF[i]&0x1f;delay(50); } }}void delay(unsigned int t)//延时函数{ unsigned int k; while(t--) { for(k=0; k<60; k++) { } }}void main(){while(1){motor_z();if(S3 == 0){motor_f();}}}•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22•23•24•25•26•27•29 •30 •31 •32 •33 •34 •35 •36 •37 •38 •39 •40 •41 •42 •43 •44 •45 •46 •47 •48 •49 •50 •51 •52 •53 •54 •55 •56 •1•3 •4 •5 •6 •7 •8 •9 •10 •11 •12 •13 •14 •15 •16 •17 •18 •19 •20 •21 •22 •23 •24 •25 •26 •27 •28 •29 •30 •31•33•34•35•36•37•38•39•40•41•42•43•44•45•46•47•48•49•50•51•52•53•54•55•56protel仿真图如下。

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

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

基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。

本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。

一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。

1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。

本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。

2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。

电源电压和电流的大小需要根据具体的步进电机来确定。

3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。

常用的步进电机驱动芯片有L297、ULN2003等。

4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。

这些电路的设计需要根据具体的应用来确定。

二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。

根据实际需求还可以进行其他模块的初始化设置。

2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。

脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。

脉冲信号可以通过定时器产生,也可以通过外部中断产生。

3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。

开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。

4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。

51单片机驱动步进电机的方法

51单片机驱动步进电机的方法

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引脚来控制步进电机的转动。

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

单片机原理及系统课程设计1 引言步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。

单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。

随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。

步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。

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

到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。

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

在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。

2 设计方案与原理4.1 设计方案设计一个51单片机四相步进电机控制系统要求系统具有如下功能:(1)由I/O口产生的时序方波作为电机控制信号;(2)信号经过驱动芯片驱动电机的运转;(3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止和单步运行。

4.2 设计原理步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。

步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。

从结构上看,步进电机分为三相、四相、五相等类型,本次设计的是四相电机。

四相步进电机的工作方式有单四拍、双四拍和单双八拍三种。

在本次设计中,我们使用的是四相单八拍的工作方式。

通过P1口给A,B,C,D四相依次输出高电平即可实现步进电机的旋转,通过控制两次输出的间隔,即可实现对步进电机的速度控制。

图 2.1 步进电机内部结构截图根据步进电机的相关相序表我们可以正常的控制电机的步进运行。

3 硬件设计根据设计要求和设计原理,我们可以绘制出基本的功能方框图,以便之后我们连接实际电路时的方便和可靠。

用键盘控制具体的功能模块,这样更能直观方便的控制整体的系统,使其达到我们预期的操作效果。

图3.1中简单描述了整个单片机系统的控制模式和控制流程,包括通过时钟电路和键盘电路,来控制UNL2803驱动电机动作。

图 3.1 硬件电路功能方框图图3.2截图中是UNL2803中的细节电路,用前四个输入输出口连接步进电机的四个输入口。

图3.3截图是单片机的键盘控制电路,对系统的控制功能模块的选择和控制。

包括正转启动按钮、反转启动按钮、停止位按钮、加速按钮、减速按钮和单步运行按钮。

图 3.2 步进电机及其驱动电路截图图 3.3 按键设置及其连接引脚截图以上电路功能截图均出自于proteus仿真软件。

4 软件设计软件设计中,我们查询键盘按钮控制方式来选择步进电机运行的工作状态。

在程序里面对按钮分配的I/O地址分别为正转启动位是P3.0,反转启动为是P3.1,停止位是P3.4,加速位是P3.2,减速位是P3.3,单步执行位是P3.5。

通过外部中断INT0和INT1来实现加速减速的外部输入。

图4.1 主程序流程图程序里面加上了防止正常运行过程中电机的突然转向的阻断。

防止电机的意外损坏。

在转向之前,必须按下停止按钮,然后再发出电机的下一条控制命令。

当然,我们的加速减速通过外中断可以在电机正常运行过程中进行操作。

增加了我们系统的可操作性和高可控性。

总结在本次课程设计中,首次接触到单片机的应用,接到题目时,对步进电机一无所知,并对如何使用单片机也不甚了解,仅仅知道一些生硬的指令和符号,并不知道它们到底如何使用以及其意义,通过老师指导,然后自己在课后翻阅书籍和上网,搜集到了不少有关步进电动机的知识。

通过钻研这些知识,总算对步进电机有了认识,但是这离课程设计需要掌握的知识相差甚远,为了缩短这种差距,只能不断地查阅资料,仔细揣摩。

在这次课程设计中,通过用单片机控制步进电机的起动、停止,正、反转,加、减速,也对单片机的知识也进行了复习和巩固。

设计仿真电路的过程中,必须要有耐心,在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,仔细比较分析其原理以及可行的原因。

这就要求对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。

同时在本次设计过程中,还学会了高效率的查阅资料、运用工具书、利用网络查找资料。

发现,在所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求应更加注重实践环节。

那时候觉得学习单片机是那么的枯燥乏味,整天只是学习这个指令做什么,那个指令做什么,觉得学了一点用都没有。

现在知道,原来一些生硬的指令组合起来竟然可以实现如此多的实用功能。

俗话说的好,实践是检验真理的唯一标准,学习再多的理论也只能纸上谈兵,只有把理论应用到实践中,才能检验出理论的真伪。

所以,虽然一周的时间不长,时间过得也很快,但是在这一周过去后,明白了学习与实践相结合的重要性,指引我在以后的学习中应该把理论和实践联系起来。

参考文献[1] 李华,王思明,张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001.4(1):75-89.[2] 黄勤.单片机原理及应用[M].北京:清华大学出版社,2010.4(2):110-120.附录A 仿真界面截图图 3.4 Proteus仿真截图附录B 步进电机相序表表 2.2 四相八拍步进电机相序表A B C D0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 00 1 0 01 1 0 0 1 0 0 0 1 0 0 1附录C 主程序#include <reg51.h> //51芯片管脚定义头文件#include <intrins.h> //内部包含延时函数_nop_();#define uchar unsigned char#define uint unsigned intuchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; sbit K1 = P3^0; //正转sbit K2 = P3^1; //反转sbit K3 = P3^2; //停止sbit K4 = P3^3; //正向单步运行sbit K5 = P3^4; //加速sbit K6 = P3^5; //减速int num=2000;void motor_ffw();void motor_rev();void motor_ffw2();/********************************************************/ /* 延时t毫秒/* 11.0592MHz时钟,延时约1ms/********************************************************/ void delay(int t){uint k;while(t--){for(k=0; k<20; k++){ }}}/********************************************************/ /*步进电机正转单步执行/********************************************************/ void motor_single(){uchar i;for (i=0; i<8; i++) //一个周期转45度{P1 = FFW[i]; //取数据delay(num); //调节转速}}/********************************************************/ /*步进电机正转/********************************************************/ void motor_ffw(){uchar i;for (i=0; i<8; i++) //一个周期转45度{P1 = FFW[i]; //取数据if(K5==0){break;} //退出此循环程序delay(num); //调节转速}}/********************************************************/ /*步进电机反转/********************************************************/ void motor_rev(){uchar i;for (i=0; i<8; i++) //一个周期转45度{P1 = REV[i]; //取数据if(K5==0){break;} //退出此循环程序delay(num); //调节转速}}/******************************************************** * 主程序*********************************************************/ void main(void){EA=1; //开放总中断EX0=1; //允许使用外中断0IT0=1; //选择负跳变来触发外中断EX1=1; //允许使用外中断1IT1=1; //选择负跳变来触发外中断while(1){if(K1==0){for(;;){motor_ffw(); //电机正转单片机原理及系统课程设计报告if(K5==0){break;} //退出此循环程序}}else if(K2==0){for(;;){motor_rev(); //电机反转if(K5==0){break;} //退出此循环程序}}else if(K6==0){motor_single(); //电机正转单步执行}elseP1 = 0xf0;}}/******************************************************/ void int0() interrupt 0 //外中断0的中断编号为0{num=num+100; //每产生一次中断请求,x+80。

}void int1() interrupt 2 //外中断0的中断编号为1{num=num-100; //每产生一次中断请求,x-80。

相关文档
最新文档