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

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:Haroldzhang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要介绍了利用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(Speed<18) Speed++;
  elseif(num==2)//第二个按键,速度等级减小
  {if(Speed>1)
   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;DataPort=dofly_WeiMa[i+FirstBit];
  LATCH2=1;LATCH2=0;
  DataPort=TempData[i];LATCH1=1;
  LATCH1=0;i++;if(i==Num) i=0;}
  voidInit_Timer0(void)
  voidTimer0_isr(void)interrupt1
  {Display(0,8);if(!StopFlag){if(Flag==1)
  {if(times==(20-Speed))//最大值18,所以最小间隔值20-18=2
  {times=0;
  switch(i){
   case0:Coil_D1;i++;break; case1:Coil_C1;i++;break;
   case2:Coil_B1;i++;break; case3:Coil_A1;i++;break;
   case4:i=0;break; default:break; }}times++;}
  if(Flag==2)
  {if(times==(20-Speed))//最大值18,所以最小间隔值20-18=2
  {times=0;switch(i)
  {case0:Coil_A1;i++;break; case1:Coil_B1;i++;break;
   case2:Coil_C1;i++;break; case3:Coil_D1;i++;break;
   case4:i=0;break; default:break; }}times++;}}}
  unsignedcharKeyScan(void)
  {unsignedcharkeyvalue;
  if(KeyPort!=0xff)
  {DelayMs(10);if(KeyPort!=0xff)
  {keyvalue=KeyPort;while(KeyPort!=0xff);switch(keyvalue)
   {case0xfe:return1;break; case0xfd:return2;break;
   case0xfb:return3;break; case0xf7:return4;break;
   case0xef:return5;break; case0xdf:return6;break;
   case0xbf:return7;break; case0x7f:return8;break;
   default:return0;break; }}}return0;}
  4总结
  到此为止,整个控制步进电机的设计就做完了,由于篇幅有限,本文里有一些具体函数没有内容,但这些函数都有现成的模式可供应用。通过对步进电机的控制,使我们对单片机的应用有了一定的理解,并对使用C语言编程来控制步进电机有了更明确的理解,掌握了一定的知识,并对以后的进一步学习有了一定的基础。
  参考文献:
  [1]郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2011,02.
  [2]杨欣,王玉凤.电子设计从零开始[M].北京:清华大学出版社,2012,05.
  [3]张毅刚.新编MCS-51单片机应用设计(第3版)[J].哈尔滨工业大学,2008,04.
  
其他文献
敦煌及吐鲁番出土文书是研究中国中古西部寺院经济的最佳文献,其中尤以寺院籍账最为珍贵。籍账中记载了寺院各种僧俗劳力的工作任务和他们从寺院获得劳动所得的粮食分量及其
业务建模中对象技术的优势 对于软件开发来说.业务建模这个工作流的作用是:描述现实.帮助发现软件需求。需求从哪里找?只有从现实中找。如果现实描述得不准确.那么从中寻找软件需
通信软件常常要对各种类型的事件进行多路分离、并进行相应的处理。为使各种事件驱动的处理活动统一起来、并得以自动化.ACE提供了叫做ACE_Reactor的事件多路分离和事件处理器
考察了《文心雕龙》中"意象"、"比兴"两个概念,认为两者之间已经开始出现融合的趋势,这种融合为后来的"兴象"理论提供了理论依据。同时指出,这种现象是因为"比兴"理论自身的
在Oracle DBA例行性的管理工作中,数据毁损是一个相当令人头痛的问题,如何在数据毁损后第一时间修复完成,是每个DBA平时就应该注意的工作项目之一。一股来说,数据毁损的情况可分
时间跨度长约300年的“明代文学”是中国古代文学的一个重要阶段,现代意义上的“明代文学研究”也已走过100多年的曲折历程。20世纪初,由于梁启超、陈独秀、胡适诸人的大力倡导
随着我国经济的快速发展,ERP在企业运行中逐渐起到越来越积极的作用。ERP在企业中对人、财、物的流程进行全面集成管理,它为企业提高核心流程管控能力、优化资源配置起着很大作
2001年7月号,本刊发表了《Borland故事》一文,李维以往事回忆的形式,讲述了许多鲜为人知的历史故事。文章刊出后,受到了广大程序界朋友的热烈欢迎。本刊立即约稿李维先生,希
期刊
<正> 问题描述见2001年第11期杂志。问题分析去除题目中的实际背景,本题可以用数学语言描述成:在一个带权无向图G中找出一生成子图G’,使得G’的每个顶点出度不超过1,并且G’