微机原理课程设计—直流电机闭环调速控制系统
直流电机闭环调速系统设计

直流电机驱动模块L298
1) L298 内部有两个完全相同的桥式驱动电路构成, 分别驱动两个直流电机的正反转; 2) 组成桥式驱动的是四个大功率的 NPN 三极管, 两路共 8 个; 3)控制每路四个功率管的则是四个门电路, 两路共 8 个; 4) 控制直流电动机正、 反转的是由 In1 和 In2, 另一路是 In3 和In4; 5) EnA 和 EnB 是禁止输出控制。
e(k),e(k-1)—第k次,第k-1次采样数字控制器的输入; kp—比例系数;
缺点:u(k)与过去状态有关,需对e(k)进行累加,计算量
大,易产生较大误差;
Td T ki—积分系数,ki k p ;kd — 微分系数,kd k p T Ti
二、增量式PID控制算法:
Δu(k) = u(k) - u(k-1) = kp[e(k)-e(k-1)]+kie(k)+kd[e(k)-2e(k-1)+e(k-2)]
+5V R1 200Ω R2 470Ω 接单片机
发光二极管 圆盘 光敏三极管
程序设计
PID : Proportional(比例)、Integral(积分)、 Derivative(微分)的缩写。PID控制规律是连续系统 中最成熟、应用最广泛的控制规律。PID分为模拟式 和数字式,数字式包含位置式和增量式两种形式。
积分(I)控制在积分控制中,控制器的输出与输入误差信 号的积分成正比关系。对一个自动控制系统,如果在进入 稳态后存在稳态误差,则称这个控制系统是有稳态误差的 或简称有差系统。为了消除稳态误差,在控制器中必须引 入“ 积分项” 。积分项对误差取决于时间的积分,随着 时间的增加,积分项会增大。这样,即便误差很小,积分 项也会随着时间的增加而加大,它推动控制器的输出增大 使稳态误差进一步减小,直到等于零。因此,比例+积分 (PI)控制器,可以使系统在进入稳态后无稳态误差。实质 就是对偏差累积进行控制,直至偏差为零。积分控制作用 始终施加指向给定值的作用力,有利于消除静差,其效果 不仅与偏差大小有关,而且还与偏差持续的时间有关。简 单来说就是把偏差积累起来,一起算总帐。
微机原理及应用课程设计说明书微型直流电机调速系统设计

微机原理及应用课程设计说明书设计题目:微型直流电机调速系统设计、系统功能要求分析1二、方案设计及其说明 (2)三、原理线路设计 (3)1.原理线路2.工作原理说明3.操作时序分析4.特点说明四、程序设计 (4)1.程序结构及流程2.程序算法分析3.关键程序段说明4.源程序清单五、....................................................... 系统调试及结论. (5)1.调试方法2.重点问题及解决方法3.运行结果及结论六、设计体会 (6)参考文献 (7)、系统功能要求分析此设计要求利用实验装置,设计一个直流电机控制系统的原理线路,编制应用程序,实现直流电机转速控制的功能,并且进一步可增加转速测量的功能。
系统功能具体要求及分析如下:(1)开始运行,电机停止:未按任何键之前,设定初值,使经DA0832转换后的电流为零,电机不转。
(2)按档调速功能:直流电机可有三个转速,分为一、二、三档,其中按下按键“一”电机在低速档运行;按下按键“二”电机在中速档运行;按下按键“三”电机在高速档运行。
(3)连续调速功能:按下“加速”键,编程控制DA0832输入数字量累加,直流电机可在原速基础上升速;按下“减速” 键,编程控制DA0832输入数字量自减,直流电机可相对原速减速。
(4)停止功能:设有停止键,控制电机的停止运行。
调节电位器改变DA0832 的基准电压,使得初值00H对应的输出电流为0,从而电机停止运行。
(5)改变转向功能:原理上,调节DAC0832勺基准电压,使得某一中间值对应转速为零,则在输入数字量大于此值时为正电压,电机正转;再输入数字量小于此值时为负电压,电极反转。
(6)测速功能:在一定时间内对霍尔元件产生的脉冲数计数,从而求得电机转速,并在数码管显示。
二、方案设计及其说明(一)硬件设计在硬件上,所用到的芯片主要有:CPU8086并行通信接口芯片8255A、可编程定时计数芯片8253、可编程中断控制器8259A以及键盘扫描显示芯片8279。
《微机原理及接口技术》课程设计-直流电机控制

