📄 a3972步进驱动.c
字号:
/*************************************************************
单片机:AT89S52
文件名:基于A3972的步进电机细分控制程序
作者 :测控09
程序说明:
**************************************************************/
#include<reg52.h>
#include"A3972.h"
unsigned char gzh = 0x00;
//3F位6个1也就是电流最大
unsigned char DRSIN[32]={0x3F,0x3F,0x3F,0x3E,0x3E,0x3D,0x3C,0x3B, /*细分码表*/
0x3A,0x38,0x37,0x35,0x33,0x31,0x2F,0x2D,
0x2B,0x29,0x26,0x24,0x21,0x1E,0x1B,0x18,
0x16,0x13,0x10,0x0C,0x09,0x06,0x03,0x01};
unsigned char IR[4]={0x02,0x03,0x01,0x00};//控制电流方向
void main(void)
{
unsigned char i,j;
//IE = 0;//关闭所有中断
WriteW1(64,15,10,10);
//Delay(100);
while(1)
{
for(j=0; j<4; )
{
for(i=0; i<=31; i++ ) /*1/T,3/T*/
{ /* H2 H1 */
WriteW0(IR[j]|gzh,DRSIN[31-i],DRSIN[i]);
}
j++;
for(i=0; i<=31; i++ ) /*2/T,4/T*/
{
WriteW0(IR[j]|gzh,DRSIN[i],DRSIN[31-i]);
}
j++;
for(i=0; i<=31; i++ ) /*1/T,3/T*/
{
WriteW0(IR[j]|gzh,DRSIN[31-i],DRSIN[i]);
}
j++;
for(i=0; i<=31; i++ ) /*2/T,4/T*/
{
WriteW0(IR[j]|gzh,DRSIN[i],DRSIN[31-i]);
}
j++;
}/*END OF FOR(J)*/
}/*END OF WHILE(1)*/
}/*END OF MAIN()*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -