步进电机带指针在标尺上移动并显示坐标及相对坐标

发布者:DreamyEclipse最新更新时间:2015-07-27 来源: 51hei关键字:步进电机  显示坐标  相对坐标 手机看文章 扫描二维码
随时随地手机看文章
///////单片机控制步进电机,上电复位到0,绝对坐标相对坐标切换,移动时坐标变化,2010年11月05周光明、、、
#include 
#define uchar unsigned char
#define uint unsigned int
uchar rem[8]={0,0,0,10,10,10,10,10};/////显存
uchar remx[3]={0,0,0};/////相对坐标存
uchar remj[3]={0,0,0};/////绝对坐标
uchar code bcd[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x7f};/////LED0~9数码
uchar code jpsj[16]={0xee,0xde,0xbe,0x7e,
                     0xed,0xdd,0xbd,0x7d,
      0xeb,0xdb,0xbb,0x7b,
      0xe7,0xd7,0xb7,0x77};/////键盘值

uchar ajkz,ter;
uint j,k,haomi,haomij;
bit aj_1,RLTT,zy_1;

sbit CS1=P2^5;/////位选
sbit  CS2=P2^6;/////段选
sbit E=P2^7;/////使能

sbit CP=P1^0;/////脉冲口
sbit DIR=P1^1;/////正反转
sbit LL=P1^2;/////左限位
sbit RL=P1^3;/////右限位

////////////////////////////////////////////
yanshi(uint kk)
{while(kk--);}/////延时
////////////////////////显示
xianshi()
{uchar i;
 for(i=0;i<8;i++)
     {
   P0=~(0x01<2)ter=0;
        }
         else ajkz=i;
    }
   }
}
///////////////////////装相对坐标///////////////////////////////
 zjd()
 {
  rem[0]=remj[0];
  rem[1]=remj[1];
  rem[2]=remj[2];
  }
  zxd()
  {
   rem[0]=remx[0];
   rem[1]=remx[1];
   rem[2]=remx[2];
   }

//////////////////////取回//////////////////////////////
quhui()
{
if(rem[7]==10)zjd();
else zxd();
}
//////////////////电机跑时坐标值随动////////////////////////////
zuobiao(uint m)
{
 if(m%34==0)
    {
  m=m/34;
  rem[2]=m/100;
  rem[1]=m%100/10;
  rem[0]=m%10;
  }
}
//////////////////////电机程序///////////////////////////////////
dianji(uint cdcd, bit FX)
{
DIR=FX;
for(j=0;jhaomij)
         {
       haomi=haomi-haomij;
    zy_1=0;
    }
     else 
         {
       haomi=haomij-haomi;
    zy_1=1;
    }
    }
   }
   haomij=remj[0]*34+remj[1]*343+remj[2]*3432;

 }
 /////////////////////相对坐标绝对坐标切换////////////////////////////////////
xjqh()
{
if(rem[7]==10)
   {
    rem[7]=11;
 zxd();
 }
 else
     {
   rem[7]=10;
   zjd();
   }
  }
///////////////////////////////////////////////////////////////
void main(void)
{haomi=9000;
 dianji(60000,1);
 while(RLTT)/////初始归零
     {
   RLTT=0;
   dianji(366,0);
   }
   haomi=0;
 while(1)
    {
  jianpan();
  xianshi();
   if(ajkz==10)
     {
   ajkz=0;
   aj_1=1;
   if(haomij>0)/////小于零时不左走
      {
    haomij--;
    dianji(1,1);
    xianshi();
    }
   }
  if(ajkz==11)/////大于15厘米时不右走
     {
   ajkz=0;
   aj_1=1;
   if(haomij<5150)
      {
    haomij++;
    dianji(1,0);
    xianshi();
    }
   }

  if(ajkz==13)/////切换相对绝对坐标
     {
   ajkz=0;
   xjqh();
   }
     if(ajkz==14)/////确认
        {
         ajkz=0;
         if(ter==0)
            {
             jisuan();
             dianji(haomi,zy_1);
            }
         }
  if(ajkz==15)/////取消
     {
   ajkz=0;
   quhui();
   ter=0;
   }


  }
}
关键字:步进电机  显示坐标  相对坐标 引用地址:步进电机带指针在标尺上移动并显示坐标及相对坐标

上一篇:数码管显示的电子时钟汇编程序
下一篇:数码管显示的电子时钟C51程序

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

基于A3967SLB的步进电机细分驱动系统设计
摘 要: 本文以Allegro公司推出的A3967SLB型串口控制器为步进电机细分驱动系统的硬件核心,实现了步进电机的8细分驱动。论述了上位机与基于单片机的步进电机控制系统之间的串行通信设计,给出了单片机串行通信的硬件接口电路。 关键词:A3967SLB;步进电机;细分驱动;串行通信 步进电机精度高,惯性小,在不失步的情况下没有步距误差积累,特别适用于数字控制的定位系统。传统的细分驱动电路由细分环行分配器、放大器和合成器等部分组成。这种电路应用复杂,灵活性差。本文利用a3967slb作为步进电机微控芯片,简化了步进电机的控制实现。由于单片机资源没有pc丰富,人机界面也没有pc友好,因此,本文采用了主从式结构,即pc用于管理,单片
[单片机]
基于A3967SLB的<font color='red'>步进电机</font>细分驱动系统设计
CAN总线步进电机驱动器
目前,CAN总线步进电机驱动器在当代的应用可谓是越来越广泛,CAN总线步进电机驱动器是值得我们好好学习的,现在我们就深入了解CAN总线步进电机驱动器。  基本内容 现场总线是当今自动化领域技术发展热点之一,被誉为自动化领域计算机局域网。它出现为分布式控制系统实现各节点之间实时、可靠数据通信提供了强有力技术支持。CAN(Controller Area Network)属于现场总线范畴,它是一种有效支持分布式控制或实时控制串行通信网络。较之目前许多RS-485基于R线构建分布式控制系统而言,基于CAN总线分布式控制系统在以下方面具有明显优越性: 首先,CAN控制器工作于多主方式,网络中各节点都可根据总线访问优先权(取决于报文标识
[嵌入式]
步进电机驱动器基础知识
什么是直流电机 使用直流电源的电机叫做直流电机。因此只要把直流电机的端子接到直流电源上,就可以使其简单的动转。直流电机是一种具有优良控制特性的电机。 直流电机的特征。 作为控制用的电机,直流电机具有起动转矩大,体积小,重量轻,转矩和转速容易控制以及效率高等十分优良的特征。 YUSAN直流策电机结构示意图
[模拟电子]
<font color='red'>步进电机</font>驱动器基础知识
基于STM32F103C6与CAN收发器L9616实现一体化步进电机驱动器设计
引言 当前,步进电机已经在工业应用,如自动剥线机、工业机器人、雕刻机、植毛机工作台等涉及到精确定位的场合,得到广泛的应用。常用的步进电机控制系统由驱动模块和控制器模块组成。驱动模块实现功率放大,控制器模块用于产生电机转动的控制信号,上述控制方法将会大量占用控制核心的资源,影响控制系统的实时性及灵活性。本文设计的步进电机驱动器,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,可以使系统设计变得更加灵活、方便。 1、 CAN中继器硬件的设计 1.1 系统的硬件结构 本文设计的基于CAN总线的一体化两相步进电机驱动器系统框图如图1所示,包括CAN收发器L9616、MCU STM32F10
[单片机]
基于STM32F103C6与CAN收发器L9616实现一体化<font color='red'>步进电机</font>驱动器设计
斯泰普步进电机常见问题整合
★★1.什么是步进电机?           ▲ 步 进电机 是一种将数字脉冲信号转化为角位移的执行机构。也就是说,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角、步距角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 ★★2.步进电机分哪几种?           ◎步进电机分三种:永磁式(PM) ,反应式(VR)和混合式(HB)         ▲永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;         ▲反应式步进电机一般为三相,可实现大转矩输出,步进角一般
[嵌入式]
51单片机PWM细分控制步进电机的研究初稿
为什么要PWM细分呢?因为这样可以是步进电机运行平稳、减小噪音、增大转速(MAX的)、增加力矩 为什么要强调是51单片机呢?因为51单片机没有硬件PWM模块,所以只能软件模拟了 研究这玩意儿,我走了许多弯路,看了许多文献,最后发现,尽信书不如无书 就用28系列4相5线电机来说吧。 整步驱动(四相四拍)时序为: A相 B相 C相 D相 1拍 1 0 0 0 2拍 0 1 0 0 3拍 0 0 1 0 4拍 0 0 0 1 我想没人用这样的方式来驱动吧,这震动也太大了。 2细分驱动(四相八拍)时序为: A相 B相 C相 D相
[单片机]
51单片机PWM细分控制<font color='red'>步进电机</font>的研究初稿
PIC单片机之步进电机
大家好, 通过前一期的学习, 我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管、RS232 串口等资源,体会到了学习板的易用性与易学性,看了前几期实例,当你实验成功后一定很兴奋,很有成就感吧!现在我们就趁热打铁,再向上跨一步,一起来学习一下步进电机的工作原理及使用方法,这是我们用单片机来控制机械进行运动的开始。 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机就按设定的方向转动一个固定的角度(步距角)。通过控制脉冲个数来控制角位移量,可以达到准确定位;同时可以通过控制脉冲频率来控制电
[单片机]
PIC单片机之<font color='red'>步进电机</font>
步进电机和伺服电机有什么区别?
机器让人们解放了劳动力,现在的很多工厂都实现了自动化,不再需要人力。自动化的实现离不开电机,电机是机器的动力来源。从1820年发现电流的磁效应到现在将近200年的创新发展,科学家们制造了各种各样的电机。今天就分析一下伺服电机与步进电机的区别。 步进电机和伺服电机有什么区别? 步进电机和伺服电机二者都是控制电机,都能精确控制速度。但是二者控制速度的原理不同:伺服电机是闭环控制(通过编码器反馈等完成),即:会实时测定电机的速度后自动加以调整;步进电机是开环控制,输入一个脉冲步进电机就会转过一固定的角度,但是不对速度进行测定。 其它的不同,伺服电机的启动快。很短的时间内就可以达到额定速度。适宜频繁启停而且有启动转矩要求的情况,同
[嵌入式]
<font color='red'>步进电机</font>和伺服电机有什么区别?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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