哈尔滨理工大学单片机课程设计说明书题目:二维步进电机控制班级:机电10—1学号:1001040118姓名:李文轩目录一、任务设计-------------------------------------------1二、系统运行原理--------------------------------------3三、系统硬件原理——————--------------------------7四、程序框图-------------------------------------------7五、程序设计-------------------------------------------121《单片机原理及应用》课程设计任务书一、设计题目:二维步进电机控制本设计要求实现二维步进电机的自动控制。1、功能:系统中横向、纵向各一台电机,均采用四相步进电机,电机运用双四拍运行方式。其驱动代码如下表所示。倒序输出,则电机反转。相拍一二三四一A10011B11001C01100D00110(注:“1”代表绕组通电,“0”代表绕组断电。)单片机接收控制命令,从而产生运行脉冲,驱动二维步进电机正转、反转和停止等。2、指标:电机转速为12°/S,相应的驱动代码频率为400Hz.二、设计目的:掌握80C51单片机应用系统的软、硬件设计方法。三、设计要求:1、设计80C51单片机控制系统的硬件原理图,使其完成题目所规定的功能要求。22、完成各主要部分的程序框图。3、用汇编语言编写各部分的程序。4、设计时间:1周。2013年2月25日∽2013年3月1日5、统一用B5号纸装订成册装入档后答案袋,而后答辩。3二、系统运行原理二维步进电机控制系统的工作原理如图所下:外部命令TTLRS-252控制驱动信号信号脉冲信号二维步进电机控制系统工作原理图IPC是二维电机控制系统的主机,负责接受外部命令并发送到单片机,然后接收单片机回送的相同数据进行比较。如相同,表明单片机正常接收命令,如不相同,则在屏幕上显示出错信息。通信接口电路实现IPC串行口信号与单片机TTL信号之间的转换,实现IPC与单片机之间的正常通信。单片机负责接收来自IPC串行口的命令并将转换成脉冲信号,从并行口输出,去控制步进电机的运行。功率放大电路是将单片机并行口输出的控制脉冲信号进行电流电压放大,驱动步进地那几,使电机随着不同的控制脉冲信号作正转、反转和停止。步进电机执行动作,当脉冲按照一定顺序输入步进电机哥哥相时,它就实现不同运动状态。IPC通信接口电路单片机功率放大电路步进电机4三、系统硬件原理电路原理图如下51、单片机单片机采用80C51,片内含4KB的ROM.由P1口输出控制脉冲信号,分两路控制步进电机的一维。RXD(P3.00为串行输入线,TXD(P3.1)为串行输出线。P3.2~P3.5设置为行程开关,作为二维步进电机的正反向最大行程的保护。晶振选用12MHz。80C51以中断方式执行IPC的命令。2、与IPC的接口电路IPC机与单片机通过串行口进行通信。由于IPC配置的是标准的RS-232串行接口,而单片机的输入、输出的是TTL电平,因此必须进行电平转换。有MC1488将TTL电平转换为RS-232的标准电平,工作电压+12V/-12V;MC1489则将RS-232的标准电平转换成TTL电平,工作电压为+5V。3、功率放大电路功率放大电路中采用74HC05N1、N2将单片机P1口,P2口输出的脉冲控制信号进行增强驱动能力光电隔离器。信号经光电隔之后,再经DK63功率放大、驱动步进电机各相。4、步进电机系统中采用四相步进电机,点击运行双四拍运行方式。其中与p1.0~p1.3对应的是横向步进电机的四个相(A1~D1),与p2.0~p2.3对应的是纵向步电机的四个相(A2~D2)。工作电压+27V。驱动代码如下所示。倒序输出,电机反向运转。步进电机的运行速度由p1口输出的控制脉冲频率决定,步进电机的速度为12°/S,则对应的P1口6输出驱动代码的频率为400Hz.相拍一二三四一A10011B11001C01100D00110系统启动之后,单片机执行主程序,自动控制二维步进电机按预定速度运行,其电压波形如下:当需要改变运动状态时,由IPC从键盘接受命令,传给单片机,单片机中断主程序的执行,接收IPC的命令,实时控制步进电机按命令要求运动。命令执行结束后,重新返回主程序继续执行。7四、程序框图程序框图如下:主程序串行中断服务程序五、程序设计80C51的串行口工作方式为0,允许接收,SCON值为00H,定时器T0工作方式0,TMOD值为00H,时间常数为TH0=0C8H,TL0=1EH。R0:用于存放横向电机正转驱动代码;R1:用于存放横向电机反转驱动代码;R2:用于存放串行口输入内容;R3:用于存放纵向电机正转驱动代码;R4:用于存放纵向电机反转驱动代码;程序清单如下:8中断入口程序:ORG0000HLJMPSTARTORG0003HLJMPXTINGORG0013HLJMPYTINGORG000BHLJMPINQPORG0023HLJMPJS主程序:START:CLREAMOVIP,#00HMOVSCON,#00HCLRET0SETBRENSETBESSETBEAWAIT:JBRI,JSAJMPWAIT9MAIN:SETBIT0SETBIT1SETBEX0SETBET1MOVR3,#0CCHMOVR4,#0CCHMOVR0,#0CCHMOVR1,#0CCHMOVTMOD,#00HMOVTH0,#0C8HMOVTL0,#1EHSETBET0SETBTR0SETBEAAJMP$T0中断程序:INQP:MOVTH0,#0C8HMOVTL0,#1EHZ0:CJNER2,#00H,Z1MOVP1,#00HLCALLYZHENGMOVP2,A10Z1:CJNER2,#01H,Z2MOVP1,#00HLCALLYFANMOVP2,AZ2:CJNER2,#02H,Z3LCALLXZHENGMOVP1,ALCALLYZHENGMOVP2,AZ3:CJNER2,#03H,Z4LCALLXZHENGMOVP1,ALCALLYFANMOVP2,AZ4:CJNER2,#04H,Z5LCALLXZHENGMOVP1,AMOVP2,#00HMOVP2,AZ5:CJNER2,#05H,Z6LCALLXFANMOVP1,A11MOVP2,#00HMOVP2,#00HZ6:CJNER2,#06H,Z7LCALLXFANMOVP1,ALCALLYZHENGMOVP2,AZ7:LCALLXFANMOVP1,ALCALLYFANMOVP2,ARETI控制程序:JS:MOVA,SBUFMOVR2,ACLRRIRETIXTING:MOVR0,#00HMOVR1,#00HRETIYTING:MOVR3,#00HMOVR4,#00H12RETIXZHENG:MOVA,R0RRAMOVR0,ARETIYZHENG:MOVA,R3RRAMOVR3,ARETIXFAN:MOVA,R1RLAMOVR1,ARETIYFAN:MOVA,R4RLAMOVR4,ARETI