直流电机闭环调速控制系统设计报告
- 格式:doc
- 大小:174.50 KB
- 文档页数:25
最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告班级:xx姓名:xx学号:xx时间:第16周周日9-12节指导老师:xx老师最小拍控制系统一.实验目的1.掌握最小拍有纹波控制系统的设计方法。
2.掌握最小拍无纹波控制系统的设计方法。
二.实验设备PC机一台,TD-ACC+实验系统一套,i386EX 系统板一块三.实验原理典型的最小拍控制系统如图4.1-1所示,其中 D(Z)为数字调节器,G(Z) 为包括零阶保持器在内的广义对象的Z 传递函数,Φ (Z)为闭环Z 传递函数,C(Z) 为输出信号的Z 传递函数,R(Z) 为输入信号的Z 传递函数。
1.最小拍有纹波系统设计。
图4.1-2是一个典型的最小拍控制系统。
针对阶跃输入,其有纹波系统控制算法可设计为:2.最小拍无纹波系统设计。
有纹波系统虽然在采样点上的误差为零,但不能保证采样点之间的误差值也为零,因此存在纹波现象。
无纹波系统设计只要使U(Z) 是Z-1的有限多项式,则可以保证系统输出无纹波。
即:式中 Pi 、Z i――分别是G(Z) 的极点和零点。
为了使U(Z) 为有限多项式,只要Φ (Z)的零点包含G(Z) 的全部零点即可,这也是最小拍无纹波设计和有纹波设计的唯一不同点。
如图4.1-2所示,针对单位斜波输入,无纹波系统控制算法可设计为:3.实验接线图。
图4.1-2所示的方框图,其硬件电路原理及接线图可设计如下,图中画“○”的线需用户在实验中自行接好,对象需用户在运放单元搭接。
上图中,控制计算机的“OUT1”表示386EX 内部 1 #定时器的输出端,定时器输出的方波周期=定时器时常,“IRQ7”表示386EX 内部主片8259的7 号中断,用作采样中断,“DIN0”表示386EX 的I/O 管脚P1.0 ,在这里作为输入管脚用来检测信号是否同步。
4.数字控制的实现。
图4.1-4是数字控制器实现的参考程序流程图。
四.实验步骤1. 参考流程图4.1-4编写程序,检查无误后编译、链接。
双闭环直流调速实验报告双闭环直流调速实验报告引言:直流电机作为一种常见的电动机类型,广泛应用于工业生产和日常生活中。
为了提高直流电机的调速性能,双闭环直流调速系统应运而生。
本实验旨在通过搭建双闭环直流调速系统,对其性能进行测试和评估。
一、实验目的本实验的主要目的是研究和掌握双闭环直流调速系统的工作原理和性能特点,具体包括以下几个方面:1. 了解双闭环直流调速系统的组成和工作原理;2. 掌握双闭环直流调速系统的参数调节方法;3. 测试和评估双闭环直流调速系统的调速性能。
二、实验原理双闭环直流调速系统由速度环和电流环组成,其中速度环负责控制电机的转速,电流环负责控制电机的电流。
具体工作原理如下:1. 速度环:速度环通过测量电机的转速,与给定的转速进行比较,计算出转速误差,并将误差信号经过PID控制器进行处理,最终输出控制信号给电流环。
2. 电流环:电流环通过测量电机的电流,与速度环输出的控制信号进行比较,计算出电流误差,并将误差信号经过PID控制器进行处理,最终输出控制信号给电机。
三、实验步骤1. 搭建实验平台:将直流电机与电机驱动器连接,并将驱动器与控制器相连。
2. 参数设置:根据实验要求,设置速度环和电流环的PID参数。
3. 测试电机转速:给定一个转速值,观察电机的实际转速是否与给定值一致。
4. 测试电机负载:通过改变电机负载,观察电机的转速是否能够稳定在给定值附近。
5. 测试电机响应时间:通过改变给定转速,观察电机的响应时间,并记录下来。
6. 测试电流控制性能:通过改变电机负载,观察电机电流的变化情况,并记录下来。
四、实验结果与分析1. 电机转速测试结果表明,双闭环直流调速系统能够准确控制电机的转速,实际转速与给定值之间的误差较小。
2. 电机负载测试结果表明,双闭环直流调速系统能够在不同负载下保持电机的转速稳定,具有较好的负载适应性。
3. 电机响应时间测试结果表明,双闭环直流调速系统的响应时间较短,能够快速响应给定转速的变化。
实训报告课程名称:专业实训专业:班级:学号:姓名:指导教师:成绩:完成日期: 2015 年 1月15 日任务书1 单闭环直流调速系统主电路设计单闭环直流调速系统是指只有一个转速负反馈构成的闭环控制系统。
在电动机轴上装一台测速发电机SF ,引出与转速成正比的电压U f 与给定电压U d 比较后,得偏差电压ΔU ,经放大器FD ,产生触发装置CF 的控制电压U k ,用以控制电动机的转速,如图所示。
直流电机,额定电压20V ,额定电流7A ,励磁电压20V ,最大允许电流40A 。
整流变压器额定参数的计算为了保证负载能正常工作,当主电路的接线形式和负载要求的额定电压确定之后,晶闸管交流侧的电压U 2只能在一个较小的范围内变化,为此必须精确计算整流变压器次级电压U 2。
(1)二次侧相电流和一次侧相电流在精度要求不高的情况下,变压器的二次侧相电压U 2的计算公式: 几种整流线路变压器电压计算系统参数,如表所示。
表 几种整流线路变压器电压计算系统电路模式单相全波单相桥式三相半波三相桥式A C所以变压器二次侧相电压为:21.35200.930U V =⨯÷=变压器的二次侧电流I 2的计算公式: 几种整流线路变压器电流I d /I 2系数,如表。
表 几种整流线路变压器电流Id/I2电路模式 电阻性负载电感性负载单相全控桥 1 三相全控桥查表得,1A =。
变压器的二次侧电流:27d I I A ==变压器的一次侧电流I 1的计算公式:一次侧电流:2112/7302200.95I I U U A =*=⨯÷= (2)变压器容量整流电路为单相桥式,取121m m m ===。
二次容量:22221307210S m U I W ==⨯⨯= 一次容量:111112200.95209S mU I W ==⨯⨯= 平均计算容量:121()209.52S S S W =+= 整流器件晶闸管的参数计算及选择额定电压U TN 、电流I TN 、功率P TN 。
单闭环直流调速系统实验报告单闭环直流调速系统实验报告一、引言直流调速系统是现代工业中常用的一种电机调速方式。
本实验旨在通过搭建单闭环直流调速系统,探究其调速性能以及对电机转速的控制效果。
二、实验原理单闭环直流调速系统由电机、编码器、电流传感器、控制器和功率电路等组成。
电机通过功率电路接受控制器的指令,实现转速调节。
编码器用于测量电机转速,电流传感器用于测量电机电流。
三、实验步骤1. 搭建实验电路:将电机、编码器、电流传感器、控制器和功率电路按照实验原理连接起来。
2. 调试电机:通过控制器设置电机的运行参数,如额定转速、最大转矩等。
3. 运行实验:根据实验要求,设置不同的转速指令,观察电机的响应情况。
4. 记录实验数据:记录电机的转速、电流等数据,并绘制相应的曲线图。
5. 分析实验结果:根据实验数据,分析电机的调速性能和控制效果。
四、实验结果分析1. 转速响应特性:通过设置不同的转速指令,观察电机的转速响应情况。
实验结果显示,电机的转速随着指令的变化而变化,且响应速度较快。
2. 稳态误差分析:通过观察实验数据,计算电机在不同转速下的稳态误差。
实验结果显示,电机的稳态误差较小,说明了系统的控制效果较好。
3. 转速控制精度:通过观察实验数据,计算电机在不同转速下的控制精度。
实验结果显示,电机的转速控制精度较高,且随着转速的增加而提高。
五、实验总结本实验通过搭建单闭环直流调速系统,探究了其调速性能和对电机转速的控制效果。
实验结果表明,该系统具有较好的转速响应特性、稳态误差较小和较高的转速控制精度。
然而,实验中也发现了一些问题,如系统的抗干扰能力较弱等。
因此,在实际应用中,还需要进一步优化和改进。
六、展望基于本实验的结果和问题,未来可以进一步研究和改进单闭环直流调速系统。
例如,可以提高系统的抗干扰能力,提升转速控制的稳定性和精度。
同时,还可以探索其他调速方式,如双闭环调速系统等,以满足不同的工业应用需求。
1 设计方案论证电流环调节器方案一,采用PID调节器,PID调节器是最理想的调节器,能够平滑快速调速,但在实际应用过程中存在微分冲击,将对电机产生较大的冲击作用,一般要小心使用。
方案二,采用PI调节器,PI调节器能够做到无静差调节,且电路较PID调节器简单,故采用方案二。
转速环调节器方案一,采用PID调节器,PID调节器是最理想的调节器,能够平滑快速调速,但在实际应用过程中存在微分冲击,将对电机产生较大的冲击作用,一般要小心使用。
方案二,采用PI调节器,PI调节器能够做到无静差调节,且电路较PID调节器简单,故采用方案二。
2双闭环调速控制系统电路设计及其原理综述随着现代工业的开展,在调速领域中,双闭环控制的理念已经得到了越来越广泛的认同与应用。
相对于单闭环系统中不能随心所欲地控制电流和转矩的动态过程的弱点。
双闭环控制那么很好的弥补了他的这一缺陷。
双闭环控制可实现转速和电流两种负反应的分别作用,从而获得良好的静,动态性能。
其良好的动态性能主要表达在其抗负载扰动以及抗电网电压扰动之上。
正由于双闭环调速的众多优点,所以在此有必要对其最优化设计进展深入的探讨和研究。
本次课程设计目的就是旨在对双闭环进展最优化的设计。
整流电路本次课程设计的整流主电路采用的是三相桥式全控整流电路,它可看成是由一组共阴接法和另一组共阳接法的三相半波可控整流电路串联而成。
共阴极组VT1、VT3和VT5在正半周导电,流经变压器的电流为正向电流;共阳极组VT2、VT4和VT6在负半周导电,流经变压器的电流为反向电流。
变压器每相绕组在正负半周都有电流流过,因此,变压器绕组中没有直流磁通势,同时也提高了变压器绕组的利用率。
三相桥式全控整流电路多用于直流电动机或要求实现有源逆变的负载。
为使负载电流连续平滑,有利于直流电动机换向及减小火花,以改善电动机的机械特性,一般要串入电感量足够大的平波电抗器,这就等同于含有反电动势的大电感负载。
三相桥式全控整流电路的工作原理是当a=0°时的工作情况。
电机控制实验一双闭环晶闸管不可逆直流调速系统实验报告实验目的:1.了解晶闸管非可逆直流调速系统的原理;2.掌握晶闸管开启和关断控制方法;3.了解直流电机的调速特性。
实验仪器:1.直流电机调速实验台2.万用电表3.示波器4.信号源实验原理:晶闸管非可逆直流调速系统是通过控制晶闸管的触发角来改变直流电机的电压和电流,从而实现电机的调速。
实验内容:1.搭建晶闸管非可逆直流调速系统,包括直流电源、晶闸管、直流电机和速度检测电路。
2.调整触发脉冲信号的幅值和信号源的频率,观察直流电机的转速变化,并记录相关数据。
3.调整触发脉冲信号的宽度,观察直流电机的转速变化,并记录相关数据。
4.改变直流电压的大小,观察直流电机的转速变化,并记录相关数据。
实验步骤:1.将直流电机连接到调速实验台,调整电机的负载为合适的值。
2.将触发脉冲信号连接到晶闸管的控制端,调整信号源的幅值和频率。
3.接通直流电源,调整触发脉冲信号的宽度,记录电机的转速。
4.改变直流电源的电压,再次记录电机的转速。
实验结果:1.观察电机转速随触发脉冲信号幅值和频率的变化,绘制转速和触发脉冲幅值以及频率的曲线图。
2.观察电机转速随触发脉冲宽度的变化,绘制转速和触发脉冲宽度的曲线图。
3.观察电机转速随直流电源电压变化,绘制转速和电压的曲线图。
实验讨论:1.分析调速系统的稳定性和动态特性;2.分析电机转速与触发脉冲幅值、频率、宽度以及电源电压的关系。
实验结论:通过本次实验,我们了解了晶闸管非可逆直流调速系统的原理和调速特性。
实验结果表明,在一定范围内,调节触发脉冲的幅值、频率和宽度,以及改变直流电源的电压,都可以实现对电机转速的控制。
了解了晶闸管非可逆直流调速系统的特点和应用范围,为今后工作中的调速系统设计提供了参考依据。
双闭环直流调速系统的设计与仿真实验报告一、系统结构设计双闭环直流调速系统由两个闭环控制组成,分别是速度子环和电流子环。
速度子环负责监测电机的转速,并根据设定值与实际转速的误差,输出电流指令给电流子环。
电流子环负责监测电机的电流,并根据电流指令与实际电流的误差,输出电压指令给电机驱动器,实现对电机转速的精确控制。
二、参数选择在进行双闭环直流调速系统的设计之前,需选择合适的控制参数。
根据实际的电机参数和转速要求,确定速度环和电流环的比例增益和积分时间常数等参数。
同时,还需根据电机的动态特性和负载特性,选取合适的速度和电流传感器。
三、控制策略速度子环采用PID控制器,通过计算速度误差、积分误差和微分误差,生成电流指令,并传递给电流子环。
电流子环也采用PID控制器,通过计算电流误差、积分误差和微分误差,生成电压指令,并输出给电机驱动器。
四、仿真实验为了验证双闭环直流调速系统的性能,进行了仿真实验。
首先,通过Matlab/Simulink建立双闭环直流调速系统的模型,并设置不同转速和负载条件,对系统进行仿真。
然后,通过调整控制参数,观察系统响应速度、稳定性和抗干扰性等指标的变化。
五、仿真结果分析根据仿真实验的结果可以看出,双闭环直流调速系统能够实现对电机转速的精确控制。
当系统负载发生变化时,速度子环能够快速调整电流指令,使电机转速保持稳定。
同时,电流子环能够根据速度子环的电流指令,快速调整电压指令,以满足实际转速的要求。
此外,通过调整控制参数,可以改善系统的响应速度和稳定性。
六、总结双闭环直流调速系统是一种高精度的电机调速方案,通过双重反馈控制实现对电机转速的精确控制。
本文介绍了该系统的设计与仿真实验,包括系统结构设计、参数选择、控制策略及仿真结果等。
仿真实验结果表明,双闭环直流调速系统具有良好的控制性能,能够满足实际转速的要求。
1双闭环直流调速系统课程设计报告第一章主电路设计与参数计算调速系统方案的选择因为电机上网容量较大又要求电流的脉动小应采纳三相全控桥式整流电路供电方案。
电动机额定电压为220V 为保证供电质量应采纳三相减压变压器将电源电压降低。
为防止三次谐波电动势的不良影响三次谐波电流对电源的扰乱。
主变压器采纳 A/D 联络。
因调速精度要求较高应采纳转速负反应调速系统。
采纳电流截止负反应进行限流保护。
出现故障电流时过电流继电器切断主电路电源。
为使线路简单工作靠谱装置体积小宜采纳 KJ004 构成的六脉冲集成触发电路。
该系统采纳减压调速方案故励磁应保持恒定励磁绕组采纳三相不控桥式整流电路供电电源可从主变压器二次侧引入。
为保证先加励磁后加电枢电压主接触器主触点应在励磁绕组通电后方可闭合同时设有弱磁保护环节电动机的额定电压为 220V 为保证供电质量应采纳三相减 2 压变压器将电源电压降低为防止三次谐波电动势的不良影响三次谐波电流对电源的扰乱主变压器采纳D/Y 联络。
1.1 整流变压器的设计 1.1.1 变压器二次侧电压U2 的计算U2 是一个重要的参数选择过低就会没法保证输出额定电压。
选择过大又会造成延迟角α加大功率因数变坏整流元件的耐压高升增添了装置的成本。
一般可按下式计算即BAUUd2.112 1-1 式中 A-- 理想状况下α0°时整流电压 Ud0 与二次电压U2 之比即AUd0/U2B-- 延缓角为α时输出电压Ud 与 Ud0 之比即BUd/Ud0 ε——电网颠簸系数系数依据设计要求采纳公式11.2——考虑各样因数的安全BAUUd2.112 1-3由表查得A2.34 取ε 0.9 角α考虑 10°裕量则Bcosα 0.985222011.21061272.340.90.985UV 取 U2120V 。
电压比KU1/U2380/1203.2 。
1.1.2 一次、二次相电流 I1 、I2 的计算由表查得 KI10.816 KI20.816 考虑变压器励磁电流得取1.1.3 变压器容量的计算S1m1U1I1 1-4 S2m2U2I2 1-5S1/2S1S2 1-6 式中 m1、m2 -- 一次侧与二次侧绕组的相数表查得 m13m23 S1m1U1I13× 380×1415.6KVA由S2m2U2I23×110×44.914.85 KVA考虑励磁功率LP220×1.60.352kW 取 S15.6kvA 1.2 晶闸管元件的选择晶闸管的额定电压晶闸管实质蒙受的最大峰值电压TNU 乘以 23 倍的安全裕量参照标准电压等级即可确立晶闸管的额定电压 TNU 即 TNU 23mU 整流电路形式为三相全控桥查表得26UUm 则223236236110539808TNmUUUV 3-7 取晶闸管的额定电流选择晶闸管额定电流的原则是一定使管子同意经过的额定电流有效值TNI 大于实质流过管子电流最大有效值TI8 即 4 TNI 1.57AVTITI 或AVTI57.1TI57.1TIddIIKdI 1-8 考虑 1.52 倍的裕量AVTI1.52KdI 1-9 式中KTI/1.57dI-- 电流计算系数。
转速电流双闭环直流调速系统设计一、引言直流调速系统是控制直流电机转速的一种常用方法。
在实际应用中,为了提高系统性能,通常采用双闭环控制结构,即转速环和电流环。
转速环用于控制电机转速,电流环用于控制电机电流。
本文将对转速、电流双闭环直流调速系统进行详细设计。
二、转速环设计转速环的主要功能是通过控制电机的转矩来实现对转速的精确控制。
转速环设计步骤如下:1.系统建模:根据电机的特性曲线和转矩方程,建立电机数学模型。
通常采用转速-电压模型,即Tm=Kt*Ua-Kv*w。
2.设计转速环控制器:选择适当的控制器类型和参数,比如PID控制器。
根据电机数学模型,可以使用根轨迹法、频域法等进行控制器参数设计。
确定控制器增益Kp、Ki和Kd。
3.闭环仿真:使用仿真软件,进行闭环仿真,验证控制器的性能。
4.实际系统调试:将设计好的转速环控制器实施到实际系统中,进行调试和优化。
根据实际情况对控制器参数进行微调。
三、电流环设计电流环的主要功能是控制电机的电流,以确保电机输出的转矩能够满足转速环的要求。
电流环设计步骤如下:1.系统建模:根据电机的特性曲线和电流方程,建立电机数学模型。
通常采用电流-电压模型,即Ia=(Ua-R*Ia-Ke*w)/L。
2.设计电流环控制器:选择适当的控制器类型和参数,比如PID控制器。
根据电机数学模型,可以使用根轨迹法、频域法等进行控制器参数设计。
确定控制器增益Kp、Ki和Kd。
3.闭环仿真:使用仿真软件,进行闭环仿真,验证控制器的性能。
4.实际系统调试:将设计好的电流环控制器实施到实际系统中,进行调试和优化。
根据实际情况对控制器参数进行微调。
四、双闭环控制系统设计在转速环和电流环都设计好的基础上,将两个闭环控制器连接起来,形成双闭环控制系统。
具体步骤如下:1.控制系统结构设计:将电流环置于转速环的前端,形成串级控制结构。
2.系统建模:将转速环和电流环的数学模型进行串联,建立双闭环控制系统的数学模型。
目录 (1)一、课设任务 (2)1.1设计内容 (2)1.2具体要求 (2)1.3程序调试建议 (2)二、系统方案 (3)三、硬件设计 (3)3.1数码管显示和行列式键盘电路 (4)3.2数模变换电路 (5)3.3直流电机驱动电路 (6)3.4片选译码电路 (7)3.5 RAM电路 (7)四、软件设计 (8)五、调试及结果 (19)六、心得体会 (19)七、参考文献 (20)八、附录 (20)直流电机闭环调速控制系统设计报告一、课设任务1.1设计内容:以实验室实验装置为设计对象,从中选择出合适的部分,构成一个直流电机恒转速控制系统,具有如下功能:1、可以通过按键设定直流电机转速(转/ 分钟,r/min);2、可以实时显示电机转速,同时显示设定值(各用三位显示);3、运行过程中改变负载可以维持设定的转速稳定后保持不变。
(稳态误差小于等于设定值的5%)4、开始时只显示设定值,采集值显示为0,按运行键后显示实时采集值与设定值,左边三位是设定值,右边三位是实时值;5、设置停止运行键,控制直流电机停止运行;6、其它扩展发挥功能。
1.2具体要求:1、根据功能要求从实验装置上选择合适电路构成系统,用protel软件画出原理图与控制系统结构图,分析系统工作过程;2、根据实验装置具体情况确定接线方法,从而确定各端口的口地址(D/A、键盘、显示等);3、采用PID算法作为恒转速控制算法,对PID算法加以分析说明;4、按照系统工作过程要求编制程序,画出流程图与编写具体程序;5、调试运行,记录运行结果;6、书写课程设计报告,符合学院有关课程报告的要求。
1.3程序调试建议:1、先通过简单程序验证硬件工作正常(D/A输出,带负载能力,显示器正常等等);不正常时及时与实验室老师联系更换器件。
2、调试测速显示子程序;3、调试参数设置程序;4、调试控制算法程序;5、调试综合程序二、系统方案直流电动机具有良好的起、制动性能,宜于大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域得到了广泛的应用。
采用PID调节的转速单环直流调速系统可以在保证稳定的前提下实现转速无静差。
系统进行信号采集进行D/A转换,使单片机送出脉冲来控制触发器,控制电路输出,驱动电动机工作,再由检测电路带回实际转速给单片机,让单片机根据实际转速和给定的转速进行比较,放大及PID运算等操作,从而控制整流电路α角的大小,进而改变电机电枢电压的大小,达到调节电动机转速的目的。
三、硬件设计3.1 数码管显示和行列式键盘电路数码管显示和行列式键盘电路图3.2数模变换电路数模变换电路图3.3直流电机驱动电路:直流电机驱动电路图3.4片选译码电路:片选译码电路图3.5 RAM电路:RAM 电路图四、软件设计MCS-51 8031ROM 2662DAC 0832 模数 转换LED 显示 PID 调速键盘设 定速度LED 显示判断按键执行跳转图1 结构框图主程序流程图显示程序流程图程序://*********课程设计PID直流电机调速******************** #include <reg51.h>//******************地址定义*********************************xdata unsigned char IN _at_ 0x8001; // 键盘读入口xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char CS0832 _at_ 0x9000; // DA地址约定//********************变量定义***********************************unsigned int VOUT=0 ; // DA输出缓存变量unsigned int FDC=0,FREF=0,DFDC=0,uctrl=0; // 转速检测值FDC,给定值FREFunsigned int PVAL=10,PIVAL=1,IVAL=0;unsigned int ERROR;//********************缓冲区及其长度定义*************************#define LEDLen 6 //数码管数量unsigned char LEDBuf[LEDLen]; // 显示缓冲//****************** 八段管显示码*********************************code unsigned char LEDMAP[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//****************** 键码定义************************************code unsigned char KeyTable[] = {0x16, 0x15, 0x14, 0xff,0x13, 0x12, 0x11, 0x10,0x0d, 0x0c, 0x0b, 0x0a,0x0e, 0x03, 0x06, 0x09,0x0f, 0x02, 0x05, 0x08,0x00, 0x01, 0x04, 0x07};//*********延时程序********************************************* void Delay(unsigned char CNT){unsigned char i;while (CNT-- !=0)for (i=100; i !=0; i--);}//***********动态显示程序****************************************** void DisplayLED(){unsigned char i;unsigned char Pos;unsigned char LED;Pos = 0x20; // 从左边开始显示for (i = 0; i < LEDLen; i++){OUTBIT = 0; // 关所有八段管LED = LEDBuf[i];OUTSEG = LED;OUTBIT = Pos; // 显示一位八段管Delay(1);Pos >>= 1; // 显示下一位}}//***********键闭合程序****************************************** unsigned char TestKey(){OUTBIT = 0; // 输出线置为0return (~IN & 0x0f); // 读入键状态(高四位不用)}//**************得键值程序************************************* unsigned char GetKey(){unsigned char Pos;unsigned char i;unsigned char k;i = 6;Pos = 0x20;do {OUTBIT = ~ Pos;Pos >>= 1;k = ~IN & 0x0f;} while ((--i != 0) && (k == 0));if (k != 0){ i *= 4;if (k & 2)i += 1;else if (k & 4)i += 2;else if (k & 8)i += 3;OUTBIT = 1;do Delay(10);while (TestKey()); // 等键释放return(KeyT able[i]); // 取出键码}else return(0xff);}//****************速度设定程序************************void speedset(){ unsigned char i=0,j=0,k=0,s,KEY,m;unsigned char b=0,c=0;LEDBuf[0] = LEDMAP[0];LEDBuf[1] = LEDMAP[0];LEDBuf[2] =LEDMAP[0];LEDBuf[3] = LEDMAP[0];LEDBuf[4] = LEDMAP[0];LEDBuf[5] = LEDMAP[0];while(k!=10) //A键为确认键;{/* m=0;LEDBuf[i]=0x00; //关闭相应位;while(m!=10){DisplayLED();m++; } //延时;m=0;LEDBuf[j] = LEDMAP[KEY]; //重新放回设定值;LEDBuf[i]=LEDBuf[i+3]; //实现闪烁原来的值;while(m!=20){DisplayLED();m++; } //延时;m=0;DisplayLED();*/if( TestKey() ){ s= GetKey();k= s & 0x0f;if((k>=0)&&(k<=9)) //速度设定,0--9有效;{ KEY=k;LEDBuf[i] = LEDMAP[KEY];//高三位保存设定值;LEDBuf[i+3] =LEDBuf[i];//保存原值;if(i==0) { b= (KEY%10)*10; }if(i==1) { c= (KEY%10);FREF= b+c; }j=i;i++;}}if(i==2)i=0; //第二位设定好,返回第一位;DisplayLED();}}//*************定时器子程序,自动重装模式定时200us******#define T200us (256-100) // 200us时间常数(6M) unsigned int C200us; // 200us记数单元//*********定时器和外部中断初始化***************void InitT(){TMOD=2; //自动重装模式TH0 = T200us; //定时200usTL0 = T200us;ET0=1; //开定时器中断IT0=1; //外部中断下降沿触发EX0=1; //开外部中断TR0=1; //开定时器0EA=1; //开总中断}//********** 定时器0中断子程序,计时************ void T0Int() interrupt 1{C200us++;}//外部中断测速子程序int TDC=0; //电机转动周期寄存器void ExtInt0() interrupt 0{TDC=C200us; // 参数传递C200us = 0; //定时器计数变量清零FDC=5000/TDC;DFDC=FDC*60; //实际周期换算}//*****************转速闭环调节程序************* void PIDTiaoSu(){if(FREF>FDC){ ERROR=FREF-FDC;IVAL=IVAL+ERROR/8;if(IVAL>=0Xf5)IVAL=0Xf5;uctrl=PVAL*ERROR+PIVAL*IVAL;VOUT=uctrl;if(VOUT>0xf0)VOUT=0xf0;if(VOUT<0x80)VOUT=0x80;}if(FREF<FDC){ ERROR=FDC-FREF;IVAL=IVAL-ERROR;if(IVAL>=0XF5) IVAL=0XF5;uctrl=-PVAL*ERROR+PIVAL*IVAL;VOUT=uctrl;if(VOUT>0xf0) VOUT=0xf0;if(VOUT<0x8f) VOUT=0x80;}LEDBuf[2] = LEDMAP[DFDC/1000]; //实际转速千位;LEDBuf[3] = LEDMAP[DFDC%1000/100]; //实际转速百位;LEDBuf[4] = LEDMAP[DFDC%100/10] ; //实际转速十位;LEDBuf[5] = LEDMAP[DFDC%10]; //实际转速个位;DisplayLED();}//*************主程序***********************void main(){ unsigned char KEY,i,s;for(i=0;i<=5;i++)LEDBuf[i] = LEDMAP[0];//初始值显示0;while(1){ DisplayLED();if(TestKey()){ s=getkey() ;KEY= s & 0x0f;if(KEY==13) // D键运行;{ InitT();CS0832=0X80;Delay(5);while(KEY!=14) //运行时按E停止键;{s=getkey() ;KEY= s & 0x0f;DisplayLED();CS0832=VOUT;PIDTiaoSu();}}while(KEY==14) //E键停止;{ for(i=2;i<=5;i++)LEDBuf[i] = LEDMAP[0];CS0832=0;s=getkey() ;KEY= s & 0x0f;if(KEY==12) speedset(); //停止后设定速度;DisplayLED();}if(KEY==12) { speedset();} //C键设置速度值;}}}五、调试及结果正确连接硬件电路,打开伟福编译程序,将编写好的程序调出,设置伟福实验装置,点击编译、运行。