lpc1788控制步进电机28BYJ-48

下面直接上代码:

#include "lpc177x_8x.h"
#include "lpc177x_8x_clkpwr.h"
#include "lpc177x_8x_gpio.h"
#include "debug_frmwrk.h"
#include "led.h"

volatile uint32_t cycleCounter;
void DelayMs(uint32_t delay)
{
  uint32_t startTime = cycleCounter;

  while ((uint32_t)(cycleCounter - startTime) <= delay);
}
void SysTick_Handler(void) //SysTick handler sub-routine (1ms)
{
  cycleCounter++;
}

uint32_t a[8]={0xFF8FFFFF,0xFFCFFFFF,0xFF4FFFFF,0xFF6FFFFF,0xFF2FFFFF,0xFF3FFFFF,0xFF1FFFFF,0xFF9FFFFF};

int main(void)
{
	SysTick_Config(CLKPWR_GetCLK(CLKPWR_CLKTYPE_CPU) / 1000);

	GPIO_Init();//ʹÄÜGPIO¿ÚµÄʱÖÓ
	GPIO_SetDir(4,1<<20, GPIO_DIRECTION_OUTPUT);
	GPIO_SetDir(4,1<<21, GPIO_DIRECTION_OUTPUT);
	GPIO_SetDir(4,1<<22, GPIO_DIRECTION_OUTPUT);
	GPIO_SetDir(4,1<<23, GPIO_DIRECTION_OUTPUT);

	while(1)
	{
		 GPIO_SetValue(4, a[0]);
		 DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[1]);
                   DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[2]);
                   DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

	          GPIO_SetValue(4, a[3]);
                   DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[4]);
                   DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[5]);
                    DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[6]);
                    DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);

		 GPIO_SetValue(4, a[7]);
                   DelayMs(1);
		 GPIO_ClearValue(4,0xFFFFFFFF);
  }
}

其中GPIO_ClearValue(4,0xFFFFFFFF);这句代码非常重要。 因为如果有些位不清零的话,下次setvalue某些位为0是不行的,setvalue只能设置1.

时间: 2024-10-13 15:41:55

lpc1788控制步进电机28BYJ-48的相关文章

STM32串口控制步进电机(原创)

用的42步进电机: 厂家可能不一样,两项四线步进电机,里面有两个线圈.在电机什么电都没有接的情况下,用万用表测量四个管脚:两两短接(或者阻值很小)的为一组,可以分别接A+,a-剩余接B+,B-;顺序可以互换:  经测,我用的17hs4417  黑绿一组,红蓝一组. 建议还是买个步进电机驱动器,五六十一个,相当好用. 贴一下STM32串口控制步进电机的代码: #include "led.h" #include "delay.h" #include "key.

利用树莓派控制步进电机——C语言

电路连接方式请看另一篇博文:[利用树莓派控制步进电机--pythony语言] /****************************************************** * File name: stepMotor.c * Author: Jason Dai * Date: 2015/01/26 ******************************************************/ #include <wiringPi.h> #include <

STM32在定时器中控制步进电机

写WEB程序的时候,发现如果加上步进电机控制的话,就会出现问题.原因是如果把电机控制放在uip循环中处理的话,因为控制电机涉及到时间问题.所以必须解决,想到的方法就是多任务的思想.把步进电机的处理放在定时器中断里面.这样的话就能避免问题了.顺便学习了库函数操作定时器.这里用到的定时器功能简单,只需要产生更新中断. 下面是定时器初始化代码 //定时器3初始化 //arr:定时重装值 //psc:分频值 void TIM3_Init(uint16_t arr, uint16_t psc) { TIM

利用树莓派控制步进电机——Python语言

步进电机的优点在于它能够被精确定位,正向或反向一次性转动"一步",并且也能够连续转动. #!/usr/bin/env python ######################################################### # File name: stepMotor.py # Author: Jason Dai # Date: 2015/01/26 ########################################################

张高兴的 Windows 10 IoT 开发笔记:使用 ULN2003A 控制步进电机

GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/ULN2003A

控制步进电机转向

单转 code segement     assume cs:code,ds:code     org 100hstart:jmp begin     psta db 05h,15h,14h,54h,50h,51h,41h,45h  ;相序表message db 'Press sw2 to start !'             ;系统提示        db 0dh,0ah        db 'if you want to quit,press sw1 !'        db 0dh,0

树莓派通过GPIO控制步进电机

一.接线方式与GPIO调用方法: 电源接入+5v和GND In1-4分别接GPIO1-4 正转时,GPIO1-4分次传入:[1,0,0,0],[sleep],[0,1,0,0],[sleep],[0,0,1,0],[sleep],[0,0,0,1] 逆转时,GPIO1-4分次传入:[0,0,0,1],[sleep],[0,0,1,0],[sleep],[0,1,0,0],[sleep],[1,0,0,0] 停止时,GPIO1-4一次传入:[0,0,0,0] 二.电机图

51单片机实现四相步进电机控制实例

-------------------------------------------- 工作原理见书<51单片机应用及原理--基于KeilC和Proteus,陈海宴>P178-180 -------------------------------------------- 步进电机控制应用实例 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

两相四线微型步进电机基本控制

控制任务 通过A4988驱动模块,控制步进电机正转反转 电路设计 见下图 程序设计 1 int x; 2 3 void setup() 4 { 5 pinMode(6,OUTPUT); // Enable 6 pinMode(5,OUTPUT); // Step 7 pinMode(4,OUTPUT); // Direction 8 digitalWrite(6,LOW); // Set Enable low 9 } 10 11 void loop() 12 { 13 digitalWrite(