找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15226|回复: 19
打印 上一主题 下一主题
收起左侧

求一个 让步进电机转动然后停下来的程序

[复制链接]
跳转到指定楼层
楼主
ID:169261 发表于 2017-4-15 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按下按键   步进电机正转   转一段实现后停下来 再按一下按键 步进电机反转  转一段时间停下来   不断循环这个过程   
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:151348 发表于 2017-4-15 19:52 | 只看该作者
if(k1==1)
{
    delay(10);
    if(k1==1)
    {
        //给步进电机4000个脉冲(正序),假设4拍驱动,步进角1.8°,那么电机旋转20圈
    }
}
if(k2==1)
{
    delay(10);
    if(k2==1)
    {
        //给步进电机4000个脉冲(反序),假设4拍驱动,步进角1.8°,那么电机反向旋转20圈
    }
}
回复

使用道具 举报

板凳
ID:111634 发表于 2017-4-15 20:29 | 只看该作者
本帖最后由 zl2168 于 2017-4-15 21:01 编辑

实例98  驱动四相步进电机
四相步进电机激励方式和驱动电路
激励方式   
驱动电路ULN2003简介   
电路设计   
程序设计   
Keil调试   
Proteus仿真   
先Proteus仿真一下,确认有效。
实例98 四相步进电机.rar (35.83 KB, 下载次数: 104)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

地板
ID:111634 发表于 2017-4-15 21:01 | 只看该作者
实例99  驱动二相步进电机
Proteus仿真一下,确认有效。
实例99 二相步进电机.rar (36.2 KB, 下载次数: 59)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

5#
ID:169261 发表于 2017-4-15 21:29 | 只看该作者
imxuheng 发表于 2017-4-15 19:52
if(k1==1)
{
    delay(10);

中间要有停的   时候
回复

使用道具 举报

6#
ID:169261 发表于 2017-4-15 21:29 | 只看该作者
zl2168 发表于 2017-4-15 20:29
实例98  驱动四相步进电机
⒈ 四相步进电机激励方式和驱动电路
⑴ 激励方式    …

中间需要有停的时候
回复

使用道具 举报

7#
ID:169261 发表于 2017-4-15 21:29 | 只看该作者
zl2168 发表于 2017-4-15 21:01
实例99  驱动二相步进电机
先Proteus仿真一下,确认有效。

中间有停的时候
回复

使用道具 举报

8#
ID:111634 发表于 2017-4-15 22:23 | 只看该作者
a1159900630 发表于 2017-4-15 21:29
中间要有停的   时候

一键可代二键,只需稍加修改程序
回复

使用道具 举报

9#
ID:151348 发表于 2017-4-15 22:37 | 只看该作者
a1159900630 发表于 2017-4-15 21:29
中间要有停的   时候

什么意思
回复

使用道具 举报

10#
ID:111634 发表于 2017-4-16 14:36 | 只看该作者

可以啊!你要怎么停和转都可以!开出停、转时间要求。
回复

使用道具 举报

11#
ID:169261 发表于 2017-4-16 15:53 | 只看该作者
zl2168 发表于 2017-4-16 14:36
可以啊!你要怎么停和转都可以!开出停、转时间要求。

按下一个键  正转4圈  然后停止   等待第二次按键按下    再次按下按键  反转4圈  停止   然后一直循环这个过程
回复

使用道具 举报

12#
ID:169261 发表于 2017-4-16 15:54 | 只看该作者
zl2168 发表于 2017-4-16 14:36
可以啊!你要怎么停和转都可以!开出停、转时间要求。

如果 能给出  解释的程序   奖励50黑币
回复

使用道具 举报

13#
ID:169261 发表于 2017-4-16 15:55 | 只看该作者
zl2168 发表于 2017-4-15 22:23
一键可代二键,只需稍加修改程序

怎样改动   求详解
回复

使用道具 举报

14#
ID:111634 发表于 2017-4-16 20:19 | 只看该作者
本帖最后由 zl2168 于 2017-4-16 20:23 编辑
a1159900630 发表于 2017-4-16 15:55
怎样改动   求详解

已改好。先Proteus仿真一下,确认有效。
正转4圈 反转4圈.rar (35.83 KB, 下载次数: 38)



回复

使用道具 举报

15#
ID:111634 发表于 2017-4-16 22:36 | 只看该作者
正转4圈+反转4圈的hex文件上传错了,更正。
正转4圈 反转4圈1.rar (36.49 KB, 下载次数: 102)
回复

使用道具 举报

16#
ID:252149 发表于 2017-12-19 10:38 | 只看该作者
代码又没有,给我一个
回复

使用道具 举报

17#
ID:262845 发表于 2018-1-2 12:38 | 只看该作者
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit MOTOA = P1^0;
sbit MOTOB = P1^1;
sbit MOTOC = P1^2;
sbit MOTOD = P1^3;        

#define SPEED 500

/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}


/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{       
        P1=0X00;
        while(1)
        {       
                MOTOA = 1;
                MOTOB = 0;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 0;
                delay(SPEED);

                MOTOA = 0;
                MOTOB = 1;
                MOTOC = 1;
                MOTOD = 1;
                delay(SPEED);

                MOTOA = 1;
                MOTOB = 1;
                MOTOC = 0;
                MOTOD = 1;
                delay(SPEED);
                                                       
        }
}
回复

使用道具 举报

18#
ID:294329 发表于 2018-3-19 23:06 | 只看该作者
zl2168 发表于 2017-4-15 21:01
实例99  驱动二相步进电机
先Proteus仿真一下,确认有效。

请问这个开发板上的输入端IN1 IN2 IN3 IN4 和电动机联的驱动器上标的DIR- DIR+ PUL- PUL+有什么联系吗
回复

使用道具 举报

19#
ID:293296 发表于 2018-3-23 15:36 | 只看该作者
zl2168 发表于 2017-4-16 20:19
已改好。先Proteus仿真一下,确认有效。

有没有代码啊
回复

使用道具 举报

20#
ID:471297 发表于 2021-1-7 14:30 | 只看该作者
版主改的非常棒。我需要按一下开关转一圈然后随机停留10到20秒再转一圈,一直重复,不知要怎么修改呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表