步进电机正反转设计单片机课程设计论文毕业论文.doc_第1页
步进电机正反转设计单片机课程设计论文毕业论文.doc_第2页
步进电机正反转设计单片机课程设计论文毕业论文.doc_第3页
步进电机正反转设计单片机课程设计论文毕业论文.doc_第4页
步进电机正反转设计单片机课程设计论文毕业论文.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机课程设计课题:步进电机正反转设计系 别: 电气与电子工程系专 业: 姓 名: 学 号指导老师: 一 设计目的1、增进对单片机的感性认识,加深对单片机理论方面的理解;2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、A/D、D/A、串行口通讯等;3、了解和掌握单片机应用系统的软硬件设计过程、方法及实现;4、了解步进电机控制的基本原理,能实现电机正反转驱动控制,掌握控制步进电机转动的编程方法。 二 设计要求1、具有速度和转向设定功能;2、设置开始、停止以及正反转健;3、转速以及转向有数码管显示(本设计使用的为LCD12864)。三 、总体设计步进电机是一种将电脉冲转化为角位移的数字控制执行机构。它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。 步进电机具有控制简便、定位准确等特点。随着科学技术的发展,在许多领域将得到广泛的应用。鉴于传统的脉冲系统移植性不好,本文提出微机控制系统代替脉冲发生器和脉冲分配器,用软件的方法产生控制脉冲,通过软件编程可以任意设定步进电机的转速、旋转角度、转动次数和控制步进电机的运行状态。以简化控制电路,降低生产成本,提高系统的运行效率和灵活性。步进电机的角位移与输入脉冲数严格成正比,因此,当它转动一周后,没有累计误差,具有良好的跟随性。由步进电机与驱动电路组成的开环数控系统,既非常简单、 廉价,又非常可靠。同时,它也可以与角度反馈环节组成高性能的闭环数控系统。步进电机的动态响应快,易于起停、正反转及变速。速度可在相当宽的范围内平滑 调节,低速下仍能保证获得大转矩。步进电机只能通过脉冲电源供电才能运行,它不能直接使用交流电源和直流电源。 步进电机存在振荡和失步现象,必须对控制系统和机械负载采取相应的措施。步进电机自身的噪声和振动较大,带惯性负载的能力较差。 步进电机是自动控制系统中常用的执行部件。步进电机的输入信号为脉冲电流,它能将输入的脉冲信号转换为阶跃型的角位移或直线位移,因而步进电机可看作是一个串行的数/模转换器。由于步进电机能够直接接受数字信号,而不需数/模转换,所以使用微机控制步进电机显得非常方便。步进电机有以下优点:(1)通常不需要反馈就能对位置和速度进行控制;(2)位置误差不会积累;(3)与数组设备兼容,能够直接接收数字信号;(4)可以快速启停。步进电机的品种规格很多,按照它们的结构和工作原理可以划分为磁阻式(也称反应式或变磁阻式)电机、混合式电机、永磁式电机和特种电机等四种主要型式。步进电机不需位移传感器就可精确定位,所以在精确定位系统中应用广泛。目前打字机、计算机外部设备、数控机床、传真机等设备中都使用了步进电机。随着电子计算机技术的发展,步进电机必将发挥它的控制方便、控制准确的特点,在工业控制等领域取得更为广泛的应用。本设计采用16 位单片机AT89C51对步进电机进行控制,通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过驱动芯片驱动步进电机;同时,用触发按键来对电机的状态进行控制,并用128X64LCD显示电机的状态及转速。因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用软件控制单片机产生脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是两相的,所以只需要P0口的低四位P0.0-P0.3分别通过ULN2003A接到电机的五根电线上。可以通过调整输出脉冲的频率来调整电机的转速,通过改变输入脉冲的顺序来改变转动方向,P2口和P3口接128X64LCD,可以显示当前的电机转速和转向,设置复位键可使正在转动的电机停止转动,大概可分为如下图所示的几部分。p2.0p2.7AT89C51单片机p3.0p3.5p0.0p0.3p1.0p1.4128X64LCD控制按键步进电机驱动部分外部晶振电路图1 系统方框图注:由于此设计程序较复杂,在此没有列出程序的框图,程序框图详见软件设计。四 、主要器件介绍及电路设计4.1、步进电机4.1.1 步进电机概述步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。由于脉冲信号数与步距角的线性关系,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。4.1.2 步进电机的工作原理通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图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相绕组的磁极对齐。而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,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。 比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。 ULN2003的作用:ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如是: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。 ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 ULN2003A引脚图及功能如下:图4 ULN2003A引脚图ULN2003 是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片。 经常在以下电路中使用,作为: 1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。ULN2003的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。ULN2003 的封装采用DIP16 或SOP16 ULN2003A在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。ULN2003的输出端允许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。ULN2003可以驱动7个继电器,具有高电压输出特性,并带有共阴极的续流二极管使器件可用于开关型感性负载。每对达林顿管的额定集电极电流是500mA,达林顿对管还可并联使用以达到更高的输出电流能力。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接口: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)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 接口时序模块有并行和串行两种连接方法(时序如下):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 系统的时钟电路时钟电路是用于产生单片机工作时所必需的时钟信号。时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。在本系统中采用外部时钟方式的电路,如图所示:图9 系统的时钟电路在本设计中的电容C1、C2典型值为3010 pF。外接代内容的值虽然没有严格的要求,但是电容的大小会影响振荡器的稳定性和起振的快速性。同时,在系统中采用12MHz的晶体振荡器来产生时钟脉冲。这样可以满足系统在设计时的机器周期的需要。4.5 步进电机驱动电路由单片机直接输出的脉冲不足以驱动步进电机正常工作所以需要驱动电路给步进电机提供电源,在本设计中采用型号为ULN2003A的芯片,使步进电机正常工作。驱动信号由P0口的P0.0-P0.3输出,分别与驱动芯片的B1-B4相连,电路如下图所示:图10 步进电机的驱动电路五 软件设计1、主程序的设计主程序需具备的功能,要不断扫描P1口并判断触发按键是否闭合,并能根据其电平高低,输出不同的控制脉冲,并调用显示子程序显示转速及方向。主程序初始化程序逆序输出脉冲按键2闭合按键1闭合正序输出脉冲调用显示子程序1调用显示子程序2NYNY图11 主程序设计流程程序如下#include /#include /#include #include macro.hvoid iniLCD(void); void write_hz_str( int x1,int y1, uchar *point ) ;uchar 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 #define 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_motor_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; else 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; write_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 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=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判断忙的子程序 void chkbusy(void) /测LCD忙状态 E=1; /使能LCD RS=0; /读写指令 RW=1; /读 P2=0xff; /读操作前先进行一次空读操作 ,接下来才能读到数据 while(!Busy); /等待,不忙退出 /写指令代码void wcode(uchar cd) /写指令 代码 chkbusy(); /写等待 P2=0xff; /使能LCD RW=0; /读禁止 RS=0; /输出 设置 P2=cd; /写数据代码 E=1; /以下两句产生下降沿 E=0; /把显示数据写到内存单元中 void wdata(uchar dat) /写显示数据 chkbusy(); /写等待 P2=0xff; /使能LCD RW=0; /读禁止 RS=1; /输出 设置 P2=dat 0xFF; /写数据代码 E=1; /以下两句产生下降沿 E=0; /显示LCD程序 /可以更改程序中的64变为32就可以输出数字了void disrow(uchar page,uchar col,uchar *temp) uchar i; if(col64) / 左半平面 L=1;R=0;wcode(LCDPAGE+page); / 写指令 页 wcode(LCDLINE+col); /写指令行 if(col+16)64) /如果字在左半平面显示不了,转到右半平面去 for(i=0;i16;i+) /写字 wdata(*(temp+i); else /右半平面 for(i=0;i64-col;i+) /减去左边数,从右半平面第一位开始显示 wdata(*(temp+i); /写字 显示 L=0;R=1; /右半平面 wcode(LCDPAGE+page); /写指令 页 wcode(LCDLINE); /写指令行 for(i=64-col;i16;i+) /写字右半平面 wdata(*(temp+i); else L=0;R=1; wcode(LCDPAGE+page); / 写指令 页 wcode(LCDLINE+col-64); /写指令行 for(i=0;i16;i+) /写字 wdata(*(temp+i); /供调用子程序void display_HZ( int page, int col,uchar *temp) disrow( page, col, temp); /显示上半字 disrow( page+1, col, temp+16); /显示下半字 /*void disrow_ascii(uchar page,uchar col,uchar *temp) uchar i; if(col64) / 左半平面 L=1;R=0;wcode(LCDPAGE+page); / 写指令 页 wcode(LCDLINE+col); /写指令行 if(col+8)64) /如果字在左半平面显示不了,转到右半平面去 for(i=0;i8;i+) /写字 wdata(*(temp+i); else /右半平面 for(i=0;i64-col;i+) /减去左边数,从右半平面第一位开始显示 wdata(*(temp+i); /写字 显示 L=0;R=1; /右半平面 wcode(LCDPAGE+page); / 写指令 页 wcode(LCDLINE); /写指令行 for(i=64-col;i8;i+) /写字 右半平面 wdata(*(temp+i); else L=0;R=1; wcode(LCDPAGE+page); / 写指令 页 wcode(LCDLINE+col-64); /写指令行 for(i=0;i=8) /应是8,中间有字符ASCII 吗+ 汉字则只有1个字节空间不够写汉字所以换行 hz_cnt =0;hang+=2; temp1 = *point+; /取汉字数据 if (temp1 &0x80) /如果是要显示汉字 temp2 = *point +; for (i = 0; i HZ_SIZE ; i+) /字码中共9个汉字 if (temp1 = GB_16i.Index0) & (temp2 = GB_16i.Index1) /查索引 x=x1+hang; y=y1+hz_cnt*16; display_HZ(x,y, &(GB_16i.Msk0); /找到,字模指针赋值 hz_cnt+=1; break; else if (temp1=32) temp1 -=32; x=x1+hang; y=y1+hz_cnt*8; display_ascII(x,y, &(nAsciiDot16*temp1); /找到,字模指针赋值 hz_cnt+=1; 3、 H文件H文件见附录六、整体电路图七、电路仿真及调试7.1Proteus介绍Proteus是由Labcenter Electronics开发的功能强大的单片机仿真软件Proteus与其他的仿真软件相比较,在下面的优点: 1.能仿真模拟电路、数字电路、数模混合电路; 2.能绘制原理图、PCB图; 3.几乎包括实际中所有使用的仪器4.其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合Keil C实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用Keil C集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而Keil C运行在另一台计算机上,通过网络连接实现远程的调试。7.2系统仿真对应的单拍正转、双拍正转、单双拍正转种情况下由虚拟示波器(OSCILLOSCOPE)采集的脉冲驱动信号,对于步进电机的控制,实际上是控制步进脉冲的个数和步进脉冲的间隔,而步进电机的间隔又可转化为某基准延时子程序的循环次数。因此,可以很方便地用软件来控制步进电机的运行,达到控制目的。绘制完电路图后,将编好的程序输入软件内检查所编程序是否正确,检查程序无误后装入单片机内,进行防真。仿真结果可见图13所示。八 设计总结这次课程设计根据课题要求,复习了所学的单片机和步进电机的内容,通过查阅大量书籍、专业网站、论坛等,通过反复对比,采用技术较为成熟以及仿真效果的电路。在软件设计方面,一部分参考文献的已成程序进行修改编写,一部分则是平时的经验积累,初步掌握了步进电机控制的基本原理和步进电机转动编程的方法,步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日增加,在各个国民经济领域仍将起到重要作用。根据课程设计的要求和自己通过参考有关资料,写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序,达到能够实现所要求的功能的目的。 在写程序时,在每条指令后都写好注释,以便在程序出错的检查过程中可以更容易查找得到。 本次课程设计重点是理论与实际的相结合,不单单只是书上的一条条分离的指令。这次实验我们学到了有关步进电机的有关知识,更重要的是学会了程序出问题时调试的方法,并养成了遇到困难主动独立寻找解决方案的信心和技巧。通过实验,我感到自己综合应用能力有待进一步加强。让我更加重视实践动手操作能力,全面提高综合素质。最重要的一点,我觉得通过单片机的学习不仅让我入门了一门技术,更让我学到了很多方法,开阔了眼界。它告诉我做一件事情要有始有终,要持之以恒,切不可投机取巧。在制作的过程中经常埋头奋战一整天,有时候成果斐然,有时候却毫无进展,但心里时踏实的,或许自己又掌握了一些知识,自己又排除了一些故障。它还告诉我在做事时要做到坚守规范和不拘泥与一体。比如编写程序就要算法和思想上活跃,走新颖高效路线,同时又要遵循基本的编程规则,谙熟程序流程,避免不必要的错误,提高办事效率。附录 1、LCD_HZ.h/ - ASCII字模的数据表 - / 码表从0x200x7e / 字库: E:LF 开发工具字模工具软件字模工具cmzimoAsc8X16E.dat 横向取模左高位/ - /unsigned char code nAsciiDot = / ASCII0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / - -0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00, / -!-0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, / -0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00,0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00, / -#-0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论