5线四相八拍步进电机的C51演示程序

发布者:以泉换泉最新更新时间:2016-10-29 来源: eefocus关键字:5线四相八拍  步进电机  C51 手机看文章 扫描二维码
随时随地手机看文章
本试验板设有四个按键,其功能分别为“启动/停止”“正转/反转”“速度-”“速度+”。

定义P2口与试验板相接,低四位为驱动信号,高四位为四个按键口。

自己原创的完整源程序如下:

#include

#define unit unsigned int

sbit set1=P2^4;
sbit set2=P2^5;
sbit set3=P2^6;
sbit set4=P2^7;

unit i,j,f,n;
unit R[]={0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe,0xf6};

void Delay(unit t){
  while(--t);
}

void main(void)
{
   f=1;j=1;
   n=300;
   for(;;){
    if(set2==0) {n=n+2;Delay(300);};
  if((set1==0)&&(n>70)) {n=n-2;Delay(300);};
     if(set3==0) {f=!f;Delay(30000);};
  if(set4==0) {j=!j;Delay(30000);};
     for(i=0;i<8;i++){
       if(f==1) P2=R[i*j];
    if(f==0) P2=R[7-i*j];
       Delay(n);
     }
   }

关键字:5线四相八拍  步进电机  C51 引用地址:5线四相八拍步进电机的C51演示程序

上一篇:SPI Protocol Problem in AT89C51ED2
下一篇:直流电机PWM闭环控制实验(完整的C51程序)

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

关于在KEIL C51 中嵌入汇编以及C51与A51间的相互调用
如何在 KEIL C51(v6.21) 中调用汇编函数的一个示例 有关c51调用汇编的方法已经有很多帖子讲到,但是一般只讲要点,很少有对整个过程作详细描述,对于初学者是不够的,这里笔者 通过一个简单例子对这个过程进行描述,希望能对初学者有所帮助。几年来,在这个论坛里笔者得到很多热心人指导,因此也希望 藉此尽一点绵薄之力。 在这个例子里,阐述了编写c51程序调用汇编函数的一种方法,这个外部函数的入口参数是一个字符型变量和一个位变量,返回值是 一个整型变量。例中,先用c51写出这个函数的主体,然后用SRC控制指令编译产生asm文件,进一步修改这个asm文件就得到我们所 要的汇编函数。该方法让编译器自动完成各种段的安排,提高了汇编程
[单片机]
c51与汇编语言的接口
1.c51与汇编语言的模块内接口 有时候,需要使用 汇编语言 来编写程序,比如对硬件进行操作或在一些对时钟要求很严格的场合,但又不希望用汇编语言来编写全部程序或调用汇编语言编写的函数,那么可以通 过预编译指令 asm',在C代码中插入汇编代码。 方法是用#pragma语句。具体结构是: #pragma asm 汇编行 #pragma endasm 这种方法是通过#pragma asm和#pragma endasm告诉c51编译器,中间行不用编译为汇编行。例如: 2.c51与汇编语言的模块间接口 C51模块与汇编语言模块的接口较简单,分别用C5l与A51对源文件进行编译,然后用L51连接obj文件即可。模块
[单片机]
Keil C51对C语言的关键词扩展之一: _at_
_at_关键词用于在定义变量时指定变量所在地址。 _at_关键词使用示例如下: struct link { struct link idata *next; char code *test; }; struct link list idata _at_ 0x40; /* 定义位于内部RAM低128字节区0x40地址处的 结构体 */ char xdata text _at_ 0xE000; /* 定义位于外部RAM 0xE000地址处的 数组 */ int xdata i1 _at_ 0x8000; /* 定义位于外部RAM 0x8000地址处的 整型变量 */ volatile char
[单片机]
步进电机定位控制系统VHDL程序与仿真
步进电机定位控制系统VHDL程序与仿真 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity step_motor is port (reset:in STD_LOGIC; --系统复位信号 dir: in STD_LOGIC; --方向控制信号 clk: in STD_LOGIC; --系统时钟信号 ini: in STD_LOGIC; --初始化使能信号 manner: in STD_LOGIC_VECTOR (1 dow
[嵌入式]
PSoC3 双轴步进电机细分控制
本文给出了一种使用PSoC3 CY8C3866AXI-040芯片和L298双全桥功率芯片对两轴步进电机控制的方法,该方案电路简单,控制方便,实验结果表明,控制系统运行正常,可靠性较高。   1,概述步进电机是一种把电脉冲信号变成直线位移或角位移的控制电机。它的位移速度与脉冲频率成正比,位移量与脉冲数成正比。每来一个脉冲电压, 转子就旋转一个步距角。根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,从而使电机旋转。步进电机具有步进数可控、运行平稳、价格便宜的优点,在加速器控制系统中的应用很广。本文介绍了一种两轴步进电机细分控制系统,使用Cypress的PSoC3芯片CY8C3866AXI-040和步进电机功率芯片L298来实
[嵌入式]
PSoC3 双轴<font color='red'>步进电机</font>细分控制
单片机c语言教程:C51数据类型
每写一个程序,总离不开数据的应用,在学习 c51 语言的过程中掌握理解数据类型也是 很关键的。先看表 3-1,表中列出了 KEIL uVision2 单片机c语言编译器所支持的数据类型。在标准C语言中基本的数据类型为 char,int,short,long,float 和 double,而在c51编译器中int 和 short 相同,float 和 double 相同,这里就不列出说明了。下面来看看它们的具体定 义: 数据类型 长 度 值 域 unsigned char 单字节 0~255 signed char 单字节 -128~+127 unsigned int
[单片机]
keil c51中的data idata xdata code详解
51单片机采用哈佛结构。内存空间编址有重叠。可以在不同总线(本文称其为总线域,简称域)上定义不同的变量。在keilc51中定义了data idata xdata code几种域修饰符。这些修饰符决定了变量访问方式。 data:用mov直接访问的内部RAM idata:用mov @间接访问的内部RAM xdata:用movx访问的外部RAM code:用movc访问的rom 这些假定以上以及类型为where。数据类型为type。 干货: 变量(包括指针)默认存储在data中。指针能够智能的指向所有的域。 指定变量(包括指针)在某个域时,域修饰符写在变量类型后面。type where value,type* where po
[单片机]
keil <font color='red'>c51</font>中的data idata xdata code详解
步进电机开环控制与闭环控制有什么区别?
步进电机开环控制和闭环控制的区别 概述: 步进电机是一种特殊的电机,与其他电机不同的是它能够以固定步进角度旋转,能够控制其转速和转向。步进电机常用于控制精度要求较高的场合,如打印机、数码相机等。而对于步进电机的控制,一般有开环控制和闭环控制两种方法。 开环控制基本概念: 开环控制(Open Loop Control)就是将电脑或其他控制器输出的控制信号直接作用于电机,以期望实现所需的控制任务。开环控制没有反馈回路,不能对步进电机运动实时监测和调整,只能使电机在所给定的控制信号下按照预先设定的步距顺序运行。 优点: 开环控制简单、直观,有较高的自动化水平。 缺点: 在实现控制效果和性价比之间是充满矛盾的,而且误差一般较大。由
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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