ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:937.42KB ,
资源ID:24558377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24558377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(140404卢雅课案.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

140404卢雅课案.docx

1、140404卢雅课案成绩课程实践考核报告题 目 步进电机调速控制系统设计 课 程 名 称 单片机应用系统设计 院 部 名 称 机电工程学院 专 业 电气工程及其自动化 班 级 14电气3 学 生 姓 名 卢雅 学 号 1404202004 课程考核地点 工科楼 C304 任 课 教 师 李国利 金陵科技学院教务处制摘 要基于AT89C52单片机设计的步进电机调速控制系统,系统主要包括单片机、电机驱动模块、按键控制模块、LCD显示模块。单片机通过P3口的七个按键利用正反转函数,将信息传送到单片机的P1口再传递给电机驱动器,使电机转动。同时将是正转还是反转、是几级调速这些信息发送到LCD进行显示。

2、画出了系统原理图,进行了软件设计,给出了系统流程图,并编写了系统程序。最后进行了实物制作,实物调试结果表明,所设计的系统能够满足要求。本系统具有成本低,可靠性高和安全实用等特点。关键词:AT89C52;LCD1602;四级调速;正反转;ULN2003目 录一、概述 11.1 课题研究的目的和意义 11.2 报告的主要研究内容 1二、总体设计方案与说明 12.1 系统概述 12.2 系统整体结构框架 22.3 硬件电路主要器件选择 22.4 系统原理图 3三、系统硬件部分设计 33.1 单片机最小系统的设计 43.1.1 复位电路设计 43.1.2 晶振电路设计 53.2 驱动电路设计 63.2

3、.1 ULN2003芯片简介 63.2.2 驱动硬件电路 73.3 键盘电路的设计 73.4 显示电路的设计 8四、系统软件部分设计 124.1系统软件流程图 124.2源程序 13五、系统仿真过程与结果 185.1 protues仿真软件介绍 185.2 keil编译软件介 185.3编译及仿真步骤 185.4仿真结果 20六、系统实物制作与功能实现 22七、总结 26八、参考文献 26一、概述1.1 课题研究的目的和意义步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及

4、制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。1.2 报告的主要研究内容本报告所选的步进电机是四相步进电机,采用的方法是利用单片机控制步进电机的驱动。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制

5、脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次课程设计就是通过改变脉冲频率来调节步进电机的速度的,并且通过LCD显示其转速的级别。另外通过单片机实现它的正反转加减速,步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。二、总体设计方案与说明2.1 系统概述本控制系统主要作用是通过单片机来控制步进电机旋转,想要实现这一功能必须要对单片机软件部分和硬件设计有很多的了解,软件部分主要是通过C语言编译而硬件部分是由单片机、ULN2003、键盘、LCD等。完成硬件和软件的设计就能够实现并控制步进电机旋转。 2.2 系统整体结构框架系统

6、的整体结构如图2-1所示,本系统总体设计思路是:由键盘发出电平信号,单片机接受并转换成控制信号发送给ULN2003。ULN2003主要作用连接步进电机从而驱动步进电机,LCD显示当前步进电机的工作状态,按键的作用是控制整个系统的。图2-12.3 硬件电路主要器件选择根据系统整体结构的设计,可以确定系统所需的元器件,由于本次设计最小系统板采用生产实习所用的开发板,只需焊接部分外围电路即可。所需元器件清单如表2-2所示。表2-2元器件清单元器件名称型号数量步进电机28BYJ-481个单片机芯片ST89C521块液晶显示屏LCD16021块驱动芯片ULN20031块电阻1K 1个,10K 4个按键独

7、立按键7个排针单排若干杜邦线若干2.4 系统原理图 图2-3 系统原理图三、系统硬件部分设计本系统的硬件电路可分为单片机系统电路和外围电路。单片机的系统电路也就是单片机的最小系统,首先就要了解单片机的工作原理设计单片机最小系统。外围电路的作用就是控制显示步进电机的旋转转向等功能。以下就是对电路的主要部分进行介绍。3.1 单片机最小系统的设计单片机最小系统也就是最小应用系统,是指最少的元件组成单片机可以工作的系统。通常最小系统包括单片机、晶振电路和复位电路。具体的电路如图3-1所示。图3-1 单片机最小系统 3.1.1 复位电路设计为确保单片机稳定可靠工作,复位电路是必不可少的一部分。单片机在启

8、动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。本次设计采用的手动按钮复位。这个复位电路的原理就是利用RC电路的充电时间,使得RST端能够保持在高电平一段时间。一般取经验值R=100K,C=1uF。RST在高电平复位,低电平时正常工作1F电容和100K电阻组成一个RC延时电路,为单片机提供上电复位,加入1F电容目的是

9、不会让两边电压发生突变。电路图如图3-2所示。图3-2 复位电路 3.1.2 晶振电路设计在最小系统中,采用的是最常用的内部时钟方式,一般情况下,单片机选用的是12MHz晶振(在此频率上,T1可以很容易的产生9600的波特率供串口使用)。再由两只瓷片电容构成并联谐振电路,接在放大器的反馈回路中。事实上对外接电容并没有严格的要求,典型值选用20PF-30PF的电容。本电路中使用2个30PF的电容,晶振选择为12MHZ,该电路的主要作用是为单片机提供工作时钟。电路图如图3-3所示。图3-3 晶振电路3.2 驱动电路设计3.2.1 ULN2003芯片简介ULN2003是高耐压、大电流复合晶体管阵列,

10、由七个硅NPN复合晶体管组成,内部方框图如图4-4所示。它的的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还 可以在高负载电流并行运行。图3-4 ULN2003 内部方框图ULN2003的芯片引脚为:引脚1:CPU脉冲输入端,端口对应一个信号输出端。 引脚2:CPU脉冲输入端。 引脚3:CPU脉冲输入端。 引脚4:CPU脉冲输入端。 引脚5:CPU脉冲输入端。 引脚6:CPU脉冲输入端。 引脚7:

11、CPU脉冲输入端。 引脚8:接地。 引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。 引脚10:脉冲信号输出端,对应7脚信号输入端。 引脚11:脉冲信号输出端,对应6脚信号输入端。 引脚12:脉冲信号输出端,对应5脚信号输入端。 引脚13:脉冲信号输出端,对应4脚信号输入端。 引脚14:脉冲信号输出端,对应3脚信号输入端。 引脚15:脉冲信号输出端,对应2脚信号输入端。 引脚16:脉冲信号输出端,对应1脚信号输入端。3.2.2 驱动硬件电路目前,已有多种步进

12、电机驱动集成电路芯片,它们大多集驱动和保护于一体,作为小功率步进电机的专用驱动芯片,广泛用于小型仪表、计算机外设等领域,使用起来非常方便。本设计采用ULN2003芯片。ULN2003芯片适用于四相步进电机的驱动。驱动电路如图3-5所示。图3-5 步进电机驱动电路3.3 键盘电路的设计键盘是单片机常用的输入设备,是实现人机对话的重要纽带。键盘就是有一组排列规则的按键组成,而按键就是一种开关元件。常见的按键开关可分为触点式开关和无触点式开关。本次设计所用的四角清楚开关就是一种触点式开关。系统中通过按键来发送控制信号,按键的打开与闭合决定了输入口的高低电平,从而起到产生控制信号的作用。本次设计采用了

13、七个按键,分别控制步进电机的正转反转、四个档速和停止。按键电路如图3-6所示。图3-6 按键电路3.4 显示电路的设计为了能更直观的显示步进电机当前的工作状态,包括电机运行状态、转速和转向,普通的数码管无法显示,这时我们可以选择液晶显示屏来完成本次设计的显示功能。液晶显示屏选用LCD1602,它的驱动更简单更方便。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块.它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形.

14、其显示的内容为16X2,即可以显示两行,每行16个字符。LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚)。其接口信号说明如表3-1所示:表3-1 1602信号说明引脚号引脚名电平输入/输出作用1Vss电源地2Vcc电源(+5v)3Vee对比调节电压4RS0/1输入0=输入指令1=输入数据5R/W0/1输入0=向LCD写入指令或数据1=从LCD读取信息6E1,1-0输入使能信号,1时读取信息1-0(下降沿)执行指令7DB00/1输入/输出数据总线line0(最低位)8DB10/1输入/输出数据总线line19DB20/1输入

15、/输出数据总线line210DB30/1输入/输出数据总线line311DB40/1输入/输出数据总线line412DB50/1输入/输出数据总线line513DB60/1输入/输出数据总线line614DB70/1输入/输出数据总线line715A+ VccLCD背光源正极16K接地LCD背光源负极其内置了DDRAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表3-2:表3-2 屏幕位置对应DDRAM地址显示位置123456740DDRAM地址第一行00H01H02H03H04H05H06H27H第二行40H41H42H43H44H45H46H67H在地址中写入显示数

16、据,可以直接显示或者通过移屏指令显示出来。LCD1602的基本操作时序:读状态 输入:RS=L,RW=H,E=H 输出: DB0DB7=状态字写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无 写操作时序如图3-7所示:图3-7写操作时序图一般写操作1602液晶的流程如下:(1) 通过RS确定是写数据还是写命令。(2) 读写控制端设置为写,即低电平。(3) 将数据或命令送到数据线上。(4) 给E一个高脉冲将数据送入液晶控制

17、器,完成写操作。读操作时序图如图3-8所示:图3-8读操作时序图1602的接口电路很简单不需要驱动电路,具体的电路如图4-10所示。其中R是改变显示屏的对比度,通常选用一个1K的电位器。端口4为数据命令选择端,接单片机的P3.5口。5端为读写选择端,接单片机的P3.6口。6端为使能信号,接P3.4口。D0-D7与P0口相连。:图3-9 LCD1602接口电路四、系统软件部分设计4.1系统软件流程图本次设计用按键控制步进电机正转、反转、加速、减速等。驱动方式采用两相励磁,即4条信号线每次有两个为高电平,LCD显示步进电机的正反转、速度等级等。其程序流程图如图4-1所示图4-1系统程序流程图4.2

