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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课程设计论文.docx

1、单片机课程设计论文单片机课程设计课题:步进电机正反转设计系 别: 电气与电子工程系专 业: 姓 名: 学 号指导老师: 河南城建学院2013年01月09日一 设计目的1、增进对单片机的感性认识,加深对单片机理论方面的理解;2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、A/D、D/A、串行口通讯等;3、了解和掌握单片机应用系统的软硬件设计过程、方法及实现;4、了解步进电机控制的基本原理,能实现电机正反转驱动控制,掌握控制步进电机转动的编程方法。 二 设计要求1、具有速度和转向设定功能;2、设置开始、停止以及正反转健;3、转速以及转向有数码管显示(本设计使用的

2、为LCD12864)。三 、总体设计步进电机是一种将电脉冲转化为角位移的数字控制执行机构。它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。 步进电机具有控制简便、定位准确等特点。随着科学技术的发展,在许多领域将得到广泛的应用。鉴于传统的脉冲系统移植性不好,本文提出微机控制系统代替脉冲发生器和脉冲分配器,用软件的方法产生控制脉冲,通过软件编程可以任意设定步进电机的转速、旋转角度、转动次数和控制步进电机的运行状态。以简化控制电路,降低生产成本,提高系统的运行效率和灵活性。步进电机的角位移与输入脉冲数严格成正比,因此,当它转动一周后,没有累计误差,具有

3、良好的跟随性。由步进电机与驱动电路组成的开环数控系统,既非常简单、 廉价,又非常可靠。同时,它也可以与角度反馈环节组成高性能的闭环数控系统。步进电机的动态响应快,易于起停、正反转及变速。速度可在相当宽的范围内平滑 调节,低速下仍能保证获得大转矩。步进电机只能通过脉冲电源供电才能运行,它不能直接使用交流电源和直流电源。 步进电机存在振荡和失步现象,必须对控制系统和机械负载采取相应的措施。步进电机自身的噪声和振动较大,带惯性负载的能力较差。 步进电机是自动控制系统中常用的执行部件。步进电机的输入信号为脉冲电流,它能将输入的脉冲信号转换为阶跃型的角位移或直线位移,因而步进电机可看作是一个串行的数/模

4、转换器。由于步进电机能够直接接受数字信号,而不需数/模转换,所以使用微机控制步进电机显得非常方便。步进电机有以下优点:(1)通常不需要反馈就能对位置和速度进行控制;(2)位置误差不会积累;(3)与数组设备兼容,能够直接接收数字信号;(4)可以快速启停。步进电机的品种规格很多,按照它们的结构和工作原理可以划分为磁阻式(也称反应式或变磁阻式)电机、混合式电机、永磁式电机和特种电机等四种主要型式。步进电机不需位移传感器就可精确定位,所以在精确定位系统中应用广泛。目前打字机、计算机外部设备、数控机床、传真机等设备中都使用了步进电机。随着电子计算机技术的发展,步进电机必将发挥它的控制方便、控制准确的特点

5、,在工业控制等领域取得更为广泛的应用。本设计采用16 位单片机AT89C51对步进电机进行控制,通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过驱动芯片驱动步进电机;同时,用触发按键来对电机的状态进行控制,并用128X64LCD显示电机的状态及转速。因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用软件控制单片机产生脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是两相的,所以只需要P0口的低四位P0.0-P0.3分别通过ULN2003A接到电机的五根电线上。可以通过调整输

6、出脉冲的频率来调整电机的转速,通过改变输入脉冲的顺序来改变转动方向,P2口和P3口接128X64LCD,可以显示当前的电机转速和转向,设置复位键可使正在转动的电机停止转动,大概可分为如下图所示的几部分。注:由于此设计程序较复杂,在此没有列出程序的框图,程序框图详见软件设计。四 、主要器件介绍及电路设计4.1、步进电机4.1.1 步进电机概述步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是

