您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 直流电机速度控制课程设计
武汉理工大学《计算机控制技术》课程设计1直流电机速度控制1设计内容及要求1.1设计目的设计制作和调试一个由MCS51单片机组成的直流测控系统。通过这个过程学习熟悉键盘控制和七段数码管的使用,掌握直流电机的速度控制和测试方法。1.2预习和参考MCS51单片机汇编程序语言、计算机控制技术、自动控制原理、1.3设计(设计)要求设计指标1.在显示器上显示任意四位十进制数2.将8个键定义键值为0~7,按任意键在显示器上显示对应键值3.实现功能:(1)定义键盘按键:5个为数字键0~4;3个功能键:设置SET、清零CLR、开始START;(2)显示器上的四位可显示每分钟的速度;(3)通过键盘的按键,设置直流电机每分钟的速度值;(4)按START键启动电机开始转动,按SET键停止;按CLR键清零。2控制芯片选择根据实验要求选择80C31芯片。选择该芯片可以根据控制开关按钮的开关状态,控制数码管的数字显示以及变频直流电动机的转速。武汉理工大学《计算机控制技术》课程设计280C31单片机,是8位高性能单片机,具有40根引脚。属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,标准MCS-51单片机的体系结构和指令系统。80C31内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。40根引脚按其功能可分为四类:1.电源线2根VCC:编程和正常操作时的电源电压,接+5V。VSS:地电平。2.晶振:2根XTAL1:振荡器的反相放大器输入。使用外部震荡器是必须接地。XTAL2:振荡器的反相放大器输出和内部时钟发生器的输入。当使用外部振荡器时用于输入外部振荡信号。3.I/O口有p0、p1、p2、p3共四个8位口,32根I/O线,其功能如下:P0.0~P0.7(AD0~AD7)是I/O端口O的引脚,端口O是一个8位漏极开路的双向I/O端口。在存取外部存储器时,该端口分时地用作低8位的地址线和8位双向的数据端口(在此时内部上拉电阻有效)。P1.0~P1.7端口1的引脚,是一个内部上拉电阻的8位双向I/O通道,专供用户使用。P2.0~P2.7(A8~A15)端口2的引脚。端口2是一个带内部上拉电阻的8位双向I/O口,在访问外部存储器时,它输出高8位地址A8~A15P3.0~P3.7端口3的引脚。端口3是一个带内部上拉电阻的8位双向I/O端口,该口的每一位均可独立地定义第一I/O口功能或第二I/O口功能。作为第一功能使用时,口的结构和操作和P1口完全相同,第二功能如下示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断)P3.3(外部中断)武汉理工大学《计算机控制技术》课程设计3P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)图2-18031管脚图3方案选择和结构设计3.1矩阵式键盘3.1.1矩阵式键盘设计武汉理工大学《计算机控制技术》课程设计4根据实验要求通过按键开关可以控制数码管的显示,并且可以通过80C31芯片控制变频直流电动机的转速,所以设计一种键盘式的按钮开关矩阵。矩阵式键盘的按键识别方法,确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。1、判断键盘中有无键按下将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线和行线相交叉的按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线和置为低电平的行线交叉处的按键就是闭合的按键。在这次课程设计中要求有8个按键,其中包过0-4这5个数字按键,以及3个功能键:设置SET、清零CLR、开始START。所以我们将这些键按照两行三列来排列。其中的数字键我们可以按照基本的逐行扫描查询法经行按键识别。其中的0-3数字键的一端和80C51的P1.0,其余的另一端分别连接80C51单片机的P1.4,P1.5,P1.6,P1.7相连。设置SET功能键分别连接P1.2和P1.6,开始START功能键分别连接P1.3,P1.4,而剩下的功能键CLR则分别连接P1.2,P1.7,这样就可以利用按钮开关和80C51芯片构成简单的矩阵式键盘。图3-1矩阵式键盘3.1.2矩阵式键盘程序及程序流程图01234CLRSTARTSET武汉理工大学《计算机控制技术》课程设计5在80C51单片机的程序编写上,采用C语言的程序编写方法。键盘设计部分的程序流程图如下:C语言编写的使用于80C31控制数字键盘使其实现功能的程序如下:voidkey(){uchari,temp,lie,hang,shu;for(i=0;i4;i++)//求出按键值{P1=~chose[i];temp=P1;temp=temp&0xf0;if(temp!=0xf0){hang=i;if(temp==0xe0)lie=1;elseif(temp==0xd0)lie=2;elseif(temp==0xb0)lie=3;elseif(temp==0x70)lie=4;break;}开始行值-0,列值-0EFH输出行码和列码扫描列码,并且全为1列扫面A-i-1调用显示程序有第i列为0扫描行行码循环扫描列码加4RET武汉理工大学《计算机控制技术》课程设计6}shu=hang*4+lie;//数为对应的按键switch(shu){case1:if(!flag)yishu(0);break;case2:if(!flag)yishu(1);break;case3:if(!flag)yishu(2);break;case4:if(!flag)yishu(3);break;case5:if(!flag)yishu(4);break;case6:flag++;flag1++;break;case7:sv=0;miaoshu=0;flag=0;flag1=0;break;case8:flag1++;break;default:break;}while(temp!=0xf0)//放键检测{temp=P1;temp=temp&0xf0;for(i=0;i10;i++)display(sv,miaoshu);}}//按键检测程序voidkeyscan(){uchartemp;P1=0xf0;temp=P1;武汉理工大学《计算机控制技术》课程设计7temp=temp&0xf0;if(temp!=0xf0){delay(5);//消除抖动P1=0xf0;temp=P1;temp=temp&0xf0;if(temp!=0xf0)key();}}voidpid(void)//PID计算输出量{ek=sv-miaoshu;uk=uk_1+q0*ek+q1*ek_1+q2*ek_2;ek_2=ek_1;ek_1=ek;uk_1=uk;if(uk501)uk=501;//限定输出上限if(uk1):uk=1;//限定输出下限}3.2数码管转速显示LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。武汉理工大学《计算机控制技术》课程设计8图3-2数码管数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际使用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。数码管动态显示接口是单片机中使用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。在本次课程设计中需要用到4个数码管在静态显示的工作状态下工作,用80C31来驱动数码管正常工作。为了使数码管显示数据的时候稳定准确,一般是接在80C31单片机的P0口上接一个RESPACK-8排阻,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端。武汉理工大学《计算机控制技术》课程设计9在用80C31控制4个7位数码管的时候后我们还要用到74HC240。74HC240是一款高速CMOS器件,引脚兼容低功耗双八线反响缓冲线路驱动器,具有三态输出,该三台输出有时能断控制,任意NOE上的高电平将使输出端呈现高阻态。74HC240在电路中起缓冲保护作用。数码管显示流程图:数码管显示子程序:voiddisplay(uinta,uintb){chari;shu[0]=a/100;shu[1]=a%100/10;shu[2]=a%10;shu[3]=b/100;for(i=0;i4;i++){P2=chose[i];P0=table[shu[i]];delay(3);}}3.3电动机驱动电路设计直流电动机调速的驱动电路部分,选择采用基于L298的直流电动机PWM调速方法。PWM调速装置是利用大功率晶体管的开关特性来调制固定电压的直流电源,按一个固定的频率来接通和断开,并根据需要来调节一个周期内接通和断开的开始初始化显示参数关闭所有显示位取得显示数据显示4位数字关所有显示位返回武汉理工大学《计算机控制技术》课程设计10时间的长短,通过改变直流电动机上电枢电压的占空比来改变平均电压的大小,从而控制电动机的转速。在整个PWM调速器中,CPU既是运算处理中心,又是控制中心,是最关键的器件。本系统中选用和MCS一5l系列完全兼容的80C31单片机,它是一种低功耗、高性能、CMOS八位微处理器。3.3.1驱动电路程序流程图流程图如下:3.3.2驱动电路子程序voidt0(void)interrupt1using0//定时T0中断服务函数{tcnt++;//每过250usttcnt加一if(tcnt==40)//计满40次(1/100秒)时{tcnt=0;//重新再计sec++;if(sec==10)//定时0.1秒,在从零开始计时{sec=0;TH0=0x06;//对TH0TL0赋值TL0=0x06;miaoshu=count;count=0;}开始输出低电平占空值赋初值计数器赋初值输出高电平启动AD返回计数器-1=0占空值-10武汉理工大学《计算机控制技术》课程设计11}}voidsdf(void)interrupt2using0//计数T1中断服务函数{count=count+1;
本文标题:直流电机速度控制课程设计
链接地址:https://www.777doc.com/doc-7313487 .html