- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机控制步进电机程序及解释
13.相关程序附录
#include main.h
//电机反向运行的延时计数器
uword tiDelay1,tiDelay2,tiDelay3;
//电机运行的脉冲计数器
ulong ctPulse1,ctPulse2,ctPulse3;
//串口控制的电机方向、脉冲宽度和脉冲数量
ubyte MOT_direct1,MOT_direct2,MOT_direct3,RS_Status,a; //电机方向
ubyte MOT_PulseTime1,MOT_PulseTime2,MOT_PulseTime3; //电机脉冲宽度
uword MOT_PulseNum1,MOT_PulseNum2,MOT_PulseNum3; //电机脉冲数
//串口接收变量
ubyte RS_Data[RS_LENGTH]; //串口接收数组
ubyte RS_Indx; //串口接收数组指针
ubyte RS_Status; //串口接收状态标志
//定时器变量
ubyte B_TimerStart; //0.5ms定时器标志位
unsigned int i,j,t,d1,d2,d3,c=0;
unsigned int maxt,maxb;
//上盘抬起或下盘下降子程序
void shangpantaiqizichengxu()
编程思想:,在LabVIEW里面设置合适的转速,合适的转角,发出脉冲,子程序的计数脉冲,脉冲宽度都是由所发脉冲决定,根据计数脉冲,脉冲宽度的要求,编写程序,发出合适的脉冲,控制电机达到要求的转速与转角,通过控制P9_P0口、P9_P1口、P9_P2口来控制电机转向,实现我们想要的运动。
{
int NUM1=0,NUM2=0,NUM3=0;
int flag=0;
P9_P3=0;
P9_P4=0;
P9_P5=0;
P9_P0=1; // P9_P0口控制电机转向,将其置1,电机顺时针转动
P9_P1=1; // P9_P1口控制电机转向,将其置1,电机顺时针转动
P9_P2=1; // P9_P2口控制电机转向,将其置1,电机顺时针转动
while(NUM1!=MOT_PulseNum1||NUM2!=MOT_PulseNum2||NUM3!=MOT_PulseNum3)
//当电机一、二、三的计数次数都达到设定值时跳出while循环,否者继续执行
{ flag++; //用来记录走过多少个0.5ms
if(0==(flag-1)%(2*MOT_PulseTime1)) 0020 //第1个电机所需要的脉冲
//2*MOT_PulseTime1即MOT_PulseTime1/0.5,说明每个脉冲宽度有几个0.5ms。flag若能被2*MOT_PulseTime1则发出一个脉冲,高低电平互换
{ if(NUM1MOT_PulseNum1*2)
//在满足上面的条件下,若计数次数未达到设定计数次数是,发出脉冲,高低互换,否这不执行
{ P9_P3=!P9_P3; //当满足上面两个条件时高低电平互换
NUM1++;}
}
if(0==(flag-1)%(2*MOT_PulseTime2)) //第2个电机所需要的脉冲解释同上
{ if(NUM2MOT_PulseNum2*2)
{ P9_P4=!P9_P4;
NUM2++;}
}
if(0==(flag-1)%(2*MOT_PulseTime3)) //第3个电机所需要的脉冲解释同上
{ if(NUM3MOT_PulseNum3*2)
{ P9_P5=!P9_P5;
NUM3++;}
}
while(B_TimerStart) ;//延时程序
}
P9_P3=0;
P9_P4=0;
P9_P5=0;
}
//下盘抬起或上盘下降子程序
void xiapantaiqizichengxu()
编程思想:三个电机同时逆时针转动可实现下盘抬起或上盘下降子程序,除了P9_P
您可能关注的文档
最近下载
- 《3D打印技术概论》电子教案.pdf VIP
- 水平一(一、二年级)《体育与健康》全册教案.pdf VIP
- DB22T 162-2017建筑消防设施检验规程.docx
- 中国肿瘤整合诊疗指南(2025版)结直肠癌及肛管癌更新要点解读.pptx VIP
- 第11课 依法从事民事活动 教案 中职高教版 职业道德与法治.pdf
- 03婴幼儿练习试题附答案(一).docx VIP
- 《救救我小猫》超清有声动态PPT课件.pptx VIP
- 全国党员管理信息采集表及采集标准.pdf VIP
- 山山水水(教学设计)人美版2025美术一年级下册 .pdf VIP
- 工学一体化课程《小型网络管理与维护》任务2单元2教学单元活动方案.docx VIP
文档评论(0)