直流电机控制一、实习目的和要求1. 实习目的实习是完成教学计划达到本科生培养目标的重要环节,是教学计划中进行综合训练的重要实践环节,是有助于培养应用型人才的一种教学形式,它将使学生在综合运用所学知识,解决本专业方向的实际问题方面得到系统性的训练。
实习可以使学生在以下几个方面得到训练和提高:1)汇编语言程序设计的能力;2)软件调试的能力;3)利用所学过的知识,初步分析计算机软/硬件工作方法的能力;4)计算机定时/计数系统、中断系统的设计、编程与调试的能力;5)设计结果分析、总结及撰写技术报告的能力;6) 答辩的能力:包括口头对实习情况分析、讲解的能力。
2.实习的要求:1)实习按统一教学计划安排进行,学生分成小组(2~3人一组),在教师指导下完成系统分析、构成、软件调试及系统调试的工作。
指导教师对不同的学生,针对具体情况提出不同的设计指标或设计要求。
2)各小组内学生应独立完成课题的编程工作。
3)在实习的教学过程中,指导教师分阶段对学生完成的工作及所得结果进行检查,只有正确完成本阶段的工作方允许进行下阶段的工作。
4)学生撰写的实习技术报告,应有方案论证,软件功能介绍及软件程序等。
对设计、调试的结果应加以全面分析,进行总结,指出需要改进的地方,分章节的撰写成文,总字数不少于4千字。
报告中应书写工整,图表齐全,有程序清单。
二、直流电机硬件电路设计及描述2.1直流电机的结构直流电机由定子和转子两部分组成。
在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供),其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕组,绕组通过换向器和电刷引出。
2.2直流电机的工作原理直流电机电路模型,磁极N、S间装着一个可以转动的铁磁圆柱体,圆柱体的表面上固定着一个线圈。
当线圈中流过电流时,线圈受到电磁力作用,从而产生旋转。
根据左手定则可知,当流过线圈中电流改变方向时,线圈的受方向也将改NSN S+ U+ U变,因此通过改变线圈电路的方向实现改变电机的方向。
微机原理课程设计 - 电机调速系统设计

北华大学课程设计报告课程名称:微型计算机原理与接口技术课设题目:微机控制直流脉宽调速系统设计班级:通信10-1学号:16姓名:孙鹏指导教师:张锡鹤目录一、设计题目介绍..................................................... - 2 -二、调速系统框图设计 ............................................. - 3 -三、系统相关芯片介绍 ............................................. - 4 -四、A/D转换设计..................................................... - 5 -五、显示和报警设计................................................. - 6 -六、系统软件设计..................................................... - 8 -七、实习心得.......................................................... - 13 - 参考文献 ................................................................. - 14 -一、设计题目介绍设计题目:微机控制直流脉宽调速系统设计设计目的1)掌握8088CPU最小总线模式下设计“计算机控制系统”软件的方法;2)掌握微机控制直流脉宽调速系统的设计方法和思想;3)掌握一般性系统的设计流程与调试技巧。
设计要求1)根据设计的技术要求,制定总体设计方案;2)绘制软件流程图——总图;3)绘制软件各模块流程图;4)编写源程序;5)上机用Emu8086软件调试程序;6)编写设计报告。
直流电动机双闭环调速系统设计

1 设计方案论证电流环调节器方案一,采用PID调节器,PID调节器是最理想的调节器,能够平滑快速调速,但在实际应用过程中存在微分冲击,将对电机产生较大的冲击作用,一般要小心使用。
方案二,采用PI调节器,PI调节器能够做到无静差调节,且电路较PID调节器简单,故采用方案二。
转速环调节器方案一,采用PID调节器,PID调节器是最理想的调节器,能够平滑快速调速,但在实际应用过程中存在微分冲击,将对电机产生较大的冲击作用,一般要小心使用。
方案二,采用PI调节器,PI调节器能够做到无静差调节,且电路较PID调节器简单,故采用方案二。
2双闭环调速控制系统电路设计及其原理综述随着现代工业的开展,在调速领域中,双闭环控制的理念已经得到了越来越广泛的认同与应用。
相对于单闭环系统中不能随心所欲地控制电流和转矩的动态过程的弱点。
双闭环控制那么很好的弥补了他的这一缺陷。
双闭环控制可实现转速和电流两种负反应的分别作用,从而获得良好的静,动态性能。
其良好的动态性能主要表达在其抗负载扰动以及抗电网电压扰动之上。
正由于双闭环调速的众多优点,所以在此有必要对其最优化设计进展深入的探讨和研究。
本次课程设计目的就是旨在对双闭环进展最优化的设计。
整流电路本次课程设计的整流主电路采用的是三相桥式全控整流电路,它可看成是由一组共阴接法和另一组共阳接法的三相半波可控整流电路串联而成。
共阴极组VT1、VT3和VT5在正半周导电,流经变压器的电流为正向电流;共阳极组VT2、VT4和VT6在负半周导电,流经变压器的电流为反向电流。
变压器每相绕组在正负半周都有电流流过,因此,变压器绕组中没有直流磁通势,同时也提高了变压器绕组的利用率。
三相桥式全控整流电路多用于直流电动机或要求实现有源逆变的负载。
为使负载电流连续平滑,有利于直流电动机换向及减小火花,以改善电动机的机械特性,一般要串入电感量足够大的平波电抗器,这就等同于含有反电动势的大电感负载。
三相桥式全控整流电路的工作原理是当a=0°时的工作情况。
直流电机闭环调速控制系统设计和实现

实验报告直流电机闭环调速控制系统设计和实现班级:姓名:学号:时间:指导老师:2012年6月一、实验目的1.了解闭环调速控制系统的构成。
2.熟悉PID 控制规律,并且用算法实现。
二、实验设备PC 机一台,TD-ACC+实验系统一套,i386EX 系统板一块三、实验原理根据上述系统方框图,硬件线路图可设计如下,图中画“○”的线需用户自行接好。
上图中,控制机算机的“DOUT0”表示386EX 的I/O 管脚P1.4,输出PWM 脉冲经驱动后控制直流电机,“IRQ7”表示386EX 内部主片8259 的7 号中断,用作测速中断。
实验中,用系统的数字量输出端口“DOUT0”来模拟产生 PMW 脉宽调制信号,构成系统的控制量,经驱动电路驱动后控制电机运转。
霍尔测速元件输出的脉冲信号记录电机转速构成反馈量。
在参数给定情况下,经PID 运算,电机可在控制量作用下,按给定转速闭环运转。
系统定时器定时1ms,作为系统采样基准时钟;测速中断用于测量电机转速。
直流电机闭环调速控制系统实验的参考程序流程图如下:四、实验步骤1.参照图 6.1-3 的流程图,编写实验程序,编译、链接。
2.按图6.1-2 接线,检查无误后开启设备电源,将编译链接好的程序装载到控制机中。
3.打开专用图形界面,运行程序,观察电机转速,分析其响应特性。
4.若不满意,改变参数:积分分离值Iband、比例系数KPP、积分系数KII、微分系数 KDD 的值后再观察其响应特性,选择一组较好的控制参数并记录下来。
5.注意:在程序调试过程中,有可能随时停止程序运行,此时DOUT0 的状态应保持上次的状态。
当DOUT0 为1 时,直流电机将停止转动;当DOUT0 为0 时,直流电机将全速转动,如果长时间让直流电机全速转动,可能会导致电机单元出现故障,所以在停止程序运行时,最好将连接DOUT0的排线拔掉或按系统复位键.五、心得体会此次实验是直流电机闭环调速控制系统的设计和实现,通过这次实验,让我了解了闭环调速控制系统的基本构成。
直流电机转速闭环控制课程设计

