您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页基于单片机控制的步进电机课程设计

基于单片机控制的步进电机课程设计

来源:吉趣旅游网


目 录

一、概述........................................................................................................................................... 2

1.1课题简介 ............................................................................................................................. 2

1.1.1步进电机简介 .......................................................................................................... 2 1.1.2步进电机控制工作原理 .......................................................................................... 2 1.1.3步进电机的启停控制 .............................................................................................. 2 1.1.4步进电机的转向控制 .............................................................................................. 3 1.1.5步进电机的速度控制 .............................................................................................. 3 1.1.6步进电机的换向控制 .............................................................................................. 3 1.2基本设计要求 ..................................................................................................................... 3 二、系统的总体设计 ....................................................................................................................... 3

2.1.硬件设计 .......................................................................................................................... 4

2.1.1.最小系统 ............................................................................................................... 4 2.1.2按键电路设计 .......................................................................................................... 5 2.1.3ULN2003A芯片简介 ............................................................................................... 5 2.1.4驱动电路的设计 ...................................................................................................... 5 2.2软件设计 ............................................................................................................................. 5

2.2.1主程序 ...................................................................................................................... 5 2.2.2步进电机正、反转子程序 .................................................................................... 8 2.2.3步进电机加、减速子程序 .................................................................................. 12 2.2.4延时子程序 ............................................................................................................ 16

三、调试与仿真 ............................................................................................................................. 18

3.1Keil程序调试 .................................................................................................................... 18 3.2Proteues仿真调试 ............................................................................................................. 19 四、 实物制作 ............................................................................................................................... 19 4.1焊接电路及调试 ....................................................................................................................... 19 五、 课程设计小结 ....................................................................................................................... 20 六、参考文献 ................................................................................................................................. 21 七、附录......................................................................................................................................... 22

8.1元件及程序清单 ............................................................................................................... 22 8.2原理图 ............................................................................................................................... 27 8.3实物图 ............................................................................................... 错误!未定义书签。

1

单片机控制步进电机

一、概述

1.1课题简介

1.1.1步进电机简介

步进电机是一种感应电机(如左图1所示),它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电

( 图1)

的,多相时序控制器。

虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

1.1.2步进电机控制工作原理

步进电机实际上是一个数字\\角度转换器,也是一个串行的数\\模转换器。步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4 个方面。从结构上看 ,步进电机分为三相、四相、五相等类型 ,常用的则以三相为主。三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3 种 。

1.1.3步进电机的启停控制

步进电机由于其电气特性,运转时会有步进感 ,即振动感。为了使电机转

2

动平滑 ,减小振动 ,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。在步进电机停转时 ,为了防止因惯性而使电机轴产生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。

1.1.4步进电机的转向控制

如果给定工作方式正序换相通电 ,步进电机正转。若步进电机的励磁方式为二六拍 ,即 A-AB-B-BC-C-CA。如果按反序通电换相 ,即则电机就反转。其他方式情况类似。

1.1.5步进电机的速度控制

如果给步进电机发一个控制脉冲 ,它就转一步 ,再发一个脉冲 ,它会再转一步。2 个脉冲的间隔越短 ,步进电机就转得越快。调整送给步进电机的脉冲频率 ,就可以对步进电机进行调速。

1.1.6步进电机的换向控制

步进电机换向时 ,一定要在电机减速停止或降到突跳频率范围之内再换向 ,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1 个脉冲前发出。对于脉冲的设计主要要求要有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了减速→换向→加速3 个过程。

1.2基本设计要求

此次我们所设计的是一个步进电机控制系统,可以通过按键来控制系统的启/停工作,当系统运转时,用按键来控制方向,同样由按键来选择工作模式。最后根据思路所设计出来的硬件图设计相适应的软件。详细的设计步骤将在下面说明。

二、系统的总体设计

主要由单片机AT89C51,步进电机驱动芯片ULN2003A,2相6线步进电机,按键及一些其他相关元件设计而成。总体框图如下图2

3

驱步进电 控 制 信 号 AT89C51 动芯片机 ULN20 03A ( 图2) 2.1.硬件设计 2.1.1.最小系统

单片机(如图3):本次设计使用单片机芯片AT89C51

AT89C51的工作特性:

·内含4KB的FLASH存储器檫写次数1000次;

