基于51单片机的步进电机控制课程设计
MCS51单片机课程设计基于单片机的步进电机控制系统

MCS51单片机课程设计基于单片机的步进电机控制系统.txt我不奢望什么,只希望你以后的女人一个不如一个。
真怀念小时候啊,天热的时候我也可以像男人一样光膀子!本文由灰太狼科技贡献doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
数理与信息工程学院《单片机原理与应用》期末学期课程设计数理与信息工程学院《单片机原理及应用》期末学期课程设计单片机原理及应用》期末学期课程设计题目:基于单片机的步进电机控制系统专业:电子信息工程班级:电信 041 班姓名:学号:指导老师:指导老师:成绩:(2007.1)1数理与信息工程学院《单片机原理与应用》期末学期课程设计目第1章 1.1录............................................................................3 引言............................................................................3 步进电机控制系统概述. (3)1.2 本设计任务和主要内容............................................................4 第2章 2.1 2.2 系统主要硬件电路设计.......................................................... 系统主要硬件电路设计..........................................................5 硬件电路设计单片机控制系统原理.............................................................5 单片机主机系统电路 (5)2.2.1 时钟电路……………………………………………………………6 2.2.2 复位电路……………………………………………………………6 2.3 步进电机驱动电路…………………………………………………………7 2.4 第3章3.1 3.2 LED 显示电路…………………………………………………………….8 系统的软件设计…………………………………………………………10 系统的软件设计…………………………………………………………10 ..................................................................步进电机的位置控制............................................................10 显示子程序 (13)结束语……………………………………………………………………………………………………………………………………17 第四章结束语…………………………………………………………………17 参考文献…………………………………………………………………18 第 5 章参考文献…………………………………………………………………18 …………………………………………………………………2数理与信息工程学院《单片机原理与应用》期末学期课程设计基于单片机的步进电机控制系统第1章引言在当今社会的各个领域步进电机无处不在,应用领域涉及机器人、工业电子自动化设备、医疗器件、广告器材、舞台灯光设备、印刷设备、计算机外部应用设备等等。
微控综合系统设计课程设计-基于51单片机的步进电机微控系统设计

微控综合系统设计课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:电气工程及其自动化班级:电气1301班姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2016 年 1 月 9 日1 摘要随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
本设计是采用STC89C52单片机对步进电机的控制,通过IO口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机;同时,用4个按键来对电机的状态进行控制,并用4个LED发光二极管显示电机的转速。
系统由硬件设计和软件设计两部分组成。
其中,硬件设计包括STC89C52单片机的最小系统、电源模块、键盘控制模块、步进电机驱动(集成达林顿ULN2003)模块、LED指示灯模块。
软件采用在Keil软件环境下编辑。
2 引言用单片机设计的步进电机控制系统应具有以下功能:1. 步进电机的按键启停控制2.步进电机的按键正反转控制3. 步进电机的按键加速控制4. 步进电机的按键减速控制5. 步进电机的LED灯速度显示3 设计方案及原理本设计的目的是以单片机为核心设计出一个单片机控制步进电机的控制系统。
本系统采用AT89C51作为控制单元,通过键盘实现对步进电机转动方向及转动速度的控制,通过led显示速度等级。
下面图1是系统的组成的结构图,大致规划系统的组成,以及控制的原理。
基于51单片机的步进电机控制

电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-。。。), 八拍(A-AB-B-BC-C-CD-D-DA-A。。。) 3、系统电路图
(1)接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容 0.1uF (2)接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用 12MHz), 还有辅助电容 20pF (3)接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析 复位工作原理 4、 接配置:EA(PIN31) (1)四个 8 位通用 I/O 端口,对应引脚 P0、P1、P2 和 P3; (2)两个 16 位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) (3)一个串行通信接口;(SCON,SBUF) (4)一个中断控制器;(IE,IP) 根据以上的方案比较与论证确定总体方案,确定硬件原理图。原理图如下:
1.3 步进电机的特点
1.精度高 一般的步进电机的精度为步进角的 3-5%,且不累积。可在宽 广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反 转控制及制动 等,这是步进电动机最突出的优点
2.过载性好——其转速不受负载大小的影响,不像普通电机,当负载加大 时就会出现速度下降的情况,所以步进电机使用在对速度和位置都有严格要求的 场合;
一、步进电机与驱动电路
1.1 什么是步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱 动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度 (及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目 的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调 速的目的。
基于51单片机的步进电机控制

目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (4)2.3功能模块的设计与实现 (5)第3章结果测试及分析 (8)3.1结果测试 (8)3.2结果分析 (8)参考文献 (9)附录A (10)附录B(电路原理图) (15)附录C (元件列表) (16)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容与要求,要实现步进电机的工作过程,步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置,也是一种能把输出位移增量和输入数字脉冲对应的驱动器件。
首先要给步进电机送入脉冲信号来启动,然后在已经设定好的步进电机的正反转及三种节拍工作方式中切换,步进电机的三种节拍工作方式分别为单四拍、双四拍、单双八拍。
步进电机的驱动需要时钟脉冲信号,改变单片机输出脉冲信号来实现的。
改变各脉冲的先后顺序,可以改变电机的旋转方向和工作方式。
步进电机工作方式的转换则通过键盘控制,可以进行启动、停止、正转、反转及三种节拍工作方式的选择。
键盘的控制是在程序中已经给给每个键设置相应的功能,扫描键盘判断是否有键按下,若有,则执行与之对应的功能;若没有键按下,则保持正在运行的状态不变。
1.2 设计思路采用C语言程序设计的方法结合硬件电路设计方法,利用Lab6000实验箱上已有芯片来实现步进电机的工作(包括正转、反转、单四拍、双四拍、单双八拍的节拍工作方式)。
1)提出方案首先,实现步进电机的启动与停止;其次,实现步进电机的正反转;再次,实现在正转时可选择三种节拍工作方式;最后,实现在反转时可选择三种节拍工作方式。
2)方案论证P1口接步进电机的A~D口,键盘接通片选信号,扫描键盘,由于本程序设定固定按键为功能键,所以扫描键盘时,将使用到的按键的相应列扫描码设置为低电平,如果有键按下,74LS374输出的低电平经过按键被接到74LS245的端口上,这样从74LS245读回的数据就会有低位,根据74LS374输出的列信号和74LS245读回的行信号,就可以判断哪个键被按下。
基于51单片机的步进电机控制系统设计

基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
基于51单片机实现的步进机控制系统设计

摘要步进电机是一种进行精确步进运动的机电执行元件,它广泛地用于工业机械的数字控制。
为使系统的可靠性,通用性,可维护性以及性价比最优,根据控制系统功能要求及步进电动机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电动机的开环控制系统。
控制系统通过单片机存储器、I/O口、中断、键盘、LED显示器的扩展,步进电动机的环形分配器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计。
实现了四相步进电动机的正反转、急停等功能。
为实现单片机控制步进电动机系统在数控机床上的特殊应用,系统设计了两个外部中断,以实现步进电动机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动。
关键词:8051单片机;四相步进电动机;控制Realizes based on single chip microcomputer 51 the stepping motor the control systemABSTRACTThe stepping motor is a precision electromechanical incremental actuator.It widely uses the digital approach for control of industrial machines.For dependable,in general use that make system,can support sex an sex price ratio superior,divide the line according to control system funcion request and a function for entering electricmotor applying environment,making sure designing system hardware with softwares, from but realizes to base on single chip microcomputer 8051 of four mutually the step enters the dynamoelectric opening the wreath the control the system.The control system passes the single saving maching,I/O in a machine, break off,the keyboard, the display of LED expands, a wreah for entering elecreic motor form assigns the machine,drive and the design of its protection electric circuit, man-machine connection electric circuit,interrupt system and reset circuit, single-voltage driver circuit and so on,realizes four mutually the step enters the electric motor positive and negative to turn, nasty stop to wait the function.For realizing single chip microcomputer control a special application for entering electric motor system in severalth contorling machine bed, the system designed two exteriors breaks off,toing realize a the step enters electric motor is in a certain time of again and again positive and negative turn the function, also count namely the knife that control the machine bed is automatic to enter to the sport.KEYWORD:single chip microcomputer 8051;four-phase stepper motor ;control第一章绪论1.1 课题背景当今社会,电动机在工农业生产、人们日常生活中起着十分重要的作用。
基于51单片机的步进电机控制系统设计与实现

