本文共 3099 字,大约阅读时间需要 10 分钟。
51驱动
/*******************************************************ULN2003驱动5V减速步进电机程序STC89C52RC*******************************************************接线方式:IN1 ---- P00IN2 ---- P01IN3 ---- P02IN4 ---- P03+ ---- +5V- ---- GND*********************/#include#define uchar unsigned char#define uint unsigned int#define MotorData P0 //步进电机控制接口定义uchar phasecw[4] ={ 0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-Auchar phaseccw[4]={ 0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D//ms延时函数void Delay_xms(uint x){ uint i,j; for(i=0;i
STM32
motor.h#ifndef _MOTOR_H#define _MOTOR_H#include "stm32f10x.h"#include "delay.h"#include "sys.h"/********************************************************接线方式:IN1 ---- B11IN2 ---- B12IN3 ---- B13IN4 ---- B14+ ---- +5V- ---- GND*********************/#define STEP_MOTOR_PORT GPIOB //定义IO接口所在组#define STEP_MOTOR_A GPIO_Pin_8 //定义IO接口#define STEP_MOTOR_B GPIO_Pin_9 //定义IO接口#define STEP_MOTOR_C GPIO_Pin_10 //定义IO接口#define STEP_MOTOR_D GPIO_Pin_11 //定义IO接口#define MOTOR_A_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A)#define MOTOR_B_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B)#define MOTOR_C_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C)#define MOTOR_D_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_D)#define MOTOR_A_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A)#define MOTOR_B_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B)#define MOTOR_C_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C)#define MOTOR_D_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_D)void STEP_MOTOR_Init(void);//初始化void STEP_MOTOR_OFF (void);//断电状态void MotorCW(void);//顺时针转动void MotorCCW(void);//顺时针转动#endif
motor.c
#include "motor.h"//初始化void STEP_MOTOR_Init(void){ //接口初始化 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); //APB2外设GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//启动AFIO重映射功能时钟 GPIO_InitStructure.GPIO_Pin = STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D; //选择端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) GPIO_Init(STEP_MOTOR_PORT, &GPIO_InitStructure); //必须将禁用JTAG功能才能做GPIO使用 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);// 改变指定管脚的映射,完全禁用JTAG+SW-DP STEP_MOTOR_OFF(); //初始状态是断电状态 }//断电状态void STEP_MOTOR_OFF (void){ MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L;}//顺时针转动void MotorCW(void){ u16 i; for(i=0;i<100;i++) { MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_H; delay_ms(4); MOTOR_A_L,MOTOR_B_L,MOTOR_C_H,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_H,MOTOR_C_L,MOTOR_D_L; delay_ms(4); MOTOR_A_H,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L; delay_ms(4); } }//逆时针转动void MotorCCW(void){ u16 i;for(i=0;i<100;i++) { MOTOR_A_H,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_H,MOTOR_C_L,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_L,MOTOR_C_H,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_H; delay_ms(4); } }
转载地址:http://rbyzi.baihongyu.com/