·内含128字节的RAM; ·具有32根可编程I/O线; ·具有2个16位编程定时器

·具有6个中断源,5个中断矢量,2级优先权的中

断结构; (图3) ·具有1个全双工的可编程串行通信接口; ·具有1个数据指针DPTR; ·具有可编程3级程序锁定位;

·AT89C51的工作电源为5(1±0.2)V且典型值为5V; ·AT89C51最高工作频率为24MHZ;

4

·AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压 分别为1mA、5或12V。

2.1.2按键电路设计

本系统利用按键分别接到p0口的,p0.0~p0.4分别控制电机的停止、正转、反转、加速、减速。

2.1.3ULN2003A芯片简介

LN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平。如图4所示 功能特点: 高电压输出50V 输出钳位二极管

输入兼容各种类型的逻辑电路

应用继电器驱动器。

(图4)

2.1.4驱动电路的设计

在此系统中把单片机输出的信号加到ULN2003A,把ULN2003A的输出信号加到步进电机上。以此通过改变单片机的输出信号来控制步进电机的启/停、正反转以及加速、减速。

2.2软件设计 2.2.1主程序

(a)流程图(如图5)

5

初始化程序 等待中断 有键中断 正转键? 正转启动 反转启动 有挡中断 该档正转 该档反转 有键中断 是否换向 是否换挡 停机

( 图5)

6

(b)分析

本系统采用1-2相驱动,1-2相驱动的方式又称为“半步驱动”,每个驱动信号只驱动半步。采用单相双八拍其驱动信号依次:

1001——1000——1100——0100——0110——0010——0011——0001(正转) 1001——0001——0011——0010——0110——0100——1100——1000(反转) 给单片机从10H开始的8个单元内送入其驱动信号序列,同时把加速、减速不同的时间值赋给指定单元。把判断停止、正转、反转、加速、减速各个标志位置零,开外部中断INT0,且外部中断为下降沿触发方式。

开始等待中断,当有按键按下时进入中断,然后读P0端口数据送到A,根据A中的的判断要执行什么操作。当ACC .0=0时,给停止标志NO赋值1,电机停止;当ACC.1=0时,给正转标志ZHENG赋值1,电机在中断返回后开始正转;当ACC.2=0时,给反转标志FAN赋值1,电机在中断返回后开始反转;当ACC.3=0时,给加速标志JIA赋值为1,电机在中断返回后开始加速;当ACC.4=0时,给加速标志JIAN赋值为1,电机在中断返回后开始减速。 (c)程序及注释

ZHENG EQU 30H ;利用等值伪指令把30H赋值给ZHENG FAN EQU 31H ; 利用等值伪指令把31H赋值给FAN NO EQU 32H ; 利用等值伪指令把32H赋值给NO AS EQU 33H ;利用等值伪指令把33H赋值给AS SS EQU 34H ;利用等值伪指令把34H赋值给SS ORG 00H ;机器指令起始存储地址 AJMP MAIN ;跳转到主程序

ORG 03H ;外部中断INT0起始地址

AJMP SUB_INT0 ;跳转到外部中断服务子程序 MAIN: MOV 10H,#01H ;给10H送立即数01H MOV 11H,#03H ;给11H送立即数03H MOV 12H,#02H ;给12H送立即数02H MOV 13H,#06H ;给13H送立即数06H MOV 14H,#04H ;给14H送立即数04H MOV 15H,#0CH ;给15H送立即数0CH MOV 16H,#08H ;给16H送立即数08 H MOV 17H,#09H ;给17H送立即数09 H MOV 20H,#50 ;给20H送立即数50 MOV 21H,#25 ;给21H送立即数25 MOV 22H,#10 ;给22H送立即数10 MOV 23H,#05 ;给23H送立即数05 ANL ZHENG,#00H ;把正转标志位清零 ANL FAN,#00H ;把反标志位清零

7

ANL NO,#00H ;把停止位清零

ANL AS,#00H ;把加速位清零 ANL SS,#00H ;把减速位清零

MOV R1,#20H ;把立即数20送给寄存器R1 MOV P0,#0FFH ;给P0口送值FFH

MOV A,@R1 ;通过间接寻址给A赋值

MOV R5,A ;把A得到的值送到寄存器R5 MOV IE,#10000001B ;开总中断以及外部中断0