7、以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。由于脉冲信号数与步距角的线性关系,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号

8、、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。4.1.2 步进电机的工作原理通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与

9、脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四相反应式步进电机工作原理图。图2 四相反应式步进电机工作原理图开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相 绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁

10、极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示: a单四拍 b双四拍 c八拍图3.步进电机工作时序波形图4.2 ULN2003ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势

11、的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,但独每个单

12、元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。 比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。 ULN2003的作用:ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如是: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。 ULN2003 是高压大电流达林顿

13、晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 ULN2003A引脚图及功能如下:图4 ULN2003A引脚图ULN2003 是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片。 经常在以下电路中使用,作为: 1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。ULN2003的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达50

14、0mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。ULN2003 的封装采用DIP16 或SOP16 ULN2003A在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。ULN2003的输出端允许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。ULN2003可以驱动7个继电器,具有高电压输出特性,并带有共阴极的续流二极管使器件可用于开关型感性负载。每对达林顿管的额定集电极电流是500mA,达林顿对管还可并联使用

15、以达到更高的输出电流能力。ULN2003A中每对达林顿管的基极都串联有一个2.7k的电阻,可直接与TTL或5V CMOS器件连接。4.3 12864LCD12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵,16*8=128,16*4=64,一行只能写8个汉字,4行;)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。4.3.1 主要技术参数和显示特性如下:电源:VDD 3.3V-5V(内置升压电路,无需负压);显示内容:128列 64行(128表示点数)显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:

16、8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等4.3.2 外形尺寸图:图5 12864LCD外形尺寸4.3.3 主要外形尺寸项 目标 准 尺 寸单 位模 块 体 积113.065.012.8mm定 位 尺 寸105.055.0mm视 域73.438.8mm行 列 点 阵 数12864dots点 距 离0.520.52mm点 大 小0.480.48mm4.3.4 模块引脚说明引脚号引脚名称方向功能说明1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID

17、)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位 低电平有效18NC空脚19LED_A-背光源正极(LED+5V)20LED_K-背光源负极(LED-OV)逻辑工作电压(VDD):4.55.5V电源地(GND):0V工作温度(Ta):060(常温) / -2075(宽温)4.3.5 接口时序模块有并行

18、和串行两种连接方法(时序如下):4.3.5.1 8位并行连接时序图图6 MPU写资料到模块图7 MPU从模块读出资料4.3.5.2 串行连接时序图图8 串行连接时序串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABC。A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD。B为数据类型选择:H表示数据是显示数据,L表示数据是控制指令。 C固定为0第二字节:(并行)8位数据的高4位格式 DDDD0000第三字节:(并行)8位数据的低4位格式 0000DDDD串行接口时序参数:(测试条件:T=25 VDD=4.5V)4.4 系统的时钟电路时钟电路是用于产生单

19、片机工作时所必需的时钟信号。时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。在本系统中采用外部时钟方式的电路,如图所示:图9 系统的时钟电路在本设计中的电容C1、C2典型值为3010 pF。外接代内容的值虽然没有严格的要求,但是电容的大小会影响振荡器的稳定性和起振的快速性。同时,在系统中采用12MHz的晶体振荡器来产生时钟脉冲。这样可以满足系统在设计时的机器周期的需要。4.5 步进电机驱动电路由单片机直接输出的脉冲不足以驱动步进电机正常工作所以需要驱动电路给步进电机提供电源,在

20、本设计中采用型号为ULN2003A的芯片,使步进电机正常工作。驱动信号由P0口的P0.0-P0.3输出,分别与驱动芯片的B1-B4相连,电路如下图所示:图10 步进电机的驱动电路五 软件设计1、主程序的设计主程序需具备的功能,要不断扫描P1口并判断触发按键是否闭合,并能根据其电平高低,输出不同的控制脉冲,并调用显示子程序显示转速及方向。 图11 主程序设计流程程序如下#include /#include /#include #include macro.hvoid iniLCD(void); void write_hz_str( int x1,int y1, uchar *point ) ;u

