1、课 程 设 计说明书第2学期环 节 名 称:单片机应用基础课程设计 专 业 班 级: 机自065 学 号: 姓 名: 指 导 教 师: 雷冀南 院 系: 机械学院 目录序:摘要 1 课程设计任务书 2 课程设计计划书 3正文:一、课程设计目标和要求 4 1.1课程设计目标和要求 41.2课程设计预备识 41.3课题设计任务 6二、 总体设计 6三、硬件设计 7 3.1单片机选择 7 3.2最小系统 8 3.3步进电机选择及其参数 8 3.4步进电机驱动电路 9 3.5控制电路 10 3.6显示电路 10 3.7总体电路图 11四、软件设计 11 4.1方案论证11 4.2主程序设计11 4.3
2、定时中止设计12 4.4外部中止设计13 4.5 C语言程序13五、系统调试 13 5.1软件调试 13 5.2硬件调试 14六、结束语 14参考文件 15附录 14 附录1 系统工作原理图 16 附录2 各模块程序清单 16摘 要能够实现步进电机控制方法有多个,能够采取前期模拟电路、 数字电路或模拟和数字电路相结合方法。多年来伴随科技飞速发展,单片机应用正在不停深入,同时带动传统控制检测日新月异更新。本文介绍一个用AT89S51作为关键部件进行逻辑控制及信号产生单片机技术和C语言编程设计步进电机控制系统,步进电机背景和现实状况、硬件设计、软件设计及其仿真全部做了具体介绍,使我们不仅对步进电机
3、原理有了深入了解,也对单片机设计研发过程有了愈加深刻体会。本控制系统采取单片机控制,经过人为按动开关实现步进电机开关、复位、正反转。该系统还增加了步进电机加速及减速功效及相关显示模块。含有灵活方便、适用范围广特点,基础能够满足实践需求。关键字:AT89S51 单片机 步进电机控制 ULNA 课 程 设 计 任 务 书课程设计名称单片机应用基础课程设计专业班级(学生人数)机自062070(96人)指导老师雷冀南 本学期负担对应课程教学任务情况单片机应用基础理论:26课时试验:6课时课程设计目标及任务单片机应用基础课程设计是学好本门课程又一关键实践性教学步骤,课程设计目标就是配合本课程教学和平时试
4、验,以达成巩固消化课程内容,深入加强综合应用能力及单片机应用系统开发和设计能力训练,是以培养学生综合利用所学知识过程,是知识转化为能力和能力转化为工程素质关键阶段。课程设计任务:依据给定任务要求选择适宜单片机和其它电子元器件,进行系统硬件电路设计和软件编程,依据系统制作并调试系统电路板,使之实现任务要求。相关参数选择要求符合国家标准。具体设计内容以下:单片机应用系统设计模拟和仿真及硬件电路:步进电机控制。课程设计要求要求:1、利用proteus软件设计各模块工作原理图,并进行模拟仿真;2、控制程序设计、调试及实现:(1)依据要求,写出完整程序步骤图;(2)将设计程序输入、汇编,排除语法错误,生
5、成*.OBJ文件;(3)利用proteus软件进行电路模拟仿真和调试3、设计硬件电路并烧写程序,调试后系统能根据要求工作4、写出课程设计说明书(统一格式)课程设计目标1课程设计说明书一份;2系统工作原理图一张;3汇编源程序(或C语言源程序)4硬件电路板调试经过参考文件及资料1 李广第主编单片机基础第一版北京航空航天大学出版社北京1994年6月2 王修才主编单片机接口技术第一版复旦大学出版社上海1995年10月3 周志德主编单片机原理及应用第一版高等教育出版社4 李运华主编机电控制第一版北京航空航天大学出版社5 秦曾煌主编电工学 上册:电工技术第五版高等教育出版社6 秦曾煌主编电工学 下册:电子
6、技术第五版高等教育出版社课 程 设 计 计 划 书周次日期设计内容具体要求设计教室指导时间段8.04.15准备阶段:复习相关知识,熟悉相关软件熟悉电路符号及原理,能用PROTEUS设计印刷电路板图,熟悉多种电子元件9:3011:308.04.16总体方案设计明确设计任务和要求,设计思绪清楚;研究并制订出总体设计方案,加以论证,并提交总体设计方案汇报9:3011:308.04.17各部分电路设计和实现绘制工作原理图,利用PROTEUS软件对各部分电路进行模拟仿真9:3011:308.04.188.04.19汇编或C语言源程序设计绘制程序步骤图,依据程序步骤图编写源程序9:3011:309.04.
7、229.04.23程序调试利用软件WAVE6000检验源程序语法错误,并进行软件仿真,验证程序正确性9:3011:309.04.24系统调试装入系统源程序,进行硬件仿真和系统调试9:3011:309.04.259.04.26整理设计资料,提交设计结果课程设计说明书一份;工作原理图一张;汇编源程序清单(或C语言源程序);硬件调试成功9:3011:30一、课程设计目标和要求1.1课程设计目标和要求 单片机应用基础课程设计是学好本门课程又一关键实践性教学步骤,课程设计目标就是配合本课程教学和平时试验,以达成巩固消化课程内容,深入加强综合应用能力及单片机应用系统开发和设计能力训练,是以培养学生综合利用
8、所学知识过程,是知识转化为能力和能力转化为工程素质关键阶段。课程设计要求:依据给定任务要求选择适宜单片机和其它电子元器件,进行系统硬件电路设计和软件编程,依据系统制作并调试系统电路板,使之实现任务要求。相关参数选择要求符合国家标准。1.2课程设计预备知识 1.2.1 单片机基础单片机微型计算机是微型计算机一个关键分支,也是颇具生命力机种。单片机微型计算机简称单片机,尤其适适用于控制领域,故又称为微控制器。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP可反复擦写1000次Flash只读程序存放器,器件采取ATMEL企业高密度、非易失性存放技术制造,兼容标准
9、MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存放单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。 图1:AT89S51单片机外观 图2:AT89S51单片机引脚封装1.2.2步进电机基础原理步进电机是工业过程控制及仪表中常见控制元件之一,比如在机械装置中能够用丝杠把角度变为直线位移,也能够用步进电机带螺旋电位器,调整电压或电流,从而实现对实施机构控制。步进电机能够直接接收数字信号,无须进行数模转换,用起来很方便。步进电机还含有快速启停、正确步进和定位等特点,所以在数控机床、绘图仪、打印机和光学仪器中得到广泛应用。步进电机是将电脉冲信号
10、转变为角位移或线位移开环控制元步进电机件。在非超载情况下,电机转速、停止位置只取决于脉冲信号频率和脉冲数,而不受负载改变影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定方向转动一个固定角度,称为“步距角”,它旋转是以固定角度一步一步运行。能够经过控制脉冲个数来控制角位移量,从而达成正确定位目标;同时能够经过控制脉冲频率来控制电机转动速度和加速度,从而达成调速目标。现在应用最广泛是两相和四相,完成一个磁场周期性改变所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,它能够在不一样通电方法下运行,常见通电方法有单(单相绕组通电)四拍(A-B-C-D-A.),
11、双(双相绕组通电)四拍(AB-BC- CD-DA-AB-.),八拍(A-AB-B-BC-C-CD-D-DA-A.),多种工作方法时序图以下:(高电平有效) 单双八拍方法: 双四拍方法: 单四拍方法: 图3:四相步进电机通电方法 上图中示意脉冲信号是高电平有效,但实际控制时公共端是接在VCC 上,所以实际控制脉冲是低有效。AT89S51P1口输出脉冲信号经ULNA倒相驱动后,向步进电机输出脉冲信号序列控制步进电机运转。1.3课程设计任务单片机应用系统设计步进电机控制依据要求及实际硬件现实状况进行总体设计,然后对各个模块进行优化设计,分别设计出硬件电路和对应软件编程,软件编程经过uVison中调试
12、并生成.hex文件,将设计出数据在Proteus软件中进行模拟仿真,依据设计制作电路板并烧写程序,最终验证设计功效。二、总体设计控制模块:系统复位,步进电机开启和暂停,正转反转,多极速度切换显示模块:电机四相线路电平指示灯,七段码显示电机工作状态指示灯及速度档位 控制按钮P1 P0AT89S51P3 P2ULNA步进电机复位电路LED显示外部中止按钮晶振电路图4:总体设计框图功效要求:系统供电后步进电机待机,开关键控制整体启停,工作时显示“A”待机时显示“P”,工作状态下指示灯可显示各路供电情况,换向按钮可控制正反转,正转显示“A”反转显示倒立“A”,档位调整按钮控制转速,“8档”可达步进电机
13、极限速度,切换不一样档位时七段码可显示目前档位。复位时显示“8.”。处理方案:采取AT89S51单片机控制四相五线型步进电机。P0口连接按钮开关控制速度档位,P1口控制电机,P2口控制七段码显示,P3连接两个按钮开关作为外部中止源控制启停和转向。三、 硬件设计 设计硬件电路关键包含最小系统、驱动电路、控制电路、显示电路四大部分。最小系统是为了使单片机正常工作。驱动电路关键是对单片机输出脉冲进行功率放大,从而驱动电机转动。控制电路关键由开关和按键组成,由操作者依据对应工作需要进行操作。显示电路关键是为了显示电机工作状态和转速。3.1单片机选择 性能强大:AT89S51含有完整输入输出、控制端口、
14、和内部程序存放空间。和我们通常意义上微机原理类似,能够经过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息采集,且能够提供以点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行正确操控,含有强大工控能力。 易于学习:AT89S51系列单片机编写程序基础步骤。其语法结构和我们常见计算机C语言基础相同,不一样之处于于增加了控制具体引脚工作语句和命令,相对于计算机C语言,单片机C语言更简练和明确.能够控制每个引脚输入输出状态。使用AT89S51系列单片机编程,能够在没有实物单片机情况下在一般电脑上进行程序编写甚至是调试工作。通常工作中使用Keil企业开发5
15、1单片机编程软件进行编程,它采取现在流行开友环境,集编辑,编译和仿真于一体。在该软件上用户能够编写汇编语言或C语言源程序,并利用该软件生成单片机能运行程序。 价格低廉:AT89S51芯片价格廉价,适合对大批量计量仪器进行规模化改造,其单片售价不超出5元。 鉴于以上优点以ATMELAT89S51作为控制芯片。3.2最小系统 对51系列单片机来说,最小系统通常应该包含:单片机、复位电路、晶振电路。 复位电路:给单片机一个复位信号(一个一定时间低电平)使程序从头开始实施;通常有两种复位方法:上电复位,在系统一上电时利用电容两端电压不能突变原理给系统一个短时低电平;手动复位,经过按钮接通低电平给系统复
16、位。复位电路采取手动复位,所谓手动复位图5所表示。 晶振电路:89S51单片机时钟信号通常见两种电路形式电路得到:内部震荡方法和外部中止方法。在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就组成了内部晶振方法。因为单片机内部有一个高增益反相放大器,当外接晶振后,就组成了自激振荡器并产生振荡时钟脉冲。内部振荡方法外部电路图6所表示。其电容值为30pf,晶振频率为12MHz。 图5:复位电路 图6:晶振电路3.3步进电机选择及其参数四相五线减速步进电机28BYJ-48型四相电机,电压为DC5VDC12V。(图7)当对步进电机施加一系列连续不停控制脉冲时,它能够连续不停地转动
17、。每一个脉冲信号对应步进电机某一相或两相绕组通电状态改变一次,也就对应转子转过一定角度(一个步距角)。当通电状态改变完成一个循环时,转子转过一个齿距。 其参数以下表:表1:28BYJ-48型四相电机参数其原理图8所表示,中间部分是转子,由一个永磁体组成,边上是定子绕组。当定子一个绕组通电时,将产生一个方向电磁场,假如这个磁场方向和转子磁场方向不在同一条直线上,那么定子和转子磁场将产生一个扭力将定子扭转。依次改变绕组磁场,就能够使步进电机正转或反转(比如通电次序为A-B-C-D正转,反之则反转)。而改变磁场切换时间间隔,就能够控制步进电机速度了,这就是步进电机驱动原理。 图7:28BYJ-48步
18、进电机 图8:减速步进电机28BYJ-48原理图3.4步进电机驱动电路因为步进电机驱动电流较大,单片机不能直接驱动,通常全部是使用ULNA达林顿阵列驱动,当然,使用下拉电阻或三极管也是能够驱动,不过效果不好,产生扭力比较小。 步进电机转角不显著,为了便于观察各相电位改变在电机四个相位线路里接入发光二极管。驱动电路图9所表示。图9:步进电机驱动电路3.5控制电路 依据系统控制要求,控制输入部分设置了开启控制,换向控制,速度档位按钮,分别是“开关”、“转向”、“1-8档”,控制电路图10所表示。经过外部中止INT0、INT1连接两个按钮开关来控制电机开启和换向功效。当端口状态改变时,内部程序检测P
19、3.2和P3.3状态来调用对应中止程序,实现系统正确电机开启和正反转控制。 依据步进电机工作原理能够知道,步进电机转速控制关键是经过控制通入电机脉冲频率。对于单片机而言,关键方法有:软件延时和定时中止。在此电路中电机转速控制关键是经过定时器中止来实现,该电路控制电机加速度关键是经过P0口连接按钮断开和闭合,从而控制订时中止频率,这么就改变了步进电机输出脉冲频率,从而改变了电机转速。 图10:控制电路 图11:显示电路3.6显示电路在该步进电机控制器中,电机能够正反转,能够加减档,其中电机转速等级分为8级,为了方便知道电机运行状态和电机转速等级,这里设计了电机转速和电机工作状态显示电路。在显示电
20、路中,关键是利用了单片机P2口。采取共阴极数码管作显示。数码管a、b、c、d、e、f、g、h、dp分别接P2.0-P2.7口,用于显示电机转速等级,共8级,即从1-7转速依次递增,“8”表示极限转速。电路图11所表示。3.7总体电路图把各个部分电路图组合成总电路图,见附录1工作原理图。四、软件设计4.1方案论证从该系统设计要求可知,该系统输入量为速度和方向,速度有增减改变,用切换按钮控制速度。系统输出线和步进电机绕组数相关。这里选步进电机有四相绕组,工作电压为+5V,能够和单片机共用一个电源。步进电机四相绕组用P1口P1.0-P1.3控制,因为P1口驱动能力不够,所以用一片ULNA增加驱动能力
21、。用P2口控制数码管用于显示转速等级。数码管采取共阴。经过分析能够看出,实现系统功效能够采取多个方法,因为随时有可能开启、停止、切换方向和速度档位信号,所以采取中止方法效率最高,这么总共要完成4个部分工作才能满足课题要求,即主程序部分、定时器中止部分、外部中止0和外部中止1部分,其中主程序关键功效是系统初始参数设置及档位改变对应中止时间、数码管显示对应码值;定时器部分控制脉冲频率,它决定了步进电机转速快慢;两个外部中止程序要做工作是为了完成开启、暂停、改变转向功效。下面分析主程序和定时器中止程序及外部中止程序。4.2主程序设计主程序中要完成工作关键有系统初始值设置、系统状态显示和多种开关状态检
22、测判定等。其中系统初始状态设置内容较多,该 图12:主程序步骤图系统中,需要初始化定时器、外部中止;对P1口送初值以决定脉冲分配方法,速度值存放区送初值决定步进电机开启速度,对方向值存放区送初值决定步进电机旋转方向等内容。若初始化P0=00H、速度和方向初始值均设为0,就意味着步进电机按四相单四拍运行,系统上电后在没有操作情况下,步进电机不旋转,速度值显示“P”,主程序步骤图图12所表示。 4.3定时中止设计 步进电机转动关键是给电机各绕组按一定时间间隔连续不停地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间隔是用定时器反复中止一定次数产生,即调整时间间隔
23、就是调整定时器中止次数,所以在定时器中止程序中,要做工作关键是判定电机运行方向、发下一个脉冲,和保留目前多种状态。程序步骤图图13。 图13:定时中止程序步骤图 图14:外部中止程序步骤图4.4外部中止设计外部中止所要完成工作是依据按键次数,改变速度启停和转向(该数据为定时器中止次数),这么就改变了步进电机输出脉冲次序,也就是改变了电机转向。程序步骤图图14所表示。4.5 C语言程序见附录2各模块程序清单。五、系统调试5.1软件调试5.1.1Proteus软件介绍ProteusISIS是一款Labcenter出品电路分析实物仿真系统,可仿真多种电路和IC,并支持单片机,元件库齐全,使用方便,是
24、不可多得专业单片机软件仿真系统。 全部满足我们提出单片机软件仿真系统标准,并在同类产品中含有显著优势。 含有模拟电路仿真、数字电路仿真、单片机及其外围电路组成系统仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真功效;有多种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 现在支持单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列和多种外围芯片。 支持大量存放器和外围芯片。总而言之该软件是一款集单片机和SPICE分析于一身仿真软件,功效极其强大 ,可仿真51、AVR、PIC。 Proteus和
25、其它单片机仿真软件不一样是,它不仅能仿真单片机CPU工作情况,也能仿真单片机外围电路或没有单片机参与其它电路工作情况。所以在仿真和程序调试时,关心不再是一些语句实施时单片机寄存器和存放器内容改变,而是从工程角度直接看程序运行和电路工作过程和结果。对于这么仿真试验,从某种意义上讲,是填补了试验和工程应用间脱节矛盾和现象。 5.1.2 keil软件介绍 Keil 软件是现在最流行开发 MCS-51系列单片机软件,这从多年来各仿真机厂商纷纷宣告全方面支持 Keil 即可看出。Keil 提供了包含 C 编译器、宏汇编、连接器、库管理和一个功效强大仿真调试器等在内完整开发方案,通 过一个集成开发环境(u
26、Vision)将这些部份组合在一起。5.1.3仿真过程操作以下: 在Protues中画出系统电路图 将程序在keil中编译并生成hex文件。 把在keil中编译生成HEX文件载入AT89C51芯片中运行仿真。 5.1.4碰到问题及处理措施调试中碰到软件瓦解,系统无法正常运行情况,查其原因是编程出现死循环,电路原理图为正常连接,共阴数码管错选成共阳等5.2硬件调试工具:万用表、测试程序;方法:经过USB-ISP下载器将调试成功程序烧写到系统板单片机里,按设计按钮运行观察系统运行情况。5.2.2碰到问题及处理措施无法烧写程序,原因为电路连接有误,ISP接口未连接RESET引脚;烧写成功后无法运行,
27、EA引脚未硬件置高电平;系统显示正常但电机不转,原因为新电机内含减速齿轮,配合过紧,手动扭动旋转后改善;系统不稳定时好时坏,部分连线存在虚焊,认真检验加固后处理;数码管未按设计改变,程序逻辑存在部分问题,调整后处理等。六、结束语首次接触单片机,虽有过电工电子和微机原理基础但认为她们之间有一定联络,差异还是挺大,简短几周课程勉强入门,实则对可多知识全部是似是而非,之前对于到来课程设计相当期待,选择了趣味和挑战同在硬件制作。在课程设计这段时间里,又重新复习钻研了书本,也翻阅了其它同类教材,碰到问题勤查资料相互讨论,确实学到了不少知识。期间为准备硬件,第一次去逛电子市场,长了不少见识,学到了书本以外
28、东西,眼界愈加开阔,除了课设之内任务也自己钻研了部分其它单片机相关知识。在制作电路板上花费了不少功夫,万事开头难,自己探索了两天后感觉好多了,经过这次实践既巩固了知识,又锻炼了动手能力,初步掌握手工焊制电路板技能,同时硬件需要也能熟悉使用uVision和Proteus两个很实用软件。总而言之,这次课程设计是一次成功实践步骤,另外受益匪浅!参考文件:1 李广第主编单片机基础第一版北京航空航天大学出版社2 王修才主编单片机接口技术第一版复旦大学出版社3 周志德主编单片机原理及应用第一版高等教育出版社4 李运华主编机电控制第一版北京航空航天大学出版社5 秦曾煌主编电工学 上册:电工技术第五版高等教育
29、出版社6 秦曾煌主编电工学 下册:电子技术第五版高等教育出版社附录1:系统工作原理图 附录2:各模块程序清单/*变量定义*/#includeunsigned char index=0; /步进索引int n=0,n0=211; /设置周期、档位unsigned char flag=0,step=0; /设置方向、停止键/*主程序*/main() P3=0xff; /P3做数据输出端,读入数据前置高电平 P2=0x73; /等候时数码管显示P EA=1; /开总中止 EX0=1;EX1=1; /打开外部中止0、1 ET0=1; /开定时中止0 IT0=1;IT1=1; /为了控制正确,所以采取下
30、降沿触发方法来控制中止 TMOD=0x01; /设置定时器为定时模式1 TR0=1; /开启定时器 TH0=-1000/256; TL0=-1000%256; /每1ms中止一次 while(1) if(P0=0xfe)n0=350;P2=0x86; /显示1档 if(P0=0xfd)n0=110;P2=0xdb; /显示2档 if(P0=0xfb)n0=90;P2=0xcf; /显示3档 if(P0=0xf7)n0=30;P2=0xe6; /显示4档 if(P0=0xef)n0=10;P2=0xed; /显示5档 if(P0=0xdf)n0=8;P2=0xfd; /显示6档 if(P0=0x
31、bf)n0=4;P2=0x87; /显示7档 if(P0=0x7f)n0=3;P2=0xff; /显示8档/*外部中止0子程序*/void int0()interrupt 0/停止键子程序 step+; if(step=1)P2=0x77; /电机运行时显示A,待机时恢复显示“P”if(step=2)step=0;P2=0x73;/开和关只有两种状态step控制在0和1/*外部中止1子程序*/void int1()interrupt 2if(step=1)flag+;if(flag=1)P2=0x7e; /正转时显示“A”,反转时“A”倒立显示if(flag=2)flag=0;P2=0x77;
32、/flag控制在0(正)和1(反)/*定时中止0子程序*/void time()interrupt 1 /旋转子程序TH0=-1000/256; TL0=-1000%256; /重新给定时器赋初值 if(step=1) /开关控制键 if (n=n0) /输出脉冲周期为:n0x1ms if(flag=0) /正转 switch(index) /按次序依次将步进电机四条线置高电平 case 0:P1=0x01;break; case 1:P1=0x02;break; case 2:P1=0x04;break; case 3:P1=0x08;break; index+; if(index=4)index=0; n=0; /转一圈index回到0,下一次重新开始 if(flag=1) /反转switch(index) case 0:P1=0x08;break; case 1:P1=0x04;break; case 2:P1=0x02;break; case 3:P1=0x01;break; index+; if(index=4)index=0; n=0; /转一圈index回到0,下一次重新开始 else n=0; /预防n跑飞 n+; /每次中止n+1 else n=0; /预防n跑飞