SETB IT0 ;设外部中断为下降沿触发方式 MOV R0,#0FH ;把立即数0FH送给R0 LOOP:MOV A,ZHENG ;把ZHENG单元中的值送给A

JNB ACC.0,LP ;如果ACC.0为0则LP ,否则顺序执行 LCALL GO ;调用正转子程序

LP: MOV A,FAN ;把FAN单元中的值赋给A

JNB ACC.0,LOOP ;如果ACC.0为0则LOOP,否则顺序执行 LCALL BACK ;调用反转子程序 AJMP LOOP ;跳转到LOOP 2.2.2步进电机正、反转子程序 (a)流程图(图6、图7)

(b)分析

当中断返回后ZHENG单元中的值为1时,主程序就会调用正转子程序,此时电机开始正转。进入正转子程序后,寄存器R0中的值被加1,如果R0中的值不等于18H(如果等于则把R0中的值置为10H。因为驱动电机转动的序列存储在10H到17H 八个单元中),则把以R0中值为地址的单元中的值通过P2口低4位输出,把其高低电平信号送到步进电机驱动芯片ULN2003A,通过ULN2003A的输出信号去推动步进电机转动。同时把以R1中值为地址的单元中的值通过间接寻址方式送给R5。调用延时子程序DELAY,在延时值程序返回后分别把停止(NO)、正转(ZHENG)、反转(FAN)标志单元中的值送到A,把NO单元中值送到A后,如果ACC.0=1,则正转子程序执行结束,返回主程序,否则顺序执行。当NO单元中值为0时,把ZEHNG单元中的值送给A,如果ACC.0=1时,正转子程序执行结束,返回主程序。否则顺序执行。当ZHENG单元中的值为0时,把FAN单元中的值送到A,如果ACC.0=1,则返回主程序,否则顺序执行。把AS单元中的值送到A,如果ACC.0=1,则调用加速子程序,否则把SS单元中的值送到A,如果ACC.0=1,则调用减速子程序,否则跳转到正转子程序的开始程序继续执行,电机一直正转。

8

把正转标志ZHENG清零INC R0把R0中值送给AA=18H?YESN把R0中的值改O为10H把以R0中值为地址其单元中的值通过P2口输出,同时把以R1中值为地址单元中的值送到R5调用延时子程序NO=1?YESZHENG=1?FAN=?NONOAS=0?加速子程序YESNOSS=0?减速子程序YES返回正转时的开始程序

9

(图6)注:正转子程序流程图

主程序

把反转标志FAN单元清零DEC R0把R0中的值送给AYESR0=0EH?把R0中的值置为17HNOYESR0=0FH?NO把以R0中值为地址其单元中的值通过P2口输出,同时把以R1中值为地址单元中的值送到R5调用延时子程序NO=1?YES主程序ZHENG=1?FAN=1?NOYES减速子程序SS=1?NOYES加速子程序AS=1?NO反转开始程序10

( 图7) 注:电机反转流程图

当中断返回后FAN单元中的值为1时,主程序就会调用反转子程序,此时电机开始反转。进入反转子程序后,寄存器R0中的值被减1,如果R0中的值不等于0EH且不等与0FH时(如果和其中的任何一个值相等,则把R0中的值置为17H。因为驱动电机转动的序列存储在10H到17H 八个单元中),则把以R0中值为地址的单元中的值通过P2口低4位输出,把其高低电平信号送到步进电机驱动芯片ULN2003A,通过ULN2003A的输出信号去推动步进电机转动。同时把以R1中值为地址的单元中的值通过间接寻址方式送给R5。调用延时子程序DELAY,在延时值程序返回后分别把停止(NO)、正转(ZHENG)、反转(FAN)标志单元中的值送到A,把NO单元中值送到A后,如果ACC.0=1,则反转子程序执行结束,返回主程序,否则顺序执行。当NO单元中值为0时,把ZEHNG单元中的值送给A,如果ACC.0=1时,反转子程序执行结束,返回主程序。否则顺序执行。当ZHENG单元中的值为0时,把FAN单元中的值送到A,如果ACC.0=1,则返回主程序,否则顺序执行。把AS单元中的值送到A,如果ACC.0=1,则调用加速子程序,否则把SS单元中的值送到A,如果ACC.0=1,则调用减速子程序,否则跳转到反转子程序的开始程序继续执行,电机一直反转。 (c) 程序及注释 正转子程序:

