已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录第1章 总体设计方案11.1 总体思路11.2 基本原理11.3 系统总体框图2第2章 硬件设计32.1 时钟电路32.2 复位电路42.3 显示电路42.4 按键控制电路52.5 步进电机及驱动电路6第3章 软件设计73.1 主程序73.2 显示子程序83.3 键盘扫描子程序93.4 步进电机转速控制子程序10第4章 调试结果及故障分析11第5章 总结13参考文献14附录15附录A 系统原理图15附录B 程序清单16第1章 总体设计方案1.1 总体思路步进电机是通过脉冲信号来控制的,通过对脉冲信号宽度进行调节,将电脉冲转换为角速度或线速度。所以怎样产生这个信号和产生怎样的信号是控制步进电机转动的关键。 在设计中单片机选用AT89C51,电机驱动采用ULN2003芯片。选取P1口为电机控制信号输出口,通过定时器定时满后溢出的脉冲进行电机转速控制,改变定时器定时时间,即可改变电机转速;显示电路采用动态数码管扫描显示,选取P2低3位口通过ULN2003取反驱动后作为LED数码显示管的位选信号输入端口,选取P0口8位作为LED数码显示器段选信号输入端口;因为电机有正转、反转、加速、减速四种不同工作状态,故选取P3口低四位作为按键信号输入端口;系统复位采用单片机复位电路直接对系统复位初始化。1.2 基本原理主程序通过检测按键按下,执行相应动作。电机速度控制采用定时器定时溢出脉冲信号,当定时器启动后,定时器从装载的初值开始对系统及其周期进行加计数,当定时器溢出时,定时器产生中断,系统转去执行定时中断子程序。通过改变定时器装载的初值,就可以改变定时时间,即可改变电机转动频率,从而达到控制转速目的。将电机换向子程序放在定时中断服务程序中,定时中断响应一次,电机换向一次,从而实现电机的转向及速度控制。状态及速度显示通过事先设定好的状态及转速大小,按下相应按键时改变显示函数中相应变量的值改变显示字符,通过动态扫描方式显示相应字符。1.3 系统总体框图本系统单片机采用AT89C51,电机驱动采用ULN2003芯片,数码管位选信号通过ULN2003取反后输出位选信号。系统整体框图如图1-3所示。段选P0.0-P0.7XATLAT89C51P2.0-P2.2RST P1 P3.0-P3.3 时钟电路(12MHz)位选4位数码管复位电路4个独立按键(正、反转,加、减速)步进电机驱动图1-3 系统总体框图 第2章 硬件设计系统主控单片机芯片采用ATMEL公司的AT89C51,通过I/O口外接扩展设备:4位LED数码管,4个独立按键及步进电机驱动电路。数码管采用共阴数码管,电机驱动采用电机驱动芯片ULN2003。具体各单元电路设计及说明如下。2.1 时钟电路单片机工作的时间基准是由时钟电路控制的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C1和C2对振荡频率有微调作用,通常的取值范围为22PF。石英晶体选择12MHZ。具体电路如图2-1所示。图2-1 时钟电路2.2 复位电路在设计当中,为了更合理利用单片机的I/O口,停止按键利用了单片的复位端口。当按下复位键时对系统复位的同时,也对系统初始化。这样很好的实现了对电机控制中停止状态的要求。其电路如图2-2所示。图2-2 复位电路2.3 显示电路本显示电路中采用4位共阴数码管采用动态扫描的方法显示电机工作状态及转速。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。同时设计要求中需要4位LED数码管实现所要求的显示,故选用7SEG-MPX4-CC。实际设计中,为了减少显示电路的结构及减少硬件资源的使用,数码管采用动态扫描的方法显示相应工作状态。这里我们采用ULN2003作为数码管位选驱动。而单片机I/O口P0内部不具备上拉电阻,输出电流不能直接驱动LED显示,所以在P0口接上1K上拉排阻,提高P0口驱动能力。显示电路连接与驱动电路如图2-3所示。图2-3 显示电路2.4 按键控制电路步进电机按键控制系统在设计上考虑到只用了四个按键(正反转,加减速,复位按键采用单片机复位电路的复位按键),并不复杂,所以采用4个独立按键设计,用P3.0-P3.3对键盘采样,当有低电平出现时说明该键被按下,简单可靠。由于按键按下过程中有抖动现象,为了防止误动作,本设计中采用软件延时消抖方法。具体电路见图2-4。图2.4 按键电路2.5 步进电机及驱动电路本系统采用4相步进电机MP28GA,当相控制绕组接通脉冲电流时,在磁拉力作用下使相得定、转子对齐,实现转动。电机转动快慢通过定时器控制,当单片机定时器初值增大时,加给步进电机的脉冲频率增高,步进电机的速度就越快,当励磁信号反相传送时,步进电机反转。系统通过P1口第四位产生控制电机A、B、C、D的四相脉冲信号,当采用单片机进行控制时,由于步进电机的驱动电流相对较大,需要增设放大电路来提供电机的工作电路,本系统采用电机驱动芯片ULN2003,已保证电机能正常工作。具体电路如图2-5所示。图2-5 步进电机驱动电路第3章 软件设计本设计采用C语言编程,系统主要由初始化程序、键盘扫描程序、显示程序、步进电机驱动程序四部分组成。具体模块功能及说明如下。3.1 主程序进入主程序后,对显示状态初始化,同时初始化定时器,装载计数初值10000。然后调用键盘扫描程序key,并作判断,有键按下,则调用显示程序display及电机控制程序control,作出相应动作并通过数码管显示出当前工作状态。系统工作流程如图3-1所示。图3-1 系统流程图3.2 显示子程序显示Flag=0第一位显示“0”(正转)YFlag=2N扫描每位数值N复位显示“00”Y第二位显示“”第三位显示转速/10,第四位显示转速%10结束转速及工作状态的显示是给用户最直观的概念,知道电机的转动方向及当前转速。当按键按下时相应标志位flag值发生变化从而调用相应显示模块显示相应工作状态。具体流程如图3-2所示。图3-2 显示程序流程图3.3 键盘扫描子程序键盘是我们唯一和电机沟通的桥梁,通过键盘的输入从而改变键盘扫描复位是否按下正转是否按下Flag=0转速为10反转是否按下Flag=1转速为10减?为最高速度?速度加1保持20加?为最低速度?速度减1保持1返回Flag=2转速=0NYYNNYYNNYYNYN电机的运行状态,这里所需要的键盘数量不多,采用了4个独立式键盘,通过调用键盘扫描程序KEY扫描键盘,调用延时程序,再判断是否有键按下,如果无键按下就返回继续扫描,如果有键按下,则调用delay延时去抖动,再读键值,等待键释放,具体流程如图3-3所示。图3-3 键盘扫描程序流程图3.4 步进电机转速控制子程序由于步进电机的速度由信号脉冲长度所决定,要调节步进电机的转速即调节输入信号脉冲的长短。而脉冲的长短由定时器T0控制,通过更换定时器T0的初值,即通过改变定时时间长短来实现加速与减速控制。当按下加速(或减速)键时T0装入初值并启动定时器,当计数满后由P1口输出脉冲控制电机转动。具体流程图如图3-4所示。图3-4 转速控制子程序流程图第4章 调试结果及故障分析本系统调试过程中采用PROTUES软件仿真调试的方法,对整体的系统程序进行分解排故,首先对八段显像管进行数字显示测试,然后对键盘进行按键响应测试,当测试都得到正确结果时,将键盘与显示结合起来,并给予恰当的字型码,最后加入定时器中断程序,给出正确的脉冲信号和频率。在keil3中调试好程序后将生产的HEX文件,把HEX文件下载到PROTUES仿真软件的单片机中,再给单片机上电,程序开始运行。初始化显示“-00”。当按下按键S1时,步进电机正转,工作状态显示“000”,如图4-1。当按下按键S2时,步进电机反转,工作状态显示“CCC”,如图4-2。按下按键S3时电机加速,按下按键S4电机减速,如图4-3,4-4所示。按下RESET前的复位按钮,单片机复位,电机停止转动。图4-1 正转显示 图4-2 反转状态 图4-3 加速状态 图4-4 减速状态 故障分析及解决方法出现问题:在各子程序成功调试完成后,将各子程序合并时出现了许多不融合现象,每个子程序都只能够单独运行。问题分析:在编写程序时都是各自按照主程序格式编写,地方的跳转和调用都与综合后的程序有很大差别,故需要综合各子程序在主程序中的位置和调用的先后来改正个子程序。解决问题:全面考虑个子程序,综合主程序,改变变量跳转与调用以及返回条件语句,实现程序综合化。第5章 总结两周的单片机课程设计虽然时间不是很长,但我从中了解的却有很多。在这次的单片机课程设计中,我更深入的了解的单片机的重要性,从中也学到了很多。让我感触颇深的有如下几点。首先,让我印象最深刻的,是李晓秀老师的认真与严格。李老师通过详细的讲解步进电机的工作原理,深入、细致、形象地为我们指出了课程设计的总体思路与方向。在课程设计的过程中,我们遇到什么不懂的、理解不够深刻的,李老师均都一一为我们解惑。我为在学校遇到这样的老师感到荣幸。其次,通过做步进电机这个课题,我了解步进电机方面的知识,学会了如何将所学到的知识运用到实践当中。因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少,而且学到了很多在书本上所没有学到过的知识。第三,在这时间里通过上网和去图书馆查阅资料的过程中,我对本次课题有了大体的了解,对电机方面的控制系统有了进一步的了解。在这期间内我学到了步进电机的转向控制和速度控制的方法,了解了其过程。第四,通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握了,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。 回顾这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,最重要的是,学会了“锲而不舍”的湖工精神。附录附录A 系统原理图系统原理图附录B 程序清单a. 按键测试程序#include #define uint unsigned int#define uchar unsigned charunsigned char code table=0x06,0x59,0x4f,0x66;/共阴数码管显示sbit key_zheng=P30; /正转sbit key_fan=P31; /反转sbit key_jia=P32; /加速sbit key_jian=P33;/减速uint flag,num,a,b; void reset() /初始化 P2=0x00;/全部显示 P0=0x40;/显示- void delay(uintx) /延时uint i,j,x;for(i=0;i0;j-);void key()/按键扫描 if(!key_zheng) delay(5); if(!key_zheng) flag=0; while(!key_zheng); if(!key_fan) delay(5); if(!key_fan) flag=1; while(!key_fan); if(!key_jia) delay(5); if(!key_jia) flag=2; while(!key_jia); if(!key_jian) delay(5); if(!key_jian) flag=3; while(!key_jian); void display()/数码管显示 unsigned char k; if(!key_zheng) delay(5); k=0x01; P2=0x00; P0=tablek-1; delay(5); if(!key_fan) delay(5); k=0x02; P2=0x00; P0=tablek-1;delay(5); if(!key_jia) delay(5); k=0x03; P2=0x00; P0=tablek-1; delay(5); if(!key_jian) delay(5); k=0x04; P2=0x00; P0=tablek-1; delay(5); void main(void) uint a,b=4; void reset(); void delay(int x); /void key();/ void display(); TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;while(1)key();display(); b. 总程序#include #define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/数码管显示uchar code table1=0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01; /正反转表uint sudu,zhuansu,num,flag,a,b;sbit key_zheng=P30;/正转控制sbit key_fan=P31;/反转控制sbit key_jia=P32;/加速sbit key_jian=P33;/减速void delay(uint x) /延时子程序uint i,j;for(i=0;i0;j-);void reset(void)/初始化flag=2; /标志zhuansu=0;void display()/数码管显示 uint A1,A2,A3,A4; /定义四个数代表四个数码管 if(flag=0) /判断正A1=0;else A1=1;if(flag=2)/判断初始化A1=10; /赋值、计算A2=0x40; A3=zhuansu/10; A4=zhuansu%10;P0=tableA1; /显示第一数码管P2=0;delay(5);P0=A2; /显示第二数码管P2=1; delay(5);P0=tableA3; /显示第三数码管P2=2;delay(5);P0=tableA4; /显示第四数码管P2=3; delay(5);void key()/按键扫描if(!key_zheng)/按下正转键delay(5);if(!key_zheng)flag=0;zhuansu=10;while(!key_zheng);if(!key_fan) /按下反转键delay(5);if(!key_fan)flag=1;zhuansu=10;while(!key_fan);if(!key_jia) /按下加速键delay(5);if(!key_jia) zhuansu+;if(zhuansu=21)zhuansu=20;while(!key_jia);if(!key_jian) /按下减速键delay(5);if(!key_jian) zhuansu-;if(zhuansu=0)zhuansu=1;while(!key_jian);void control()/为速度赋值,从而进行速度控制switch(zhuansu)case 0:break;case 1:sudu=65000;break;case 2:sudu=60000;break;case 3:sudu=55000;break;case 4:sudu=50000;break;case 5:sudu=40000;break; case 6:sudu=35000;break;ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 在线学习服务师岗位设备技术规程
- 乙腈装置操作工冲突解决竞赛考核试卷含答案
- 玻璃制品手工成型工成果评优考核试卷含答案
- 居家养老服务免责协议书
- 河北省保定市唐县2023-2024学年五年级上学期语文期末调研试卷(含答案)
- 工业设备解耦控制安全运行准则
- 教育学的理论与实践
- 教育培训年度总结
- 《课件-市场营销学项目化教程》-2市场营销环境分析2
- 第十三章 三角形全章知识清单10个知识点(必考点分类集训)(人教版2024)(解析版)
- 餐饮服务试题及答案2025年
- 边海防工作汇报
- 2025年郑州巩义市金桥融资担保有限公司公开招聘3名笔试考试备考试题及答案解析
- 2025铜陵市义安区城管局招聘编外聘用人员9人笔试考试参考试题及答案解析
- 故宫琉璃瓦课件
- 租地居间服务合同范本
- 情绪管理课件
- 孙宪忠民法典讲座课件
- 道路运输客运从业资格证模拟考试题库
- 老年人肌力训练指导大纲
- 丙烯酸球场建设施工方案
评论
0/150
提交评论