步进电机控制程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机控制程序
#include
bit Flag;//定义正反转标志位
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格/******************************************************************/ /* 延时函数 */
/******************************************************************/ void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/ /* 主函数 */
/******************************************************************/ main()
{
unsigned char i;
EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开
while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/ /* 中断入口函数 */
/******************************************************************/ void ISR_Key(void) interrupt 2 using 1
{
Delay(300);
Flag=!Flag; //s3按下触发一次,标志位取反
}