基于AT89C51单片机控制步进电机汇编代码
基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统的设计
基于AT89C51单⽚机和ULN2003驱动芯⽚的步进电机控制及驱动电路系统的设计摘要 (1)Abstract (2)第⼀章.绪论 (2)1.1设计背景 (4)1.2关于国内外同类产品的发展和应⽤ (4)1.3 本⽂所做的⼯作 (5)1.4 研究内容与安排 (5)第⼆章系统总体⽅案设计 (7)2.1 设计原理 (7)2.2 主要元器件介绍 (8)2.2.1 四相六线步进电机的介绍 (8)2.2.2 AT89C51单⽚机芯⽚介绍 (10)2.2.3 ULN2003芯⽚介绍 (11)2.2.4 LED七段数码管介绍 (12)第三章步进电机控制及驱动系统电路设计实现 (13)3.1 硬件设计 (13)3.2 软件设计 (17)第四章电路调试 (18)第五章总结 (20)致谢 (21)参考⽂献 (22)附录 (23)摘要本⽂主要研究了⼀种基于AT89C51单⽚机和ULN2003驱动芯⽚的步进电机控制及驱动电路系统的设计。
该系统可分为:控制模块、驱动模块、显⽰模块、⼈机交互模块四⼤部分。
其中采⽤AT89C51单⽚机作为控制模块的核⼼,利⽤单⽚机编程实现了对步进电机启动停⽌、正转反转、加速减速等功能的基本控制。
驱动模块由芯⽚ULN2003A驱动步进电机⼯作;显⽰部分由七段LED共阴数码管组成;⼈机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器,具有结构简单、可靠性⾼、实⽤性强、⼈机接⼝简单⽅便、性价⽐⾼等特点。
此外,本⽂还介绍了步进电机的基本原理及AT89C51单⽚机的性能特点。
关键词:步进电机;ULN2003; AT89C51;AbstractThis article mainly introduced the basic principle of stepping motor and the performance characteristics of AT89C51.Design research based on AT89C51 and ULN2003 stepper motor driver chips control and drive circuit system.The system can be divided into: control module, drive module, display module, human–computer interaction module.The AT89C51 single chip microcomputer as the core of the control module, microcontroller programming has realized the start stop the stepper motor, forward reverse, speed reducer, and other functions of basic control.Driver module driven by chip ULN2003A stepper motor;Display section is made up of seven segment digital tube LED, Yin;Man-machine interchangeable parts by the corresponding button to achieve the corresponding function.Through the actual test show that the system performance is superior to the traditional stepping motor controller is designed, with simple structure, high reliability and strong practicability, simple and convenient man-machine interface, high cost performance, etc.Key words: stepper motor;ULN2003;AT89S52 devices.摘要 (1)Abstract (2)第⼀章.绪论 (4)1.1设计背景 (4)1.2 关于国内外同类产品的发展和应⽤ (4)1.3 本⽂所做的⼯作 (5)1.4 研究内容与安排 (5)第⼆章系统总体⽅案设计 (7)2.1 设计原理 (7)2.2 主要元器件介绍 (8)2.2.1 四相六线步进电机的介绍 (8)2.2.2 AT89C51单⽚机芯⽚介绍 (10)2.2.3 ULN2003芯⽚介绍 (11)图2.6 ULN2003逻辑图 ..................................................................................................................... 11 2.2.4 LED 七段数码管介绍............................................................................................................... 12 图2.7六位LED 共阴数码显⽰管图 (12)第三章步进电机控制及驱动系统电路设计实现 (13)3.1 硬件设计 (13)1B 11C 162B 22C 153B 33C 144B 44C 135B 55C 126B 66C 117B77C10COM 9U2ULN2003AXTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51 ............................................................................................................................................................ 14 3.2 软件设计.. (17)第四章电路调试 ................................................................................................... 18 第五章总结............................................................................................................. 20 致谢......................................................................................................................... 21 参考⽂献................................................................................................................. 22 附录 . (23)第⼀章.绪论1.1设计背景电⽓时代的今天,电动机⼀直在现代化的⽣产和⽣活中起着⼗分重要的作⽤。
基于AT89C51单片机步进电机控制
基于AT89C51单片机步进电机控制————————————————————————————————作者:————————————————————————————————日期:控制系统项目课程设计论文题目:基于AT89C51单片机步进电机控制姓名陈悟宇学号201103820129年级2011级专业飞行器制造工程系(院)机械工程学院指导教师徐波2014年5月23日目录摘要: (3)1设计要求 (3)2步进电机原理 (3)2.1步进电机工作方式32.2框图设计52.3知识点63硬件设计 (6)3.1电路原理63.2驱动电路73.3晶振电路73.4总体电路图84软件设计 (8)4.1程序流程图84.2程序清单105遇到的问题及解决方案 (10)5.1问题105.2解决方法10参考文献 (10)设计心得体会 (11)附录一.原器件清单 (12)附录二.Proteus 仿真图 (14)附录三.ULN2003作用及引脚介绍 (15)附录四.程序清单 (17)基于AT89C51单片机步进电机控制摘要:步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中。
由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用。
大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。
关键词:步进电机单片机控制1设计要求(1)最小系统:选择AT89C51单片机为核心元件构成系统。
有时钟产生电路和复位电路。
(2)控制电路:C语言编程控制。
由操作者根据相应的工作需要进行操作。
(3)驱动部分:对单片机输出的脉冲进行功率放大,从而驱动电机转动.(4)主要功能:实现步进电机的正转,反转,加速,停转。
2步进电机原理2.1步进电机工作方式由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备----步进电机控制驱动器,典型步进电机控制系统如图1所示控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:一类是用计算机软件设计的方法实现环形分配器要求的功能,通常称软环形分配器。
基于AT89C51单片机的步进电机控制
基于AT89C51单片机的步进电机控制基于AT89C51单片机的步进电机控制摘要:随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
本设计是采用AT89C51单片机对步进电机的控制,通过I/O口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。
实践证明,基于单片机控制的步进电机比传统的步进控制器具有更好的性能,更加简单、方便、可靠。
本设计的主要研究对象就是开环伺服系统中最常用的执行器件——步进电机。
关键词:步进电机,单片机,正反转控制,键盘目录摘要 (1)第一章绪论 (2)1.1 步进电机及其发展 (2)1.2 步进电机在我国的发展应用及前景 (2)1.3 设计研究内容 (3)第二章控制系统硬件分析与设计 (4)2.1 步进电机 (4)2.2 单片机的选择 (6)2.3 步进电机控制系统的组成 (7)第三章控制系统软件分析与设计 (14)3.1 程序流程图 (14)3.2 读键盘子程序流程图 (15)3.3 键盘处理子程序流程图 (15)3.4 电机控制中断程序流程图 (16)第四章调试与改进 (18)4.1 调试与改进 (18)4.2 运行结果 (18)第五章总结 (19)致谢 (20)参考文献 (21)附录 (22)附录一源程序清单 (22)附录二控制原理图 (27)第一章绪论1.1 步进电机及其发展步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。
基于AT89C51单片机的步进电动机控制系统设计
重庆科技大学本科毕业论文基于AT89C51单片机的步进电动机控制系统设计考生姓名: XXXXX X 准考证号: XXXXXXXXXXXX 专业层次:本科院(系):XXXXXXXXXXXXXXXXXXX 指导教师: XXXXXX 职称:讲师重庆科技大学二O一二年月日基于AT89C51单片机的步进电动机控制系统设计考生姓名: XXXXXX准考证号: XXXXXXXXXXXX专业层次:本科指导教师: XXXXXXX院(系):机械与动力工程学院重庆科技大学二O一二年九月二十日摘要随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
本设计是采用AT89C51单片机对步进电机的控制,通过I/O口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。
实践证明,基于单片机控制的步进电机比传统的步进控制器具有更好的性能,更加简单、方便、可靠。
本设计的主要研究对象就是开环伺服系统中最常用的执行器件——步进电机。
关键词:步进电机,单片机,正反转控制,键盘控制,LCD液晶显示Based on the AT89C51 single-chip stepper motor controlsystem designABSTRACTWith the development of microelectronics and computer technology, the stepper motor demand grow with each passing day, which is widely used in printers, electric toys and other consumer products, industrial robots and CNC machine tools, medical equipment and other mechanical and electrical products, the national economy in various fields are applied. Study of stepping motor control system, to improve the control precision and response speed, energy saving etc have important significance.A stepper motor can be converted into electric pulse signal of angular displacement or line displacement of the mechanical and electrical components, a stepper motor control system is mainly composed of a stepping controller, a power amplifier and a stepper motor. Using single chip microcomputer control, using software to replace the stepping controller, which has the advantages of simple circuit, low cost, reliability is increased. Software programming can produce different types of step motor excitation sequence to control stepper motor operation mode.This design is the use of AT89C51 single-chip stepper motor control, through the I/O port output timing square wave as a stepper motor control signal, the signal through the ULN2003 chip stepper motor driver.Practice has proved, based on the single chip microcomputer to control the step motor than the traditional stepping controller has better performance, more simple, convenient, and reliable. The design of the main research object is the open loop servo system in the most commonly used executive device -- stepping motor.Keywords:Stepper motor, MCU, Positive control, Keyboard control, LCD liquid crystal display目录中文摘要 (I)英文摘要 (II)1 绪论 (1)1.1 步进电机及其发展 (1)1.2 步进电机在我国的发展应用及前景 (1)1.3 设计研究内容 (2)2 控制系统硬件分析与设计 (3)2.1 步进电机 (3)2.1.1 步进电机的原理 (3)2.1.2 步进电机的特点 (4)2.1.3 步进电机的分类 (4)2.1.4 永磁步进电机的控制原理 (5)2.2 单片机的选择 (6)2.2.1 单片机的引脚功能 (6)2.2.2 主要特性 (6)2.3 步进电机控制系统的组成 (7)2.3.1 键盘控制电路 (7)2.3.2 LCD液晶显示电路 (8)2.3.3 步进电机驱动电路 (10)3 控制系统软件分析与设计 (13)3.1 程序流程图 (13)3.2 读键盘子程序流程图 (14)3.3 键盘处理子程序流程图 (14)3.4 电机控制中断程序流程图 (15)4 调试与改进 (17)4.1 调试与改进 (17)4.2 运行结果 (17)结论 (19)致谢 (20)参考文献 (21)附录一 (22)附录二 (27)论文原创性声明1 绪论1.1 步进电机及其发展步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。
基于AT89C51单片机的电机控制综合课程设计
基于AT89C51单片机的电机控制综合设计目录1 系统的设计 (1)1.1设计的目的和要求 (1)1.2系统原理 (1)2 系统的构成 (2)2.1控制器部分 (2)2.1.1控制器分析 (2)2.1.2控制器主要功能特性 (2)2.1.2控制器引脚功能描述 (2)2.2数据显示部分 (4)2.2.1 12864液晶显示模块概述 (4)2.2.2 基本参数 (4)2.2.3模块引脚说明 (4)2.2.4 具体指令介绍: (5)2.2.5显示坐标关系 (8)3 硬件电路设计 (8)3.1LCD控制电路原理图 (8)3.2电机控制电路 (9)3.3速度反馈电路 (10)3.4MCU接口 (10)3.5按键电路 (11)4 软件设计 (11)4.1程序要求 (11)4.2程序流程图 (12)4.3程序清单 (12)4.3.1 LCD驱动程序 (12)4.3.2 主函数程序 (16)5程序的调试 (21)5.1编程软件KEIL C51简介 (21)5.2程序编译和调试 (21)6 结语 (25)设计、旅行、影视、摄影、科技、音乐、艺术、人文、出版、饮食、漫画游戏11 系统的设计1.1设计的目的和要求基于AT89C51单片机的电机控制综合系统,以电机为被控对象,由AT89C51单片机作为控制器,结合速度反馈和LCD液晶显示模块,组成一个有较好控制性和实时性的电机控制综合系统。
1.2系统原理系统的原理如上图1.2所示,控制器AT89C51通过外围电路控制电机转动。
由速度反馈电路反馈电机的速度信息,并进行伺服计算和控制。
整个系统的主要信息可以在LCD显示模块上显示。
2 系统的构成2.1控制器部分2.1.1控制器分析AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Progr ammable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器。
C51汇编中断控制步进电机程序
C51汇编初学功能:使用INT0的中断服务程序控制步进电机正向步进;使用INT1中断服务程序控制步进电机反向步进。
电路:设计思路:①主程序在完成对INT0和INT1的设置后,可进入死循环(等待中断请求)。
②为便于实验观察和操作,设INT0和INT1中断触发方式为边沿。
③步进电机的转动控制由外部中断的服务程序来实现。
④当前步进电机的相位通电状态信息可以使用片内RAM中的一个字节单元来存储。
设计参考:①主程序需要设置的中断控制位如下:IT0和IT1 外部中断触发方式控制0=电平1=边沿(下降沿)EX0和EX1 外部中断允许控制0=屏蔽1=允许PX0和PX1 中断优先级级别控制0=低级1=高级在同级别(PX0=PX1)时INT0的优先级高于INT1EA 中断允许总控制0=屏蔽1=允许②外部中断服务程序的入口地址:0003H 外部中断00013H 外部中断1程序:PHASE_OUT EQU 30H ;步进电机相位通电状态VAR_END EQU 31H ;转动次数STACK_INI EQU VAR_END+1ORG 0000H ;复位入口LJMP RESETORG 0003H ;外部中断0 服务程序入口LJMP INT_EX0ORG 000BH ;定时器/计数器0 溢出中断服务程序入口RETIORG 0013H ;外部中断1 服务程序入口LJMP INT_EX1ORG 001BH ;定时器/计数器1 溢出中断服务程序入口RETIORG 0023H ;串行口中断服务程序入口RETIORG 040H ;复位处理程序RESET: MOV SP,#STACK_INI ;设置栈底指针MAIN: SETB IT0SETB IT1SETB EX0SETB EX1SETB PX0SETB PX1MOV PHASE_OUT,#01HMOV VAR_END,#03H ;转动次数为3SETB EASJMP $INT_EX0:MOV R0,VAR_END ;转动次数INTX0: MOV A,PHASE_OUTRR ACJNE A,#80H,I0MOV A,#08HI0: MOV PHASE_OUT,AMOV P1,ADELAY0: MOV R1,#5LP10: MOV R2,#255LP20: MOV R3,#255DJNZ R3,$DJNZ R2,LP20DJNZ R1,LP10DJNZ R0,INTX0RETIINT_EX1:MOV R0,VAR_END ;转动次数INTX1: MOV A,PHASE_OUTRL ACJNE A,#10H,I1MOV A,#01HI1: MOV PHASE_OUT,AMOV P1,ADELAY1: MOV R1,#5LP11: MOV R2,#255LP21: MOV R3,#255DJNZ R3,$DJNZ R2,LP21DJNZ R1,LP11DJNZ R0,INTX1RETIEND。
基于AT89C51单片机步进电机控制系统的设计
总第170期2008年第8期 舰船电子工程S hi p E lectronic Engineering V ol .28N o .8 204 基于A T 89C 51单片机步进电机控制系统的设计3杨辉媛1) 杨红海2) 谭伟杰1)(湖南省吉首大学物理信息工程学院1) 吉首 416000)(湖南省张家界市慈利县第二职中2) 张家界 427200)摘 要 通过A T89C 51单片机及脉冲分配器(又称逻辑转换器)P MM 8713完成步进电机各种运行方式的控制。
实现步进电机在三拍、六拍工作方式下的正反转控制、无级调速控制等功能。
整个系统采用模块化设计,结构简单、可靠,通过人机交互接口可实现各功能设置,操作简单,易于掌握。
关键词 步进电机;单片机控制;A T89C51;P MM 8713中图分类号 T P368.1D esign of Control System for S tep M otor B ased on AT 89C 51Y ang H uiy uan 1) Yang H ong hai 2) T an W eijie1)(College of Physics Sc i ence and Infor m ati on E nginee ri ng,J ishou U niversity 1),J i shou 416000)(The S econd V oca tional SeniorM i ddle S chool ,C ili C ounty,Z hangji a jie C ity,H unan P rovi nce 2),Zhajjiajie 427200)A b s tra c t This system w hich se l ec ts the S i ngl e -chip co mpute r A T89C51and the pulse di v i der P MM 8713to control step m otor ’s each m ovem ent m ethod m ay rea lize the func tions such as turning i n its w orking m ode and changing it s speed w ith step less f requency conversion in three pa ts or six pa ts m ode .D ue to the m odular design of the ove rall system and the si m ply and reli 2able structure,the syst em has m any advantages such as good ext ensibility through m an -m achine interac tion,si m ple ope ration and easy to m aste r .Ke y w o rd s step m otor,single -chi p computer control ,A T89C51,P MM 8713C l a s s N um be r TP368.11 引言单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,投影仪、数码摄像机、放像机(V CD 、DV D 等)、大型望远镜、卫星天线定位系统、医疗器械、条码扫描仪以及各种可控机械工具等等。
步进电机控制程序(c语言51单片机)
// pri_dj = Pme );
if( i == set_pwm_width ) { P1 = 0xff; i = 0; one _round_flg = 0; while ( !one_round_flg & key_puse );}
if(!key_puse) { delay(4ms); if(!key_puse) break; }
while ( key_puse & key_clear ); delay ( 8ms );
if ( !key_clear ) { round_num = 0; display(); }
if ( !key_puse ) break; }
while( !key_puse ); delay(8ms);
while( !key_puse ); }
set_display_num(); for(i = 0; i < LEDLen ; i ++){
P0 = 0xf0; P0 = P0 | LEDBuf[i] ; if(i==0) led_1000 = 0; //P0^4 if(i==1) led_100 = 0; //P0^5 if(i==2) led_10 = 0; //P0^6 if(i==3) led_1 = 0; //P0^7
delay ( 1ms ); tmp = (~(P2 | 0xF0)); P2 = 0x7F; // 0111 1111
delay ( 1ms ); tmp = (~(P2 | 0xF0)) * 10 + tmp; set_round_num = set_round_num + tmp * 100; set_round_num = set_round_num * Chilun_Num;
毕业设计:基于AT89C51的步进电机控制(2)
基于AT89C51的步进电机控制摘要本设计采用ATMEL系列的单片机对步进电机进行控制,实现以下功能:开机后,电机不转,按下启动键,电机旋转;按下正转键,电机正转;按下反转键,电机反转。
实现这一功能,系统的硬件部分应由四模块构成:输入模块、单片机控制模块、步进电机驱动模块、步进电机模块。
通过键盘输入,单片机编程控制,输出信号给步进电机驱动电路ULN2003A,最后由ULN2003A驱动步进电机按规定的方向运转。
用单片机控制步进电机,可以简化硬件电路,可同时实现各种功能,如步进电机的加减速,步进电机正反转等,当功能要求改变时,只需改变程序,而硬件电路不变,实现功能的方式简单便捷。
关键词:单片机;步进电机The Control Of Stepping Motor Based On AT89C51AbstractStepping motor is controlled by the microcontroller , a sort of ATMEL series ,in the design. The function can be realized as follows:When the start button is pressed, motor begins to run;When the foreward button is pressed,motor begins to run in the positive direction;When the reversional button is pressed,motor begins to run in the opposite direction. To realize the features described above,the circuits should consist of four modules:input circuit,microcontroller,drive circuit of stepping motor and stepping motor. After the input of keyboard and programming of microcontroller,stepping motor is driven in the direction set by ULN2003A circuit which accepts output signal.The control of stepping motor by :microcontroller can simplify the circuit and can realize many functions,e.g. it can change the operation mode of stepping motor and speed,and so on. When the function need to be changed,the same circuit can be used and the only thing that you should do is to modify program . So it is convenient to use microcontroller to realize the control of motor .Keyword :microcontroller ;stepping motor目录第1章. 绪论.................................................................................................................... - 1 -1.1. 单片机的特点............................................................................................... - 1 -1.2. 单片机的发展趋势....................................................................................... - 1 -1.3. 单片机的任务............................................................................................... - 2 -第2章. 系统设计............................................................................................................ - 4 -2.1. 设计要求....................................................................................................... - 4 -2.2. 设计构思....................................................................................................... - 4 -2.3. 设计元件的选型........................................................................................... - 5 -第3章. 系统核心元件的介绍........................................................................................ - 6 -3.1. 单片机简介................................................................................................... - 6 -3.1.1. 单片机的基本组成............................................................................ - 6 -3.1.2. 单片机的特点.................................................................................... - 8 -3.1.3. 单片机的应用.................................................................................... - 8 -3.2. AT89C51的简介............................................................................................ - 9 -3.2.1. AT89C51的结构................................................................................. - 9 -3.2.2. AT89C51的引脚介绍....................................................................... - 10 -第4章. 系统的硬件设计.............................................................................................. - 12 -4.1. 输入电路的设计......................................................................................... - 12 -4.1.1. 键盘输入.......................................................................................... - 12 -4.1.2. 键盘接口的工作原理...................................................................... - 12 -4.2. AT89C51设计电路...................................................................................... - 13 -4.2.1. 时钟电路.......................................................................................... - 13 -4.2.2. 复位电路.......................................................................................... - 14 -4.3. 步进电机驱动电路..................................................................................... - 16 -4.4. 步进电机..................................................................................................... - 17 -4.4.1. 步进电机原理.................................................................................. - 17 -4.4.2. 步进电机励磁控制.......................................................................... - 17 -4.5. 系统的总体硬件电路................................................................................. - 19 -第5章. 系统的软件设计.............................................................................................. - 21 -5.1. 系统的程序分析......................................................................................... - 21 -5.2. 软件流程图................................................................................................. - 21 -5.2.1. 键盘程序的设计.............................................................................. - 22 -5.2.2. 步进电机驱动程序.......................................................................... - 22 -第6章. 电路的仿真...................................................................................................... - 26 -6.1. 仿真的介绍................................................................................................. - 26 -6.2. 仿真的过程................................................................................................. - 26 -结束与展望..................................................................................................................... - 28 -参考文献......................................................................................................................... - 29 -致谢................................................................................................................................. - 30 -附录1:译文原文.............................................................................. 错误!未定义书签。
单片机AT89c51控制步进电动机设计.
第一章前言1.1步进电机简介步进电机最早是在1920年由英国人所开发。
1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。
以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。
步进电机可以直接用数字信号驱动,使用非常方便。
一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。
在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。
因此非常适合于单片机控制。
步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
第二章步进电机工作原理及系统方案论证2.1步进电机工作原理2.1.1步进电机结构电机转子均匀分布着40个小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)下面是定子和转子的展开图:图2.12.1.2 步进电机的旋转:如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。
基于.AT89C51单片机的步进电机控制和驱动电路设计说明书
基于AT89C51单片机的步进电机控制及驱动电路设计引言国内控制器的研究起步较晚.运动控制技术为一门多学科交叉的技术.是一个以自动控制理论和现代控制理论为基础.包括许多不同学科的技术领域。
如电机技术、电力电子技术、微电子技术、传感器技术、控制理论和微计算机技术等.运动控制技术是这些技术的有机结合体。
总体上来说.国内研究取得很大的进步.但无论从控制器还是从控制软件上来看.与国外相比还是具有一定差距。
传统上由纯电路设计的步进电机控制和驱动电路一般较复杂.成本又高.而且一旦成型就难于修改.可移植性差.难以适应一些智能化要求较高的场合。
单片机的普及与应用.为步进电机的应用开辟了广阔的前景.使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现.将会避免复杂电路的设设计.既降低了硬件成本又提高了控制的灵活性、可靠性及多功能性。
本文主要介绍了步进电机的基本原理及AT89C51单片机的性能特点。
设计主要研究了一种基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统。
该系统可分为:控制模块、驱动模块、显示模块、人机交互模块四大部分。
其中采用AT89C51单片机作为控制模块的核心.利用单片机编程实现了对步进电机启动停止、正转反转、加速减速等功能的基本控制。
驱动模块由芯片ULN2003A驱动步进电机工作;显示部分由七段LED共阴数码管组成;人机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器.具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
目录1设计原理及方案 (4)1.1 设计原理 (4)1.2 设计方案 (4)1.2.1 方案一 (5)1.2.2 方案二 (6)1.2.3 方案比较及选择 (7)2 设计实现 (8)2.1 主要元器件介绍 (8)2.1.1 四相六线步进电机的介绍 (8)2.1.2 AT89C51单片机芯片介绍 (10)2.1.3 ULN2003芯片介绍 (11)2.1.4 LED七段数码管介绍 (11)2.2 步进电机控制及驱动系统电路设计实现 (12)2.2.1 硬件设计 (12)2.2.2 软件设计 (15)3 电路调试 (15)3.1 软件的仿真 (16)3.2 硬件电路的调试 (17)4 数据分析及总结 (18)4.1 测试数据及说明 (18)4.2 总结 (19)参考文献 (19)附录 (20)1设计原理及方案1.1 设计原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
基于AT89C51单片机的步进电机控制及驱动电路设计
基于AT89C51单片机的步进电机控制及驱动电路设计引言国内控制器的研究起步较晚,运动控制技术为一门多学科交叉的技术,是一个以自动控制理论和现代控制理论为基础,包括许多不同学科的技术领域。
如电机技术、电力电子技术、微电子技术、传感器技术、控制理论和微计算机技术等,运动控制技术是这些技术的有机结合体。
总体上来说,国内研究取得很大的进步,但无论从控制器还是从控制软件上来看,与国外相比还是具有一定差距。
传统上由纯电路设计的步进电机控制和驱动电路一般较复杂,成本又高,而且一旦成型就难于修改,可移植性差,难以适应一些智能化要求较高的场合。
单片机的普及与应用,为步进电机的应用开辟了广阔的前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,将会避免复杂电路的设设计,既降低了硬件成本又提高了控制的灵活性、可靠性及多功能性。
本文主要介绍了步进电机的基本原理及AT89C51单片机的性能特点。
设计主要研究了一种基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统。
该系统可分为:控制模块、驱动模块、显示模块、人机交互模块四大部分。
其中采用AT89C51单片机作为控制模块的核心,利用单片机编程实现了对步进电机启动停止、正转反转、加速减速等功能的基本控制。
驱动模块由芯片ULN2003A驱动步进电机工作;显示部分由七段LED共阴数码管组成;人机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器,具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
目录1设计原理及方案 (4)1.1 设计原理 (4)1.2 设计方案 (4)1.2.1 方案一 (5)1.2.2 方案二 (6)1.2.3 方案比较及选择 (7)2 设计实现 (8)2.1 主要元器件介绍 (8)2.1.1 四相六线步进电机的介绍 (8)2.1.2 AT89C51单片机芯片介绍 (10)2.1.3 ULN2003芯片介绍 (11)2.1.4 LED七段数码管介绍 (11)2.2 步进电机控制及驱动系统电路设计实现 (12)2.2.1 硬件设计 (12)2.2.2 软件设计 (15)3 电路调试 (16)3.1 软件的仿真 (16)3.2 硬件电路的调试 (17)4 数据分析及总结 (18)4.1 测试数据及说明 (18)4.2 总结 (19)参考文献 (20)附录 (21)1设计原理及方案1.1 设计原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
基于AT89C51单片机控制的步进电机
本文链接:/Periodical_dqpj201410150.aspx
170
消费电子1404-5.indd
170
2014-6-26
19:17:11
基于AT89C51单片机控制的步进电机
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 余晓敏 安阳钢铁集团有限责任公司运输部,河南安阳,455004 消费电子 Consumer Electronics Magazine 2014(10)
Computer AT89C51 单片机控制的步进电机
余晓敏 (安阳钢铁集团有限责任公司运输部,河南安阳 455004) 摘 要:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、 停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。这一线性关系的存在,加上步进电机只有 周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。本设计采用 AT89C51 对步进电机进行控制,通过 IO 口输出的具有时序的方波作为步进电机的控制信号,信号经过 A3967SLB 驱动步进电机;同时,用 4X4 的键盘来对电机的状态进行控制,并用数码管显示电机的转速,并且采用 74LS164 作 为 4 位单个数码管的显示驱动,从单片机输入信号。从而实现对步进电机的控制。 关键词:步进电机;单片机;驱动电路;键盘;数码管 中图分类号:TM383.6 文献标识码:A 文章编号:1674-7712 (2014) 10-0170-01 一、方案比较和论证 (一)对于步进电机驱动的设计 方案一:使用多个功率放大器件驱动电机:通过使用不 同的放大电路和不同参数的器件,可以达到不同的放大的要 求,放大后能够得到较大的功率。但是由于使用的是四相的 步进电机,就需要对四路信号分别进行放大,由于放大电路 很难做到完全一致,当电机的功率较大时运行起来会不稳定, 而且电路的制作也比较复杂。 方案二:使用 A3967SLB 驱动电机:A3967SLB 是驱动二 相步进电机专用驱动器。它的工作电压可达 30V,驱动电流达 750mA,一个 A3967SLB 即可驱动一台二相步进电机,可实现 8 细分驱动。另外,A3967SLB 还能提供完善的保护措施,包括 抑制瞬态电压, 过热保护、 防止电流直通、 欠电压自锁等功能。 通过对两种方案的比较得到:A3967SLB 和微处理器之间 不需要附加其他的接口电路, 该芯片采用 Easy Stepper 接口, 将 8 条控制线减少了 2 条(步长和方向),只要简单输入控 制步进电机的脉冲,其内嵌的转换器就可以实现对步进电机 的控制。A3967SLB 还需要一些电阻、电容来调整其工作参数, 整个驱动电路非常简单。所以在此我选择方案二。 (二)数码管显示电路的设计 方案一:并行接法:使用并行接法时要对每个数码管用 IO 口单独输入数据,占用资源较多。 方 案 二: 串 行 接 法: 设 计 中 要 显 示 4 位 数 字, 用 74LS164 作为显示驱动,其中带锁存,使用串行接法可以节 约 IO 口资源,但要使用 SIO,发送数据时容易控制。 通过对两种方案的比较得到:由于设计中用一块单片机 进行控制,资源有限,选择了方案二。另外,使用锁存也起 到节约资源的作用。 二、单片机控制步进电机原理 步进电机 2 个相邻磁极之间的夹角为 60°。线圈绕过相 对的 2 个磁极,构成一相(A-A′,B-B′,C-C′ )。磁极上 有 5 个均匀分布的矩形小齿,转子上没有绕组,而有 40 个小 齿均匀分布在其圆周上,且相邻 2 个齿之间的夹角为 9°。步 进电机的单片机控制步进电机控制的最大特点是开环控制,不 需要反馈信号。 因为步进电机的运动不产生旋转量的误差累积。 三、硬件设计 (一)基于 A3967SLB 步进电机驱动电路。MS1 和 MS2 是 步进电机细分分辨率选择的逻辑输入口;DIR 是电机运转方 向的选择口;RESET 用于重置芯片初始值, 屏蔽所有外部输出; STEP 为脉冲输入端口;OUT1A、OUT1B、OUT2A、OUT2B 为 H 桥 的两对输出端口。最大限流 Imax 是由取样电阻 Rs 和取样比 较器的输入参考电压 Vref 决定的,整个驱动电路非常简单。 其中 Imax = Vref/8Rs。 (二)通信电路。在最简单的 RS - 232 直接传送通信 系统中,只要发送和接受双方同时准备好,仅用信号发送端 (TXD)、信号接收端(RXD)和信号地(GND)3 根信号线就 可以进行通信;若以应答方式进行数据通信,可使用请求发 送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据 装置准备(DSR)4 个信号进行硬件握手。在 AT89C52 单片机 系统中,分别从 P3.0 和 P3.1 引出串口线 RXD 和 TXD,通过 专用的电平转换芯片转换成 RS - 232 接口标准的电平, 这样, 二者之间就可以通过 RS - 232 接口进行数字信号的传送。 单片机可以通过直接传送或应答握手的方式与主机进行 数据通信,但由于握手方式占用其它端口,而单片机的端口数 量有限, 所以, 计算机与单片机的通信常采用直接传送的方式。 (三)数码管显示电路的设计。数码管的显示驱动使用 74LS164,通过 SPCE061A 的 IOB0 和 IOB1 口对 DATA 和 CLK 发 送数据。 (四) 4x4 键盘电路。 在设计中, 使用了标准的 4x4 键盘, 单片机的 A 口低 8 位为键盘的接口。尽管设计要求中只需要 4 个键对步进电机的状态进行控制,但考虑到对控制功能的 扩展,使用了 4x4 的键盘。 四、软件设计 软件部分的设计主要包括下位机按 MCU 的接收程序、脉 冲控制程序以及上位机的串口发送程序。上位机与下位机之 间进行数据通信。上位机的程序主要通过 Windows 可视化编 程 VC++ 实现。 下位机程序主要负责接受 PC 发来的数据,按照要求产生 控制脉冲,具体流程为:首先对要使用的串口进行初始化, 然后 P2 输出口清零,接着进入住程序的死循环,等待中断触 发。接收一个字节的数据,RI = 1,接着将 RI 清零。当单片 机接收完数据后,标志位置 1。将缓存中的数据存入控制的变 量中, 以便控制时使用 (具体操作时先法数据帧再发启动帧) 。 五、结束语 结合以上介绍的基于 A3967SLB 的步进电机控制系统, 在 VC++ 环境下,利用 MSComm 控件实现了 PC 与单片机之间 的串行通信。实验结果表明,用这种方式实现上位机对基于 A3967SLB 的步进电机的控制系统进行精确的驱动可行有效。 本系统中,利用 PC 的丰富软硬件资源和强大的系统功能,可 进行一些数据处理、显示等工作;而从控制器 AT89C51 则用 于实时控制。另外,该系统为开放式结构,便于系统升级。 参考文献: [1] 李华 . 单片机原理及应用 [M]. 兰州 : 兰州大学出版 社 ,2001. [2] 何立民 . 单片机应用技术选编 [M]. 北京 : 北京航空航 天大学出版社 ,1999. [3] 郝鸿安 . 常用数字集成电路应用手册 [M]. 北京 : 中国 计量出版社 ,1987. [4] 王鸿钰 . 步进电机控制技术入门 [M]. 上海 : 同济大学 出版社 ,1990.
51单片机控制的步进电机C语言程序
51单片机控制的步进电机C语言程序用的是L298驱动的和ULN2003一样,你把它换成2003就行拉#include <AT89X51.H>unsigned char codetable[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,0x00,0xf1,0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0x f3,0x00};unsigned char temp,temp_old;unsigned char key;unsigned char i,j,k,m,s;void delay(int i){for(m=i;m>0;m--)for(j=250;j>0;j--)for(k=10;k>0;k--);}void saomiao(){P3=0xff;P3_4=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=4;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;}}}P3=0xff;P3_5=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;}}}}void main(void){while(1){saomiao();if(key==1){ P1=0;P2=0;saomiao();}if(key==2){temp_old=key;for(s=0;s<8;s++){ P2=table[s];P1_4=0;delay(13);saomiao();if(key!=temp_old){P1_4=1;break;}}}if(key==3){temp_old=key;for(s=0;s<8;s++){ P2=table[s];P1_5=0;delay(5);saomiao();if(key!=temp_old){P1_5=1;break;}}}if(key==4){temp_old=key; for(s=0;s<8;s++){ P2=table[s];P1_6=0;delay(20);saomiao();if(key!=temp_old){P1_6=1;break;}}}if(key==5){temp_old=key;for(s=9;s<17;s++){ P2=table[s];P1_7=0;delay(13);saomiao();if(key!=temp_old){P1_7=1;break;}}}if(key==6){temp_old=key;for(s=9;s<17;s++){ P2=table[s];P1_5=0;delay(5);saomiao();if(key!=temp_old){P1_5=1;break;}}}if(key==7){temp_old=key;for(s=9;s<17;s++){ P2=table[s];P1_6=0;delay(20);saomiao();if(key!=temp_old){P1_6=1;break;}}}}}C语言程序源代码#include <REGX51.H> // 51寄存器定义#include "intrins.h"#define control P1 //P1_0:A相,P1_1:B相,P1_2:C相,P1_3:D相#define discode P0 //显示代码控制端口#define uchar unsigned char //定义无符号型变量#define uint unsigned intsbit en_dm=P3^0; //显示代码锁存控制sbit en_wk=P3^1; //位控锁存控制uchar code corotation[4]= {0x03,0x06,0x0c,0x09};//电机正转uchar code rollback[4]={0x0c,0x06,0x03,0x09}; //电机反转uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示字段uint code Levspeed[5]={500,400,300,200,100};//电机速度等级uchar Hscan,speedcount;//Hscan行扫描,speedcount 速度等级计数uint uu; //频率计数uint step,setstep; //step:电机步伐计数,setstep:手动设置电机步伐uint speed=500; //电机初始速度uchar count;uchar flag[5];uchar butcount; //按键次数//****************************************//flag[0] 正转标志//flag[1] 反转标志//flag[2] 加速标志//flag[3] 减速标志//flag[4] 设置标志//****************************************Delay1mS(unsigned int tt) //延时1ms “Delay1mS”延时子程序,用循环语句延时。
基于51单片机的步进电机小车的控制程序
voidmove_left(uintspeed_l,ucharcw,ucharen);//左电机运动函数
voidmove_right(uintspeed_r,ucharcw,ucharen);//右电机运动函数
void delay(unsignedintk);//延时函数
speed=speed_l;
if(cw==1)
{
cw_left=1;
}
else
{
cw_left=0;
}
if(en==1)
{
en_left=1;
}
else
{
en_left=0;
}
}
voidmove_right(uintspeed_r,ucharcw,ucharen)
{//speed_r速度控制变量cw方向控制变量en使能控制变量
speed=speed_r;//speed数值与速度成反比请结合实际情况进行调节,
if(cw==1)//但速度不能无限加快因为步进电机有速度上限
{//而且速度加快是力矩会下降,容易导致丢步现象
cw_right=1;//所以实际应用当中应调节到速度可力矩比较合适的数值
}//应考虑到电池电压,轮胎直径等因素
{
move_left(15,0,1);
move_right(15,0,1);
delay(800);
}
if(ir_left==0&&ir_mid==0&&ir_right==1)
{
move_left(15,0,1);
move_right(15,0,1);
delay(400);
基于AT89C5单片机的步进电机控制系统设计
毕业设计摘要步进电机是数字控制系统中的一种执行元件,它能按照控制脉冲的要求,迅速起动,制动,正反转和调速。
具有步距角精度高,停止时能自锁等特点,因此步进电机在自动控制系统中,特别是在开环的控制系统中得到了日益广泛的应用。
本文以单片机和环形脉冲分配器为核心设计的步进电机控制系统,通过软硬件的设计调试,实现步进电机能根据设定的参数进行自动加减速控制,使控制系统以最短的时间到达控制终点,而又不发生失步的现象;同时它能准确地控制步进电机的正反转,启动和停止。
硬件是以AT89C51单片机为核心的控制电路,主要包括:环形脉冲分配器、键盘显示电路、步进电机的驱动电路等。
软件部分采用C语言编程,主要包括键盘显示程序、步进电机的调速程序、停止判断程序等。
关键词:步进电机控制系统;调速;单片机AbstractStepping motor is a kind of digital control system components. It can achieve quick start-up, positive inversion, stopping and speed control, according to the control pulse. It has high precision step angle, and can be self-locking when it keeps still. As these characteristics, stepping motor in automatic control system, especially in the open loop control system has been widely applied.This article mainly focuses on taking Single-chip Computer and cycle pulse distributor as the core, and designing the stepping motor control system. Through the design of the software and hardware debugging, it realizes controlling the step motor’s accel eration and deceleration automatically, according to parameter setting. Making the system arrive the end point with the shortest time, but not occur outing of step. Besides it can accurately achieve start-up, positive inversion and shutdown. Hardware takes AT89C51 as the core of control circuit, mainly including: cycle pulse distributor, keyboard and display circuit, stepping motor driving circuit, etc. Software part adopts the C language programming, mainly including keyboard and display program, stepping motor speed control program, stop judging program, etc.Key words: Stepping motor control system; speed control; Single-chip Compute目录摘要 (I)Abstract (II)目录 (I)第一章引言 (1)1.1 课题提出的背景和研究意义 (1)1.2 课题的主要研究内容 (2)1.3 本章小结 (2)第二章步进电机控制系统设计 (3)2.1 步进电机的原理 (3)2.1.1 三相单三拍通电方式 (3)2.1.2 三相双三拍通电方式 (5)2.1.3 三相六拍通电方式 (6)2.2 环形脉冲分配器 (8)2.3 续流电路 (12)2.3.1 二极管续流 (13)2.3.2 二极管—电阻续流 (14)2.4 步进电机驱动电路 (15)2.5 步进电机的变速控制 (17)2.5.1 变速控制的方法 (20)2.6 步进电机在自动生产线中的应用 (20)2.7 本章小结 (22)第三章控制系统硬件设计 (23)3.1 硬件系统设计原则 (23)3.2 控制系统组成 (24)3.3 主要元件的选择 (24)3.3.1 单片机的选择 (24)3.3.2 EPROM的选择 (25)3.3.3 可逆计数器的选择 (27)3.4 控制系统接口电路的设计 (28)3.4.1 环形脉冲分配器设计 (28)3.4.2 显示电路设计 (29)3.4.3 外部复位电路设计 (30)3.5 控制系统整体电路设计 (31)3.6 本章小结 (32)第四章控制系统软件设计 (32)4.1 软件系统设计原则 (32)4.2 步进电机控制系统功能设计 (33)4.3 主程序设计 (34)4.3.1 主程序工作过程 (34)4.3.2 主程序工作流程图 (35)4.3.3 定时器T0中断程序流程图 (35)4.4 Proteus仿真 (38)4.5 显示程序设计 (40)4.6 键盘程序设计 (41)4.7 调速程序设计 (42)4.7.1 20BY步进电机参数 (42)4.7.2 步进电机转速与频率的关系 (42)4.8 本章小结 (44)第五章结束语 (44)参考文献 (45)第一章引言1.1 课题提出的背景和研究意义由于步进电机不需要位置传感器或速度传感器就可以实现定位,即使在开环状态下它的控制效果也是令人非常满意的,这有利于装置或设备的小型化和低成本,因此步进电机在计算机外围设备、数控机床和自动化生产线等领域中都得到了广泛的应用。
51单片机控制步进电机硬件图及C语言编程
51单片机控制步进电机硬件图#include <reg51.h> //51芯片管脚定义头文件#include <intrins.h> //内部包含延时函数_nop_();#include<absacc.h>#define uchar unsigned char#define uint unsigned intuchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; ////四相八拍反转编码sbit P14=P1^4; //将P14位定义为P1.4引脚sbit P15=P1^5; //将P15位定义为P1.5引脚sbit P16=P1^6; //将P16位定义为P1.6引脚sbit P17=P1^7; //将P17位定义为P1.7引脚sbit P20=P2^0; //将P20位定义为P2.0引脚sbit P21=P2^1; //将P21位定义为P2.1引脚sbit P22=P2^2; //将P22位定义为P2.2引脚sbit P23=P2^3; //将P23位定义为P2.3引脚sbit P24=P2^4; //将P24位定义为P2.4引脚sbit P25=P2^5; //将P25位定义为P2.5引脚sbit P26=P2^6; //将P26位定义为P2.6引脚sbit P27=P2^7; //将P27位定义为P2.7引脚sbit P34=P3^4; //将P34位定义为P3.4引脚sbit P35=P3^5; //将P35位定义为P3.5引脚sbit P36=P3^6; //将P36位定义为P3.6引脚sbit P37=P3^7; //将P37位定义为P3.7引脚sbit P30=P3^0; //将P30位定义为P3.0引脚sbit P31=P3^1; //将P31位定义为P3.1引脚sbit BEEP=P3^2; // 蜂鸣器bit on=0;bit off=1; //运行与停止标志bit zdirection=0; //方向标志bit fdirection=0; //方向标志uchar h,l,k; //定义行键值//定义列键值uchar idata count[3]; //0-9数值储存unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9的段码uchar keyval=0; //定义变量储存按键值uchar dat=0; //按键值uint run_i=0;uchar count_i=0;uint run=0; //需要运行的步数uint drun=0; //当前运行的步数bit flag;uint x=60;uint y=60;uint z=0;/* uint k=0; //调速按键次*//**************************************************************/ void led_delay1(void){unsigned char j;for(j=0;j<52;j++);}void beep(){uchar j;for (j=0;j<200;j++){led_delay1();BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器}/**************************************************************函数功能:数码管动态扫描延时**************************************************************/void led_delay(void){unsigned char j;for(j=0;j<200;j++);}/**************************************************************/**************************************************************函数功能:软件延时去抖动子程序**************************************************************/void delay20ms(void){unsigned char i,j;for(i=0;i<70;i++)for(j=0;j<60;j++);}void display(uint run){ //显示设点步数P31=1; //点亮数码管DS6P30=0;P34=0;P35=0;P36=0;P37=0;P14=0;P15=0;if((run/100)!=0){ P0=Tab[run/100]; //显示百位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;P30=1;P31=0;P34=0;P36=0;P37=0;P14=0;P15=0;if(((run%100/10)==0)&&(run/10==0)) { P0=0xff;led_delay(); //动态扫描延时led_delay();} //点亮数码管DS5else{ P0=Tab[run%100/10]; //显示十位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;P37=1; //点亮数码管DS4P30=0;P34=0;P35=0;P36=0;P31=0;P14=0;P15=0;if((run/10==0)&&(run%100/10==0)&&(run%10==0)){ P0=0xff;led_delay(); //动态扫描延时led_delay(); //动态扫描延时}else{ P0=Tab[run%10]; //显示个位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;}/*********************************************************************/void ddisplay(uint drun){ //显示运行步数P36=1; //点亮数码管DS3P30=0;P34=0;P35=0;P31=0;P37=0;P15=0;if((drun/100)!=0){P0=Tab[drun/100]; //显示百位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;P35=1; //点亮数码管DS2P30=0;P34=0;P31=0;P36=0;P37=0;P14=0;P15=0;if(((drun%100/10)==0)&&(drun/10==0)) { P0=0xff;led_delay(); //动态扫描延时led_delay();}//点亮数码管DS5else{ P0=Tab[drun%100/10]; //显示十位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;P34=1; //点亮数码管DS1P30=0;P31=0;P35=0;P36=0;P37=0;P14=0;P15=0;if((drun/10==0)&&(drun%100/10==0)&&(drun%10==0)){ P0=0xff;led_delay(); //动态扫描延时led_delay(); //动态扫描延时}else{ P0=Tab[drun%10]; //显示个位led_delay(); //动态扫描延时led_delay(); //动态扫描延时}P0=0xff;}void dddisplay(){ P15=1;P36=0;P30=0;P34=0;P35=0;P31=0;P37=0;P14=0;if((fdirection==1)&&(on==1)){P0=0xbf; led_delay(); led_delay(); }P0=0xff;P14=1;P36=0;P30=0;P34=0;P35=0;P31=0;P37=0;P15=0;if(y==60){P0=0x08;led_delay(); led_delay();}if(y==50){P0=0x03; led_delay(); led_delay(); }if(y==40){P0=0x46; led_delay(); led_delay();}if(y==30){P0=0x21 ;led_delay(); led_delay();}if(y==20){P0=0x86; led_delay(); led_delay(); }if(y==10){P0=0x8e; led_delay(); led_delay();}P0=0xff;}/************************************************************** 函数功能:主函数**************************************************************/ void main(void){ x=60;P14=0;P15=0;P16=0;P17=0;EA=1;EX1=1; //允许使用外中断IT1=1; //选择负跳变来触发外中断PT0=1;ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=0xec; //定时器T0的高8位赋初值TL0=0x78; //定时器T0的低8位赋初值TR0=1;P30=1; //启动定时器T0P34=1;P35=1;P36=1;P37=1;P31=1;P2=0xf0;while(1){if(flag){P2=0x0f; h=P2&0x0f; //所有行线置为高电平"1",所有列线置为低电平"0",并把值给hif((P2&0x0f)!=0x0f) //行线中有一位为低电平"0",说明有键按下delay20ms(); //延时一段时间、软件消抖else {keyval=16;}if(h!=0x0f) //确实有键按下{h=P2&0x0f; //读取行值P2=0xf0; //反转电位l=P2&0xf0; //读取列值k=h+l; //行列相加,为键位值if(k==0x7e) keyval=12;if(k==0x7d) keyval=0;if(k==0x7b) keyval=13;if(k==0x77) keyval=15;if(k==0xbe) keyval=1;if(k==0xbd) keyval=2;if(k==0xbb) keyval=3;if(k==0xb7) keyval=14; //键位与设定对应if(k==0xde) keyval=4;if(k==0xdd) keyval=5;if(k==0xdb) keyval=6;if(k==0xd7) keyval=11;if(k==0xee) keyval=7;if(k==0xed) keyval=8;if(k==0xeb) keyval=9;if(k==0xe7) keyval=10;}else keyval=16;dat=keyval;if((dat==10)&&(run!=0)) //正转键按下{zdirection=1; //方向标志fdirection=0;on=1; //运行与停止标志off=0;}if((dat==11)&&(run!=0)) //反转键按下{fdirection=1; //方向标志zdirection=0;on=1; //运行与停止标志off=0;}if(dat==12) //加速键{if(y==10) y=10;else y=y-10;}if(dat==13) //减速键{if(y==60) y=y;else y=y+10;}if((dat==14)&&(run!=0)) //开始键按下{ if(z==1) {on=1;}elseon=1;off=0;z=0;if((zdirection==0)&&(fdirection==0)){zdirection=1;}}if(dat==15) { z++;on=0; } //停止键按下一次if((on==0)&&(z==2)) //停止键按下二次{count[0]=0; //显示清零count[1]=0;count[2]=0;drun=0; run=0;z=0;on=0;off=1; //运行与停止标志}if((dat>=0)&&(dat<=9)&&(on==0)&&(off==1)){count[count_i]=dat;if(count[0]!=0){count_i++;}if((count_i==3)&&(on==0)&(off==1)){count_i=0;}if((count_i==0)&&(on==0)&(off==1)){ if(count[0]==0)run=0;else run=count[0]*100+count[1]*10+count[2];}if((count_i==1)&&(on==0)&(off==1)){run=count[0];}if((count_i==2)&&(on==0)&(off==1)){run=count[0]*10+count[1];}}if((dat==0)&&(on==1)){off=1;}if(dat==16);flag=0;}/*if(run!=0){*/ddisplay(drun);dddisplay();display(run);/*} */ //调用按键值的数码管显示子程序if((run==drun)&&run!=0){on=0;off=1;beep();drun=0; run=0;count[0]=0; //显示清零count[1]=0;count[2]=0;count_i=0;}}}/**************************************************************外部中断键盘扫描键值保存在dat中******************************************************************************* ************/void Interrupt1() interrupt 2 using 3{flag=1;}/*************************************************************************/ void Interrupt2() interrupt 1 using 1{ TR0=0;EX1=1;TH0=0xec;TL0=0x78;x--;if(x==0){if((zdirection==1)&&(fdirection==0)&&(on==1)&&(off==0)){P1=FFW[run_i];fdirection=0;led_delay(); //动态扫描延时led_delay(); //动态扫描延时led_delay(); //动态扫描延时led_delay(); //动态扫描延时drun++;run_i++;if(run_i==8)run_i=0;if(run==drun){on=0;off=1;}}if((zdirection==0)&&(fdirection==1)&&(on==1)&&(off==0)){P1=REV[run_i];led_delay(); //动态扫描延时led_delay(); //动态扫描延时led_delay(); //动态扫描延时led_delay(); //动态扫描延时zdirection=0;drun++;run_i++;if(run_i==8)run_i=0;if(run==drun){on=0;off=1;}}if((on==0)&&(off=1))P1=0x00; x=y;}TR0=1;}。
基于AT89C51单片机控制的步进电机运行及检测 (2)
题目:基于Proteus的LM016L液晶显示器的仿真学生姓名:闫少卿学生学号: 0908020248 系别:电气信息工程学院专业:自动化届别: 2013届指导教师:苗磊电气信息工程学院2012年5月基于Proteus的LM016L液晶显示器的仿真学生:闫少卿指导教师:苗磊电气信息工程学院自动化专业1课程设计的任务与要求1.1 课程设计的任务利用Proteus的51单片机设计并实现LM016L液晶显示器的显示功能。
通过本次设计了解并掌握LM016L液晶显示器结构及其使用方法。
1.2 课程设计的要求使用LM016L显示两行字符,当按下K1开关时,电机正转,液晶显示器第一行显示字符为“start zheng”,第二行显示为电机正转所运行的步数;当按下K2开关时,电机反转,液晶显示器第一行显示“start fan”,第二行显示为电机反转所运行的步数。
1.3 课程设计的研究基础该设计包括硬件和软件设计两部分。
硬件部分主要包括:单片机AT89C51、LM016L液晶显示器。
软件部分包括:基于51单片机的汇编语言程序。
设计中的相关研究如下:(1)单片机AT89C51:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
将多功能8位CPU和闪烁存储器组合在单个芯片中,是一种高效微控制器。
(2)LM016L液晶显示器:LM016L液晶显示器采用HD44780控制器。
HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。
[2]2 LM016L液晶显示器显示系统方案制定2.1 方案提出方案一:利用单片机AT89C51来控制数码管的运行,按下按钮可实现数码管的显示。
将程序写入后,当按下正反转开关时数码管单个显示字符和电机运行的拍数,组合起来构成所需要的数据。