利用单片机实现对步进电机简单控制.docVIP

利用单片机实现对步进电机简单控制.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用单片机实现对步进电机简单控制

利用单片机实现对步进电机简单控制   摘要:本文主要介绍了利用LY-51SV2.3开发板实现对步进电机的简单控制,以实现步进电机的正反转、加减速以及开始停止等功能。通过对步进电机的控制,使人们对开发板的应用以及如何编写C语言程序有更深层次的理解。通过本文的介绍,也为下一步更好的利用开发板控制步进电机打下一个基础。   关键词:单片机;步进电机;语言   中图分类号:TP368.1   目前,单片机应用得到了非常广泛的应用,几乎涉及到了社会生活中的各个领域,对于与计算机相关专业的单片机的知识有一个简单的学习了解是必要的,而对于初学者或者教学人员利用开发板进行学习是有效的途径。开发板是学习和实践的最好产品,因为有配套测试好的软件和硬件,这样用户就不必操心组建开发系统的过程。只需要专心研究程序。开发板只不过是个工具,利用这个工具,可以使我们更快的了解并掌握需要的知识。   1设计思路   本次单片机使用STC89C51,通过开发板的5个按键K1-K5分别实现对步进电机的加减速、正反转与停止的控制,在实现正反转的过程中分别由Led指示灯进行指示,并在数码管上显示当前速度的大小值,其最大值不超过18,在整个按键过程中是由键盘扫描函数来控制,速度的大小值是由显示函数在数码管上显示出来。   2端口、函数与变量定义   #defineKeyPortP3//由P3口连接控制按钮   #defineDataPortP0//定义数据端口程序中遇到DataPort则用P0替换   sbitLATCH1=P2^2;//定义锁存使能端口段锁存   sbitLATCH2=P2^3;//位锁存   sbitA1=P1^0;//定义步进电机连接端口   sbitB1=P1^1;sbitC1=P1^2;sbitD1=P1^3;sbitled=P1^5;sbitled1=P1^7;   unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   unsignedcharTempData[8];//存储显示值的全局变量   定义AB相通电,其他相断电,定义BC相通电,其他相断电,定义CD相通电,其他相断电,定义D相通电,其他相断电,定义A相通电,其他相断电,定义B相通电,其他相断电,定义C相通电,其他相断电,定义D相通电,其他相断电全部断电   unsignedcharSpeed=1;bitStopFlag=1;   unsignedcharFlag=1;//定义电机正反转变量标志   voidDisplay(unsignedcharFirstBit,unsignedcharNum);//显示函数,在数码管显示具体速度值   voidInit_Timer0(void);unsignedcharKeyScan(void);   延时函数DelayUs2x(unsignedchart),voidDelayMs(unsignedchart)   3函数调用过程   voidDelayUs2x(unsignedchart)voidDelayMs(unsignedchart)   main()   {unsignedinti=512;unsignedcharnum;Coil_OFF;   while(1){num=KeyScan();//循环调用按键扫描   if(num==1)//第一个按键,速度等级增加   {if(Speed1)    Speed--;}   elseif(num==3)//电机停止   {Coil_OFF;    StopFlag=1;led=1;   led1=1;EA=0;}   elseif(num==4)//电机启动   {Init_Timer0();StopFlag=0;   Flag=1;led=1;   led=0;led1=1;}   elseif(num==5)//反转   {Init_Timer0();StopFlag=0;   Flag=2;led1=1;   led1=0;led=1;}   TempData[0]=dofly_DuanMa[Speed/10];   TempData[1]=dofly_DuanMa[Speed%10];}}   voidDisplay(unsignedcharFirstBit,unsignedcharNum)   {staticunsignedchari=0;    DataPort=0;LATCH1=1;   LATCH1=0;

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档