单片机程序设计实训报告-步进电机的设计.doc

上传人:椰子壳 文档编号:5019143 上传时间:2020-01-29 格式:DOC 页数:32 大小:1.17MB
返回 下载 相关 举报
单片机程序设计实训报告-步进电机的设计.doc_第1页
第1页 / 共32页
单片机程序设计实训报告-步进电机的设计.doc_第2页
第2页 / 共32页
单片机程序设计实训报告-步进电机的设计.doc_第3页
第3页 / 共32页
单片机程序设计实训报告-步进电机的设计.doc_第4页
第4页 / 共32页
单片机程序设计实训报告-步进电机的设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《单片机程序设计实训报告-步进电机的设计.doc》由会员分享,可在线阅读,更多相关《单片机程序设计实训报告-步进电机的设计.doc(32页珍藏版)》请在三一文库上搜索。

1、陕西航空职业技术学院C51程序设计实训报告专 业: 计算机控制技术 班级学号: 08651- 05 姓 名: 目录实训一 秒表3一、任务描述3二、任务分析3三、任务实施33.1 电路图33.2 元器件明细表43.3 程序分析43.4 流程图83.4.1 调试过程及结果93.4.2 运行结果93.4.3 调试中出现的问题及解决方法9五、实训步骤9六、要求及扩展9实训二 步进电机的控制10一、任务描述及分析10二、任务实施102.1 进电机的控制原理102.2.1 步进电机的工作原理102.2.2电机的控制原理112.2步进电机与单片机的接口12三.应用ULN2003的步进电机控制电路133.1.

2、ULN2003与二相六线制步进电机133.1.1 ULN2003技术参数133.1.2 二相六线制步进电机133.1.3 .应用ULN2003的步进电机控制电路143.1元器件清单153.3程序结构图163.4控制程序17任务实施24一、用Proteus软件绘制步进电机的控制电路24二、运行与调试程序252.1运行程序25三、调试中遇到的问题及解决方法263.1 程序方面263.2 软件模拟方面28实训总结29实训一 秒表一、任务描述1、熟悉89C51单片机键盘及LED显示器外部引脚接线方法。2、学习基本的I/O口的使用方法及编程方法。3、进一步掌握单片机全系统调试的过程及方法。二、任务分析用

3、89C51单片机设计一个2位LED数码显示“秒表”,显示时间为0099,每秒自动加1,计满显示“FF”。另外设计一个“开始”按钮K1和一个“停止”按钮K2,按“开始”键,显示秒数从00开始;按“停止”键,保持实时时间,停止计数。硬件电路接线图如图1所示。三、任务实施3.1 电路图3.2 元器件明细表表1 元器件清单序号元器件名称规格数量189C51单片机AT89C51/AT89S511个2晶振12MHz立式1个3起振电容30pF瓷片电容2个4复位电容10uF16V电解电容1个5复位电阻10k电阻2个6限流电阻220电阻2个7七段LED显示器共阳极各2个8按钮四爪微型轻触开关2个9DIP封装插座

4、40脚集成插座1个10万能板150*90mm1个表2 Proteus原器件清单序号数量元件名称所属类所属子类11AT89C51MicrprocessorICs8051 Family21CRYSTALMiscellaneous32CAPCapacitorsGeneric41CAP-PolCapacitorsGeneric54RESResistorsGeneric627SEG-COM-AN-GRNOptoelecttonics7-Segment Displays71SWITCHSwitches-&RelaysSwitches81BUTTONSwitches-&RelaysSwitches3.3 程

5、序分析本程序由主程序和三个子程序模块构成,主程序完成显示初始化、1s延时、“停止”键查询和子程序调用功能,3个子程序分别完成秒计数器加1(取名NBCD)、秒计数器中的BCD码转换成LED显示码(取名TBFLIN)、显示码送LED显示器(取名DISPLAY)功能。汇编参考程序如下:ORG 0000H LJMP MAIN ORG 0030H N EQU 5FH ;秒计数器 BCD1 EQU 5EH ;BCD码个位数 BCD2 EQU 5DH ;BCD码十位数 CRTN1 EQU 5CH ;个位显示码 CRTN2 EQU 5BH ;十位显示码 MAIN:MOV SP,#60H MOV N,#00H

