版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用课程设计【项目名称】基于AT89S52单片机控制的步进电机【指导教师】XXX【班级】XXX【学号】XXX【姓名】XXX目录一、项目概述 4二、项目要求 4三、知识要点 6(一)AT89C52的资料 8(二)ULN2003资料 13四、系统设计 17(一)系统框图设计 17(二)说明 17五、硬件设计 18(一)电路原理图 181、按键功能 202、驱动电路 20(二)元件清单 23六、软件设计 24(一)程序流程图 24(二)源程序 26(三)系统仿真及调试 361、硬件调试 372、软件调试 37七、总结 38(一)遇到的问题及其解决方法 381、硬件部分 382、软件部分 39(二)功能扩展 411、已经实现的扩展功能 412、暂未实现的扩展功能预想 42一、项目概述 步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出机械位移增量和输入数字脉冲对应的驱动器件。步进电机具有快速启动、停止的能力,精度高,控制方便,因此,在工业上得到广泛应用。二、项目要求基于AT89C52单片机的控制步进电机正反转,具体要求如下:1、开始通电时,停止位指示灯亮,步进电机停止工作。2、单片机分别接有按键开关K1、K2、K3、K4、K5用来控制步进电机的转动,具体要求如下:(1)K1为正转按钮。当按下K1时,步进电机正转,同时正转指示灯亮。(2)K2为反转按钮。当按下K2时,步进电机反转,正转指示灯熄灭,同时反转指示灯亮。(3)K4为加速按钮。当步进电机处于正转或反转状态时,每按下一次加速按钮,步进电机将正转或反转加速一次,最高加速四次,达到最大速度后再按加速按钮步进电机的状态不再变化。(4)K5为减速按钮。当步进电机处于正转或反转状态时,每按下一次减速按钮,步进电机将正转或反转减速一次,最高减速四次,减到最小速度后再按减速按钮步进电机的状态不再变化。(5)K3为步进电机停止按钮。当按下K3时,步进电机将停止转动。3、一位数码管用来显示步进电机当前速度的档位。当步进电机开始转动或按下加速减速按钮开关后数码管都会显示相应数字,数码管显示的数字表示步进电机当前工作档位。4、正传采用1相激磁方式,反转采用1~2相激磁方式。三、知识要点通过学习和查阅资料,本项目需要掌握如下知识:1、+5电源原理设计,USB供电接口的连接。2、单片机复位电路工作原理及设计。3、按键电路的设计。4、光隔离电路、驱动电路的原理及设计。5、步进电机工作原理及控制设计。6、AT89C52单片机引脚。7、单片机控制步进电机C语言程序设计。(一)AT89C52的资料引脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(二)ULN2003资料ULN2003的内部结构和功能:ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。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是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片。经常在以下电路中使用,作为:1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。ULN2003的封装采用DIP—16或SOP—16ULN2003在各种控制电路中常用它作为驱动继电器的芯片,其芯片内部做了一个消线圈反电动势的二极管。ULN2003的输出端允许通过IC电流200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。四、系统设计(一)系统框图设计ATAT89C52单片机按键电路复位电路晶振电路电源电路驱动电路步进电机 图4-1 基于AT89C52单片机的控制步进电机的控制框架(二)说明根据系统要求画出基于AT89C52单片机的控制步进电机的控制框架如图4-1所示。系统主要包括单片机、晶振电路,电源电路、按键电路、步进电机及驱动电路几部分。五、硬件设计(一)电路原理图根据图4-1,可以设计出单片机控制步进电机的硬件电路图,如4-2所示。其他各部分器件及功能如下:1、按键功能单片机分别接有按键开关K1、K2、K3、K4、K5用来控制步进电机的转动,具体要求如下:(1)K1为正转按钮。当按下K1时,步进电机正转,同时正转指示灯亮。(2)K2为反转按钮。当按下K2时,步进电机反转,正转指示灯熄灭,同时反转指示灯亮。(3)K4为加速按钮。当步进电机处于正转或反转状态时,每按下一次加速按钮,步进电机将正转或反转加速一次,最高加速四次,达到最大速度后再按加速按钮步进电机的状态不再变化。(4)K5为减速按钮。当步进电机处于正转或反转状态时,每按下一次减速按钮,步进电机将正转或反转减速一次,最高减速四次,减到最小速度后再按减速按钮步进电机的状态不再变化。(5)K3为步进电机停止按钮。当按下K3时,步进电机将停止转动。2、驱动电路单片机的输出电流太小,不能直接与步进电机相连,需要增加驱动电路。对于电流小于0.5A的步进电机,可以采用UL2003类的驱动IC。ULN2003技术参数如下所示:最大输出电压:50V。最大连续输出电流:0.5A。最大连续输入电流:25mA。功耗:1W。如图4-3所示为2001、2002、20030、2004系列驱动器引脚图,左侧1~7引脚为输出端,接单片机P1口的输出端,引脚8接地;右侧10~16引脚为输出端,接步进电机,引脚9接电源+5V,该驱动器可提供最高0.5A的电流。正转采用1相激磁方式,反转采用1~2相激磁方式。 1~7为输入端 10~16为输出端8号引脚接地 9号引脚接+5V电源驱动器引脚图(二)元件清单AT89C52单片机控制步进电机系统元件清单如下表4-1所示。 表4-1 单片机控制步进电机系统元件清单六、软件设计(一)程序流程图程序设计流程图如图4-4所示,,主要包括键盘扫描模块、步进电机正反转切换模块、步进电机停止及指示灯模块。(二)源程序#include<REG52.H> //开始,只正转,不反转,用flag做全局变量来控制转向#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineCLK_WISE0//顺时针方向转动#defineINVERSE1//逆时针方向转动bitdirection=CLK_WISE;/***方向标志,取值为CLK_WISE或INVERSE*/staticuintspeedcount=0;//加速标志,越大转速越快,最大到4,然后回归到0,循环。 //程序中可以依据它来改变占空比//ucharstep[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};//8个步ucharstep4[]={0x01,0x02,0x04,0x08,0x01,0x02,0x04,0x08};/*一相激磁,一整步*/ucharstep8[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};/*一、二相激磁,半步*/ucharth_0[8]={0x5D,0x85,0x9E,0xAE,0xBA,0xC2,0xC9,0xCF};//8个定时器值,高8位uchartl_0[8]={0x3D,0xEE,0x58,0x9E,0x3E,0xF7,0xBF,0x2C};//8个定时器值,低8位ucharshuma[8]={0x3f,0x06,0x5b,0x4f,0x66};//04//,0x7f ,0x66,0x6d,0x7d,0x07intstep_i=0;//当前处于哪一步sbitk1=P0^0; sbitk2=P0^1;sbitk3=P0^2;sbitD1=P0^5;sbitD2=P0^6;sbitD3=P0^7;ucharflag;//intstep_i=0;/***定时器t0***/voidtime0(void)interrupt1using1 //控制转向 //方向反后,正转快于反转???难道是一二相激磁的原因?{ //P1=step4[step_i];//输出电机控制信号 if(flag==1) //顺时针转 { P1=step4[step_i];//输出电机控制信号 TR0=1; step_i++; } else if(flag==2) //反时针转 { P1=step8[step_i];//输出电机控制信号 TR0=1; step_i++; } if(step_i>7)//顺时针到最后一步,需要调整到第一步 step_i=0; if(step_i<0)//顺时针到第一步,需要调整到最后一步 step_i=7; TH0=th_0[speedcount];//根据当前速度设定定时器初值 TL0=tl_0[speedcount];}/****速度标志*****/voidint0_srv(void)interrupt0using0 //外部中断0服务程序 //加速与减速结果相反,调整后,减速最小后,电机停止运动 ,难道是因为我把TR0设置取消了?{ if(INT0==0) //加速 { //TR0=1; while(!INT0); if(flag==1) {speedcount++; if(speedcount>4) { speedcount=4; } } if(flag==2) {speedcount++; if(speedcount>4) { speedcount=4; } }//最大为7,然后从0开始循环 //没次调速度,电机就会回到原来的位置,如果连续按加速,电机一直上下运动,因此把三句放到前面,值先调整变化,再改变速度 P2=shuma[speedcount]; TH0=th_0[speedcount];//根据当前速度设定定时器初值 TL0=tl_0[speedcount]; }}voidint1_srv(void)interrupt2using2 //外部中断1服务程序{ if(INT1==0) { //TR0=1; while(!INT1); if(flag==1) {speedcount--; if(speedcount<=0) { speedcount=0; } } if(flag==2) {speedcount--; if(speedcount<=0) { speedcount=0; } } P2=shuma[speedcount]; TH0=th_0[speedcount];//根据当前速度设定定时器初值 TL0=tl_0[speedcount]; }}/*******加速********/voidmain(){P2=0x00; EA=1; TMOD=0x01; ET0=1;//定时器0初始化 //TR0=1; EX0=1; IT0=1;//外部中断0 EX1=1; IT1=1;//外部中断1 TH0=th_0[0]; TL0=th_0[0];//定时器0初始值 D3=0; while(1) { if(k3==0)//停止位 { P2=0x3f; flag=0; TR0=0; D1=1; D2=1; D3=0; speedcount=0; } if(k1==0)//正转{ flag=1; TR0=1; D1=0; D2=1; D3=1; } if(k2==0)//反转{ flag=2; TR0=1; D1=1; D2=0; D3=1; } }}(三)系统仿真及调试1、硬件调试硬件的调试主要是把电路各种参数调整到符合设计要求。具体步骤如下:先检查排除硬件电路故障,包括设计性错误和工艺性障碍。一般原则是先静态再动态利用万能板或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。先要将AT89C52取下,对电路板进行通电检查,通过观察看是否有异常,然后用万能表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口电路是否正常。2、软件调试软件调试是利用仿真工具如PROTUES等进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。七、总结(一)遇到的问题及其解决方法1、硬件部分(1)焊接过程中芯片底座某个引脚不慎弄断,不过整个电路设计中没有用到那个引脚,所以影响不大。(2)有很多地方要接高电平或低电平,为了防止导线杂乱无章或方便检测电路,我将焊接电路板的上面固定一条接高电平的导线,在下面固定一条接低电平的导线,采用这种方式后,电路板上的导线布局比较合理美观了,电路性能检测也非常方便。(3)连接用导线的绝缘皮非常薄,不耐高温,焊接时容易被电烙铁的高温熔化从而导致线路短路,为避免此问题,焊接时尽量少用纯金属丝,不是焊接点的地方均需要有绝缘皮包裹导线,同时注意焊接时的细节,不要将非焊接点的绝缘皮熔化了。(4)焊接发光二极管时犯了一个低级错误,本来应该二极管的正极接高电平负极接I/O口的,全部搞成了正极接I/O口负极接低电平,后来又得修改,造成了不小的麻烦。(5)完成设计作品后在使用过程中,发现数码管的某一段始终不能显示,即那一段始终是暗的,用万用表检查之后确定为焊接地方出现了技术上的问题,于是对症下药,对其重新焊接,将其他地方也进行了检测及巩固,之后产品性能总体效果不错。2、软件部分(1)开始的时候,步进电机只是振动,没有转动。程序中通过控制TR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学小学教育(小学科学教学)试题及答案
- 2025年大学国际经济与贸易(国际贸易实务)试题及答案
- 2025年大学社区护理基础(护理基础)试题及答案
- 2025年中职人工智能技术应用(智能产品设计)试题及答案
- 2026年蛋类食品(沙门氏菌检测)试题及答案
- 2025年中职电工(低压电工技术)试题及答案
- 2025年高职区块链应用技术(智能合约开发)试题及答案
- 2025年高职物流管理(物流方案策划)试题及答案
- 2025年高职汉语言文学教育(文学作品赏析)试题及答案
- 2025年高职(汽车检测与维修技术)汽车发动机电控实训试题及答案
- DB52-T 1671-2022 迷迭香栽培技术规程
- 年度采购工作总结
- 宫外孕大出血抢救流程
- 环境保护与水土保持管理制度
- 离子镀膜技术
- 加油站反恐防范工作预案
- 渣土车租赁合同
- 2025届高考小说专题复习-小说叙事特征+课件
- 蓝色简约质量意识培训模板
- 2024年广州市中考语文试卷真题(含官方答案及解析)
- 新教材高中数学第八章立体几何初步8.4.1平面课件
评论
0/150
提交评论