单片机用C语言如何控制步进电机
来源:百度知道 编辑:UC知道 时间:2024/06/07 06:54:27
#include <reg52.h>
sbit P0_0=P0^0;
sbit P0_1=P0^1;
unsigned char codes[2][8]={{0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03}, //9,18,36,45,54,63,72,81度 顺时针
{0x0b,0x09,0x0d,0x0c,0x0e,0x06,0x07,0x03}}; //9,18,36,45,54,63,72,81度 逆时针
unsigned char counts,flag,t;
// 度数,正/反转,速度控制
delay(unsigned char x) //延时
{
unsigned char i;
for( i=0;i<x;i++);
}
main()
{
TMOD=0x01; //定时器初始化
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(P0_0==0) //判断正转按键是否按下
{
delay(5);
if(P0_0==0) flag=0; //判断是否真正按下
}
if(P0_1==0) //判断反转按键是否按下
{
delay(5);
if(P0_1==0) flag=1; //判断是否真正按下
}
}
}
void motor() interrupt 1
{
t++; //控制速度
if(t==8)
{
t=0;
P1=codes[flag][co