6、;秒计数器清零 MOV P0,#0C0H ;显示器输入“0” MOV P2,#0C0H DELAY:MOV R7,#04H ;1秒延时 DL1:MOV R6,#250 DL2:MOV R5,#250 DL3:NOP NOP DJNZ R5,DL3 JNB P3.2,MAIN3 ;每1ms检测是否停止计时 DJNZ R6,DL2 DJNZ R5,DL1 MOV A,N CJNE A,#99,MAIN1 ;判断是否超出显示最大值 SJMP MAIN2 MAIN1:ACALL NBCD ACALL TBFLIN ACALL DISPLAY LJMP DELAY MAIN2:MOV BCD1,#0FH

7、 ;显示“FF” MOV BCD2,#0FH ACALL TBFLIN MAIN3:ACALL DISPLAY SJMP MAIN3 NBCD:CLR A ;BCD码转换子程序 CLR C MOV A,N ADD A,#1 DA A MOV N,A ANL A,#0FH MOV BCD1,A MOV A,N SWAP A ANL A,#0FH MOV BCD2,A RETTBFLIN:MOV A,BCD1 ;查显示码 MOV DPTR,#DOT MOVC A,A+DPTR MOV CRTN1,A MOV A,BCD2 MOVC A,A+DPTR MOV CRTN2,A RET DOT:DB 0

8、C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,40H,79H,24H,30H,86H,8EHDISPLAY:MOV P2,CRTN1 ;输出显示子程序 MOV P0,CRTN2 RET END C程序如下:#include#define uchar unsigned char#define uint unsigned intuchar code seg711 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71;uchar sec,cnt;sbit P3_2=P32;void delay

9、(uint k) uint i,j;for(i=0;ik;i+)for(j=0;j=99)P1=seg710; P2=seg710; void time0() interrupt 1/开启中断 TL0=-(50000/256); TH0=-(50000%256); if(P3_2=1)cnt+; if(cnt=20)sec+;cnt=0;/动态显示精确到1秒程序用了两个数码管显示0099的数,其中用P1口显示个位的数从09,P2口显示十位的数,当P1口显示由0到9时,P2口的数字由刚开始的0加到1,这样依次循环,当计满时则数码管显示为FF。当按下图中的“开始”键,显示秒数从00开始;按下“停止

10、”键,保持当时时间,停止计数。3.4 流程图3.4.1 调试过程及结果程序用了两个数码管显示0099的数,其中用P1口显示个位的数从09,P2口显示十位的数,当P1口显示由0到9时,P2口的数字由刚开始的0加到1,这样依次循环,当计满时则数码管显示为FF。当按下图中的“开始”键,显示秒数从00开始;按下“停止”键,保持当时时间,停止计数。3.4.2 运行结果数码管显示数字为0099,当显示数字大于等于99时数码管显示为FF。按下K1则数码管清零,按下K2则数码管停止计数,保持实时时间。3.4.3 调试中出现的问题及解决方法运行过程中电路图不显示,是因为程序没有链接proteus未链接运行程序后

11、要重新编译,不能停止程序,因为没暂停proteus程序,停止后程序才可以重新编译并运行五、实训步骤1.绘制硬件电路在Proteus绘制电路或按电路连接模块电路。2.编制程序参考汇编语言源程序,编写C51程序。3.观察运行结果运行编译完成的程序,观察秒表功能。六、要求及扩展1.将秒表的汇编语言源程序改为C51程序。2.用共阴极实现秒表功能。3.调高秒表显示频率。4.用定时计数器完成1秒的定时。实训二 步进电机的控制一、任务描述及分析 步进电机是一种常用的机电转换器件。也是一种可以将电脉冲信号转变成角位移或线位移的电磁机械装置,可以对其旋转角度和旋转速度进行高精度的控制,是工业过程控制和仪表中常用

