求51单片机步进电动机控制设计程序
#include
#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar num=0,fx=0;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P2=stepd[num];
if(fx==0){num++;num%=8;}
if(fx==1)
{
if(num==0)num=7;
else num--;
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key1==0)
{
while(key1==0);
TR0=~TR0;
}
if(key2==0)
{
while(key2==0);
fx=0;
}
if(key3==0)
{
while(key3==0);
fx=1;
}
}
}
程序是指基本指令,通过范围内的修改达到使用目的。
一个步进电机控制器和3个步进电机的控制器只是脉冲输出点位不一样而已(芯片不一样)当然,输出的IO点也会增加,3个步进电机的控制器可以控制1~3个步进电机不同的工作,基于51单片机的开发代码指令和软件由芯片生产商提供,基础代码由控制器工程师提供,一款产品是基于硬件和软件的结合,开发者一般从硬件设计开始,如果你可以提供控制器硬件,我相信软件就会非常简单。
程序其实就是写代码,和PLC接近,但比PLC复杂,因为PLC是开放式的。
下面是我们的三轴控制器。
三轴运动控制器简介
控制器的功能:
⑴ 显示屏分辨率可选两种128×64点、192×64点单色图形屏(黄绿屏或蓝屏),分别可显示16×16标准点阵汉字4行8列、4行12列。
⑵ 内置蜂鸣器,可以通过软件配合按键发声,或做报警等其他通途。
⑶ 控制器须外接DC5V工作电源。如果系统要用到模拟量输出(0~10VDC)功能,则需要外部的±12VDC电源。
⑷ 用宏晶STC12C系列高性能CPU,同时钟频率下,运算速度比其他51系列CPU快8~12倍。
⑸ 64KB程序空间,8KB + 256KB数据空间,带实时日历时钟。
⑹ 自带512KB字库,含16×16点阵汉字、16×16点阵字符、8×16点阵ASCII字符、12×12点阵汉字、12×12点阵字符、6×12点阵ASCII字符。两种汉字字库均包含全部一、二级汉字。
⑺ 19个按键,其中6个按键上可配有LED指示灯。LED指示灯可单独控制亮暗,和按键本身不直接关联,用于系统中一些常用功能选择之用。
⑻ 3轴运动控制,脉冲+方向,差分输出,最大脉冲频率50KHz,极强的抗干扰能力。也可以接成共阳极输出,系统有+5V输出端子。16位脉冲计数,也可无限发脉冲。
⑼ 2路AB相输入解码。
⑽ 20路DI输入,12~24VDC共阳极。
⑾ 16路DO输出,晶体管输出,可以外接继电器等,外接继电器等感性负载时,须在继电器线圈两端并联反向二极管。
⑿ 支持RS232、RS485通信。
⒀ 串口下载,宏晶官方提供的下载软件。
⒁ 开发环境是KEIL公司的C51开发平台μVision3,也可以自行在网上升级更高版本。
⒂ 开发库是C51格式的库文件。
DFC111.h---------------------------------------基本头文件
DFC_MU102_Sys.h---------------------------系统头文件
DFC_MU102_SYS.LIB---------------------------系统库文件
DFC_MU102_LCD.h------------------------LCD控制头文件
DFC_MU102_LCD.Lib------------------------LCD控制库文件
DFC_MU102_KB19.h------------------------按键控制头文件
DFC_MU102_KB19.Lib------------------------按键控制库文件
DFC_IO111.h------------------------------输入输出头文件
DFC_IO111.Lib------------------------------输入输出库文件
51单片步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。
51单片步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
51单片步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:
(1)控制换相顺序
通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。
(2)控制步51单片进电机的转向
如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。
(3)控制51单片步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
你的功能设计有问题吧?既然给出了固定的挡速还设什么加减速啊,应该是检测到速度有变化就自己加速或者减速吧。我做过这样的工程,功能和你几乎一样,加了串口通讯,可以通过pc任意设定速度,通过电路板的按键可以选择两个速度。不过在网吧上网没有带资料。对了,我的按键没有用8255,直接做到p1上的。
一楼说的是步进电机的驱动器设计吧?楼主是不是在有驱动器的情况下设计个简易的运动控制呢?我把程序发给你,汇编带注释4k.需要的话email:bombbing@163.com
这个很简单啊 学过都会
要程序请先给出接线图,不知道你的地址分配啊
怎样用51单片机接两相步进电机驱动器来控制步进电机?
脉冲信号就是像流水灯差不多,用两个口。例如:用到P1^0和P1^1;把P10制低电平,P11制高电平,延时一段时间后,P10制高电平 P11制低电平,如此循环,看程序:include "reg52.h"sbit P10=P1^0;sbit P11=P1^1;void delay(unsigned int x)P10=0;P11=1;delay(1000);P10=1;P11=0;delay(...
步进电机的驱动电路与51单片机的连接电路图
51单片机的引脚随处都可以查到,P0、P1、P2随便选择一个作为脉冲发送口,在程序开始前定义好就可,驱动器一般都会分配脉冲,看你用的是哪一种,有的驱动器有电流可调档,也就是相电流细分。后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL...
一个51单片机同时控制2个步进电机的C语言程序
include<reg52.h> include<intrins.h> define mode 0x81 \/\/ 方式0,A口、B口输出,C口高4位输出,低4位输入 include "stdio.h"include "string.h"include "math.h"xdata unsigned char PA _at_ 0x7f00;xdata unsigned char PB _at_ 0x7f01;xdata unsigned char PC _at_ 0x7f02;xdata ...
51系列单片机 程序设计 用4个开关控制步进电机进行启动停止正转和反转...
设计思路:1、分析功能需求:四个按键控制步进电机的四种状态,那么必须要在程序中有IO口按键扫描程序;而且步进电机的控制一定要先设置好定时器。2、功能模块定义:四个按键对应四个函数,每个函数实现不同功能,对于正反转,先定义控制电机每一步时P0口的数据列表,把列表地址赋给DPTR,即TAB1,和TAB2,...
51单片机,如何给一个指令控制步进电机转动90度,再给另外一个指令,反转...
1、首先看看步进驱动器的细分设定,找出转动一圈需要的脉冲个数,再计算出转动90°需要的脉冲个数N;2、根据接线,使单片机的IO端口输出高电平或低电平,控制转动方向;3、根据需求的转动速度,设定定时器的定时常数,启动定时;4、在定时器的中断程序中,取反IO端口,如CPL P1.1,并计数。使单片机...
为什么我的51单片机p1口和P3口驱动不了步进电机?
单片机 的 P0 P1 P2 P3 口 高电平 驱动电流 都很小,你的单片机 板 P0 P2 能驱动 是因为 加了上拉电阻,P2 跳线帽拔掉 就把上拉电阻 断开了。P1 P3 在板上 没有上拉 所以不能。
单片机步进电机控制实验 单片机步进电机控制实验报告
1、实验目的和要求。了解步进电机的工作原理,学习用单片机的步进电机控制系统的硬件设计方法,掌握定时器和中断系统的应用,熟悉单片机应用系统的设计与调试方法。2、实验设备。单片机测控实验、系统步进电机控制实验模块、Keil开发环境、STC-ISP程序下载工具。3、实验内容。编制MCS-51程序使步进电机按照规定的...
51单片机最小系统 控制30个步进电机
51单片机拢共P1,P2,两个准双向8位I\/O口,和P0一个8位漏极开路端口,以及P3一个8位复用端口,而4相电机至少需要4个控制端,且不说51单片机的多任务控制能力,即使将所有单片机的引脚全部用于输出控制,一般40引脚的51单片机也控制不了几个步进电机。
步进电机1、要配置51单片机还要配置步进电机驱动器吗?2、配置步进电机...
IO口与步进电机的励磁端口是逻辑相连的。对于你3个提问中分别提到的三个概念:51单片机、步进电机驱动器、步进电机控制器——我们通过把后两者合二为一,不妨称为步进电机驱动器;1、只需要配置51单片机(IO控制程序);2、由51单片机来控制(IOl控制程序);3、仅由驱动器还不行,还需要有程序控制,...
51单片机控制4个步进电机怎么连接
如果是微型步进电机的话,可以用ULN2003来驱动,两个IO口(比如P0,P2)加3片ULN2003就可以了。
说宁海凌: /************************************************************************************** * 步进电机实验 * 实现现象:下载程序后,按照光盘内操作视频接线,步进电机旋转 注意事项:无 ************************************************************************************...
桂东县15732775501: 求;用51单片机编写最简单的程序,C语言,使步进电机转动,间歇式转动,快慢交替转动 - ?
说宁海凌: 编一个简单的吧,控制两相电机.#include#define uchar unsigned charuchar step[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};void delay(uchar sd){uchar i,j;for(i=0;i<120jj++);}main(){uchar i,j;while(1) { for(j=0;j<10;j++) for(i=0;i<8;i++) { P0=step[i]; ...
桂东县15732775501: 51系列单片机 程序设计 用4个开关控制步进电机进行启动停止正转和反转 - ?
说宁海凌: 设计思路: 1、分析功能需求:四个按键控制步进电机的四种状态,那么必须要在程序中有IO口按键扫描程序; 而且步进电机的控制一定要先设置好定时器. 2、功能模块定义:四个按键对应四个函数,每个函数实现不同功能,对于正反转,先...
桂东县15732775501: 利用51单片机实现对步进电机控制参考程序 - ?
说宁海凌: 有正转反转,加速减速,给你参考.#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int sbit key1=P3^7; sbit key2=P3^6; sbit key3=P3^5; uchar kz,i=200; uchar zhengzhuan[]={0xf3,0xf9,0xfc,0xf6}; uchar ...
桂东县15732775501: 求...简单的51单片机驱动步进电机程序 只要求一个转向就可以了 ... - ?
说宁海凌: #include "reg52.h" unsigned char code RUN[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //步进电机相序表 void delay(unsigned int t);//步进电机驱动 void motor_ffw() {unsigned char i; for (i=0; i<8; i++) //一个周期转3.75*8=30度 { P1 = RUN[i]...
桂东县15732775501: 51单片机控制步进电机程序.在线等高分,请会写的高手大侠写出来. - ?
说宁海凌: 我上周刚做的这个实验 成功拉,给你参考一下吧 这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的 和ULN2003一样,你把它换成2003就行拉#include <AT89X51.H> unsigned char code table[]=; unsigned char temp,temp_old; ...
桂东县15732775501: 步进电机驱动程序C语言 - ?
说宁海凌: 步进电机控制程序(c语言+51单片机)#include<reg51.h>#define uint unsigned int #define uchar unsigned char #define ms *77 // f = 12 M #define LEDLen 4 #define Dj_star() {IE=0x81; pri_dj=0; } #define Dj_stop() {IE=0x00; pri_dj=1; P1=0xff; ...
桂东县15732775501: 求一份51单片机控制步进电机的综合 C程序 - ?
说宁海凌: /*----------------------------------------------- 名称:步进电机 内容:本程序用于测试4相步进电机常规驱动 含正反转 使用1相励磁------------------------------------------------*/#include <reg52.h> sbit A1=P1^0; //定义步进电机连接端口 sbit B1=P1^1; sbit C1=P1^2;...
桂东县15732775501: 求助51单片机驱动四相8拍步进电动机C程序 - ?
说宁海凌: 这是我自己按照你的要求写的程序,不过实际操作要看你具体的应用场合,仅供你参考.假设P0口高4位来驱动.有不明白可以联系. const unsigned char clockstep[8] ={0x80, 0x90, 0x10, 0x30, 0x20, 0x60, 0x40, 0xc0}; const unsigned char ...
桂东县15732775501: 请高手根据此原理图给一个51单片机控制四相六线步进电机的C语言程序. 先给20分,如果仿真成功追加50分.?
说宁海凌: 你的图我看不清楚,正面是我编的一段程序仅供参考#include<reg51.h> //头文件 FYM 35BY48S053常州市丰源微特电机有限公司?#define uchar unsigned int //宏定义,为方便编程#define uint unsigned int#define MOTORSTEP P1 //宏定义,定...