《单片机匀胶机转速控制系统.doc》由会员分享,可在线阅读,更多相关《单片机匀胶机转速控制系统.doc(35页珍藏版)》请在三一办公上搜索。
1、大连理工大学本科课程设计(论文)匀胶机转速控制系统学 院(系): 机械工程学院 专 业: 测控技术与仪器 学 生 姓 名: 学 号: 指 导 教 师: 完 成 日 期: 大连理工大学Dalian University of Technology摘 要匀胶机有很多种称谓,英文叫Spin Coater或者Spin Processor,又称甩胶机、匀胶台、旋转涂胶机、旋转涂膜机、旋转涂层机、旋转涂布机、旋转薄膜机、旋转涂覆仪、旋转涂膜仪、匀膜机,总的来说,他们原理都是一样的,即在高速旋转的基片上,滴注各类胶液,利用离心力使滴在基片上的胶液均匀地涂覆在基片上,厚度视不同胶液和基片间的粘滞系数而不同,也
2、和旋转速度及时间有关。其驱动系统,实质可以简化为是一个直流电机带动转盘旋转,并用一定的测速装置进行实时测速,调速的这样一个闭环控制系统。本设计是以单片机AT89C52和L298控制的直流电机脉宽调制调速系统。利用AT89S52芯片进行低成本直流电动机控制系统的设计,能够简化系统构成、降低系统成本、增强系统性能的需要。系统实现对电机的正转、反转、急停、加速、减速的控制,并利用光电传感装置实时测速。关键词:匀胶机;AT89C52;L289目 录摘 要I引 言12 课程设计的内容及设计要求22.1 课程设计内容22.2 课程设计要求23 系统的总体方案确定33.1机械传动部分部件选择33.2控制测量
3、系统的设计与选择33.2.1 单片机选择33.2.2 电机驱动模块选择33.2.3 显示器驱动模块33.2.4 速度测量装置的选择34 机械设计部分44.1电动机的技术参数及计算44.1.1直流电机介绍44.2.2直流电动机的参数选择与计算54.2联轴器技术参数及计算54.3 匀胶机机械结构简图55 直流电机调速系统设计65.1总体框架设计65.2 设计思路65.3 PWM脉宽调制原理76 控制系统硬件设计96.1硬件模块组成96.2单片机控制模块106.2.1 AT89S52单片机106.2.2 AT89S52各引脚功能介绍106.2.3单片机控制模块整体图116.3 光电测速部分126.3
4、.3 光电测速流程模块图146.4 电机驱动模块156.4.1电机驱动模块L298芯片156.4.1.1 L298电机驱动芯片简介156.4.1.2 L298电机驱动芯片内部原理156.4.1.3 L298电机驱动芯片的逻辑功能166.4.2 显示器驱动74LS245芯片176.4.2.1 74LS245简介176.4.2.2 74LS245工作原理176.4.2.3 74LS245引脚及接线176.5 独立键盘模块186.5.1独立式键盘186.5.2 本系统中独立键盘的连接196.6 显示器模块196.6.1 7SEG-MXP-CC的引脚接线196.6.1 本系统中的接线197 其他部分设
5、计217.1 晶振电路设计217.2复位电路的设计218程序设计229仿真部分239.1总设计图239.2 仿真过程10 总结2611 附录.27引 言本次测控技术与仪器课程设计,是设计一个匀胶机的转速控制系统。我对于它的理解是我把它简化成了一个单片机控制直流电机转速,并用光电传感装置进行实时测速然后再用单片机调速的一个系统。在此基础之上,我选择了AT89C52单片机,经济适用,使用简单,并选择了L298电机驱动模块,由于需要测速以及显示当前转速,我使用了两个LED显示屏,型号为7SEG-MPX4-CC,四个共阴二极管显示器,以及驱动它的芯片74LS245。测速部分我选择了光电对管来进行测量速
6、度,直射式,即码盘。在设计完成时进行仿真模拟时,由于光电传感器在protues中无法模拟,所以我用了一个脉冲信号来替代,只不过需要之前对其进行修改参数。并且在protues中由于软件原因,没有合适的电机以及脉冲可以使得电机转速达到5000转,所以我用了个0-480转速的电机进行模拟仿真。由于学识浅薄,本文会有诸多漏洞和不恰当的地方,望各位能够发现并且批评指正,感激不尽。2 课程设计的内容及设计要求2.1 课程设计内容利用光电发射接受元件设计匀胶机直流电机转速控制系统。匀胶机是半导体工艺中常用设备,其电机转数直接决定匀胶厚度。请根据相关技术指标,选用合适的直流电机及光电发射接受元件,设计匀胶机转
7、数控制系统,并结合所采用控制芯片和驱动芯片,完成整个系统软硬件详细设计2.2 课程设计要求1.给出匀胶机的机械结构结构图,以及总体控制方案。2.用Protel给出控制系统电路的详细电路图。3.结合采用的硬件,给出控制程序,并给出仿真结果。4.给出详细的技术设计文件。3 系统的总体方案确定3.1机械传动部分部件选择3.1.1直流电机的选择 初选55ZYT06直流电机。3.1.2联轴器的选择初选TL1型弹性套柱销联轴器。3.2控制测量系统的设计与选择3.2.1 单片机选择 选择AT89S52型单片机。3.2.2 电机驱动模块选择选择L298作为电机驱动模块。3.2.3 显示器驱动模块 选择74LS
8、245作为两个显示器的驱动模块3.2.4 速度测量装置的选择选择光电对管,即码盘作为速度检测装置。4 机械设计部分 4.1电动机的技术参数及计算4.1.1直流电机介绍直流电动机转速的控制方法可分为两类:励磁控制法与电枢电压控制法。励磁控制法控制磁通,其控制功率虽然小但低速时受到磁场饱和的限制,高速时受到换向火花和转向器结构强度的限制,而且由于励磁线圈电感较大动态响应较差。所以常用的控制方法是改变电枢端电压调速的电枢电压控制法。传统的改变端电压的方法是通过调节电阻来实现的,但这种调压方法效率低。随着电力电子技术的发展,创造了许多新的电枢电压控制方法。其中脉宽调制(Pulse Width Modu
9、lation,PWM)是常用的一种调速方法。其基本原理是用改变电机电枢电压的接通和断开的时间比(即占空比)来控制马达的速度,在脉宽调速系统中当电机通电时,其速度增加,电机断电时其速度降低。只要按照一定的规律改变通断电的时间,就可使电机的速度保持在一稳定值上。直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种:直流发电机(将机械能转化为直流电能)、直流电动机(将直流电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号)。直流电机电路模型如图所示,磁极N、S间装着一个可以转动的铁磁圆柱体,圆柱体的表面上固定着一个线圈
10、abcd。当线圈中流过电流时,线圈受到电磁力作用,从而产生旋转。根据左手定则可知,当流过线圈中电流改变方向时,线圈的方向也将改变,因此通过改变线圈电路的方向实现改变电机的方向。 图1 直流电机模型4.2.2直流电动机的参数选择与计算直流电机55ZYT06额定转矩67mN*m,转速6000r/min,电压不超过27V,电流不超过2.2A。4.2联轴器技术参数及计算根据电机轴伸直径,以及设计要求的05000转速要求,选择TL1型弹性套柱销联轴器。该联轴器的相关技术参数如下:许用转速6600r/min(钢),轴孔直径12mm,转动惯量0.0004/kgm2.4.3 匀胶机机械结构简图5 直流电机调速
11、系统设计5.1总体框架设计方案说明:直流电机PWM调速系统以AT89S52单片机为控制核心,由命令输入模块、LCD显示模块及电机驱动模块组成。采用独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,完成电机正,反转和急停控制;同时单片机不停的将PWM脉宽调制占空比送到LCD数码管完成实时显示,见图。图 系统框架设计采用传统的直流电机调速系统的模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。而在用了PWM技术后,避免了以上的缺陷,实现了用数字方式来控制模拟信号,可以大幅度降低成本和功耗。另外,由于PWM 调速系统的开关频率较高,仅靠
12、电枢电感的滤波作用就可获得平稳的直流电流,低速特性好;同样,由于开关频率高,快速响应特性好,动态抗干扰能力强,可以获得很宽的频带;开关器件只工作在开关状态,主电路损耗小,装置效率高。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点5.2 设计思路直流电机PWM控制系统的主要功能包括:实现对直流电机的加速、减速以及电机的正转、反转和急停,能够很方便的实现电机的智能控制。主体电路:即直流电机PWM控制模块。这部分电路主要由AT89C52单片机的I/O端口、定时计数器、外部键盘等控制直流电机的加速、减速以及电机的正转和反转,能够很方便的实现电机的智能控制。其间是通过AT89S52单片机产生脉宽
13、可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。该直流电机PWM控制系统由以下电路模块组成:设计输入部分:这一模块主要是利用独立式键盘来实现对直流电机的加速、减速以及电机的正转、反转和急停控制。设计控制部分:主要由AT89S52单片机的外部键盘扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298直流电机驱动模块组成。设计测速部分:主要有光电对管和AT89S52实现。设计显示部分:二极管显示部分,实现对速度实时显示。5.3 PWM脉宽调制原理5.3.1 PWM调速原理PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的
14、一种电压调整方法。PWM可以应用在许多方面,比如:电机调速、温度控制、压力控制等等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”,见图所示。图 PWM信号的占空比设电机始终接通电源时,电机转速最大为Vmax,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D,其中Va指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。由
15、上面的公式可见,当我们改变占空比D=t1/T时,就可以得到不同的电机平均速度Va,从而达到调速的目的。严格来说,平均速度Va与占空比D并非严格的线性关系,但是在一般的应用中,我们可以将其近似的看成是线性关系5.3.2 PWM调速方法基于单片机类由软件来实现PWM:在PWM调速系统中占空比D是一个重要参数在电源电压Ud不变的情况下,电枢端电压的平均值取决于占空比D的大小,改变D的值可以改变电枢端电压的平均值从而达到调速的目的。改变占空比D的值有三种方法:A、定宽调频法:保持t1不变,只改变t2,这样使周期(或频率)也随之改变。B、调宽调频法:保持t2不变,只改变t1,这样使周期(或频率)也随之改
16、变。C、定频调宽法:保持周期T(或频率)不变,同时改变t1和t。前两种方法在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此常采用定频调宽法来改变占空比从而改变直流电动机电枢两端电压。利用单片机的定时计数器外加软件延时等方式来实现脉宽的自由调整,此种方式可简化硬件电路,操作性强等优点。5.3.3 PWM实现方式方案一:采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us。方案二:采用软件延时方式,这一方式在精度上不及方案一,特别是在引入中断后,将有一定的误差。故采用方案一。5.3.4 PWM控制流程图在本设计中PWM
17、脉冲调制的控制流程见下图。图PWM控制流程6 控制系统硬件设计6.1硬件模块组成(1)单片机控制模块(主)(2)光电对管测速(主)(3)驱动模块(L298和74LS245)(4)独立键盘控制模块(5)显示器显示模块6.2单片机控制模块6.2.1 AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多
18、嵌入式控制应用系统提供高灵活、超有效的解决方案。与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;全静态操作:0Hz33Hz;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;六个中断源;全双工UART串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;看门狗定时器;双数据指针;掉电标识符直流电机调速系统的控制模块见下图6.2.2 AT89S52各引脚功能介绍 AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断
19、允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。 AT89S52内部具有看门狗定时器及3个16位可编程定时器/计数器。16位是指他们都是由16个触发器构成,故最大计数模值为。可编程是指它们的工作方式由指令来设置,或者当计数器用,或者当定时器用,并且记数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制器TMOD来完成的。 存储器结构:MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于 89S52,如果EA 接VCC,程序读写先从内
20、部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:AT89S52 有256 字节片内数据存储器。图 AT89S52各个引脚6.2.3单片机控制模块整体图这里利用定时计数器让单片机P1口的P1.0引脚输出占空比不同的方波,然后经驱动芯片L298放大后控制直流电机。驱动芯片的输入电压是两引脚的电压差,在调速时一根引脚线为低电平,另一个引脚产生调速方波,这样两个引脚的电压差就可通过控制其中一个引脚来控制。当需要改变电机转动方向时,两个引脚的输出相反。定时计数器50us中断一次,就使P1.0产生一个高电平或低电平。占空比为高电平脉冲个数占一个周期
21、总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大,加在电机两端的电压越大,电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。 图 单片机控制部分整体仿真截图6.3 光电测速部分6.3.1光电测速的参数 发射管:由红外辐射效率高的材料(常用砷化镓)制成PN结,外加正向偏置电压时,向PN结注入电流激发红外光. 接收管:光敏二极管或光敏三极管,PN结受照射后产生光电流. 红外发光二极管发出红外光(近红外线约0.93m )。管压降约1.4V ,正向工作电流一般小于20mA。6.
22、3.2 光电测速原理 红外线发射与接收的方式有两种,其一是直射式,其二是反射式。直射式指发光管和接收管相对安放在发射与受控物的两端,中间相距一定距离;反射式指发光管与接收管并列一起,平时接收管始终无光照,只在发光管发出的红外光线遇到反射物时,接收管收到反射回来的红外光线才工作。 我们采用直射式,也就是码盘,见下图:红外发射管的驱动有直流驱动和脉冲驱动两种。红外发射管在直流驱动方式下,只适合近距离传输。当红外发射管在脉冲驱动方式下,最远传输距离可达20米。光电对管的电路图: 6.3.3 光电测速流程模块图初始化T0、T1,然后开始定时器T0,接着开启计数器T1,判断是否满足条件,然后关闭计数器用
23、公式计算速度,送到显示。如下图:6.4 电机驱动模块6.4.1电机驱动模块L298芯片6.4.1.1 L298电机驱动芯片简介L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 46 V;Vs 电压最大值也是 46 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。见下图。6.4.1.2 L298电机驱动芯片内部原理
24、L298内部H桥电路,电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠。如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。要使电机运转,必须使对角线上的一对三极管导通。例如,如图所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周
25、围的箭头指示为顺时针方向)。图 H桥电路驱动电机顺时针转动另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向,上图反方向)。驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。6.4.1.3 L298电机驱动芯片
26、的逻辑功能当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相 同时,电机快速停止。当使能端为低电平时,电动机停止转动。在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式。线性放大驱动方式是半导体功率器件工作在线性区,优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控
27、制,L298逻辑功能见表。表L298逻辑功能IN1IN2ENA电机状态XX0停止101顺时针011逆时针000停止110停止6.4.2 显示器驱动74LS245芯片6.4.2.1 74LS245简介74LS245是用来驱动LED或者其他的设备,它是8路同相三态双向总线收发器可双向传输数据74LS245还具有双向三态功能,既可以输出,也可以输入数据。如果用C51的P0口输出到数码管,那就要考虑到数码管的亮度以及P0口带负载的能力,当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。选用74LS245提高驱动能力。P0口的输出经过74LS245提高驱动
28、后,输出到数码管显示电路。6.4.2.2 74LS245工作原理工作原理:当片选端/CE低电平有效时, DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态6.4.2.3 74LS245引脚及接线如图所示6.5 独立键盘模块6.5.1独立式键盘独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下,独立式键盘见图。图 独立式键盘接线6.5.2 本系统中独立键盘的连接如图所示6.6 显示器模块
29、6.6.1 7SEG-MXP-CC的引脚接线 图 7SEG-MXP-CC引脚图6.6.1 本系统中的接线 7SEG-MXP-CC是四个共阴二极管的显示器,需要接上拉电阻。接线图如下:在本系统中,我使用的是大小为1k欧姆的上拉电阻。本设计显示模块该电路实现的功能是:通过AT89S52的P20P27八个口输出控制信号,控制液晶的8位双向数据线,通过单片机的P00-P08向液晶模块发送命令,控制液晶执行各种命令.其中上方显示屏为实际转速,即光电传感器测量的转速,下方的是单片机设定的转速。7 其他部分设计7.1 晶振电路设计7.2复位电路的设计8程序设计主程序描述:首先运行程序主函数main,进行系统
30、初始化,设置定时/计数器工作方式1,开启T1中断,定时50us。然后进行按键查询,本系统有五个按键,加速、减速、正反转、急停。如果有按键按下,得到相对应的脉冲W,最后利用显示器实时显示速度。流程图见下图程序见附录9仿真部分9.1总设计图注:在protues中光电传感器无法仿真模拟,故用一个脉冲信号源代替。9.2设定转速380时电机动态过程达到设定转速降速过程稳定状态10 总结通过本次课程设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛以及本专业“测”和“控”这两部分的深入认识。通过本设计,较系统地掌握有关单片机控制的设计思想和设计方法,主要对51系列单片机的结
31、构、功能、及内部资源,显示器等的了解,以及一些驱动芯片的运用和认识有了另外的体验。更加重要的是,我对于测试和加以应用的知识得到学习。在做课程设计的初期阶段没有头绪。在图书馆里、网上查阅资料,攻克了课程设计中的道道难题。通过本次课程设计实践,我学到了许多东西,知道光靠书本上的东西是不够的,需额外去查资料。无论是在硬件还是软件设计上,我都遇到了不少的问题,在克服困难的过程中,我学到了许多,特别是在课堂上学不到的东西如(PWM)。通过这次的毕业设计, 我体会到应该掌握丰富的理论知识,理论知识是设计的前提,但同时又决不能局限于理论,要多动手才能将理论与实际工作联系起来。在设计过程中,深深感受到自己在对
32、一些器件的了解上,还存在很大差距,对它们的功能,参数都不是太熟悉。但是通过这次理论与实际的结合之后,认识比以前有不少提高,在系统硬件设计及软件设计方面都有了长足的进步。在本次课程设计中,对于有的元器件我没有实际用过,这份课程设计可以说是“纸上谈兵”,其中有非常多的错误和不恰当的地方,希望老师能够批评指正教导,感激不尽。附录1. 程序#include#include#define uchar unsigned char #define uint unsigned int#define THC0 0xf9#define TLC0 0x0f /2msunsigned char code Duan=0
33、x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/共阴极数码管,0-9段码表unsigned char Data_Buffer8=0,0,0,0,0,0,0,0; uchar i=0;sbit AddSpeed=P11;sbit SubSpeed=P12;sbit PWM_FC=P10;int e ,e1 ,e2 ;/pid 偏差float uk ,uk1 ,duk ;/pid输出值float Kp=10,Ki=12,Kd=1.6;/pid控制系数10,12,1.5int out=0;uint SpeedSet=380;uint cnt=0;
34、uint Inpluse=0,num=0;/脉冲计数uint PWMTime=100;/脉冲宽度unsigned char arry;void SendString(uint ch);void PIDControl();void SystemInit();void delay(uchar x);void PWMOUT();void SetSpeed();void SegRefre();/*主函数*/void main()SystemInit();while(1)SetSpeed();SegRefre();PWMOUT(); void PIDControl() /pid偏差计算e=SpeedSe
35、t-num;duk=(Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2)/50; /+Kd*(e-2e1+e2)uk=uk1+duk;out=(int)uk;if(out1000)out=1000;else if(out0;i-)for(j=50;j0;j-);void PWMOUT()if(cnt1000) cnt=0;void SystemInit()TMOD=0X21; TH0=THC0;TL0=TLC0;TH1=0xC0;TL1=0XC0;ET1=1;ET0=1;TR0=1;TR1=1;EX0=1; /中断0用来测量转速IT0=1;EA=1;e =0;e1=0;e2=0;voi
36、d SetSpeed()if(AddSpeed=0)delay(200);if(AddSpeed=0)SpeedSet+=10;if(SpeedSet1500)SpeedSet=1500;if(SubSpeed=0)delay(200);if(SubSpeed=0)SpeedSet-=10;if(SpeedSet8) Bit=0;P0=0xff;P2=DuanData_BufferBit;switch(Bit)case 0:P0=0X7F;break;case 1:P0=0XBF;break;case 2:P0=0XDF;break;case 3:P0=0XEF;break;case 4:P0=0XF7;break;case 5:P0=0XFB;break;case 6:P0=0XFD;break;case 7:P0=0XFE;break;if(time100)time=0;num=Inpluse*5;Inpluse=0; PIDControl();void timer_1() interrupt 3 cnt+;/cnt越大占空比越高2.5Khz2. 部分流程图