12、的执行部件之一。本次实训应解决步进电机功率驱动电路的设计以及步进电机步进信号、方向控制与速度控制等问题。对于任务的分析如下:(1) 功率驱动:采用大功率达林顿管提高电路的驱动电流,以满足步进电机运行的要求。(2) 步进信号:要使步进电机转动起来,只需对其各相绕组顺序通以脉冲电流,即按节拍通以脉冲电流,单位周期的节拍数越多,控制精度越高。(3) 方向控制:改变控制节拍的控制顺序,就可以改变步进电机的旋转方向。(4) 速度控制:控制每节拍的工作时间,就可以改变步进电机的旋转速度,在编程中一般通过调用延时程序来控制节拍工作时间。二、任务实施2.1 进电机的控制原理2.2.1 步进电机的工作原理 目前

13、常用的是反应式步进电机,根据绕组数的多少有二相,三相,四相和五相步进电机等。图15.3给出了三相步进电机结构示意图。 从图1中可以看出,电机的定子上有6个等间距的磁极A、C、B、A、C、B,相对两个磁极形成一相(A-A、B-B、C-C),相邻的两个磁极之间夹角为60每个磁极上有五个分布均匀的矩形小齿。电机的转子上共有40个矩形小齿均匀地分布在圆周上,相邻两个小齿之间的夹角为9。由于相邻的定子磁极之间的夹角为60。而定子和转子的齿宽和齿锯都相同,所以定子磁极所对应的转子上的小齿数为20/3个,定子和转子就存在错齿现象。当某一相绕组通电时,与之对应的两个磁极形成N极和S极,产生磁场与转子形成磁路。

14、当通电的一相对应的定子和转子的齿为对气齐时,则在磁场的作用下,转子将转动一定的角度,是转子和定子的齿相对对齐,同时,。该相的定子和转子的齿对齐后,相邻两相的齿又变成没有对齐,这时再对错磁相进行通电,又会转动一定的角度。一次对各相通电,就会使步进电机连续转动。可见,错齿是使步进电机旋转的原理。2.2.2电机的控制原理A相三拍控制方式 若A相通电,B、C相不通电,在磁场的作用下使转子的齿和A相的齿对齐,以此作为初始状态,此时B相和C相又与转子的齿错开1/3个齿距,即3;接着如果B相通电,磁场作用又使转子的齿与B相的齿对齐,则此时转子转过3,即走了一步,同时,又产生A相和C相的齿与转子的齿错开了1/

15、3个齿距;若再使C相通电,又会使转子转动3。这样依次按ABCA的顺序轮流对各相磁极通以脉冲电流,则转子就会按每个脉冲转过3的角度进行转动。改变输入各相的脉冲电流频率,可以控制步进电机的转速,但过高的脉冲频率可能导致步进电机的失步现象。如果以CBAC的顺序通以脉冲电流,则步进电机将反方向转动。从一相通电转到另一相通电称为一拍,故上述的通电方式称为三相三拍控制方式。B三相六拍控制方式 AABBBCCCAA的顺序对磁极通电,一个循环共有6拍,每拍的转动角度为1.5。可见步进电机的定位精度提高了1倍,同时也使步进电机的转动变得平稳柔和。若通电顺序为AACCCBBBAA时,则步进电机按反方向转动。2.2

16、步进电机与单片机的接口根据上述步进电机工作原理可知,要使步进电机转动起来,只需对其各项绕组顺通以脉冲电流。一般驱动脉冲形式方法有两种:一种方法是使用硬件的方法,及采用纯数字电路的环形脉冲分配器控制步进电机的步进,目前市场上已有众多标准化的环形脉冲分配器芯片可供选择。其特点是抗干扰性好,较适宜于大功率的步进电机控制,但成本高,结构较复杂。另一种方法则是使用软件方式驱动步进电机,通过单片机编程输出脉冲电机来控制步进电机的步进。其特点是驱动电路简单,控制灵活,常用于驱动中低功率的步进电机。三相步进电机与8051单片机的接口电路如图15.4所示,该接口是采用软件方式控制步进电机的旋转。步进电机的驱动由

