急求大神 按键一下 基于单片机的步进电机ULN2003控制步进电机正转30秒反转30秒 给赏金

==========以下对应文字版==========图总体电路图软件设计通过分析可以看出实现系统功能可以采用多种方法由于随时有可能输入加速、加速信号和方向信号因而采用中断方式效率最高这样总共要完成个部分的工作才能满足课题要求即主程序部分、定时器中断部分、外部中断和外部中断部分其中主程序的主要功能是系统初始参数的设置及启动开关的检测若启动开关合上则系统开始工作反之系统停止工作定时器部分控制脉冲频率它决定了步进电机转速的快慢两个外部中断程序要做的工作都是为了完成改变速度这一功能。下面分析主程序与定时器中断程序及外部中断程序。()主程序设计主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多该系统中需要初始化定时器、外部中断对P口送初值以决定脉冲分配方式速度值存储区送初值决定步进电机的启动速度对方向值存储区送初值决定步进电机旋转方向等内容。若初始化P=H、速度和方向初始值均设为就意味着步进电机按四相单四拍运行系统上电后在没有操作的情况下步进电机不旋转方向值显示“”速度值显示“”主程序流程图如图所示。()定时中断设计步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流步进电机才会旋转时间间隔越短速度就越快。在这个系统中这个时间间隔是用定时器重复中断一定次数产生的即调节时间间隔就是调节定时器的中断次数因而在定时器中断程序中要做的工作主要是判断电机的运行方向、发下一个脉冲以及保存当前的各种状态。程序流程图如图所示。()外部中断设计外部中断所要完成的工作是根据按键次数改变速度值存储区中的数据(该数据为定时器的中断次数)这样就改变了步进电机的输出脉冲频率也就是改变了电机的转速。速度增加按钮S为INT中断其程序流程为原数据当值等于时不改变原数值返回小于时数据加后返回速度减少按钮S当原数据不为减保存数据原数据为则保持不变。程序流程图如图所示。源程序(汇编、C语言程序各一个)汇编程序如下:SPEEDEQUHSPEED为转速等级标志共级即~FXEQUHFX为方向标志COUNTEQUHCOUNT中断次数标志ORGHAJMPMAINORGH外部中断入口地址加速子程序AJMPUPORGH外部中断入口地址减速子程序AJMPDOWNORGBH定时器中断入口地址控制中断次数来达到控制转速AJMPZDTORGHMAIN:MOVSP,#HMOVTMOD,#H工作于定时、软件置位启动!模式(位计时器)MOVTH,#CFHMOVTL,#CHMOVCOUNT,#HSETBET定时计数器允许中断CLRIT外部中断为电平触发方式低电平有效CLRITSETBEX外部允许中断SETBEXSETBEA开总中断MOVR,#H四相单四拍运行共阳数码管方向显示速度值显示MOVSPEED,#HMOVFX,#HXIANS:MOVA,SPEEDMOVDPTR,#LEDMOVCA,ADPTR查表获取等级对应数码管代码MOVP,A第二个数码管显示转速等级MOVA,FX准备判断转向CJNEA,#H,ELSMOVP,#FH第一个数码管显示表示正转AJMPQDELS:CJNEA,#H,ZHENGMOVP,#CH第一个数码管显示表示不转AJMPQDZHENG:MOVP,#BFH第一个数码管显示表示反转QD:JBP,DDP接启动开关KP=时启动CLRTR停止定时计数器MOVP,#CH第一个数码管显示表示不转MOVP,#CH第二个数码管显示表示转速为MOVSPEED,#H重新赋初值MOVFX,#HAJMPQDDD:MOVA,SPEEDJNZGOA不等于即初始速度不为零则转移到GOCLRTR停止定时计数器AJMPQDGO:SETBTR开启定时计数器ACALLDELAYAJMPXIANSDELAY:MOVR,#延时子程序DEL:MOVR,#HERE:DJNZR,HEREDJNZR,DELRET以下ZDT为定时器中断程序ZDT:PUSHACCPUSHDPHPUSHDPLMOVTH,#DHMOVTL,#FHDJNZCOUNT,EXITJBP,NIZHUAN查询方向标志,P接换向开关KMOVFX,#HNIZHUAN:MOVA,FXCJNEA,#H,FZ若A不等于即正转则转移到FZMOVA,RR记录上一次电机脉冲状态MOVP,ARRA循环右一位MOVR,AMOVP,AAJMPREFZ:MOVA,RMOVP,ARLA循环左移一位MOVP,AMOVR,ARE:MOVA,SPEEDMOVDPTR,#TABMOVCA,ADPTRMOVCOUNT,A把转速级别赋给COUNTJBP,FFXP接换向开关K,即换向位若P=则跳到FFXMOVFX,#HAJMPEXITFFX:MOVFX,#FEH只要FX不等于H,就可以通过循环左移或右移进行换向EXIT:POPDPLPOPDPHPOPACCRETI以下UP为加速中断程序UP:PUSHACCACALLDELAY延时防抖动JBP,UPEXP为外部中断位接增速开关S低电平有效若P=则退出MOVA,SPEEDCJNEA,#,SZ最大等级为若A不等于则转移到SZAJMPUPEX若A=,则退出SZ:INCSPEEDSPEED=SPEEDUPEX:POPACCHERE:JNBP,HERE本条指令为防止开关S按下去后弹不起导致一直产生中断RETI以下DOWN为减速中断程序DOWN:PUSHACCACALLDELAYJBP,DEXP为外部中断位接减速开关S低电平有效若P=则退出MOVA,SPEEDCJNEA,#,SJAJMPDEXSJ:DECSPEEDSPEED=SPEEDDEX:POPACCHERE:JNBP,HERERETITAB:DB,,,,,,,经仿真小于时由于脉冲太快会出现失步LED:DBCH,FH,AH,BH,H,H,H,FH,H,HENDC语言程序如下:#include&regh&#defineuintunsignedintsbitk=P^启动开关sbitk=P^换向开关sbits=P^加速按钮sbits=P^减速按钮voidisrint(void)外部中断中断服务函数声明voidisrint(void)voidzdtist(void)uintspeed,count,r,i,t,kmain(){k=t=r=xspeed=count=TMOD=xET=EA=EX=EX=TH=xcfTL=xcfor(){if(k==){P=xffP=xffspeed=TR=}else{if(k==)P=xbfelseP=xfif(speed==){P=xcTR=}elseTR=}}}voidisrint(void)interrupt{if(speed&)speed=speedwhile(s==){for(i=i&i)}}voidisrint(void)interrupt{if(speed&)speed=speedwhile(s==){for(i=i&i)}}voidzdtist(void)interrupt{TH=xdTL=xfswitch(speed){case:P=xccount=breakcase:P=xfcount=breakcase:P=xacount=breakcase:P=xbcount=breakcase:P=xcount=breakcase:P=xcount=breakcase:P=xcount=breakcase:P=xfcount=breakdefault:break}if(t==)t=countif(t&)t=tif(k==){if(t==){switch(k){case:P=xbreakcase:P=xbreakcase:P=xbreakcase:P=xbreakdefault:break}k=kif(k==)k=}}else{if(t==){switch(k){case:P=xbreakcase:P=xbreakcase:P=xbreakcase:P=xbreakdefault:break}k=kif(k==)k=}}}总结本设计通过分析步进电机结构、工作原理查阅步进电机控制系统的相关科技文献遵循实用、简单、可靠和低成本的原则设计了一种既可用于精度要求不高但控制需完备的场合。对本次设计有以下结论:()采用单片机为控制核心利用其强大的功能把键盘和显示电路有机的结合起来组成一个操作方便、交互性强的控制系统。而且整个系统所包含的技术几乎包括了现本科学校控制专业所要求的知识有利于实践教学取得最大效果。()键盘电路和显示电路采用了动态扫描技术节约了单片机资源。()系统软件采用结构化设计具有易维护性根据用户新的要求对软件系统进行少量的修改使系统功能得到一定程度的提高。结束语本人深知自己做的工作还很不够由于软件和硬件的各方面原因系统的应用讨论不够精度还有待于进一步提高。由于时间的原因设备的原因实验做的不好不够相关验证性的数据、信息不够丰富。可以肯定随着技术的不断发展步进电机的控制应用前景将越来越宽阔而其控制系统也将向着智能化和网络化的方向发展。本论文的研究和探讨还远远不够我们要在现在的基础上不断吸取新的技术和方法并将它们应用于本课题的研究上来进一步深化我们的研究深度争取有更多的收获。参考文献【】张家生电机原理与拖动基础【M】北京:北京邮电大学出版社【】马淑华王凤文张美金单片机原理与接口技术【M】北京:北京邮电大学出版社【】顾德英张健马淑华计算机控制技术【M】北京:北京邮电大学出版社【】华成英童诗白模拟电子技术基础【M】北京:高等教育出版社【】张靖武周灵彬单片机系统的PROTEUS设计与仿真【M】北京:电子工业出版社开始初始化速度值为?启动开关为?停止计时器显示启动计时器延时停止计时器图主程序流程图YNYN中断返回T中断入口发速度脉冲读方向指示重送相关状态恢复现场保护现场中断次数=?NY图定时中断程序流程图外部中断入口保护现场延时去抖中断返回速度值恢复现场速度=上或限值?按钮是否弹起?NNNYY图外部中断程序流程图
本文相关:
- Copyright & 2018 www.xue63.com All Rights Reserved天骄基于51单片机步进电机调速控制系统uln2003正反转调速加减速
快递: 6.00元
河北石家庄
科创天骄科技
很不错的店家,想要的基本都有,简直是特别完善
店主人好。东西更好发帖求助ULN2003A驱动步进电机的问题|我爱单片机 - 数码之家
查看完整版本: [--
赞助商链接
最近从DVD光驱上拆了个步进电机,想用单片机驱动玩玩单片机用的是STC89C52RC,电机驱动用的是ULN2003A问题描述:ULN2003A的8脚接地,9脚接+5V1脚,2脚分别接P10,P11 (经测试,只需要相应的两根线进行正负的来回转换就可以使得电机正反转,四根线,两根正反接是正转,两根正反接是反转。)ULN2003A输出脚接4.7K的上接电阻在不接电机的情况下,ULN2003A的15,16脚能够正常(正负;负正…………)电压输出正常接了电机后15,16脚用万用表测就没有电压输出了,万用表的两支笔分别接15,16脚。特来请教这是个神马情况。厚谢感谢各位。[attachment=2702878]画了个简单的图,表示一下。
赞助商链接
你上个电路图行不??
赞助商链接
IC 和 电机&&&&配套吗?记得一个是2p,一个是4p吧
LZ还是找一下那个ULN2003的手册来看一下。你的接法不太对。另:DVD光驱有步进电机吗???
2003不能驱动四线电机,可以驱动5线以上的,4线电机驱动需要两个h桥,2003内部没有这个结构
呵呵,这么巧,这几天我也在搞步进电机玩。2003A是不能驱动步进电机的,它只能在低电平的时候灌电流,高电平的时候没有驱动能力的,就是说不会输出大电流,而且还得加上拉电阻才能输出高电平。控制直流电机的时候还能将就用,但不能反转。&&&&我是用的L293D,可以控制两个直流电机的正反转,或者一个4线步进电机。&& 光驱里有的有步进电机,带小螺杆的,有的没有,是普通的直流电机,齿条传动。以上不知道我理解的对不对?高手给判断一下。
后来认真看了下ULN2003A的图发才现这个问题,所以改用L298N成功驱动。然后自己又做了个H桥,三极管做的,驱动能力不够,只能用来点个LED啥的。
2003A不能驱动四线步进电机
步进电机有两个绕组、五个接口,2003只是个达林顿驱动而已,需要单片机的四个IO口驱动才行[attachment=2705223]
正在学习uln2003。mtd2003f可以驱动步进电机
三极管做的h桥驱动步进电极一点问题没有,劲头也够用,你说没有劲是你的电路接线不对,我也出现过这个问题
查看完整版本: [--
Powered by
Time 0.138470 second(s),query:5 Gzip enabled我用52单片机p2.0到2.3连结uln2003驱动步进电机,但是电机只是正反转,程序在补充里面_百度知道
我用52单片机p2.0到2.3连结uln2003驱动步进电机,但是电机只是正反转,程序在补充里面
#include&reg52.h&
#define output P2
#define uint unsigned int
#define uchar unsigned char
sbit K0=P1^0; //加速
sbit K1=P1^1; //减速
sbit K2=P1^2;
sbit K3=P1^3;
sbit K4=P1^4;
char code excite[]={0X00,0x01,0x05,0x04,0x06,0x02,0x0a,0x...
我有更好的答案
改一下 步进 编码 试试char code excite[]={0X00,0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
采纳率:60%
脉冲的占空比 没调节
你能帮我改一下我那个程序吗
你调节TH0=T_H; TL0=T_L;的数值
为您推荐:
其他类似问题
步进电机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 基于单片机的步进电机 的文章

 

随机推荐