步进电机工作原理
步进电机是一种基于磁场的控制系统,工作原理是当电流通过定子绕组时,会 产生一个磁场,该磁场会吸引转子铁芯到相应的位置,从而产生一定的角位移。 步进电机的角位移量与输入的脉冲数量成正比,因此,通过控制输入的脉冲数 量和频率,可以实现精确的角位移和速度控制。同时,步进电机具有较高的分 辨率和灵敏度,可以满足各种高精度应用场景的需求。
二、系统设计
1、硬件设计
本系统主要包括51单片机、步进电机、驱动器、按键和LED显示等部分。其中, 51单片机负责接收按键输入并控制步进电机的运动;步进电机用于驱动负载运 动;驱动器负责将51单片机的输出信号放大,以驱动步进电机。LED显示用于 显示当前步进电机的状态。
2、软件设计
软件部分主要包括按键处理、步进电机控制和LED显示等模块。按键处理模块 负责接收用户输入,并根据输入控制步进电机的运动;步进电机控制模块根据 按键输入和当前步进电机的状态,计算出步进电机下一步的运动状态;LED显 示模块则负责实时更新LED显示。
三、系统实现
1、按键输入的实现
为了实现按键输入,我们需要在主程序中定义按键处理函数。当按键被按下时, 函数将读取按键的值,并将其存储在全局变量中。这样,主程序可以根据按键 的值来控制步进电机的转动。
2、显示输出的实现
为了实现显示输出,我们需要使用单片机的输出口来控制显示模块的输入。在 中断服务程序中,我们根据设定的值来更新显示模块的输出,以反映步进电机 的实时转动状态。
基于单片机的步进电机控制系统需要硬件部分主要包括单片机、步进电机、驱 动器、按键和显示模块等。其中,单片机作为系统的核心,负责处理按键输入、 控制步进电机转动以及显示输出等功能。步进电机选用四相八拍步进电机,驱 动器选择适合该电机的驱动器,按键用于输入设定值,显示模块用于显示当前 步进电机的转动状态。
基于51单片机 步进电机课程设计.