GO: ANL ZHENG,#00H ;把正转标志位清零 INC R0 ;R0中的值加1

MOV A,R0 ;把R0中的值赋给A

CJNE A,#18H,GO2 ;如果A中值和18H不相等则GO2,否则顺序执行

MOV R0,#10H ;给R0送10H

GO2: MOV P2,@R0 ;通过间接寻址方式给P2口赋值 MOV A,@R1 ;通过间接寻址给A赋值

MOV R5,A ;把A得到的值送到寄存器R5 LCALL DELAY ;调用延时子程序

MOV A,NO ;把NO单元中的内容送到A JB ACC.0,RETURN ;如果ACC .0=1(即NO单元中值为1)则RETURN MOV A,ZHENG ;把ZHENG单元中的内容送到A

JB ACC.0,RETURN ;如果ACC .0=1(即ZHENG单元中值为1)则RETURN

MOV A,FAN ;把FAN单元中的内容送到A JB ACC.0,RETURN ;如果ACC .0=1(即FAN单元中值为1)则RETURN MOV A,SS ;把SS单元中的内容送到A

JNB ACC.0,GO3 ;如果ACC .0=0(即SS单元中值为0)则GO3 LCALL JIAN ;调用JIAN(减速)子程序 GO3: MOV A,AS ;把AS单元中的内容送到A

11

JNB ACC.0,GO4 ;如果ACC .0=0(即AS单元中值为0)则GO4 LCALL JIA ;调用JIA(加速)子程序 GO4: AJMP GO ;跳转到GO

反转子程序:

BACK: ANL FAN,#00H ;把反转标志位清零 DEC R0 ;R0中的值减1

MOV A,R0 ;把R0中的值送到A

CJNE A,#0EH,TT ;如果A中的值与立即数0E不相等则TT MOV R0,#17H ;把立即数17H送给R0

SJMP BACK2 ;跳转到BACK2

TT: CJNE A,#0FH,BACK2 ;如果A中的值与立即数0FH不相等则BACK2 MOV R0,#17H ;把立即数17H送到R0 BACK2: MOV P2,@R0 ;通过间接寻址方式给P2口送值 MOV A,@R1 ;通过R1间接寻址给A赋值 MOV R5,A ;把R5中的值送给A LCALL DELAY ;调用延时子程序

MOV A,NO ;把NO单元中的值送给A JB ACC.0,RETURN ;如果ACC.0为1则RETURN MOV A,ZHENG ;把ZHENG单元中的值送给A JB ACC.0,RETURN ;如果ACC.0为1则RETURN MOV A,FAN ;把FAN单元中的值送给A JB ACC.0 ,RETURN ;如果ACC.0为1则RETURN MOV A,AS ;把AS单元中的值送给A JNB ACC.0,BACK3 ;如果ACC.0为1则BACK3 LCALL JIA ;调用加速子程序

BACK3: MOV A,SS ;把SS单元中的值送给A JNB ACC.0 BACK4 ;如果ACC.0为1则BACK4 LCALL JIAN ;调用减速子程序 BACK4: AJMP BACK ;跳转到BACK RETURN :RET ;返回 2.2.3步进电机加、减速子程序 (a)流程图(如图8、如图9)

12

加速标志单元AS清零减速标志单元SS清零把R1单元中的内容送给A把R1单元中的内容送给AYESA=23H?A=20H?YESNONOINC R1DEC R1返回返回

(图8) (图9)

注:加速子程序流程图 注:减速子程序流程图

(b)分析

当加速按键被按下后程序进入中断把加速标志单元AS中送入1,中断返回后,程序会进入加速子程序。进入加速子程序后,先把加速标志单元中的值清零,同时把R1单元中的值送到A中,用来判断R1中的值是否等于23H,如果A中的值不等于23H,则R1中的值加1,然后返回,如果A中值等于23H表明以经加速到最大值,然后直接返回。

当减速按键被按下后程序进入中断把减速标志单元SS中送入1,中断返回后,程序会进入减速子程序。进入减速子程序后,先把减速标志单元中的值清零,同时把R1单元中的值送到A中,用来判断R1中的值是否等于20H,如果A中的值不等于20H,则R1中的值减1,然后返回,如果A中值等于20H表明以经减速到最小值,然后直接返回。

