步进电机控制系统设计_课程设计(编辑修改稿)内容摘要:

C语言编程,所以这次课程设计用的C,不是汇编。 在用C的过程中遇到许多程序问题。 最开始是实现按键和显示功能,再把电机加进去。 按键和显示功能较容易就实现了,可是在加进电机后,调试时,电机始终不转动,开始时的小甜头一扫而光,仔细检查了电机和程序,过程中不断调试,最后发现电机还是能动的,只是微动。 仔细考虑原因,疑是电机驱动芯片有问题。 在实验室借来万用表分别测试相位输出的对应引脚,确是芯片出了问题,在实验室换了块芯片后,电机终于能够转动起来。 但发现电机正反转的速度不一样,且按键时电机停止转动,在老师的建议下使用定时器控制电机速度,且在按键松手检测调用显示函数的同时,也调用电机驱动函数,最终问题得到解决,得到收获。 在以后的学习中,还会遇到各种不同的困难,但也是让我们提升的好机会,我会更加努力。 谢谢老师和同学的帮助。 第6章 参考文献[1] [M]. ,2012. [2] [M].电子工业出版社,2003. [3][M].人民邮电出版社,2007[4] [M].清华大学出版社,2010.[5] [M].,2010.[6] —入门、提高、开发、2009. 附录附录1 原理图原理图如下图: 附图1 原理图附录2 程序清单include define uchar unsigned char define uint unsigned int sbit A1 = P3^0。 //定义步进电机连接端口 sbit B1 = P3^1。 sbit C1 = P3^2。 sbit D1 = P3^3。 sbit key_ON_OFF = P1^7。 //定义开始、停止按键 sbit key_UP = P1^6。 //定义加速按键 sbit key_DOWN = P1^5。 //定义减速按键 sbit key_Left_Right = P1^4。 //定义正、反转按键 bit Left_Right = 0。 //电机正、反转标志位 bit ON_OFF = 0。 //电机开始、停止标志 uint pulse=12,num=0, table_begin=0。 //定义脉冲、数 、正反转开始 uchar led1=0,led2=0,led3=0,led4=0。 //数码显示的四位段选 uchar add_count=0,count=0。 //用于定时器中断 uint j。 uchar code table_z[]={0xf8,0xf4,0xf2,0xf1}。 uchar code table_f[]={0xf1,0xf2,0xf4,0xf8}。 // 四相四拍 正反转代码 //unsigned char code table_z[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}。 //顺时针转相位表(细分)//unsigned char code table_f[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}。 //逆时针转相位表(细分)// //四相八拍 正反转代码 uchar code table_duan[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea, 0x20,0xa0,0x60,0x25,0x3c,0x23,0x34,0x74, 0x29,0xf7}。 //P0数码管段选,(共阳)地电平有效 0~F、U、. uchar code table_wei[]={0xfe,0xfd,0xfb,0xf7}。 // P2 位选 void drive()。 //声明驱动函数 //延时函数void delay(uint a) { uint i,j。 for(i=a。 i0。 i) for(j=20。 j0。 j)。 } //显示函数 void display() { uchar i。 for(i=0。 i4。 i++) { P0=0xff。 //消影 P2=table_wei[i]。 if(i==0) {P0=table_duan[led1]。 } //显示第一位 if(i==1) {P0=table_duan[l。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。