信息与电气工程学院课程设计说明书(2012/2013学年第二学期)课程名称:单片机课程设计题目:步进电机控制实验专业班级:自动化1002班学生姓名:***学号:*******指导教师:苗敬利,王巍设计周数:2周设计成绩:13年6 月17 日目录第1章设计目的............................... 错误!未定义书签。
第2章设计任务与要求.. (3)第3章设计思路与方案 (4)3.1 控制电机正/反向转 (4)3.2 控制电机运转速度 (5)第4章硬件电路设计 (5)4.1 主控模块 (5)4.2 驱动控制模块 (6)4.3 按键控制模块 (7)4.4 显示模块 (8)第5章系统软件设计 (9)5.1 主程序 (9)5.2 子程序 (10)第6章系统仿真 (10)6.1 KEIL调试控制程序 (10)6.2 Proteus仿真 (11)第7章收获与体会 (12)附录1 总电路图 (15)附录2 源程序清单 (16)步进电机简易控制系统设计第一章设计目的步进电机是现代数字控制技术中最早出现的执行部件,步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
需要单片机产生脉冲序列和方向控制控制信号。
步进电机的特点是可以将数字脉冲控制信号直接转换为一定数值的机械角位移.并且能够自动产生定位转矩使转轴锁定。
对控制系统的研制中最基本的要求就是性能可靠和结构简单。
利用AT89S52单片机来设计和开发步进电机的控制系统,可以很好地满足这一要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:基于51单片机的步进电机控制院(系):计算机学院专业:计算机科学与技术(嵌入式)目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2课程设计原理 (1)1.3课程设计思路 (2)1.4实验环境 (3)第2章详细设计方案 (4)2.1实现方法 (4)2.2模块设计 (5)2.2.1 步进电机的驱动 (5)2.2.2 按键电路设计 (5)2.2.3 时钟产生及复位电路 (6)2.3主程序流程图图 (7)第3章调试及结果分析 (8)3.1调试步骤及方法 (8)3.2实验结果及分析 (8)参考文献 (9)附录1(源程序) (10)附录2(系统原理图) (14)附录3(器件清单) (15)第1章总体设计方案1.1 课程设计的内容和要求一、课程设计内容:步进电机是一种将电脉冲转换成角位移或线位移的电磁机械装置,也是一种能把输出解析为唯一增量和输入数字脉冲对应的驱动器件。
步进电机具有快速启动、停止的能力,精度高、控制方便,因此,在工业上得到了广泛应用。
利用单片机控制一个步进电机,而且要满足如下技术指标:(1)开始通电时,步进电机停止转动。
(2)单片机分别接按键开关K1、K2和K3,用来控制步进电机的转向,要求如下:当按下K1时,步进电机正转。
当按下K2时,步进电机反转。
当按下K3时,步进电机停止转动。
步进电机的工作方式有单四拍、双四拍、单双八拍。
二、课程设计要求:1. 独立完成课程设计任务;2. 通过老师当场验收;3. 交出完整的课程设计报告。
1.2课程设计原理步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调整节拍的目的。
本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图 1.1 (a)、(b)、(c)所示。
a. 单四拍b. 双四拍 c八拍图1.1步进电机工作时序波形图1.3课程设计思路(1) 提出方案电机的运转一般由脉冲和方向信号来控制的,脉冲的频率控制电机的转速,脉冲的个数控制电机的转角;方向信号的高、低电平控制着电机的正、反转。
用单片机控制步进电机,可以用一个输出口发送脉冲:高电平->延时->低电平->延时……延时的长短控制脉冲的频率,电平的转换次数就是脉冲个数。
因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。
所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。
(2) 方案论证用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是四相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。
定时器定时来调整电机的转速,通过键盘的按钮,就可以对步进电机启动和停止以及转动方向节拍的控制,单片机上P3.0~P3.1连的是按键,这里键盘上的D 键为启动与A键停止键,B键为反转键,C键为正转键,K0、K1键为节拍控制键。
用8051单片机作为控制芯片。
设计方案的确定对步进电机的控制和驱动方案:方案一:使用多个功率放大器件驱动电机,通过使用不同的放大电路和不同参数的器件,可以达到不同的放大要求,放大后能够得到较大的功率。
但是由于使用的是四相的步进电机,就需要对四路信号分别放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。
方案二:使用ULN2003芯片驱动步进电机,可以直接用单片机的Y/O口提供信号;而且电路简单,使用比较方便。
因此选择方案二作为本设计的驱动电路。
1.4 实验环境·硬件环境:lab6000实验箱,PC机。
·软件环境:WA VE应用软件第2章详细设计方案2.1 实现方法步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。
即步进电机是将电脉冲信号转换为机械角位移的执行元件。
步进电机的控制可以用硬件,也可以用软件通过单片机实现。
硬件方法是采用脉冲分配器芯片进行通用换相控制;而软件方法是用单片机产生控制脉冲来控制步进电机的运行状态,这种方法可简化电路,降低成本。
在用软件控制时,主要设计要点如下:●判断旋转方向;●按相序确定控制字;●按顺序输入控制字;●确定控制步数和每一步的延时时间。
由于单片机的驱动电流一般都比较小,不能直接驱动电机工作,所以单片机的I/O口输出必须接驱动电路,即功率驱动,才得以控制电机正常工作。
控制框图如下图所示:开始启动时点击处于停止转动状态,当按下启动按键时,点击开始转动并以单四拍作为默认启动方式,用两个开关按键用于节拍控制,用键盘按键控制停止、启动、正转、反转。
用8051作为总控制芯片。
ULN2003用于步进电机的驱动控制。
其中在键盘控制时用键盘扫描程序。
如图2.1总方案图。
图2.1 总方案图2.2模块设计2.2.1步进电机的驱动步进电机的驱动采用ULN2003,接到单片机的P1.0~P1.3,如图2.1步进电机驱动和单片机连线图。
图2.1 步进电机驱动和单片机连线图2.2.2按键电路设计键盘接口按不同标准有不同分类方法,按键盘排布,可以分为独立方式(一组相互独立的键盘)和矩阵(一行列组成矩阵)方式。
此次设计只用到了六个按键,故可采用独立按键,P3.0~P3.5分别接到K1~K6。
其原理图如图2.2 按键连线图。
图2.2 按键连线图2.2.3时钟产生及复位电路时钟电路部分晶振为6MHz,其原理图如图2.3 时钟产生及复位连线图。
图2.3 时钟产生及复位连线图2.3主程序流程图图进入主程序,首先是对键盘扫描,调用步进电机相关数据控制电机转动,若检测到有键按下,则进行相应的处理。
流程图如下图2.4主程序流程图。
图2.4 主程序流程图沈阳航空航天大学课程设计报告第3章调试及结果分析第3章调试及结果分析3.1 调试步骤及方法本电路经调试符合题目要求,各项技术指标均达到设计的目的。
具体操作控制方法如下:1、当电机启动按钮时,步进电机根据制定默认状态开始转动;2、当电机停止按钮时,步进电机停止转动;3、当电机正转按钮时,步进电机正转;4、当电机反转按钮时,步进电机反转;5、当电机按钮K1K0为00时,步进电机单四拍工作;6、当电机按钮K1K0为01时,步进电机双四拍工作;7、当电机按钮K1K0为11时,步进电机单双八拍工作。
3.2 实验结果及分析故障一:首先在设计总体方案时,思路上出现了一些问题,我首先是想在中断里完成许多应在中断之外完成的事,经过老师的指点,后来想清楚了。
只需在主函数调用就行了,并设定了一个参数对电机的转动节拍进行调控。
故障二:由于编写程序的经验不多,在计算电机节拍,并将其控制电机时,遇到了一些问题,节拍转换公式是找出来了,但怎样将其节拍表示出来,困惑了好久,最后还查阅资料才解决。
故障三:在键盘扫描时不太懂怎么进行扫描,总是不懂地址的扫描和读数据,我以为是程序方面出了问题,后来又仔细看了关于键盘扫描这些知识才弄明白了,最后扫描正。
参考文献[1]王迎旭.《单片机原理及及应用》.北京:机械工业出版社[2]张迎新.《单片微型计算机原理、应用及接口技术》.北京:国防工业出版社[3]郭天祥.《新概念51单片机C语言教程》.北京:电子工业出版社[4]蔡明文冯先成编著.《单片机课程设计》.北京:华中科技大学出版社[5]王晓明.《电动机的单片机控制》.北京航空航天大学出版社[6]张毅刚.刘杰.MCS-51单片机原理及应用[M].哈尔滨:哈尔冰工业大学出版社,2008附录1(源程序)#include <reg51.h> //头文件#include <stdio.h>#include <stdlib.h>#define uint unsigned int //宏定义整形#define uchar unsigned char //宏定义字符型void delay(uint xms); //延时函数,调整转速,数越小转的越快void keyw0(); //电机工作函数void keyw1(); //反转函数void keyz1(); //正转函数void keyover(); //停止函数unsigned int i;unsigned char xdata *q1=0x8002; //列地址unsigned char xdata *q2=0x8001; //行地址sbit key1=P3^0; // 节拍选择控制,00为单四拍;01为双四拍;11为单双八拍sbit key2=P3^1;// 单双八拍工作方式://A-AB-B-BC-C-CD-D-DAuchar code FFZ[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //正转uchar code FFW[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //反转//双四拍工作方式://AB-BC-CD-DAuchar code shuangz[]={0x0c,0x06,0x03,0x09};uchar code shuangw[]={0x09,0x03,0x06,0x0c};//单四拍工作方式://A-B-C-Duchar code danz[]={0x08,0x04,0x02,0x01};uchar code danw[]={0x01,0x02,0x04,0x08};void main{while(1){if((*q2&0x0f)==0x0f) //行扫描键盘{*q1=0xfb; //键盘第三列扫描给低电平if((*q2&0x0f)==0x0e) //按D启动电机{keyw0(); //调用电机工作函数}}}}void keyw0(){while(1){if((*q2&0x0f)==0x0d) keyz1(); //按C键正转;调用正转函数if((*q2&0x0f)==0x0b) keyw1(); //按B键反转;调用反转函数if((*q2&0x0f)==0x07) keyover(); //按A键停止;调用停止函数for(i=0;i<4;i++){ //默认以单四拍正转工作P1=danz[i];delay(30);}}}void keyz1() //正转函数{while(1){if((*q2&0x0f)==0x0e) keyw0();if((*q2&0x0f)==0x0b) keyw1();if((*q2&0x0f)==0x07) keyover();if(key1==1&&key2==0) //双四拍{for(i=0;i<4;i++){P1=shuangz[i];delay(30);}if(key1==1&&key2==1) //单双八拍{for(i=0;i<8;i++){P1=FFZ[i];delay(30);}}if(key1==0&&key2==0) //单四拍{for(i=0;i<4;i++){P1=danz[i];delay(30);}}}}void keyw1() //反转函数{while(1){if((*q2&0x0f)==0x0e) keyw0();if((*q2&0x0f)==0x0d) keyz1();if((*q2&0x0f)==0x07) keyover();if(key1==1&&key2==0) //双四拍{for(i=0;i<4;i++){P1=shuangw[i];delay(30);}}if(key1==1&&key2==1) //单双八拍{for(i=0;i<8;i++){P1=FFW[i];delay(30);}}if(key1==0&&key2==0) //单四拍for(i=0;i<4;i++){P1=danw[i];delay(30);}}}}void keyover() //停止函数{while(1){if((*q2&0x0f)==0x0e) keyw0(); //是否按了D启动P1=0xf0; // 停止}}void delay(uint xms) //延时函数{uint i,j;for(i=110;i>0;i--)for(j=xms;j>0;j--);}附录2(系统原理图)附录3(器件清单)Bill of Material for DJ.BomUsed Part Type Designator Footprint==== ====================== ========== ==========5 4.7K R1 R2 R3 DIP-16R4 R51 6MHZ X1 L51 10u C3 RB.2/.42 30p C1 C2 RAD-0.21 8051 U1 DIP-401 A K3 S/11 B K4 S/11 C K5 S/11 D K6 S/11 K0 S0 L101 K1 S1 L101 K2 S2 L101 MOTOR STEPPER M1 V.20/.101 ULN2003A U2 DIP-20。