欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
五線四相步進電機,求一個控制程序(實物見圖)
[打印本頁]
作者:
測控系吳~
時間:
2019-7-22 10:13
標題:
五線四相步進電機,求一個控制程序(實物見圖)
電路應該是這樣連的吧?
Z3%ZGM064XR]7_~[]`@YSB8.jpg
(3.52 MB, 下載次數: 70)
下載附件
2019-7-22 10:13 上傳
作者:
悲喜卒讀
時間:
2019-8-25 15:48
我的這一個是用uln2003驅動電路的
#include <reg52.h>
#define uchar unsigned char
sbit jia_key=P3^7; //定義加鍵
sbit jian_key=P3^6; //定義減鍵
sbit zf_key=P3^5; //定義正反鍵
//sbit dula=P2^6; //數碼管段選端定義
//sbit wela=P2^7; //數碼管位選端定義
bit flag=0; //定義正反轉的
uchar num=0,show_num=2,maichong=4,table_begin=0;
uchar code table1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01}; //在從0x01到0x08表示正轉,從0x08到0x01表示反轉,
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數碼管顯示數
void delay(uchar i) //延時函數
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
/*void display()
{
dula=0;
P0=table[show_num];
dula=1;
dula=0;
wela=0;
P0=0XFE;
wela=1;
wela=0;
delay(5);
P0=table[0];
dula=1;
dula=0;
P0=0XFd;
wela=1;
wela=0;
delay(5);
} */
void key() //確定按鍵
{
if(jia_key==0)
{
delay(5);
if(jia_key==0)
{
num++;
if(num==4)
num=3;
while(jia_key==0);
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
{
if(num!=0)
num--;
else
num=0;
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);
if(zf_key==0)
{
flag=~flag;
while(zf_key==0);
}
}
}
void dispose() //對按鍵的處理
{
switch(num)
{
case 0:
maichong=5;
break;
case 1:
maichong=4;
break;
case 2:
maichong=3;
break;
case 3:
maichong=2;
break;
}
if(flag==0) //正反變化的表示
table_begin=0;
else
table_begin=4;
}
void qudong() //驅動電機轉動,最重要的部分
{
uchar j;
for(j=0+table_begin;j<4+table_begin;j++)
{
P0=table1[j]; //控制正反轉的
delay(maichong*5);//控制速度的
}
}
void main() //主函數
{
while(1)
{
key();
dispose();
qudong();
}
}
復制代碼
作者:
salon_lee
時間:
2019-8-27 21:47
/* 兩個ULN2003驅動兩個5線4相步進電機 */
/* 步進電機四相端口*/
#define pMotor_A_A_Init() GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_B_Init() GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_C_Init() GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_D_Init() GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_A_Init() GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_B_Init() GPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_C_Init() GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_D_Init() GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST)
/* A AB B BC C CD D DA */
uint8_t Beat_A_Code[8] = {0x80,0xC0,0x40,0x60,0x20,0x28,0x08,0x88}; //步進電機A四相八拍驅動
/* A AB B BC C CD D DA */
uint8_t Beat_B_Code[8] = {0x01,0x05,0x04,0x0C,0x08,0x18,0x10,0x11}; //步進電機B四相八拍驅動
int16_t motor_A_Beats = 0;
int16_t motor_B_Beats = 0;
uint8_t index_A = 0;
uint8_t index_B = 0;
#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void) //定時中斷 1ms
{
/* 步進電機A轉動控制流量值大于4L */
if(motor_A_Beats != 0)
{
if(motor_A_Beats > 0) //正轉
{
index_A++;
index_A &= 0x07;
motor_A_Beats--;
}
else //反轉
{
index_A--;
index_A &= 0x07;
motor_A_Beats++;
}
temp0 = GPIOC->ODR;
temp0 &= 0x17;
temp0 |= Beat_A_Code[index_A];
GPIOC->ODR = temp0;
}
else
{
GPIOC->ODR &= 0x17;
}
/* 步進電機B轉動控制流量值小于等于4L */
if(motor_B_Beats != 0)
{
if(motor_B_Beats > 0) //正轉
{
index_B++;
index_B &= 0x07;
motor_B_Beats--;
}
else //反轉
{
index_B--;
index_B &= 0x07;
motor_B_Beats++;
}
temp2 = GPIOD->ODR;
temp2 &= 0xE2;
temp2 |= Beat_B_Code[index_B];
GPIOD->ODR = temp2;
}
else
{
GPIOD->ODR &= 0xE2;
}
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
作者:
salon_lee
時間:
2019-8-27 21:51
/* 兩個ULN2003驅動兩個5線4相步進電機 */
/* 步進電機四相端口*/
#define pMotor_A_A_Init() GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_B_Init() GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_C_Init() GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_A_D_Init() GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_A_Init() GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_B_Init() GPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_C_Init() GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST)
#define pMotor_B_D_Init() GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST)
/* A AB B BC C CD D DA */
uint8_t Beat_A_Code[8] = {0x80,0xC0,0x40,0x60,0x20,0x28,0x08,0x88}; //步進電機A四相八拍驅動
/* A AB B BC C CD D DA */
uint8_t Beat_B_Code[8] = {0x01,0x05,0x04,0x0C,0x08,0x18,0x10,0x11}; //步進電機B四相八拍驅動
int16_t motor_A_Beats = 0;
int16_t motor_B_Beats = 0;
uint8_t index_A = 0;
uint8_t index_B = 0;
#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void) //定時中斷 1ms
{
/* 步進電機A轉動控制流量值大于4L */
if(motor_A_Beats != 0)
{
if(motor_A_Beats > 0) //正轉
{
index_A++;
index_A &= 0x07;
motor_A_Beats--;
}
else //反轉
{
index_A--;
index_A &= 0x07;
motor_A_Beats++;
}
temp0 = GPIOC->ODR;
temp0 &= 0x17;
temp0 |= Beat_A_Code[index_A];
GPIOC->ODR = temp0;
}
else
{
GPIOC->ODR &= 0x17;
}
/* 步進電機B轉動控制流量值小于等于4L */
if(motor_B_Beats != 0)
{
if(motor_B_Beats > 0) //正轉
{
index_B++;
index_B &= 0x07;
motor_B_Beats--;
}
else //反轉
{
index_B--;
index_B &= 0x07;
motor_B_Beats++;
}
temp2 = GPIOD->ODR;
temp2 &= 0xE2;
temp2 |= Beat_B_Code[index_B];
GPIOD->ODR = temp2;
}
else
{
GPIOD->ODR &= 0xE2;
}
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1