(c) 程序及注释

JIA: ANL AS,#00H ;把加速标志AS清零 MOV A,R1 ;把R1单元中的值送到A

13

CJNE A,#23H,JIA1 ;如果A中值不等23H则JIA1 RET ;加速子程序返回 JIA1: INC R1 ;R1中的值加1 RET ;加速子程序返回

JIAN: ANL SS,#00H ;把减速标志SS清零 MOV A,R1 ;把R1中的值送给A

CJNE A,#20H,JIAN1 ;如果A不等于20H则JIAN1 RET ;减速子程序返回 JIAN1: DEC R1 ;R1中的值减1 RET ;减速子程序返回

2.2.4INT0中断程序 (a)流程图(图10) (b)分析

当单片机复位后执行主程序,等待中断,当有按键被按下时,进入中断服务子程序,进入中断服务子程序后,读P0口的值给A,A中值取反和1FH相与,把其得到的值送到A,如果A=0,则中断返回,如果A中值不为0则调用延时DELEAY1。读取p0口值给A,把A中值取反,与1FH相与,结果送到A,如果A=0则中断返回,否则调用读按键子程序。即把p0口值送到A,如果ACC..0=0,则把停止标志单元STOP中送1,如果ACC.1=1,则把正转标志单元ZHENG中送1,如果ACC .2=0,则把反转单元FAN中送1,如果ACC .3=0,则把加速单元JIA中送1,如果ACC .4=0,则把减速单元JIAN中送1,然后中断返回,继续执行中断前执行的程序。 (c)程序及注释 SUB_INT0:

SCAN: MOV A,P0 ;读取P0口的值送给A CPL A ;把A中的值取反

ANL A,#00011111B ;把A中的值与1FH相结果送到A JNZ SCAN1 ;如果A中的值不为0则SCAN1 AJMP L ;跳转到L

SCAN1: LCALL DELAY1 ;调用延时子程序

MOV A,P0 ;读取P0口的值送给A CPL A ;把A中的值取反

ANL A,#00011111B ;把A中的值与1FH相结果送到A JZ L ;如果A中的值为0则L LCALL RDKEY ;调用读按键子程序 L:RETI ;中断返回

读按键子程序

RDKEY: MOV A,P0 ;读取P0口的值送给A

14

JNB ACC.0,STOP ;如果ACC.0为0则STOP JNB ACC.2,REV ;如果ACC.2为0则REV JNB ACC.1,FOR ;如果ACC.1为0则FOR

JNB ACC.3,ADDSPEED ;如果ACC.3为0则ADDSPEED JNB ACC.4,SUBSPEED ;如果ACC.4为0则SUBSPEED

STOP: ANL NO,#01H ;给NO单元送入1 RET ;返回

FOR: ANL ZHENG,#01H ;给ZHENG单元送入1 RET ;返回

REV: ANL FAN,#01H ;给FAN单元送入1 RET ;返回

ADDSPEED:ANL AS,#01H ;给AS单元送入1 RET ;返回

SUBSPEED:ANL SS,#01H ;给SS单元送入1 RET ;返回

响应中断 延时 正转吗? N 反转吗? N Y N 换挡吗? ZHENG—1 Y 停止吗? Y FAN——1 Y AS-1orSS-1 NO------1 中断返回

15

N (图10)

2.2.4延时子程序

(a)流程图(图11)

R6赋值为50R6赋值为50R7赋值为50R7赋值为250NOR7=R7-1;R7=0?YESR6=R6-1;R6=0?YESR5=R5-1;R5=0?YES返回NONOR7=R7-1;R7=0?YESR6=R6-1;R6=0?NONOYES返回DELAY 框图 (图11)

(b)分析

延时程序采用反复执行指令,消耗时间来达到延时的目的。DELAY:先给寄存器R6、R7中送入数值50,然后让R7中的值减1,结果送到R7,如果R7中的值不为0则继续执行此指令,直到R7中的值为0,然后使R6中的值减1,结果送到R6,如果R6中的值不为0则继续执行此指令,直到R6中的值为0,接下来使R5中的值减1,结果送到R5,如果R5中的值不为0则给R7重新赋值,继续执行,直到R5中的值为0,返回。