18、源程序 #include #include #include #define uchar unsigned char #define uint unsigned int uchar code CCW8=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09; /逆时钟旋转相序表 uchar code CW8=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08; /正时钟旋转相序表 uchar displaytemp115 = DIR: ; uchar displaytemp215 = SPD: ; uchar dir,spd; sbit K1

19、=P30; /正转按键 sbit K2=P31; /反转按键 sbit K3=P32; /停止按键 sbit K4=P33; /一档按键 sbit K5=P34; /二档按键 sbit K6=P35; /三档按键 sbit K7=P36; /四档按键 /显示函数 void DISPLAY() displaytemp16=dir%16+0x30; LCD_Write_String(0,0,displaytemp1);/显示第一行 displaytemp26=spd%16+0x30; LCD_Write_String(0,1,displaytemp2);/显示第二行 void delaynms(u

20、int aa) /延时 uchar bb; while(aa-) for(bb=0;bb10;bb+) /1ms基准延时程序 ; void delay500us(void) int j; for(j=0;j57;j+) ; /*正转调速函数*/void motor_ccw1(void)/正转一档调速函数 uchar i,j; for(j=0;j8;j+) /电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=1; dir=2; P1=CCWi; delaynms(40); /

21、调节转速 void motor_ccw2(void)/正转二档调速函数 uchar i,j; for(j=0;j8;j+) /电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=2; dir=2; P1=CCWi; delaynms(30); /调节转速 void motor_ccw3(void)/正转三档调速函数 uchar i,j; for(j=0;j8;j+) /电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 if(K3=0) break; /如果K3按下,

22、退出此循环 for(i=0;i8;i+) /旋转45度 spd=3; dir=2; P1=CCWi; delaynms(20); /调节转速 void motor_ccw4(void)/正转四档调速函数 uchar i,j; for(j=0;j8;j+) /电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=4; dir=2; P1=CCWi; delaynms(10); /调节转速 /*反转调速函数*/void motor_cw1(void)/反转函数 uchar i,j;

23、 for(j=0;j8;j+) if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=1; dir=1; P1=CWi; delaynms(40); /调节转速 void motor_cw2(void)/反转函数 uchar i,j; for(j=0;j8;j+) if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=2; dir=1; P1=CWi; delaynms(30); /调节转速 void motor_cw3(void)/反转函数 uchar i,j; for(j=0

24、;j8;j+) if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=3; dir=1; P1=CWi; delaynms(20); /调节转速 void motor_cw4(void)/反转函数 uchar i,j; for(j=0;j8;j+) if(K3=0) break; /如果K3按下,退出此循环 for(i=0;i8;i+) /旋转45度 spd=4; dir=1; P1=CWi; delaynms(10); /调节转速 /*主函数*/void main(void) uchar r; uchar N=64; /因为步进电机是

25、减速步进电机,减速比的1/64 , /所以N=64时,步进电机主轴转一圈 LCD_initial(); /初始化液晶 while(1) P3=0xff; if(K1=0) for(r=0;rN;r+) /电机正转 if(K4=0) motor_ccw1(); if(K5=0) motor_ccw2(); if(K6=0) motor_ccw3(); if(K7=0) motor_ccw4(); if(K3=0) break; else if(K2=0) for(r=0;rN;r+) if(K4=0) motor_cw1(); /电机反转 if(K5=0) motor_cw2(); if(K6=

26、0) motor_cw3(); if(K7=0) motor_cw4(); if(K3=0) / beep(); break; else P1=0xf0; /电机停止 DISPLAY(); 五、系统仿真过程与结果5.1 protues仿真软件介绍Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、80

27、86和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。5.2 keil编译软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 5.3编译及仿真步骤(1)新建一个工程,如图5-1图5-1 新建工程(2)在Atmel里选择AT89C52,如图5-2图5-2 选择Atmel(3)右击添加.c文件进行编译,如图5-3图5-3添加.c文件(4)编译无错误即可生成.hex文件,如图5-4、5-5图5-4选择Options for Target图5-5 生成.hex文件(5)在仿真图中,双击单片机添加此.h

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1