17、8051单片机编程产生,并从P1口输出。由于步进电机所需要的驱动电流比较大,驱动步进电机各相电流导通的驱动器要使用具有一定功率的复合管。同时,考虑到步进电机各相电机驱动电流的通断时会造成电磁干扰的反串影响单片机的正常运行,在输出通道中加入一级光电隔离器,以切断步进电机的电流驱动电路和8051单片机控制电路之间的联系。步进电机的各相绕组上串接限流电阻,防止过大的电流流过线圈。电机绕组两端并联一个二极管的作用是在复合管从导通转入截止的瞬间,吸收绕组线圈中的反电动势能量,以避免产生电磁场干扰其他电路及击穿复合管。三.应用ULN2003的步进电机控制电路3.1.ULN2003与二相六线制步进电机3.1

18、.1 ULN2003技术参数ULN2003是七路达林顿管反相驱动电路,管脚分布图如图15.5所示。其主要技术指标如下: 工作电压为50V。 连续工作电流为50mA。3.1.2 二相六线制步进电机 二相六线制步进电机的引线图如图15.6所示,分两相共六根线,黑、黄、橙色三线为一相,黑色线为中间抽头,接电源,令两根线接控制信号;白、红、蓝色三线为另一相,白色线为中间抽头,接电源,令两根线接控制信号。二相六线制步进电机共4“相”控制,则有单四拍、双四拍和单双八拍三种控制方式。 单四拍:黄橙红蓝黄。 双四拍:黄橙橙红红蓝蓝黄黄橙。 单双八拍:黄黄橙橙橙红红红蓝蓝蓝黄黄。3.1.3 .应用ULN2003

19、的步进电机控制电路(1)电路功能通过按键开关控制步进电机的启、停与旋转方向,用按键开关状态调节步进电机的旋转速度。(2)控制电路如图15.7所示,按键开关SW0通过P3.6控制步进电机的启动与停止,按键开关SW1通过P3.7控制步进电机的旋转方向,按扭KEY1通过P1.0用于减速,按钮KEY2通过P1.1用于加速;用P3.0P3.3输出节拍控制信号;用P0.0P0.7输出显示的段码信号,用P2.0P2.5输出显示位码控制信号,图15.7中忽略了显示电路。3.1元器件清单序号数量元件名称所属类所属子类11AT89c51MicroprocessorICs8051 Family21CRYSTALMi

20、scellaneous3410WATT1KResistorsGeneric4110WATT10KResistors10 Watt wirewwound517SEG-MPX6-CCOptoelectronics7-segment Displays62BUTTONSwitches&RelaysSwitches71MOTOR-STEPPERElectromechanical83RHYC0402NPO33PCapacitorsNickel Barrier91RESPACK-8ResistorsResistor Packs102SWITCHSwitches&Relays111ULN2003AAnalog

21、 IcsMiscellaneous3.3程序结构图开始程序初始化检测按键是否按下SW1是否按下SW0是否按下KEY1是否按下KEY2是否按下启动或停止正传或反转减速加速NNNYYYY3.4控制程序 程序说明。节拍控制是采用单四拍控制,是通过直接编程P3.0P3.3输出节拍控制信号。速度控制是通过控制延时时间来实现的,延时时间长,即速度减少,反之,速度增加。 程序清单。#include/*宏定义*#define uchar unsigned char#define uint unsigned int#define Led_wx P2#define Led_dx P0/*全局变量定义*sbit M

