步进电机c程序

发布者:PeacefulWarrior最新更新时间:2016-11-16 来源: eefocus关键字:步进电机  c程序 手机看文章 扫描二维码
随时随地手机看文章

*
* STEPPER.C
* sweeping stepper's rotor cw and cww 400 steps
* Copyright (c) 1999 by W.Sirichote
*/

#include c:\mc51\8051io.h  /* include i/o header file */
#include c:\mc51\8051reg.h

register unsigned char j,flag1,temp;
register unsigned int cw_n,ccw_n;

unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}
#define n 400

/* flag1 mask byte
   0x01  run cw()
   0x02  run ccw()
*/

main()

{
  flag1=0;
  serinit(9600);
  disable();  /* no need timer interrupt */
  cw_n = n;    /* initial step number for cw */
  flag1 |=0x01; /* initial enable cw() */

while(1){  
  {
    tick_wait();  /* wait for 10ms elapsed */

    energize();   /* round-robin execution the following tasks every 10ms */
    cw();
    ccw();
  }
        }

}

cw(){
       if((flag1&0x01)!=0)
       {
        cw_n--;       /* decrement cw step number */
        if (cw_n !=0)
         j++;         /* if not zero increment index j */
         else
         {flag1&=~0x01; /* disable cw() execution */
          ccw_n = n;    /* reload step number to ccw counter */
          flag1 |=0x02; /* enable cww() execution */
          }
       }
         
}

ccw(){
       if((flag1&0x02)!=0)
       {
        ccw_n--;       /* decremnet ccw step number */
        if (ccw_n !=0)
         j--;          /* if not zero decrement index j */
         else
         {flag1&=~0x02; /* disable ccw() executon */
          cw_n = n;     /* reload step number to cw counter */
          flag1 |=0x01; /* enable cw() execution */
          }
       }
         
}

tick_wait(){   /* cputick was replaced by simpler ASM code 10ms wait */

    asm" JNB TCON.5,*";   /* wait for TF0 set */
    asm" CLR TCON.5";     /* clear TF0 for further set */
    asm" ORL TH0,#$DC";   /* reload TH0 with $DC, TL0 = 0 */
}

energize(){

    P1 = step[(j&0x07)];  /* only step 0-7 needed */
}

关键字:步进电机  c程序 引用地址:步进电机c程序

上一篇:89C51单片机智能语音拨号报警系统的设计
下一篇:两相5、6线步进电机C语言程序

推荐阅读最新更新时间:2024-03-16 15:20

