毕业论文答辩-单片机控制16步进电机.pptVIP

毕业论文答辩-单片机控制16步进电机.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
导师: 答辩人: 专业: 研究背景及意义 论文概要 论文创新点 论文总结 论文不足之处 致谢 实时地形沙盘就是利用现代电子设备模拟出实时地形来作为楼盘实时演示等的模型。 沙盘还常用来制作经济发展规划和大型工程建设的模型,其形象直观,颇受计划决策者和工程技术人员的青睐。 本文则是利用步进电机能够按照预设的数字信号来有规则的运转,通过单片机来设计和开发步进电机的控制系统,对步进电机阵列的控制,实现实时地形的模型。 1 硬件介绍 AT89C51单片机 74HC154译码器 ULN2003继电器 12V,5线4相步进电机 本论文主要研究软件设计,硬件方面内容不做介绍。 2 软件设计思想 2.1编程语言对比 2.2步进电机的C语言控制 3 程序流程 3.1电机正转与反转流程 3.2总流程 4 总程序设计 实时控制单个电机,控制电机阵列复杂 很好的解决了对多个电机的控制 汇编语言 可以很好的实现单个步进电机的控制,只需要依次将存储在内存 ROM 区域相应的脉冲输出时序表的内容取出去驱动步进电机,就可实现步进电机运行方向的转换。但是当是16个电机的时候,将会很复杂。 C语言 用一个for循环便很好的解决了多个电机的困扰,让16个电机的控制线依次获得脉冲,便可以看到16个电机几乎同时运转起来。 2.1 编程语言的对比 2 软件设计思想 2.2 步进电机的C语言控制 正转控制: 开始判断按钮是否按下,如果按下则电机正转,用一个for循环,让16个电机依次赋值,让P0和P2口同时赋值,首先P0和P2赋值a1=00,延时,在给P0和P2口赋值,a2=a1+0x11,再延时,同时再给P0和P2口赋值a3=a2+0x11,这样就给电机的4根线轮流的给脉冲,这样步进电机就可以以一个方向转动起来。 反转控制: 如果在正转的时候,按下按钮,则程序则转为反转程序,反转的时候和正转的原理是一样的,只是给步进电机方向赋值就可以了,开始时,同样给P0和P2口赋值a1=00,延时,再给P0和P2口附上a2=a1-ox11,再延时,再给P0和P2口赋值a3=a2-0x11,这样一直下去,就可以不停给16个步进电机的64根引线轮流赋值,给脉冲,这样16个电机就可以按照相反的方向转动起来。 3 程序流程 3.1 电机正转与反转流程 3.2 总程序流程 开始,程序运行,首先对单片机I/O口进行初始化工作,然后判断按钮是否按下,按下按钮,则进入电机反转程序,没有按按钮的话,则电机进入正转程序,在电机正转的时候如果按下按钮,则退出循环进入反转程序;在电机反转的时候,松开按钮,则退出循环进入正转程序。对P0、P2口一直循环赋值,则对应电机不停正转或者反转。 4 总程序设计 #includereg52.h #define uchar unsigned char #define uint unsigned int uchar a1,a2,a3,a4,num; sbit s1=P1^0; void delay(uint z)//延时Z毫秒 { uint x,y; for(x=z;x0;x--) for(y=110;y0;y--); } void init() { P0=0; P2=0; a1=0x00; a2=0x11; s1=1; } 这段程序主要是定义,定义了两个变量以及两个子函数,其中 delay() 是延时子函数; init()是初始化子函数。 void main() { init(); while(1) { if(s1==1) { for(num=0;num16;num++) { if(num==0) P0=P2=a1=a1; else P0=P2=a1=a1+0x11; delay(100); If(s1==0) break; } } else { for(num=0;num16;num++) { if(num==0) P0=P2=a1=a1; else P0=P2=a1=a1-0x11 delay(100); if(!(s1==0)) break; } } } } 主程序,主要控制电机的正反转,首先判断P1.0口是否等于1,按钮没有按下为1,按下按钮为0。这样判断程序进入正转程序还是反转程序。For循环对16个电机进行16轮赋值,让16个电机依次运转起来。 仿真演示: 论文构思来源 步进电机阵列的控

文档评论(0)

精品天地 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档