步进电机角度控制设计

  • 格式:doc
  • 大小:1.82 MB
  • 文档页数:48

下载文档原格式

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

目录

摘要 (1)

1设计任务与要求 (2)

1.1设计目的 (2)

1.2设计要求和设计指标 (2)

2方案分析 (3)

3系统硬件部分 (4)

3.1主控模块 (4)

3.2键盘输入模块 (7)

3.3电机模块 (8)

3.4显示模块 (11)

4系统软件部分 (13)

4.1整体流程图及主程序 (13)

4.2按键流程图及程序 (14)

4.3显示模块程序 (19)

4.4电动机模块流程图及程序 (20)

4.5中断程序 (22)

5仿真运行 (24)

6心得体会 (25)

参考文献 (26)

附录一:Protues硬件仿真图 (27)

附录二:系统程序 (28)

摘要

步进电机在控制系统中具有很广泛的应用。它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器或角位移发生器等。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

此次设计使用C语言作为编程语言。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它的应用围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件、三维、二维图形和动画,具体应用例如单片机以及嵌入式系统开发。

硬件部分使用89C51作为主控芯片,并使用ULN2003A将单片机的信号放大以控制步进电机,同时使用4位数码管显示转动角度及次数。

关键词:步进电机C语言AT89C51 ULN2003A 转动角度

1设计任务与要求

1.1设计目的

设计制作和调试一个由8086组成步进电机角度测控系统。通过这个过程学习熟悉键盘控制和七段数码管的使用,掌握步进电机的角度控制和角度显示方法。

1.2设计要求和设计指标

1.在显示器上显示任意四位十进制数

2.将8个键定义键值为0~7,按任意键在显示器上显示对应键值

3.实现:

(1)定义键盘按键:5个为数字键1~5;3个功能键:设置SET、清零CLR、开始START;

(2)显示器上第一位显示次数,后三位显示每次行走的角度;

(3)通过键盘的按键,设置步进电机各次的角度值;第一位设置次数,后三位设置角度值。

(4)按START键启动步进电机开始转动,按SET键停止;按CLR键清零。

2方案分析

课程设计要求设计一个直流电机微型计算机角度控制系统,定义8个键盘按键:5个为数字键1~5;3个功能键:设置SET、清零CLR、开始START;显示器上的四位可显示转动次数和每次转动角度;通过键盘的按键,设置步进电机转动次数和每次转动角度;按START键启动电机开始转动,按SET键停止;按CLR键清零。

综合分析之后,我们应该将电路实现利用键盘按键通过89C51的P3口实现输入功能,并通过89C51的P0口和P1口实现对数码管显示的控制。同时我们可以通过P2口控制ULN2003A驱动电动机运行。

我们可以将整体电路设计成几个相对独立而又有机结合的模块,来逐一进行

分析。

通过分析我们可以画出系统图,如图2-1所示。

图2-1 系统图

3系统硬件部分

3.1主控模块

3.1.1 AT89C51芯片

本次设计是使用AT89C51作为主控芯片,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89C51的40个引脚主要有一下几种

(1)VCC:供电电压。

(2)GND:接地。

(3)P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

(4)P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH 编程和校验时,P1口作为低八位地址接收。

(5)P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

(6)P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口还有其他一些特殊功能,本事设计没有使用,故在此不做叙述。

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

(8)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

(9)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,