DELAY1:先给寄存器R6、R7中送入数值50、250,然后让R7中的值减1,结果送到R7,如果R7中的值不为0则继续执行此指令,直到R7中的值为0,然后使R6中的值减1,结果送到R6,如果R6中的值不为0给R7重新赋值,直到R6中的值为0,返回。 (c)程序及注释

16

DELAY: MOV R6,#50 ;给寄存器R6送50 D2: MOV R7,#50 ;给寄存器R7送50 D3: DJNZ R7,$ ;当寄存器R7中的数不为0则继续执行此指令

DJNZ R6,D2 ;当寄存器R6中的数不为0则跳到D2 DJNZ R5,D2 ;当寄存器R5中的数不为0则跳到D2 RET ;子程序返回

DELAY1: MOV R6,#50 ;给寄存器R6送50 D4: MOV R7,#250 DJNZ R7,$ DJNZ R6,D4 RET ;给寄存器R7送250 当寄存器R7中的数不为0则继续执行此指令 ;当寄存器R6中的数不为0则跳到D4 ;返回

17

三、调试与仿真

3.1Keil程序调试

18

3.2Proteues仿真调试

四、实物制作 4.1焊接电路及调试

焊接电路

参照原理图、芯片引脚图焊接电路,首先要按照焊接技术基本指导,按在电路板上从低到到高的顺序焊接。

第一步、将单片机的底座焊在电路板的左边,在对应P0口的几个引脚将上拉电阻(10K电阻)在焊板上固定并连接到P0口的0——4口进行焊接。 第二步、与门芯片DM74SL09N的底座焊接在焊板上,根据原理图剪取长短适中的导线连接P0口、上拉电阻和芯片底座的引脚。在焊板的右上方放置五个按

19

钮式开关(竖排),按键开关的左端依次对照原理图连接到P0口,右端全部连接到地线。

第三步、将步进电机的驱动芯片ULN2003A底座焊接到焊板上,对照芯片引脚图,将P2.0、P2.、P2.2、P2.3四端口连接到芯片的前四个输入端口。 第四步、对照晶振电路和手动复位电路,先焊接电阻和元片电阻,再焊接按键,接着把电解电容和晶振也焊到焊板上。

第五步、将电路中的VCC和GND连接到电源中。

输入程序调试

将单片机芯片放在实验箱的烧录器中将程序烧录到芯片中,首先把芯片引脚放在插槽内,按下锁紧开关、将所编写的程序在KEIL软件中生成hex的文件。再开启烧录软件,将程序烧录到单片机内部。

把单片机芯片插入焊板芯片底座中,接入电源。按下复位键,再按下正转、反转键,接着在按加速、减速键和停止键,看电机转动的方式是否符合预期要求的。如果不符合,检查硬件电路和软件程序,若软件错误,修改后再次烧录,再次调试。若硬件电路错误,对照电路图仔细检查每一个模块电路,直到正确为止。不停地调试直到成功。

五、课程设计小结

这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在设计中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。 单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。

20

六、参考文献

[1] 张洪润,蓝清华. 单片机应用技术教程[M] . 北京:清华大学出版社,1997. [2] 秦曾煌. 电工学[M] . 北京:高等教育出版社,1999.

[3] 常斗南,等. 可编程序控制器原理、应用、实验[M] . 北京:机械工业出版社,1998.

[4] 于海生,等. 微型计算机控制技术[M] . 北京:清华大学出版社,1999. [5] 王福瑞,等. 单片机微机测控系统设计大全[M] . 北京:北京航空航天大学

出版社,1998.

[6] 陈理壁. 步进电机及其应用[M] . 上海: 上海科学技术出版社,1989. [7] 刘保延,等. 步进电机及其驱动控制系统[M] . 哈尔滨:哈尔滨工业大学出版社,1997.

[8] 季维发,过润秋,严武升等. 机电一体化技术[M] .北京:电子工业出版社,1995.

[9] 郭敬枢,庄继东,孔峰. 微机控制技术[M] . 重庆:重庆大学出版社,1994. [10] 刘国荣. 单片微型计算机技术[M] . 北京:机械工业出版社,1996. [11] 王福瑞. 单片微机测控系统设计大全[M] . 北京:北京航空航天大学出版社,1998.

[12] 何立民. 单片机应用技术选编[M] . 北京:北京航空航天大学出版社,1993.

[13] 潘新民等: 单片微型计算机实用系统设计1 北京: 人民邮电出版社, 1992.

