首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ATMEGA8驱动4线步进机程序

ATMEGA8驱动4线步进机程序

#include

#include
#define uchar unsigned char
#define uint unsigned int
uchar np;
//步进电机运行数据表
const uchar motortb[]={0x11,0x99,0x88,0xCC,0x44,0x66,0x22,0x33};
void delay_nms(uint ms)// 每步延时的子程序
{
uint i;
for(i=0;i _delay_loop_2(8*250);
}
void a_step(uchar d,uchar t) //步进电机走一步d=0 正转d=1 反转 t 越大走得越慢
{
if (d&0x01)
{
if (np==0)
np=7;
else
np--;
}
else
{
if (np==7)
np=0;
else
np++;
}
PORTD=motortb[np];
delay_nms(t);
}
void a_turn(uchar d,uchar t)// 步进电机走一圈
{
uchar i;
for (i=0;i<96;i++)
a_step(d,t);
}
int main(void)
{
DDRD=0xff;
PORTD=0x44;
DDRB=0xff;
PORTB=0xff;
np=4;
while (1)
a_turn(1,200);
}
返回列表