21、char buf_Direction; /设定步进电机的转向uint set_speed; /设定步进电机的转速uchar step_motor_loop8=0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09;uchar step_index;uchar buf_SpeedString= ; #define CST_STEP_MOTOR_Z 10 /正转#define CST_STEP_MOTOR_F 20 /反转#define CST_STEP_MOTOR_ST 0 /停#define fosc_12MHz 12 #define fosc_24MHz 24 #de

22、fine fosc_setting fosc_12MHz /工作方式1#define CST_TIME_MS 1000 #define CST_TH0 (65536-CST_TIME_MS*fosc_setting/fosc_12MHz)/256#define ST_TL0 (65536-CST_TIME_MS*fosc_setting/fosc_12MHz)%256 void step_motor_driver(void)static uint speed_delay=0;speed_delay+;if( buf_Direction=CST_STEP_MOTOR_Z) P0=step_mot

23、or_loopstep_index; if(speed_delay =set_speed) speed_delay =0; step_index+; /大于7,从头再来 if(step_index 7) step_index =0; else if( buf_Direction=CST_STEP_MOTOR_F) P0=step_motor_loopstep_index; if(speed_delay =set_speed ) speed_delay =0; step_index-; if(step_index 0) if(temp=0xFF) key_loose=0; return; els

24、e if(temp !=0xFF) key_loose=10; temp=P1&0xFF; switch(temp) case 0xFE: buf_Direction=CST_STEP_MOTOR_Z; write_hz_str(6,20,反转); caluate(); break; case 0xFD: buf_Direction=CST_STEP_MOTOR_F; write_hz_str(6,20,正转); caluate(); break; case 0xFB: write_hz_str(6,50,100%); buf_Direction=CST_STEP_MOTOR_ST; writ

25、e_hz_str(6,20,停止); caluate(); break; case 0xEF: if(buf_Direction !=CST_STEP_MOTOR_ST) set_speed+=5; if(set_speed=80) set_speed =80; /减速 caluate(); break; case 0xF7: if(buf_Direction !=CST_STEP_MOTOR_ST) set_speed-=5; if(set_speed =15) set_speed =15; /加速 caluate(); break; default: break; /其它值返回 void

26、isr_timer0 (void) interrupt 1 using 1TH0=CST_TH0; TL0=CST_TL0;step_motor_driver();void init_timer0(void)TCON=0x00;TMOD=0x00;TL0=0x00;TH0=0x00;TCON=0x00;/ Timer 0 C/T=0,定时工作方式/Timer 0 M1,M0=0,1TMOD=0x01; /GATE=0,以运行控制位TR0 启动定时器0 C/T=0,定时工作方式TH0=CST_TH0; TL0=CST_TL0;TF0=0;/clear 0. count over flag.TR0

27、=1;/ enable TIMER0 ,start countET0=1; /enable accept interrupt/ 主控程序void main(void) P2=0xff; P1=0xff; P0=0Xff; init_timer0(); iniLCD(); /初始化 LCD write_hz_str(0,18,2013-1-7); write_hz_str(3,18,步进电机仿真); write_hz_str(6,20,停止); buf_Direction=CST_STEP_MOTOR_ST; set_speed=60; step_index=3; EA=1; /开中断 caluate(); while(1) key_Scan(); 2、显示子程序的设计图12 显示程序流程图程序如下:#include /#include /#include #include macro.h#include LCD_HZ.h sbit E =P35; sbit RW=P34; sbit RS =P32; sbit L =P31; /左半平面 sbit R =P30; /右半平面 sbit Busy=P27;/ /忙 判断位 #define LCDPAGE 0xB8 /设置页指令。#define LCDLINE 0x40 /设置列指令。/LCD判断忙的子程序 voi

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

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