22、0=P30;sbit M1=P31;sbit M2=P32;sbit M3=P363;sbit SW1=P36;sbit SW2=P37;sbit SWU=P10;sbit SWD=P11;uchar Speed=1; /转速uchar m; /正反转标志uchar t=0; /定时计数值uchar n=0; /步进电机数uchar Date=0; /存储步数单元uchar Ledplay6; /数据存放缓存区uchar bn=0; /显示指针/*子程序定义*uchar code no= /数码代码0x3f, /00x06, /10x5b, /20x4f, /30x66, /40x6d, /5

23、0x7d, /60x07, /70x7f, /80x6f, /90x38, /L 100x77, /R 110x40 /- 12;uchar code wex= /显示位码0xfe, /选中第一位0xfd, /选中第二位0xfb, /选中第三位0xf7, /选中第四位0xef, /选中第五位0xdf /选中第六位 ;/*void DelayM(unsigned int t) /延时单次1ms unsigned char i;while(-t!=0) for(i=0;i120;i+); /*void putin(uchar u) /字符载入函数将字符装入显示寄存器 Ledplaybn=nou;

24、bn+; /换下一个显示缓冲字节void clearRAM(void) /寄存器清空函数6个寄存器清空(0x00) uchar a; /定义变量用于清空数据指针 for(a=0;a6;a+) /指向2个寄存器 Ledplaya=0; /将指向的寄存器清空 void ledxs(void) /数码管显示子程序uchar i;uchar Date=0;uchar wx=0;for(i=0;i20) Speed=20; while(SWU=0); if(SWD=0) /按键检测 DelayM(20); /延时去抖if(SWD=0)Speed-;if(Speed=0)Speed=1;while(SWD

25、=0);if(t=20) /计满20到1st=0;Date=n; /取1s内的步数n=0;*void delay() /延时,用来控制转速uchar i=5+Speed;while(-i!=0)clearRAM(); /显示程序bn=0;putin(m+10); /显示正反转putin(Date%10); /显示1s内的步数个位putin(Date/10); /十位putin(12); /显示putin(Speed%10); /显示延时基数个位putin(Speed/10); /显示十位ledxs();/*/void fz() /反转M3=0;M0=1;delay();n+;M0=0;M1=1

26、;delay();n+;M1=0;M2=1;delay();n+;M2=0;M3=1;delay();n+;/*/void zz() /正转 M0=0; M3=1; delay(); n+; M3=0; M2=1; delay(); n+; M2=0; M1=1; delay(); n+; M1=0; M0=1; delay(); n+; void main() Time0_Int(); while(1) while(SW1=1) if(SW2=1) zz(); /正转 m=1; else fz(); /反转 m=0; 任务实施一、用Proteus软件绘制步进电机的控制电路 将单片机最小系统、

27、按键输入电路、显示电路与步进电机驱动电路组合在一起,构成步进电机控制系统,如图所示。步进电机控制系统图二、运行与调试程序2.1运行程序按动SW0,启动电机,观察显示器与直流电机的转速、旋转方向。按动KEY2,增速,并一路观察与记录直流电机的转速。按动KEY1,减速,并一路观察与记录直流电机的转速。 按动SW1,调整直流电机旋转的方向,再重复、步的调试工作。仿真图左转仿真图右转三、调试中遇到的问题及解决方法3.1 程序方面 程序的文件名错误“#include”。改为“#include”运行后显示管显示只能显示左右转,其余的均显示为“01-00L”或“01-00R”。可根据程序:“void del

28、ay() /延时,用来控制转速uchar i=5+Speed;while(-i!=0)clearRAM(); /显示程序bn=0;putin(m+10); /显示正反转putin(Date%10); /显示1s内的步数个位putin(Date/10); /十位putin(12); /显示putin(Speed%10); /显示延时基数个位putin(Speed/10); /显示十位ledxs();判断出所出的问题。 是显示时的电动机旋转不对,现象为左右摇摆。使显示不正确。更换电机以后,不能解决问题。 根据程序中断没有执行而影响显示。检查程序后发现:“void Time0_Int(void) /

29、定时器T0初始化程序 TMOD=0x51; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; TR0=1; ”中断程序少了语句。改为:“void Time0_Int(void) /定时器T0初始化程序 TMOD=0x51; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; TR0=1; ET0=1; ”则显示正常。3.2 软件模拟方面 起停按钮不起作用。检查程序方面没有错误。更改与按钮连接的电阻阻值后可以解决问题 运行后电机旋转现象为左右摇摆。检查程序没有错误。将电机的转速加快可以解决其问题。实训总结C51实训评价表项目内容要求评分自评组评师评课题分析综合知识运用能力(5%)资料收集相关知识的获取能力(5%)方案设计设计是否合理、是否正确(5%)软硬件制作分析设计制作是否要求、设计是否合理、分析是否正确(10%)系统联调是否规范(5%)运行情况(15%)课题成果展示与项目要求(10%)功能扩展扩展功能要求(10%)小组间的合作团结、协作的情况(10%)应用价值与创新设计成果的应用价值与创新(10%)实训报告内容、格式(15%)合计意见与反馈总成绩指导教师31

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1