步进电机正反转和加速减速c源程序

发布者:HeavenlyJoy444最新更新时间:2012-12-05 来源: 51hei 关键字:步进电机  正反转  加速减速 手机看文章 扫描二维码
随时随地手机看文章

这是一个群里朋友发给我的步进电机实现正转反转和加速减速的单片机c语言源程序,这里给大家共享下,有需要的朋友直接复制到keil里编译就可以了,程序已测试成功。

/*****************************************
单4拍正转 zheng[]={0x01,0x08,0x04,0x02}
单4拍反转 fang[]={0x01,0x02,0x04,0x08}

双4拍正转 zheng[]={0x09,0x0c,0x06,0x03}
双4拍反转 fang[]={0x03,0x06,0x0c,0x09}

单双8拍正转 zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03}
单双8拍反转 fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}
*****************************************/

#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
bit front_move,back_move;

uchar jzaj(void); //单4拍正转 zheng[]={0x01,0x08,0x04,0x02}; 单4拍反转 fang[]={0x01,0x02,0x04,0x08};
void ajcl(uchar jz);
void delay(uchar del);

uchar code zheng[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};
uchar code fang[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

void timer0() interrupt 1
{
static uchar jz;
TH0=0xfc;
TL0=0x18;
jz=jzaj();
if(jz)
ajcl(jz);
}

//步进电机正反转和加速减速程序
//实用于51系列单片机 http://www.51hei.com首发,程序运行有问题请联系本站。
void main()
{
uchar count=0;
TMOD=0x01;
TH0=0xFC;
TL0=0x18;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(front_move)
{
P2=zheng[count];
delay(100);
count++;
if(count==8) count=0;
}
if(back_move)
{
P2=fang[count];
delay(100);
count++;
if(count==8) count=0;
}
}
}

uchar jzaj(void)
{
uchar hz,lz;
P1=0xf0; //置所有行为低电平,行扫描,列线输入(此时)
if((P1&0xf0)!=0xf0) //判断是否有有键按下(读取列的真实状态,若第4列有键按下则P1的值会变成0111 0000),有往下执行
{
delay(10); //延时去抖动(10ms)
if((P1&0xf0)!=0xf0) //再次判断列中是否是干扰信号,不是则向下执行
{
hz=0xfe; //逐行扫描初值(即先扫描第1行)
while((hz&0x10)!=0) //行扫描完成时(即4行已经全部扫描完成)sccode为1110 1111 停止while程序
{
P1=hz; //输出行扫描码
if ((P1&hz)!=hz) //***(P2&0xf0)!=0xf0***也可这样 本行有键按下(即P1(真实的状态)的高四位不全为1)
{
lz=(P1&0xf0)|0x0f; //列
while((P1&0xf0)!=0xf0);
return((~hz)|(~lz)); //返回行和列
break; //有按键返回 提前退出循环

}
else //所扫描的行没有键按下,则扫描下一行,直到4行都扫描,此时sccode值为1110 1111 退出while程序
hz=_crol_(hz,1);//行扫描码左移一位

}
}
}
else
return 0; //无键按下,返回0
}
void ajcl(uchar jz)
{
if(jz==0x11)
{
back_move=0;
front_move=1;
}
if(jz==0x21)
{
front_move=0;
back_move=1;
}
if(jz==0x41)
{
P2=0x00;
front_move=0;
back_move=0;
}
 

}
void delay(uchar del)
{
uchar i;
for(;del>0;del--)
for(i=0;i<125;i++)
{;}
}

关键字:步进电机  正反转  加速减速 引用地址:步进电机正反转和加速减速c源程序

上一篇:单片机微型芯片用于医疗控制人体血压设计思路
下一篇:提高MSP430G系列单片机的Flash擦写寿命的方法

推荐阅读最新更新时间:2024-03-16 13:14