PIC16F873 C程序(PICC9.8写)
#include pic.h unsigned int i,max,X11=0,X12=0,X13=0,X14=0,X15=0,t=2; unsigned long AD_vasule ,ADOUT,ADOUT_2; unsigned long timer ; //11-15脚输出计数器 unsigned long delay11=0 ; //模拟输入延时 unsigned long TIMEALL ; unsigned long DELAY; #define TIME 2 //设置时间1秒 void up_on(void) //I/O配置函数 { INTCON=0x00; //关闭所有中断 ADCON1
[单片机]
步进电机控制芯片UDN2916LB原理及应用
UDN2916LB是SANKEN公司推出的一款两相步进电机双极驱动集成电路,能够驱动双绕组双极步进电机,特别适用于目前国内税控市场双步进微型打印机电机的控制。 UDN2916LB适用的电机电压范围为10~45V,逻辑电压不能超过7V;通过内部脉宽调制控制器(PWM)可实现最大750mA的输出电流;内置1/3和2/3分割器;逻辑输入实现1相/2相/W1-2phase激励模式;内置过热和交叉电流保护功能;集成钳位二极管;内置防止低压误操作等保护功能。UDN2916LB内部结构如图所示,芯片有两组电路构成,每组电路由PWM控制器、电桥及辅助电路组成。 图1 UDN2916LB内部结构框图 PWM电流控制电路 每个PWM控制器
[工业控制]
TMC2240智能高性能步进电机驱动器IC概述
TMC2240 是一款智能高性能步进电机驱动器 IC,具有串行通信接口(SPI、UART)和广泛的诊断功能。它结合了业界最先进的步进电机驱动器,该驱动器基于 256 步内置分度器和两个完全集成的 36V、3.0AMAX H 桥以及非耗散集成电流感应 (ICS)。 TMC2240 具有丰富的诊断和保护功能,例如短路保护/OCP、热关断、欠压锁定。在热关断和欠压锁定事件期间,驱动器被禁用。此外,TMC2240 还提供测量驱动器温度、估计电机温度和测量一个外部模拟输入的功能。 TMC2240ATJ+与TMC2240AUU+参数及应用是一样的,唯独封装不同。TMC2240AUU+的封装为TSSOP38 (9.7×4.4)。 附带
[嵌入式]
TMC2240智能高性能<font color='red'>步进电机</font>驱动器IC概述
步进电机降低振动噪音的解决方法
步进电机降低振动噪音的解决方法   1、与驱动电路有关的方法       步进电机振动噪音由驱动电路引起的原因如下:         (1)定子电流的高次谐波含量(细分时产生)     (2)相电流的不平衡,特别是非恒电流控制状态     (3) 电源的波动     (4)激磁电流的波形         其中(1)的高次谐波为主要原因。步进电机使用方波电流驱动,必然含有大量的高次谐波,由此产生振动和噪音。因此驱动电流最好为正弦波。  接近正弦波的驱动方法有步进电机的细分步进驱动。     2、与电机有关的方法       步进电机的振动噪音由步进电机本体引起的原因如下:
[嵌入式]
单芯片集成电路优化自适应转向大灯系统的设计
高强度放电灯(氙气灯)车辆前大灯越来越成为全球车辆制造商所选用的技术。为了最大限度地使用氙气灯所提供的优质照明,同时降低由于不当定向所造成的氙气灯光强过高所导致的危险,自适应转向大灯系统(AFS)的重要性与日俱增。   这些系统能够在垂直方向上轻微地调节车前大灯的光束,以此来补偿车辆相对于路面的倾斜度的变化。同时,它们也能够根据车辆转向的变化,相应地让车前大灯旋转。这样的光束能够提供最佳及最安全的前方道路照明,显著改善司机转弯时道路的可视度。 一、自动校平—减弱强光   前大灯自动校平系统的工作原理是在车辆倾斜的情况下仍保证灯光与路面呈水平状态(见下图)。车辆处于停止状态时可能会由于某些原因而倾斜,例如有乘客上车,或
[汽车电子]
单芯片集成电路优化自适应转向大灯系统的设计
分享几种管理C程序中标志位的方法
在嵌入式开发中,难免会涉及到非常多的标志位处理,特别是玩单片机、裸机开发的朋友,比如跟一些模块配合联调会遇到各种信号是否到位、成功等等状态,而这些信号大多都是bool类型,1个bit即可进行标识。 当然,如果仅仅是几个标志,直接拿个uint8_t的整形来进行标识也不会影响什么,但如果特别多的话似乎就比较废RAM了。然而,为了更好的管理这些标志位等,有个如下几种方式供大家更好的管理这些标志位 : 1 位域直接标识 采用位域是管理这些标志位比较直接且方便的方式,代码如下所示: 1typedef union _tag_SystemFlag 2{ 3 uint16_t all; 4 struct 5 {
[单片机]
基于MCU和DSP的步进电机控制技术
步进电机已经渗透入我们生活的方方面面,本文介绍了一些重要的步进电机相关技术,为开发人员基本了解步进电机的工作原理提供了足够的信息,同时也介绍了用微控制器或数字信号处理器控制步进电机的方法。 步进电机也叫步进器,它利用电磁学原理,将电能转换为机械能,人们早在20世纪20年代就开始使用这种电机。随着嵌入式系统(例如打印机、磁盘驱动器、玩具、雨刷、震动寻呼机、机械手臂和录像机等)的日益流行,步进电机的使用也开始暴增。不论在工业、军事、医疗、汽车还是娱乐业中,只要需要把某件物体从一个位置移动到另一个位置,步进电机就一定能派上用场。步进电机有许多种形状和尺寸,但不论形状和尺寸如何,它们都可以归为两类:可变磁阻步进电机和永磁步
[单片机]
基于MCU和DSP的<font color='red'>步进电机</font>控制技术
PLC程序丢失有哪些原因?
PLC底层是单片机,单片机一般通过RAM和ROM这些东西来保存数据,RAM是断电就消失了,而ROM在断电下依然可以保持,除非是外力来让它改变了。因为数据比较大,很多早期PLC使用了电池来给RAM保持,只要电池电压低于某个值,就可能会造成数据丢失,更换电池时候,需要在电源通电前提下进行,否则一样会造成数据丢失。 现在数据很多是通过EEPROM或者FLASH来保存的,这两者断电后都不会造成数据丢失,如果数据丢失了,往往是硬件上坏掉了。 还有一种是EPROM,需要紫外线刷新的,盖了一张纸在上边,如果你撕掉了这张纸,会看到下边有个洞口的,这时候如果是白天,太阳光有紫外线,会把数据弄丢的,如果是在黑暗状态下,是不会有问题的。PLC虽然比
[嵌入式]
PL<font color='red'>C程序</font>丢失有哪些原因?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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