[14] 王润孝,秦现生编著1 机床数控原理与系统1 西北工业大学出版社,1997. [15] 李伯成,侯伯李等编1IBM - PC 微机应用系统设计1西安电子科技大学,1996.

[16] 黄义源主编1 机械设备电气与数字控制1 中共广播电视大学出版社,1992.

21

七、附录

8.1元件及程序清单

元件清单

序号 名称 代号 型号/数值 数量 1 2 3 4 5 6 7 8 9 10 程序清单

电阻 圆片电容 电解电容 晶振 按键快关 与门芯片 电机驱动芯片 单片机芯片 导线 USB数据线 R1—R7 C1—C2 C KEY1KEY6 10K 30pF 10uF 12MHz DM74LS09N ULN2003A AT89C51 7 2 1 1 6 1 1 1 若干 1 ZHENG EQU 30H FAN EQU 31H NO EQU 32H AS EQU 33H

22

SS EQU 34H ORG 00H AJMP MAIN ORG 03H AJMP SUB_INT0 MAIN: MOV 10H,#01H MOV 11H,#03H MOV 12H,#02H MOV 13H,#06H MOV 14H,#04H MOV 15H,#0CH MOV 16H,#08H MOV 17H,#09H MOV 20H,#50 MOV 21H,#25 MOV 22H,#10 MOV 23H,#05 ANL ZHENG,#00H ANL FAN,#00H ANL NO,#00H ANL AS,#00H ANL SS,#00H MOV R1,#20H MOV P0,#0FFH MOV A,@R1 MOV R5,A MOV IE,#10000001B SETB IT0 MOV R0,#0FH LOOP:MOV A,ZHENG JNB ACC.0,LP LCALL GO

LP: MOV A,FAN JNB ACC.0,LOOP LCALL BACK AJMP LOOP SUB_INT0:

SCAN: MOV A,P0 CPL A

23

ANL A,#00011111B JNZ SCAN1 AJMP L

SCAN1: LCALL DELAY1 MOV A,P0 CPL A ANL A,#00011111B JZ L LCALL RDKEY L:RETI RDKEY: MOV A,P0 JNB ACC.0,STOP JNB ACC.2,REV JNB ACC.1,FOR JNB ACC.3,ADDSPEED JNB ACC.4,SUBSPEED

STOP: ANL NO,#01H RET

FOR: ANL ZHENG,#01H RET REV: ANL FAN,#01H RET ADDSPEED:ANL AS,#01H RET

SUBSPEED:ANL SS,#01H RET GO: ANL ZHENG,#00H INC R0 MOV A,R0 CJNE A,#18H,GO2 MOV R0,#10H GO2: MOV P2,@R0 MOV A,@R1 MOV R5,A LCALL DELAY MOV A,NO JB ACC.0,RETURN

24

MOV A,ZHENG JB ACC.0,RETURN MOV A,FAN JB ACC.0,RETURN MOV A,SS JNB ACC.0,GO3 LCALL JIAN GO3: MOV A,AS JNB ACC.0,GO4 LCALL JIA GO4: AJMP GO BACK: ANL FAN,#00H DEC R0 MOV A,R0 CJNE A,#0EH,TT MOV R0,#17H SJMP BACK2

TT: CJNE A,#0FH,BACK2 MOV R0,#17H BACK2: MOV P2,@R0 MOV A,@R1 MOV R5,A LCALL DELAY MOV A,NO JB ACC.0,RETURN MOV A,ZHENG JB ACC.0,RETURN MOV A,FAN JB ACC.0 ,RETURN MOV A,AS JNB ACC.0,BACK3 LCALL JIA BACK3: MOV A,SS JNB ACC.0 BACK4 LCALL JIAN BACK4: AJMP BACK RETURN :RET JIA: ANL AS,#00H

25

MOV A,R1 CJNE A,#23H,JIA1 RET JIA1: INC R1 RET JIAN: ANL SS,#00H MOV A,R1 CJNE A,#20H,JIAN1 RET JIAN1: DEC R1 RET DELAY: MOV R6,#50 D2: MOV R7,#50 D3: DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D2 RET

DELAY1: MOV R6,#50 D4: MOV R7,#250 DJNZ R7,$ DJNZ R6,D4 RET

26

8.2原理图

27

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务