51开发板(新手)
小白刚开始学,可不可以来个大佬帮我看看为啥我用串口通信控制步进电机不成功啊?#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit IN1_A=P1^0;
sbit IN2_B=P1^1;
sbit IN3_C=P1^2;
sbit IN4_D=P1^3;
#define STEPMOTOR_MAXSPEED 1
#define STEPMOTOR_MINSPEED 5
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void step_motor_28BYJ48_send_pulse(u8 step,u8 dir)
{
u8 temp=step;
if(dir==0)
temp=7-step;
switch(temp)
{
case 0: IN1_A=1;IN2_B=0;IN3_C=0;IN4_D=0;break;
case 1: IN1_A=1;IN2_B=1;IN3_C=0;IN4_D=0;break;
case 2: IN1_A=0;IN2_B=1;IN3_C=0;IN4_D=0;break;
case 3: IN1_A=0;IN2_B=1;IN3_C=1;IN4_D=0;break;
case 4: IN1_A=0;IN2_B=0;IN3_C=1;IN4_D=0;break;
case 5: IN1_A=0;IN2_B=0;IN3_C=1;IN4_D=1;break;
case 6: IN1_A=0;IN2_B=0;IN3_C=0;IN4_D=1;break;
case 7: IN1_A=1;IN2_B=0;IN3_C=0;IN4_D=1;break;
default: IN1_A=0;IN2_B=0;IN3_C=0;IN4_D=0;break;
}
}
void uart_init(u8 baud)
{
TMOD|=0X20;
SCON=0X50;
PCON=0X80;
TH1=baud;
TL1=baud;
ES=1;
EA=1;
TR1=1;
}
void main()
{
u8 dir=0;
u8 step=0;
u8 speed=STEPMOTOR_MAXSPEED;
u8 reg_data=0;
uart_init(0XFA);
while(1)
{
reg_data=SBUF;
// switch(reg_data)
// {
// case 0x11:step_motor_28BYJ48_send_pulse(step++,dir);break;
// case 0x22:dir=!dir;break;
// case 0x33:if(speed>STEPMOTOR_MAXSPEED) speed-=1;break;
// case 0x44:if(speed<STEPMOTOR_MINSPEED) speed+=1;break;
// }
if(reg_data==0xff)
{
dir=!dir;
}
else if(reg_data==0x22)
{
if(speed>STEPMOTOR_MAXSPEED) speed-=1;
}
else if(reg_data==0x11)
{
if(speed<STEPMOTOR_MINSPEED) speed+=1;
}
if(reg_data)
step_motor_28BYJ48_send_pulse(step++,dir);
if(step==8)step=0;
delay_ms(speed);
reg_data=0;
}
}
void uart() interrupt 4
{
u8 reg_data;
RI=0;
reg_data=SBUF;
SBUF=reg_data;
while(!TI);
TI=0;
}
页:
[1]