计算机控制技术课程设计报告设计课题:直流电机转速闭环控制(采用单片机教学实验系统)班级:报告人:指导教师:完成日期:2011年9月22日重庆大学本科学生《计算机控制技术基础》课程设计任务书课程设计题目直流电机转速闭环控制(采用单片机教学实验系统)学院自动化学院专业自动化专业年级(1)已知参数和设计要求1)用单片机产生PWM方波调制直流电机以一定速率旋转,人为给一个速度漂移,霍尔元件测出速度并根据PID算法跟踪校正速度漂移。
2)要求用LED或LCD时实显示电机速度。
3)要求在10秒内PID算法纠正速率漂移。
(2)实现方法采用单片机教学实验系统实现(限≤4人选做)学生应完成的工作:1)硬件设计:要求完成控制系统框图;绘制完整的控制系统电原理图;说明各功能模块的具体功能和参数;结合实验室现有的单片机教学实验系统进行系统组成,对整个系统的工作原理进行全面分析,论述其结构特点、工作原理、优、缺点和使用场合。
分析和论述系统采用的主要单元的工作原理和特性。
2)软件设计:要求合理分配系统资源,完成直流电机转速闭环控制的程序设计(如:系统初始化;主程序;A/D转换;D/A转换;标度变换;显示与键盘管理;控制算法处理;输出等)。
3)对设计控制系统进行系统联调。
4)编写课程设计报告:按统一论文格式、统一报告纸和报告的各要素【封面、任务书、目录、摘要、序言、主要内容(包括设计总体思路、设计步骤、原理分析和相关知识的引用等)、总结、各组员心得体会、参考书及附录(包括系统框图、程序流程图、电原理图和程序原代码)】进行编写,字数要求不少于4000字,要求设计报告论理正确,逻辑性强,文理通顺,层次分明,表达确切。
目前资料收集情况(含指定参考资料):《计算机硬件技术基础实验教程》黄勤等编著重庆大学出版社《单片微型计算机机与接口技术》李群芳等编著电子工业出版社《计算机控制技术》王建华等编著高等教育出版社课程设计的工作计划:(1)2011年9月19日熟悉设计任务和要求。
PWM波直流电机闭环调速系统设计--课程设计

洛阳理工学院课程设计说明书课程名称计控设计课题PWM波直流电机闭环调速系统设计专业自动化班级B100408--姓名-------年月日课程设计任务书电气与自动化系自动化专业学生姓名李恒班级B100408 学号=======课程名称:计算计控制技术设计题目:PWM波直流电机闭环调速系统设计课程设计内容与要求:设计内容:本系统以单片机为控制核心。
通过PID算法,根据差值算出PWM 应该输出的占空比,以此来驱动电动机使其达到预定速度,并用光电编码器为测速工具,构成速度控制闭环系统。
设计要求:1.完成直流电机调速系统总体设计2.根据系统框图进行硬件选型3.调试并仿真4.分析仿真结果并得出结论设计(论文)开始时期年月日指导教师设计(论文)完成日期年月日指导教师年月日课程设计评语第 1 页系专业学生姓名班级学号课程名称:设计题目:课程设计篇幅:图纸张说明书页指导教师评语:年月日指导教师洛阳理工学院洛阳理工学院目录摘要 (I)第1章绪论 (1)1.1选题的背景与意义 (1)1.1.1 设计背景 (1)1.1.2 选题的目的和意义 (2)第2章系统总体设计 (1)2.1 方案的选择 (1)2.1.1 晶闸管调速 (1)2.1.2 PWM波调速 (2)2.2 系统总体设计 (3)第3章硬件设计 (5)3.1 硬件选型 (5)3.1.1 单片机的选择 (5)3.1.2 电机驱动的选择 (5)3.2 硬件电路设计 (5)3.2.1 微控制器 (5)3.2.2电源模块 (6)3.2.3电机驱动模块 (8)3.2.4测速模块 (2)3.2.5液晶显示模块 (4)3.3 系统硬件选型表 (6)第4章软件设计 (7)4.1 系统流程 (7)4.1.1 调速闭环方框图 (7)4.1.2 系统程序流程图 (7)洛阳理工学院4.2软件调试 (8)第5章系统的MATLAB仿真 (10)5.1 系统的建模与参数设置 (10)5.2电机Matlab仿真 (10)5.3 仿真结果分析 (12)结论 (13)参考文献 (14)附录 (15)洛阳理工学院摘要直流电机在社会生产中有着广泛的应用,本文给出了一种基于PWM波的直流调速系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验课题:直流电机调速控制实验内容:本实验完成的是一个实现对直流电机转速调节的应用。
编写实验程序,用ADC0809完成模拟信号到数字信号的转换。
输入模拟信号有A/D转换单元可调电位器提供的0~5V,将其转换后的数字信号读入累加器,做为控制电机的给定转速。
用8255的B口作为直流电机的控制信号输出口,通过对电机转速反馈量的运算,调节控制信号,达到控制电机匀速转动的的作用。
并将累加器中给定的转速和当前测量转速显示在屏幕上。
再通过LED灯显示出转速的大小变化。
实验目的:(1)学习掌握模/数信号转换的基本原理。
(2)掌握的ADC0809、8255芯片的使用方法。
(3)学习PC系统中扩展简单I/O接口的方法。
(4)了解实现直流电机转速调节的基本方法。
实验要求:利用微机接口实验系统的硬件资源,运用汇编语言设计实现直流电机的调速控制功能。
基本功能要求:1、利用A/D转换方式实现模拟量给定信号的采样;2、实现PWM方式直流电机速度调节;3、LED灯显示当前直流电机速度状态。
实验设备:(1)硬件要求: PC微机一台、TD-PIT实验系统一套(2)软件要求:唐都编程软件,tdpit编程软件,“轻松编程”软件实验原理:各芯片的功能简介:(1)8255的基本输出接口电路:并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息,CPU 和接口之间的数据传递总是并行的,即可以同时进行传递8位,16位,32位等。
8255可编程外围接口芯片是具有A、B、C三个并行接口,+5V单电源供电,能在以下三种方式下工作:方式0—基本输入/出方式、方式1—选通输入/出方式、方式2—双向选通工作方式。
8255的内部结构图和引脚图如下:本实验利用8255的A口作为输出口,控制8个单色LED灯,来实现电机转速的大小显示。
(2)转速调节原理:* PWM的占空比决定输出到直流电机的平均电压.PWM不是调节电流的.PWM的意思是脉宽调节,也就是调节方波高电平和低电平的时间比,一个20%占空比波形,会有20%的高电平时间和80%的低电平时间,而一个60%占空比的波形则具有60%的高电平时间和40%的低电平时间,占空比越大,高电平时间越长,则输出的脉冲幅度越高,即电压越高.如果占空比为0%,那么高电平时间为0,则没有电压输出.如果占空比为100%,那么输出全部电压.所以通过调节占空比,可以实现调节输出电压的目的,而且输出电压可以无级连续调节.在使用PWM控制的直流无刷电动机中,PWM控制有两种方式:1.使用PWM信号,控制三极管的导通时间,导通的时间越长,那么做功的时间越长,电机的转速就越高2.使用PWM控制信号控制三极管导通时间,改变控制电压高低来实现** 利用实验平台上8255的PB0产生脉冲信号作为控制量,经驱动电路驱动电机运转。
霍尔测速元件输出的脉冲信号记录电机转速构成反馈量。
在参数给定的情况下,经PID运算,电机可在控制量的作用下,按PC机累加器给定的转速运转。
实验通过PC的0号通道,设置为输出1ms方波,作为采样时钟,PB0产生PWM脉冲计时及转速累加,系统总线上INTR中断用于测量电机转速。
(3)A/D转换原理:本实验用ADC0809完成模拟信号到数字信号的转换。
输入模拟信号有A/D转换单元可调电位器提供的0~5V,将其转换后的数字信号读入累加器,做为控制电机的给定转速。
(5) LED灯的工作原理:LED灯显示器有8个单色发光二极管构成,在共阳极接法中,各二极管的阳极被连在一起,使用的时候要将它与+5V项链,而把各段的阴极连到器件的相应引脚上。
当某的LED灯的引脚为低电平的时候,该灯工作。
本实验上通过8255的A口信号作为输入信号,控制各灯的工作状态。
来显示出此时电机转速的大小变化。
(6)实现两位十进制数的显示:在计算机中,对数字的输入和输出是用二进制进行的,而在计算机内部十进制数要转换为二进制来表示,要实现两位十进制数的显示,必须将他们转换为目前最普遍使用的字符编码ASCII码。
本实验中通过作除法。
即拆分法。
如两位十进制AB转换为A*10+B的形式,再通过A+30H与B+30H来转换为ASCII码,若溢出,加7运算。
DECSHOW PROC NEAR ;完成两位十进制数显示子程序MOV DX,0MOV BX,10 ;计算AX/10DIV BXADD AL,30H ;商+30H,即为十位数ASCII码MOV AH,0EHINT 10HADD DL,30H ;余+30H,即为个位数ASCII码MOV AH,2INT 21HRETDECSHOW ENDP实验接线图:D0~D7 PA0~PA7PA0~PA7转速调节程序设计框图:B口转速调节与测量程序(a)转速调节主程序主程序流程图:程序清单:;***************根据CHECK配置信息修改下列符号值******************* INTR_IVADD EQU 0038H ;INTR对应的中断矢量地址INTR_OCW1 EQU 21H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 20H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0BFH ;INTR对应的中断屏蔽字PCI_INTCSR EQU 0CC38H ;PCI卡中断控制寄存器地址IOY0 EQU 0C400H ;片选IOY0对应的端口始地址IOY1 EQU 0C440H ;片选IOY0对应的端口始地址;***************************************************************** MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址AD0809 EQU IOY1+00H ;AD0809的端口地址STACK1 SEGMENT STACKDW 64 DUP(?)TOP LABEL WORDSTACK1 ENDSDATA SEGMENTTABLE1 DB 'Assumed Fan Speed:(/s)',0AH,0DH,'$' ;字符串变量 TABLE2 DB 'Current Fan Speed:(/s)',0AH,0DH,'$' ;字符串变量ENT DB 0AH,0DH,'$' ;换行,回车CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? ;保存INTR原中断屏蔽字的变量CS_BAK1 DW ? ;保存定时器0中断处理程序入口段地址的变量IP_BAK1 DW ? ;保存定时器0中断处理程序入口偏移地址的变量IM_BAK1 DB ? ;保存定时器0中断屏蔽字的变量TS DB 14H ;采样周期SPEC DW 55 ;转速给定值IBAND DW 0060H ;积分分离值KPP DW 1060H ;比例系数KII DW 0010H ;积分系数KDD DW 0020H ;微分系数YK DW ?CK DB ?VADD DW ?ZV DB ?ZVV DB ?TC DB ?FPWM DB ?CK_1 DB ?EK_1 DW ?AEK_1 DW ?BEK DW ?AAAA DB ?VAA DB ?BBB DB ?VBB DB ?MARK DB ?R0 DW ?R1 DW ?R2 DW ?R3 DW ?R4 DW ?R5 DW ?R6 DW ?R7 DB ?R8 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET TABLE1 ;显示字符串1 MOV AH,09HINT 21HMOV AX,SPEC ;显示给定值CALL DECSHOWMOV DX,OFFSET ENT ;回车,换行MOV AH,09HINT 21HMOV DX,OFFSET TABLE2 ;显示字符串2 MOV AH,09HINT 21HCLIMOV AX,0000HMOV ES,AXMOV DI,0020HMOV AX,ES:[DI]MOV IP_BAK1,AX ;保存定时器0中断处理程序入口偏移地址MOV AX,OFFSET TIMERISRMOV ES:[DI],AX ;设置实验定时中断处理程序入口偏移地址ADD DI,2MOV AX,ES:[DI]MOV CS_BAK1,AX ;保存定时器0中断处理程序入口段地址MOV AX,SEG TIMERISRMOV ES:[DI],AX ;设置实验定时中断处理程序入口段地址IN AL,21HMOV IM_BAK1,AL ;保存INTR原中断屏蔽字AND AL,0F7HOUT 21H,AL ;打开定时器0中断屏蔽位MOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00HOUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV DI,INTR_IVADDMOV AX,ES:[DI]MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址MOV AX,OFFSET MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址 ADD DI,2MOV AX,ES:[DI]MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:[DI],AX ;设置当前中断处理程序入口段地址MOV DX,INTR_OCW1IN AL,DXMOV IM_BAK,AL ;保存INTR原中断屏蔽字AND AL,INTR_IMOUT DX,AL ;打开INTR的中断屏蔽位MOV VADD,0000H ;变量的初始化MOV ZV,00HMOV ZVV,00HMOV CK,00HMOV YK,0000HMOV CK_1,00HMOV EK_1,0000HMOV AEK_1,0000HMOV BEK,0000HMOV BBB,00HMOV VBB,00HMOV R0,0000HMOV R1,0000HMOV R2,0000HMOV R3,0000HMOV R4,0000HMOV R5,0000HMOV R6,0000HMOV R7,00HMOV R8,0000HMOV MARK,00HMOV FPWM,01HMOV AAAA,7FHMOV VAA,7FHMOV TC,00HMOV AL,80H ;初始化8255MOV DX,MY8255_MODEOUT DX,ALMOV AL,00HMOV DX,MY8255_BOUT DX,ALMOV DX,MY8255_AOUT DX,ALMOV DX,PC8254_MODE ;初始化PC机定时器0,定时1msMOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,8FHMOV AL,04HOUT DX,ALSTIM1: MOV AL,TS ;判断采样周期到否?SUB AL,TCJNC M1 ;没到则继续等待MOV TC,00H ;采样周期到,将采样周期变量清0 MOV AL,ZVVMOV AH,00HMOV YK,AX ;得到反馈量YKLOOP1: MOV DX,AD0809 ;启动A/D转换OUT DX,ALCALL DALLYMOV DX,AD0809 ;读出转换结果IN AL,DXMOV DX,MY8255_A ;将结果显示于LEDOUT DX,ALMOV BL,ALMOV BH,0CALL PID ;调用PID子程序,得到控制量CK MOV AL,CK ;把控制量转化成PWM输出SUB AL,80HJC IS0MOV AAAA,ALJMP COUIS0: MOV AL,10H ;电机的启动值不能低于10HMOV AAAA,ALCOU: MOV AL,7FHSUB AL,AAAAMOV BBB,ALMOV AX,YK ;将反馈值YK送到屏幕显示CALL DECSHOWMOV DL,0DH ;回车MOV AH,02HMOV AH,1 ;判断是否有按键按下INT 16HJZ M1 ;无按键则跳回继续等待,有则退出EXIT: CLIMOV AL,00H ;退出时停止电机运转MOV DX,MY8255_BOUT DX,ALMOV DX,PC8254_MODE ;恢复PC机定时器0状态 MOV AL,36HOUT DX,ALMOV DX,PC8254_COUNT0MOV AL,00HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器MOV AX,0000HOUT DX,AXMOV AX,0000H ;恢复INTR原中断矢量MOV ES,AXMOV DI,INTR_IVADDMOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址MOV ES:[DI],AXADD DI,2MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOV ES:[DI],AXMOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字MOV AL,IM_BAKOUT DX,ALMOV DI,0020HMOV AX,IP_BAK1 ;恢复定时器0中断处理程序入口偏移地址MOV ES:[DI],AXADD DI,2MOV AX,CS_BAK1 ;恢复定时器0中断处理程序入口段地址MOV ES:[DI],AXMOV AL,IM_BAK1OUT 21H,AL ;恢复屏蔽字STIMOV AX,4C00HINT 21HMYISR PROC NEAR ;系统总线INTR中断处理程序PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV AL,MARKCMP AL,01HJZ IN1MOV MARK,01HJMP IN2IN1: MOV MARK,00H ;计算转速VV: MOV DX,0000HMOV AX,03E8HMOV CX,VADDCMP CX,0000HJZ MM1DIV CXMM: MOV ZV,ALMOV VADD,0000HMM1: MOV AL,ZVMOV ZVV,ALIN2: MOV DX,PCI_INTCSR ;清PCI卡控制寄存器标志位SUB DX,19HIN AL,DXMOV DX,PCI_INTCSRMOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALPOP DXPOP CXPOP AXIRETMYISR ENDPTIMERISR PROC NEAR ;PC机定时器0中断处理程序PUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXINC TC ;采样周期变量加1CALL KJCLCCMP MARK,01HJC TT1INC VADDCMP VADD,0700H ;转速值溢出,赋极值JC TT1MOV VADD,0700HMOV MARK,00HTT1: MOV AL,20H ;中断结束,发EOI命令OUT 20H,ALPOP DXPOP CXPOP AXIRETTIMERISR ENDPKJ PROC NEAR ;PWM子程序CMP FPWM,01H ;PWM为1,产生PWM的高电平 JNZ TEST2CMP VAA,00HJNZ ANOT0MOV FPWM,02HMOV AL,BBBCLCRCR AL,01HMOV VBB,ALJMP TEST2ANOT0: DEC VAAMOV AL, 01H ;PB0=1 电机转动MOV DX, MY8255_BOUT DX,ALTEST2: CMP FPWM,02H ;PWM为2,产生PWM的低电平 JNZ OUTTCMP VBB,00HJNZ BNOT0MOV FPWM,01HMOV AL,AAAACLCRCR AL,01HMOV VAA,ALJMP OUTTBNOT0: DEC VBBMOV AL,00H ;PB0=0 电机停止MOV DX,MY8255_BOUT DX,ALOUTT: POP AXRETKJ ENDPPID: MOV AX,BX ;PID子程序SUB AX,YK ;求偏差EKMOV R0,AXMOV R1,AXSUB AX,EK_1MOV R2,AXSUB AX,AEK_1 ;求BEKMOV BEK,AXMOV R8,AXMOV AX,R1 ;求偏差变化量AEKMOV EK_1,AXMOV AX,R2MOV AEK_1,AXTEST R1,8000HJZ EK1 ;若偏差EK为正数,则不需要求补码 NEG R1 ;若偏差EK为负数,则求偏差EK的补码EK1: MOV AX,R1 ;判断偏差EK是否在积分分离值的范围内SUB AX,IBANDJC II ;在积分分离值范围内,则跳转到II,计算积分项MOV R3,00H ;若不在积分分离值范围内,则将积分项清0JMP DDD ;计算微分项II: MOV AL,TS ;计算积分项,结果放在R3变量中(R3=EK*TS/KII)MOV AH,00H ;其中TS和KII均为正数,所以R3的正负由EK决定MOV CX,R1MUL CXMOV CX,KIIDIV CXMOV R3,AXTEST R0,8000H ;判断积分项的正负JZ DDD ;为正数,则跳转去计算微分项NEG R3 ;为负数,则将积分项的结果求补码DDD: TEST BEK,8000H ;判断BEK的正负JZ DDD1 ;为正数,则BEK不变NEG BEK ;为负数,则求BEK的补码DDD1: MOV AX,BEK ;计算微分项(R4=KDD*BEK/8TS)MOV CX,KDDMUL CXPUSH AXPUSH DXMOV AL,TSMOV AH,00H ;将微分项缩小8倍,防止溢出MOV CX,0008HMUL CXMOV CX,AXPOP AXDIV CXMOV R4,AXTEST R8,8000H ;判断微分项的正负JZ DD1 ;为正数,则结果不需要求补码NEG R4 ;为负数,则微分项结果R4求补码DD1: MOV AX,R3 ;积分项和微分项相加,结果放在R5变量中ADD AX,R4MOV R5,AXJO L9 ;判断溢出L2: MOV AX,R5ADD AX,R2MOV R6,AX ;R6=R5+R2=积分项+微分项+AEKJO L3L5: MOV AX,R6 ;计算KPP*R6MOV CX,KPPIMUL CXMOV CX,1000HIDIV CXMOV CX,AXRCL AH,01H ;判断溢出,溢出赋极值PUSHFRCR AL,01HPOPFJC LLL1CMP CH,00HJZ LLL2MOV AL,7FHJMP LLL2LLL1: CMP CH,0FFHJZ LLL2MOV AL,80HLLL2: MOV R7,AL ;CK=CK_1+CKADD AL,CK_1JO L8L18: MOV CK_1,ALADD AL,80HMOV CK,ALRETL8: TEST R7,80H ;CK溢出处理程序JNZ L17MOV AL,7FH ;若为正溢出,则赋给正极值7FHL17: MOV AL,80H ;若为负溢出,则赋给赋极值80H JMP L18L9: TEST R3,8000HJNZ L1MOV R5,7FFFH ;若为正溢出,则赋给正极值7FFFH JMP L2L1: MOV R5,8000H ;若为负溢出,则赋给负极值8000H JMP L2L3: TEST R2,8000HJNZ L4MOV R6,7FFFHJMP L5L4: MOV R6,8000HJMP L5DALLY PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,4000HD1: MOV AX,0600HD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPDECSHOW PROC NEAR ;完成两位十进制数显示子程序MOV DX,0MOV BX,10 ;计算AX/10DIV BXADD AL,30H ;商+30H,即为十位数ASCII码MOV AH,0EHINT 10HADD DL,30H ;余+30H,即为个位数ASCII码MOV AH,2INT 21HRETDECSHOW ENDPCODE ENDSEND START实验调试步骤:(1)确认从PC机引出的两根扁平电缆已经连接在实验平台上。