您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 基于51单片机的步进电机调速系统(含完整代码)
课程设计报告设计题目:遥控小车——基于51单片机的步进电机调速系统学院:专业:班级:学号:姓名:电子邮件:时间:成绩:指导教师:华南农业大学理学院应用物理系课程设计(报告)任务书学生姓名指导教师职称学生学号专业电子信息科学与技术题目基于51单片机的步进电机调速系统(遥控小车)任务与要求1.设计并制作电路,利用单片计控制步进电机运转。2.通过键盘可以不间断地设定改变电机的转速、转向。3.利用显示器实时显示转速等参数。4.扩展功能:可设定转动步数。开始日期2014年3月完成日期2014年3月1引言步进电机是一种将电脉冲转化为角位移的执行机构。目前,步进机已经广泛应用于领域,例如工业生产中的机械臂的控制,照明装置和监控摄像机转动等。步进机在装置转动、精确位移方面有很重大的作用。本系统是基于STC89C51单片机的遥控小车。采用STC89C51单片机作为控制核心,通过ULN2003A驱动步进机(28BYJ-48)转动,由按键和显示屏1602组成人机交互模块,同时通过315M无线发射和接收模块向单片机输入控制信号,将整个系统固定于简易小车上,最终实现小车测试和远程遥控功能。基本达到预定的设计要求以及功能的扩展。2系统的设计与理论分析2.1系统总体设计2.2理论分析本设计分为两种工作模式:测试模式、遥控模式。在电路板上有一个带锁的开关进行设置。测试模式工作时,通过控制小车上的按键进行加速、减速、反转、设置、步数增、步数减等按键,单片机扫描按键,通过软件控制液晶模块显示对应的转速、设置的速度和步数,同时控制步进机模块进行相应的转动。步进机的是由ULN2003A达林顿管驱动,由单片机控制输入脉冲的频率来控制步进机的转速,单片机是通过程序查表对4个I/O口输出脉冲,本次设计采用的是两相四线减速步进机,步进角为5.625°,减速比为64:1,程序采用的是8拍查表,具有较好的扭矩。遥控模式工作时,遥控部分五个按键分别输入前、后、左、右、暂停,单片机扫描按键,通过无线发射模块发射串行编码,小车的无线接收模块接收对应的编码,送至单片机进行解码,从而控制液晶模块的显示和步进机模块的工作,进而完成功能。设定单通道无线收发模块通信协议为:下降沿:1ms的高电平,随后500us的低电平。起始位:4ms的高电平,随后4ms的低电平。数据1:2ms的高电平,随后500us的低电平。数据0:1ms的高电平,随后500us的低电平。结束位:4ms的低电平。发送指令程序为:{下降沿,起始位,3个数据位,结束位}发送编码为:右转:000前进:001后退:010左转:011接收程序通过触发外部中断1来接受信号,当P3.3口收到下降沿信号是即开始接收数据。3硬件系统设计3.1总体电路图3.2单片机最小系统3.3步进机模块本次设计采用的是两相四线减速步进电机,步进角为5.625°,减速比为64:1采用ULN2003达林顿管驱动。3.4液晶显示模块液晶显示模块采用LCD1602显示屏。3.5测试按键模块3.6遥控器部分4软件系统设计4.1主函数4.2遥控模式程序4.3测试模式程序4.4键盘扫描程序5系统运行情况分析打开小车开关后,按下“测试”按键,小车进入测试模式。连续按“加速”按键时,小车轮子转速明显变快;连续按“减速”按键时,小车轮子转速逐渐变慢;按“反转”按键轮子转速反向。按“设置”按键会看到液晶显示屏关标闪烁,按“设置”键使光标移动,按“+”、“-”设置小车速度和步数,再一次按“设置”键,小车会依照这顶要求行驶。按“测试”按键使其弹起,测试小车进入遥控模式工作时,打开遥控器,分别按下“前”、“后”、“左”、“右”,小车会依照对应的方向行驶,按下“暂停”键时,小车停止。由此,改系统基本达到设计要求及拓展功能的要求。不过因为本设计采用的28BYJ-48步进机为减速步进机,转动的上限值比较下,导致小车的行驶效果较慢,这个问题可以通过课后改用其他型号计算机得以解决。6总结与讨论经过四个星期的单片机课程设计,终于完成了基于51单片机的步进电机调速系统的设计,基本达到设计要求。同时自己在该系统上扩展无线收发模块,将该系统拓展为遥控小车。在本次设计的过程中,我们组成员进行了热烈讨论及反复的斟酌、修改。首先对需要用到的元器件的参数进行充分的了解,然后在计算机上用Proteus进行了与Keil软件的联动仿真。确认仿真正确看是硬件的焊接与调试。在实验过程中,我们也遇到了许多问题,如步进机转动不起来、液晶屏显示乱码等,但是经过不断的探索、思考、验证,我们最终克服了种种困难,解决了所遇到的问题,成功地完成了这个课程设计。在这个过程中,除了学习到关于本次设计的一些专业知识、电路焊接实践经验外,同时,大家的刻苦耐劳、团队合作的品质也得到了充分的锻炼。附1:实物图:图1遥控小车图2遥控器附2:参考文献[1]李朝青.单片机原理及接口技术[M].第3版.北京航空航天大学出版社,2005.[2]杨素行.模拟电子技术基础简明教程[M].第三版.高等教育出版社,2006.附3:组内分工:A.庞明辕:电路焊接、单片机编程、电路调试、辅助完成设计报告。B.杜烁:电路焊接、单片机编程、辅助方案改进、辅助完成设计报告。C.汤安琪:电路焊接、数据采集、完成设计报告。附4:元器件清单表格元件数量STM89C51216022ULN2003A228BYJ-482315M无线收发模块2简易小车1其它(开关、电池)若干评语:成绩:附:程序代码:/**********************单片机课程设计C语言程序************************题目:基于步进机的小车成员:汤安琪、庞明辕、杜烁。日期:2014-3-1******************************************************************/#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbita=P1^0;//反向sbitb=P1^1;//减速sbitc=P1^2;//加速sbitd=P1^3;//开关sbitf=P1^4;//设置sbitg=P1^5;//加sbith=P1^6;//减sbitlcden=P3^7;//1602使能sbitlcdrs=P3^6;//1602写命令/数据选择端sbittrans=P3^3;//射频串行输入端bitn,p;uintstep,time,flag,flag1,num,snum,setnum,stepnum,count,temp,sum,t,e,j,k,m;ucharv0,v1,v2,count1,num1,temp1;ucharcodetable1[]={0x11,0x33,0x22,0x66,0x44,0xcc,0x88,0x99};//左ucharcodetable2[]={0x11,0x99,0x88,0xcc,0x44,0x66,0x22,0x33};//右ucharcodetable3[]={0x11,0x93,0x82,0xc6,0x44,0x6c,0x28,0x39};//后ucharcodetable4[]={0x11,0x39,0x28,0x6c,0x44,0xc6,0x82,0x93};//前ucharcodetable5[]={SPEED:000r/h};ucharcodetable6[]={SET:000STEP:000};/*------------------------------------------------延时程序------------------------------------------------*/voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=10;y0;y--);}voiddelay1(uintz)//10us{uchara,b,x;for(x=0;xz;x++)for(b=1;b0;b--)for(a=2;a0;a--);}/*------------------------------------------------LCD1602写命令程序------------------------------------------------*/voidwrite_com(ucharcom){lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}/*------------------------------------------------LCD1602写数据程序------------------------------------------------*/voidwrite_dat(uchardat){lcdrs=1;P0=dat;delay(5);lcden=1;delay(5);lcden=0;}/*------------------------------------------------基于LCD1602的显示程序------------------------------------------------*/voiddisplay(ucharadd,uchardat){uintbai,shi,ge;bai=dat/100;shi=(dat-(dat/100)*100)/10;ge=dat%10;write_com(0x80+add);write_dat(0x30+bai);write_dat(0x30+shi);write_dat(0x30+ge);}/*------------------------------------------------小车速度计算程序------------------------------------------------*/voidspeed_dis(){doublen;if(b==0){delay(5);if(b==0){while(!b);time=time+10;if(time=300)time=300;}}if(c==0){delay(5);if(c==0){while(!c);time=time-10;if(time=70)time=70;}}n=15*time/1024;count=60*n;}/*------------------------------------------------步数执行程序:进入设置模式设置步数,确认后执行。------------------------------------------------*/voidsteprun(){uintm;m=512*stepnum;while(m--){uchari;for(i=0;i8;i++){P2=table4[i];delay1(time);}speed_dis();display(7,count);if(f==0)break;}}/*------------------------------------------------转速设置程序:进入设置模式设置转速确认后执行。------------------------------------------------*/voidsetrun(){while(1){uchari;time=(setnum*1024/900);for(i=0;i8;i++){P2=table4[i];delay(time);}if(f==0)break;}}/*------------------------------------------------无线电接收解码程序------------------------------------------------*/voidreceive(){if(n==1){while(trans==0);t=0;EX1=0;//在第一个下降沿关闭外部中断while(trans=
本文标题:基于51单片机的步进电机调速系统(含完整代码)
链接地址:https://www.777doc.com/doc-7226273 .html