使用单片机uln2003驱动“39BYG混合式1.8°步进角”步进电机
买的步进电机 店家未提供驱动方式。 经过一段时间的探索,研究出这款电机的驱动方式,最方便的是使用uln2003,转速可观,5V就能带的动 博主之前使用的是A4988,可以驱动,由于效果比较差,暂不提供接线方式和源码 这次使用的是普中开发板板载的uln2003,使用独立uln2003模块的时候效果应该相同。 接线方式: 单片机源码: #include reg52.h sbit A = P1^0; sbit B1 = P1^1; sbit C = P1^2; sbit D = P1^3; unsigned int a = 200; void delay(unsigned int i) { while(i)
[单片机]
使用单片机uln2003驱动“39BYG混合式1.8°步进角”<font color='red'>步进电机</font>
51单片机入门——步进电机
1 电机的分类 电机的分类方式有很多,从用途角度可划分为驱动类电机和控制类电机。直流电机属于驱动类电机,这种电机是将电能转换成机械能,主要应用在电钻、小车轮子、电风扇、洗衣机等设备上。步进电机属于控制类电机,它是将脉冲信号转换成一个转动角度的电机,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,主要应用在自动化仪表、机器人、自动生产流水线、空调扇叶转动等设备。 步进电机又分为反应式、永磁式和混合式三种。 反应式步进电机:结构简单成本低,但是动态性能差、效率低、发热大、可靠性难以保证,所以现在基本已经被淘汰了。 永磁式步进电机:动态性能好、输出力矩较大,但误差相对来说大一些,因其价格低而广泛应用于消费
[单片机]
51单片机入门——<font color='red'>步进电机</font>
基于PLC的立体仓库控制系统
1 引言 随着我国国民经济飞速的发展和企业现代化生产规模不断的扩大,现代物流系统从六十年代刚刚起步到现在蓬勃发展,其中立体仓库控制系统是不可缺少的重要部分。立体仓库控制系统是以PLC作为控制核心,集自动控制技术、计算机技术、通讯技术和机电一体化技术于一体的高科技控制设备。本文探讨了如何利用德国西门子PLC S7—200实现立体仓库控制,并分别从硬件和软件两个方面进行了分析和研究。 此自动控制系统已在营口红塔集团得到了很好的应用。 2 系统概况 自动化立体仓库又称自动存取系统(AS/RS),是一种用高层立体货架储存物资,坩自动控制堆垛机进行存取作业和,f=I计算机监控管理的仓库。目前,立体仓库主要有以下几种形式:升降
[嵌入式]
步进电机微步驱动的工作原理
步进电机可以通过被称为“微步”的驱动方法来实现更精细的步距角控制。在本文中将介绍其工作原理。 步进电机:微步驱动原理 在上一篇文章“步进电机的基本旋转原理”中,有一个两相双极线圈逐相励磁的示例。在该示例中,按步(使电流流经一组线圈中的一个而不流经另一个线圈)介绍了步进电机每旋转90°的原理。而微步驱动则可以使步进电机按照更精细的步距角旋转。 步进电机的微步驱动有优点主要有两个:一个是可以控制微小角度的位置。另一个是可以降低低速范围内的振动和噪声。步进电机在每一步都伴随着阻尼振动,最终停止在所定位置。也就是说,相对于停止位置经过多次向前过头和后退过头后最终完全停止。如果步进电机低速旋转,则这种阻尼振动可能会引起振动和噪声。通
[嵌入式]
<font color='red'>步进电机</font>微步驱动的工作原理
伺服电机驱动器与步进电机驱动器之间的区别
步进电机的控制系统由可编程控制器、环行脉冲分配器和步进电机功率驱动器组成,控制系统中plc用来产生控制脉冲;通过plc编程输出一定数量的方波脉冲,控制山社步进电机的转角进而控制伺服机构的进给量;同时通过编程控制脉冲频率就是伺服机构的进给速度,环行脉冲分配器将可编程控制器输出的控制脉冲按步进电机的通电顺序分配到相应的绕组。 PLC控制的步进电机可以采用软件环行分配器,也可以采用硬件环行分配器。采用软环占用的PLC资源较多,特别是步进电机绕组相数M》4时,对于大型生产线应该予以充分考虑。采用硬件环行分配器,虽然硬件结构稍微复杂些,但可以节省占用PLC的I/O口点数。 一般PLC的输出接口具有一定的驱动能力,而通常的晶体管直流输
[嵌入式]
伺服电机驱动器与<font color='red'>步进电机</font>驱动器之间的区别
感应子式步进电机工作原理
(一)反应式步进电机原理 由于反应式步进电机工作原理比较简单。下面先叙述三相反应式步进电机原理。 1、结构: 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。 0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1) 2、旋转: 如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。 如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。 如C相通电,
[模拟电子]
感应子式<font color='red'>步进电机</font>工作原理
基于S3C2440A微处理器和Linux操作系统实现对步进电机的控制
随着嵌入式技术的不断成熟,基于嵌入式系统编写特制电路下的设备驱动程序也越来越受到人们的青睐。在各种嵌入式操作系统中,嵌入式Linux是免费的源代码开放软件,可根据需要任意进行剪裁。在嵌入式Linux开发过程中需要为指定设备编写和编译驱动程序,这与以往在PC机上的Linux驱动开发明显不同,本文设计了基于S3C2440嵌入式Linux下激光雕刻系统的步进电机驱动程序。 1 硬件系统的设计 步进电机开环控制系统主要由中央控制器、步进电机驱动器、传感器以及步进电机四大部分组成。本系统采用基于ARM920t内核的S3C2440A微处理器作为控制系统的中央控制器,该芯片主频400MHz,最高可达到533MHz,内含多种设备接口,存储器使
[单片机]
基于S3C2440A微处理器和Linux操作系统实现对<font color='red'>步进电机</font>的控制
单片机与步进电机细分控制
1 步进电机 步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,即给一个脉冲,步进电机就转一个角度,因此非常合适单片机控制,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,电机则转过一个步距角,同时步进电机只有周期性的无累积误差,精度高。 步进电动机有如下特点: 1)步进电动机的角位移与输入脉冲数严格成正比。因此,当它转一圈后,没有累计误差,具有良好的跟随性。 2)由步进电动机与驱动电路组成的开环数控系统,既简单、廉价,又非常可靠,同时,它也可以与角度反馈环节组成高性能的闭环数控系统。 3)步进电动机的动态响应快,易于启停、正反转及变速
[单片机]
单片机与<font color='red'>步进电机</font>细分控制
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved