




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机控制基础设计 结题论文 直流电机转速闭环控制设计 学 院: 自动化学院 姓 名: 学 号: 专业班级: 09 级自动化 指导老师:时颖 重庆大学自动化学院重庆大学自动化学院 2012 年 09 月 直流电机转速闭环控制直流电机转速闭环控制设计设计 摘要摘要 在运动控制系统中,电机转速控制占有至关重要的作用,其控制算法和手 段有很多,模拟pid控制是最早发展起来的控制策略之一,长期以来形成了典 型的结构,并且参数整定方便,能够满足一般控制的要求,但由于在模拟pid 控制系统中,参数一旦整定好后,在整个控制过程中都是固定不变的,而在 实际中,由于现场的系统参数、温度等条件发生变化,使系统很难
2、达到最佳的 控制效果,因此采用模拟pid控制器难以获得满意的控制效果。随着计算机技 术与智能控制理论的发展,数字pid技术渐渐发展起来,它不仅能够实现模拟 pid所完成的控制任务,而且具备控制算法灵活、可靠性高等优点,应用面越 来越广。 本设计以上面提到的数字 pid 为基本控制算法,以计算机硬件 pd-32e 为控 制核心,产生占空比受数字 pid 算法控制的 pwm 脉冲实现对直流电机转速的控 制。同时利用霍尔传感器将电机速度转换成脉冲频率反馈到单片机中,实现转 速闭环控制,达到转速无静差调节的目的。在系统中采数码管和 44 键盘作为 人机交互界面,启动后可以通过显示部件了解电机当前的转速
3、。该系统控制简 单,反应灵敏,具有很强的抗干扰能力。 关键字:关键字:运动控制、pid、计算机硬件 目录 引言引言.1 1 小组分工小组分工.2 2 模型建立模型建立.2 2.1 设计要求.2 2.2 设计报告要求.3 4 构建系统的器件构建系统的器件.4 4.1 8254 定时器/计数器.4 4.1.1 8254具有以下基本功能.4 4.1.2 8254的工作方式.4 4.1.3 8254内部寄存器各位的定义及初始化的编程方法.5 4.1.4 8254定时/计数器原理图和发光二极管的驱动原理图.5 4.2 8254 定时器/计数器.5 4.2.1 8255的工作方式.6 4.2.2 8255
4、并口模块原理图.6 4.3 8259 中断控制器 .7 4.3.1 8259各引脚定义.7 4.3.2 8259a的内部结构.8 4.4 ad574.8 5 系统设计思路及总设计方案系统设计思路及总设计方案.10 5.1 关键问题.10 5.2 总设计思路及方案.10 5.3 霍尔元件测速模块 .11 5.4 4*3 小键盘原理图.13 5.5 主程序设计.13 5.6 设计进度的具体安排和记录 .15 6 硬件连接及系统电路图硬件连接及系统电路图 .15 6.1 硬件连接.15 6.2 系统硬件连接图.16 心得体会心得体会.16 付 攀 20095077 .16 明柯辰 20095087.
5、17 金智 20095084.18 邱 宁 20095089 .19 参考文献参考文献.20 附附 1:程序流程图:程序流程图.22 附附 2:程序清单:程序清单 .27 引言 由于直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调 速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。 从控制的角度来看,直流调速还是交流拖动系统的基础。早期直流电动机 的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量 的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非 常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推 广。 随着单片机技术的日新月异
6、,使得许多控制功能及算法可以采用软件 技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到 更高的性能。采用单片机构成控制系统,可以节约人力资源和降低系统成 本,从而有效的提高工作效率。 目前,直流电动机调速系统数字化已经走向实用化,伴随着电子技术 的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片 机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高 可靠性已成为它发展的趋势。 本次项目的设计是在 pd-32e 对直流电机控制系统的基础上进行设计和 改进的。在设计过程中,使学生能够对单片机有进一步的了解,培养了学 生独立的进行程序的设计和调试。系统中通过
7、单片机对直流电机的转速进 行控制和转化,并在 8 位数码管上进行显示,方便人们的控制检测,运用 pid 调节实现直流电机的闭环调速,同时在电机的上电转动中,对电机进行 过电保护,使电机可以良好的进行运转。 1 小组分工 整个课程设计从拿到课题到完成基本功能、添加优化方案、最终形成课程 设计报告,小组成员始终活跃在各自的岗位,有条不紊的完成分配给各自的任 务,整个设计过程大家都全程参与,没有一个人缺席。 综合小组各成员从编程能力、资料收集整理能力、组织协调能力、文书编 写能力等方面进行如下分工: 学号分工项目 付攀20095077 显示与处理、显示子程序的编写和调试;标度变换 程序的编写调试,辅
8、助整体程序的调试 明柯辰20095087 键盘扫描程序及各键功能子程序的编写调试,均值 滤波程序的编写,辅助报告的完成 金智20095084 ad 转换程序,初始化 8254、8255、8259 子程序的 编写,完成实验报告的编写 邱宁20095089 主程序的设计,控制算法程序,终端相关的程序设 计,pwm 波的生成程序,及整个程序的调试 2 模型建立 2.1 设计要求 (1)已知参数和设计要求 1.用 pd-32e 实验装置产生 pwm 方波调制直流电机以一定速率选装,认为给 一个虚度漂移,霍尔原件测出速度并根据 pid 算法跟踪校正速度漂移。 2.要求用 led 或 lcd 实时显示电机
9、速度。 3.要求在 10 秒内 pid 算法纠正速率漂移。 (2)实现方法 采用 pd-32e 实验装置实现 2.2 设计报告要求 1)明确每位组员的详细分工。 2)在上述设计主要内容的基础上,本组讨论整理出系统的详细操作说明。 3)详细描述自行完善和优化的系统功能以及设计方案。 4)给出系统的设计思路和意见、软件设计方案。 5)画出各软件模块的程序流程图。 6)列出加上必要注释的程序清单。 7)每位组员根据自己承担的设计内容和设计过程,写出心得体会。 8)所有组员在任务书上签名,将任务书装订在报告首页。 4 构建系统的器件 4.1 8254 定时器/计数器 8254 内部有 3 个独立的 1
10、6 位计数器,每个计数器有 6 种工作方式,计数 的数制可以是二进制数或 bcd 码数,每个计数器允许的最高计数频率 10mhz。 8254 是 8253 的改进型,因此它的操作方式以及引脚与 8253 完全相同。主要不 同点是 8253 的最高计数频率只为 2mhz,且 8254 比 8253 多了一个读回命令, 这个命令可以使 3 个通道的计数值和状态信息都锁存,而这在 8253 中需写入 3 个命令。 4.1.1 8254 具有以下基本功能 1)有 3 个独立的 16 位计数器。 2)每个计数器可按二进制或十进制(bcd)计数。 3)每个计数器可编程工作于 6 种不同工作方式。 4)82
11、54 每个计数器允许的最高计数频率为 10mhz(8253 为 2mhz) 。 5)8254 有读回命令,除了可以读出当前计数单元的内容外,还可以读出 状态寄存器的内容。 6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值计算 公式为: 定时时间=clk 时钟周期计数初值 n。 4.1.2 8254 的工作方式 1)方式 0:计数到 0 结束输出正跃变信号方式。 2)方式 1:硬件可重触发单稳方式。 3)方式 2:频率发生器方式。 4)方式 3:方波发生器。 5)方式 4:软件触发选通方式。 6)方式 5:硬件触发选通方式。 4.1.3 8254 内部寄存器各位的定义及初始化的编程
12、方法 8254 的方式控制字和读出控制字共用该寄存器,即使用同一个口地址。其 中方式控制字用于设置计数器的工作方式,读出控制字用于设置读出命令。在 8253 中该寄存器只用于设置计数器的工作方式。 4.1.4 8254 定时/计数器原理图和发光二极管的驱动原理图 4.2 8254 定时器/计数器 本实验中使用的核心器件是并口芯片 8255a。8255a 是一种使用单一的+5v 电源、40 引脚双列直插式的大规模集成电路芯片。 4.2.1 8255 的工作方式 8255 内部有 3 个 i/o 端口,a 口可以工作在方式 0、方式 1 或方式 2;b 口 可以工作在方式 0 或方式 1;c 口可
13、以工作在方式 0。 方式 0 是基本型输入/输出。用这种方式和外设交换数据时,8255 端口与 外设之间不使用联络线。 方式 1 为选通型输入/输出。用这种方式和外设交换数据时,端口和外设之 间要有联络信号。 方式 2 是双向数据传送,仅 a 口有此功能。当 a 口工作在方式 2 时,b 口 仍可以工作在方式 0 或方式 1,但此时的 b 口方式 1 只能用查询方式与 cpu 交 换信息。 4.2.2 8255 并口模块原理图 4.3 8259 中断控制器 8259a 是可编程的中断控制器。每片 8259a 可以管理 8 个外部中断,通过 多片 8259a 的级联最多可以管理 64 个外部中断
14、,8259a 能对它所管理的每个中 断源进行单独的允许与禁止,对各中断请求具有多种优先级管理方式;中断响 应时能够自动提供中断类型号,通过中断类型号可得到 4 字节(cs:ip)的中 断服务程序入口地址。 4.3.1 8259 各引脚定义 8259a 是 28 引脚双列直插式芯片,各信号引脚与 ttl 兼容,采用+5v 供电。 1)数据线,双向三态,可直接与系统数据总线相连。 70 2)片选信号:低电平有效,通常由系统高位地址译码产生。 3)地址线:用于 8259a 内部寄存器选择。 0 4)读信号、写信号:低电平有效,用以控制数据总线上的数据流向。 5)中断请求线 int:8259a 向 c
15、pu 或上一级 8259a 输出的重点请求信号。 6)中断响应线:cpu 或上一级 8259a 的中断响应信号输入端。 7)外部中断请求输入:外部设备的中断请求信号输入端。 07 4.3.2 8259a 的内部结构 4.4 ad574 ad574a 是美国模拟数字公司(analog)推出的单片高速 12 位逐次 比较型 a/d 转换器,内置双极性电路构成的混合集成转换显片,具有外接元 件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只 需外接少量的阻容件即可构成一个完整的 a/d 转换器,其主要功能特性如下: 分辨率:12 位 非线性误差:小于1/2lbs 或1lbs 转换速率
16、:25us 模拟电压输入范围:010v 和 020v,05v 和 010v 两档四种 电源电压:15v 和 5v 数据输出格式:12 位/8 位 芯片工作模式:全速工作模式和单一工作模式 ad574a 的引脚说明: 1. pin1(+v)+5v 电源输入端。 2. pin2()数据模式选择端,通 过此引脚可选择数据纵线是 12 位或 8 位 输出。 3. pin3()片选端。 4. pin4(a0)字节地址短周期控制 端。与端用来控制启动转换的方式和 数据输出格式。须注意的是,端 ttl 电平不能直接+5v 或 0v 连接。 5. pin5()读转换数据控制端。 6. pin6(ce)使能端。
17、 现在我们来讨论 ad574a 的 ce、和 a0 对其工作状态的控制 过程。在 ce=1、=0 同时满足时,ad574a 才会正常工作,在 ad574 处于工 作状态时,当=0 时 a/d 转换,当=1 是进行数据读出。和 a0 端用来 控制启动转换的方式和数据输出格式。a0-0 时,启动的是按完整 12 位数据 方式进行的。当 a0=1 时,按 8 位 a/d 转换方式进行。当=1,也即当 ad574a 处于数据状态时,a0 和控制数据输出状态的格式。当=1 时, 数据以 12 位并行输出,当=0 时,数据以 8 位分两次输出。而当 a0=0 时, 输出转换数据的高 8 位,a0=1 时输
18、出 a/d 转换数据的低 4 位,这四位占一 个字节的高半字节,低半字节补零。 ad574a 控制端标志意义 c e a 0 工作状态 5 系统设计思路及总设计方案 5.1 关键问题 1)解决 pid 控制算法的问题。 2)解决 pwm 波的产生的问题。 5.2 总设计思路及方案 单片机直流电机调速简介:单片机直流调速系统可实现对直流电动机的平 滑调速。pwm 是通过控制固定电压的直流电源开关频率,从而改变负载两端的 电压,进而达到控制要求的一种电压调整方法。在 pwm 驱动控制的调整系统中, 按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和 “断开”时间的长短。通过改变直
19、流电机电枢上电压的“占空比”来改变平均 电压的大小,从而控制电动机的转速。 0xxxx 禁止 xxxx 禁止 100x0 启动 12 位转换 100x1 启动 8 位转换 101 接 +5v x 12 位并行输出有效 101 接 0v 0 高 8 位并行输出有效 101 接 0v 1 低 4 位并行输出有效 硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定 系统中所要使用的元器件,设计出系统的原理框图、电路原理图。 硬件的功能由总体设计所规定,硬件设计的任务是根据总体设计要求,在 选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的电路 原理图,必要时做一些部件实验
20、,以确定电路图的正确性。 整个测量转速系统为 pd-32e 控制模块、霍尔传感器模块、led 模块等各个 模块都承担着各自的任务。 5.3 霍尔元件测速模块 当没有信号产生时,可以改变一下磁钢的方向,霍尔对磁钢方向有要求。 没有磁钢时输出高电平,有磁钢时输出低电平。 霍尔传感器的外形图和与磁场的作用关系如图所示。磁钢用来提供霍尔能 感应的磁场,当霍尔元件以切割磁力线的方式相对磁钢运动时,在霍尔输出端 口就会有电压输出,所以霍尔传感器和磁钢需要配对使用。霍尔传感器检测转 速示意图如下。在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘 外缘附近。圆盘每转动一圈,霍尔传感器便输出一个脉冲。通过
21、单片机测量产 生脉冲的频率,就可以得出圆盘的转速。同样道理,根据圆盘(车轮)的转速, 再结合圆盘的周长就是计算出物体的位移。如果要增加测量位移的精度,可以 在圆盘(车轮)上多增加几个磁钢。 ad574 利用不同的控制信号,既可实现高精度的 12 位转换,又可作快速的 8 位转换。12 位转换后的数据有两种读出方式:12 位一次读出;高 8 位、低 4 位分两次读出。adc 数据输出带有三态缓冲,可直接与 8 位或 16 位的微处理器 接口。内部采用快速逐次逼近式 a/d 转换,转换时间为 25us。ad574 有单极性 输入和双极性两种模拟输入可供选择使用,在实际应用时,应根据模拟输入信 号的
22、性质加以选定,在 pd-32 实验装置已固定为双极性输入。状态输出信号 sts,转换时为高电平,转换结束时为低电平,如果 ad574 用于微处理器系统, sts 信号可做为 cpu 的中断请求信号。 硬件中断是由 cpu 以外的器件发出的中断请求信号而引发的中断。80486 mpu 只有 2 个引脚(intr 和 nmi)可以接收外部的中断请求信号,为了管理众多的 外部中断源,intel 公司设计了专用的配套芯片-8259a 中断控制器。8259a 是 可编程芯片,一片 8259a 管理 8 级中断源,采用级连方式,两片 8259a 可以管理 15 级中断。它内部有一组初始化命令字寄存器,用于
23、存放对 8259 初始化编程 时的命令字 icw1icw4。 8259a 是可编程器件,其工作方式由软件编程决定,它提供的两类命令字 分别可以用来完成初始化编程和应用编程。其中 icw 命令可装入到 8259a 的内 部控制寄存器,以确定它用到的中断管理方式或工作模式。经过初始化编程以 后,在使用过程中只需使用 ocw 进行应用编程即可。 每一片 8255 的,负责其上方的两片数码管。 端口 a 输出驱动左边数码管的 ah 阴级段。 端口 b 输出驱动右边数码管的 ah 阴级段。 端口 c 输出驱动两个数码管的共阳极。每个数码管有两个共阳极(分别是 第 1、5 脚) ,两个共阳极都接低电平,数
24、码管不显示;第 5 脚阳极接高电平, 第 1 脚阳极接低电平,数码管显示红色字符;第 1 脚阳极接高电平,第 5 脚阳 极接低电平,数码管显示绿色字符,两个共阳极都接高电平,数码管显示黄色 字符。数码管字型编码表如下所示: 5.4 4*3 小键盘原理图 由一片 74hc245 作为键盘的行扫描电路(键盘的列扫描信号由一片 74hc273 提供,如图 2 所示) ,74hc245 的 p0-p3 已经分别接到 4*3 的小键盘的 4 行。另外,这片 74hc245 的引脚和 4*3 小键盘行、列都有引出相应的接插口, 所以也能另作它用,例如用 74hc245 来驱动发光二极管,或者与适当的输入输
25、 出器件(例如 8255)相配合就可以进行键盘扫描实验。该片 74hc245 的/g 端引 了出来(keycs0)作为它的片选信号端。 硬件连接说明: 1.小键盘的 p0p3 口连接第四片 8255 的 c0c3 口; q0q2 口连接 a0a2 口; 2. 占空比输入接第四片的 pb7 口;8259 的 intp 接 intr1 口; 3.8254a 的 out0 接 8259 的 irq0;clk0 接 47k;cs 接 cs1;gate0 接+5v; 5.5 主程序设计 将人为设定的直流电机转速值,与测速电路得到的直流电机转速值(反馈 量)进行比较,其差值经过 pid 运算,将得到控制量
26、并产生 pwm 脉冲,通过驱 动电路控制直流电机的转动,构成直流电机闭环调速控制系统。 在 pwm 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且 根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机 电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机 的转速。 设电机始终接通电源时,电机转速最大为 vmax,设占空比为 d= t1 / t,则 电机的平均速度为 va = vmax * d,其中 va 指的是电机的平均速度;vmax 是 指电机在全通电时的最大速度;d = t1 / t 是指占空比。由上面的公式可见, 当我们改变占空比 d = t
27、1 / t 时,就可以得到不同的电机平均速度 vd,从而 达到调速的目的。 本设计中采用软件延时方式对脉冲宽度进行控制 ,pwm 模式被用于产生一 个连续的占空比可调的方波信号。脉冲宽度调制通过比较 pca 定时器的低字节 (cl)和比较寄存器的低字节(ccapnl)产生 8 位 pwm 脉冲。当 cl0? set_data变量放入ax寄存 器 ax中变量减100 将ax中的变量放回 set_data中 压栈 是 set_data变量置为0 否 转转速速步步减减子子程程序序 开始 压栈 将控制标志置为1 弹栈 压栈 将控制变量置为0 结束 开始 结束 将控制标志置为0 弹栈 控控制制启启动动子
28、子程程序序 控控制制停停止止子子程程序序 set_data变量放入ax寄存 器 ax中变量加100 开始 结束 将ax中的变量放回 set_data中 压栈 set_data5000? set_data变量置为5000 是 否 转转速速步步进进子子程程序序 开始 寄存器压栈 将adnum中数 据乘上1221 将上步中数据 除上1000 寄存器弹栈 余数是否小于501 将所得商加1 结束 否 所得的商放在 check_num单元中 是 标标度度变变换换1 开始 寄存器压栈 初始化各变量 初始化 8254,8255,8259 装填中断向量 寄存器弹栈 结束 初初始始化化程程序序 开始 寄存器压栈
29、将set_data中数据除以 100放在setdata1中 将chenk_num中数据除以 100放在checknum11中 寄存器弹栈 结束 标标度度变变换换2 开始 调用初始化子程序 调用均值滤波子程序 调用标度转换子程序1 调用标度转换子程序2 调用显示预处理子程序 调用显示子程序 控制标志是否有效 调用控制算法子程序 调用键盘扫描子程序 是 否 主主程程序序 开始 向ad574地址虚写数据 在该地址读回 数据放到ax中 将无效的高四位清 零后存到addata中 寄存器压栈 寄存器弹栈 结束 ad转转换换 开始 寄存器压栈 acount1单元中 数据自加1 acount1中数据 是否小于
30、50 将acount1清零 否 将acount清零 acount是否小于 100 将acount加1 acount是否大于 kongzhi 向8255a口输出全0向8255a口输出全1 向8255写20h结束命令 寄存器弹栈 结束 否 否 是 是 是 中中断断子子程程序序 清零变量adres和addata 开始 寄存器压栈 cx中放入16 调用ad转换子程序 将addata数据累 加到adres中 cx=cx-1 cx=0? adres中数据右移4 位,结果放入adnum 寄存器弹栈 是 否 结束 均均值值滤滤波波 开始 寄存器压栈 将设定数据减去实测 数据的差放到ax中 是否为正 将偏差加到
31、errdata 单元(积分作用) ah是否小于-3ah是否大于3 偏差数据乘上系数(比例作用)再 加上errdata中数据放入控制变量中 寄存器弹栈 结束 否 是 否 否 是 是 pi控控制制程程序序 附 2:程序清单 .486 ; ;数据段定义; ; data segment use16 org 1000h ctrl_8255 equ 20ch porta equ 200h portb equ 204h portc equ 208h ad_574 equ 300h addr0 equ 340h addr1 equ 348h intq equ 40h ctrl_8254 equ 32ch k_
32、set1 equ 800 k_set2 equ 2 acount dw ? addata dw ? adres dw ? adnum dw ? check_num dw ? checknum1 db ?;显示用 checknum2 dw ? kongzhi db ? errdata dw ? set_data dw ? setdata1 db ? ;显示用 setdata2 dw ? ctflag db ? acount1 db ? data ends code segment use16 assume cs:code,ds:data org 3000h beg:jmp start tab d
33、b0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h ;显示字形码 db80h,90h,88h,83h,0c6h,0a1h,86h,8eh disp_code_buf db ?,?,?,?,?,?,?,?,0ffh,0ffh ; ;主程序部分; ; start:mov ax,data mov ds,ax mov es,ax call chushihua sa1: sa2: call cy16 ;均值滤波程序 call vtrans ;标度变换 1 call shujuchuli ;(已失去作用) call pre_disp ;显示预处理程序 call disp ;显示程序
34、 cmp ctflag,0 ;比较控制表示是否无效 je a11 ;无效跳转 call zhuanhuan ;执行标度变换 2 call ct ;执行控制算法程序 a11: call scankey ;执行键盘扫描子程序 jmp sa1 ;循环执行 ; ;键盘扫描程序; ; scankey proc pusha kscan: mov bl,0fbh ;从最右列开始扫描 nxtcol: mov al,bl mov dx,20bh ;送出列信号 out dx,al mov dx,20bh ;读入行信号 in al,dx and al,0f0h cmp al,0f0h jnz fndkey ;有键按
35、下即跳转 ror bl,1 ;列信号右移 jc nxtcol jmp kscan1 fndkey: shl bl,4 shr al,4 or bl,al ;形成键特征值 call dlys call dlys keyup: mov al,0 mov dx,20bh ;送出列信号 out dx,al mov dx,20bh ;读入行信号 in al,dx and al,0f0h cmp al,0f0h jnz keyup ;等待按键松开 ctstart: ;调用启动控制功能 cmp bl,0eeh jne stop call kongzhistart jmp kscan1 stop: ;调用停止
36、控制功能 cmp bl,0deh jne bujin call kongzhistop jmp kscan1 bujin: ;调用步进功能 cmp bl,0ebh jne bujian call ctbujin jmp kscan1 bujian: ;调用步减功能 cmp bl,0dbh jne kscan1 call ctbujian kscan1: popa ret scankey endp kongzhistart proc ;启动控制 pusha mov ctflag,1 popa ret kongzhistart endp kongzhistop proc ;停止控制 pusha m
37、ov kongzhi,0 mov ctflag,0 popa ret kongzhistop endp ctbujin proc ;转速步进 pusha mov ax,set_data add ax,100 mov set_data,ax cmp set_data,5000 jbe ctbend mov set_data,5000 ctbend:popa ret ctbujin endp ctbujian proc ;转速步减 pusha cmp set_data,0 jbe pj1 mov ax,set_data sub ax,100 mov set_data,ax popa ret pj1
38、: mov set_data,0 popa ret ctbujian endp dlys proc ;延时子程序 pusha mov cx,0ffh dlys_agn: nop loop dlys_agn popa ret dlys endp ; ;ad 转换子程序; ; ad_in proc pusha mov dx,ad_574 ;向 ad574 虚写 out dx,al mov cx,20h loo1: nop loop loo1 in ax,dx and ax,0fffh ;只保留低 12 位 mov addata,ax popa ret ad_in endp ; ;均值滤波子程序;
39、; cy16 proc pusha mov adres,0000 mov addata,0 mov cx,16 ;循环调用 16 次 ad 转换程序,结果累加至 adres 单元 adst: call ad_in mov ax,adres add ax,addata mov adres,ax loop adst shr ax,4 ;右移 4 位即除以 16 mov adnum,ax popa ret cy16 endp ; ;数据转换程序(实际未使用); ; zhuanhuan proc pusha mov al,setdata1 mov dl,60 mul dl mov setdata2,a
40、x mov al,checknum1 mov dl,60 mul dl mov checknum2,ax popa ret zhuanhuan endp ; ;控制算法程序; ; ct proc near ; pusha movzx ax,setdata1;5 movzx dx,checknum1;0 mov cx,errdata sub ax,dx jns ct0 ;为正数跳转 cmp ah,0fch ; 与-3 比较 js ct2 ;小于-3 跳转(不积分) jmp ct1 ct0: cmp ah,03 ;与 3 比较 jns ct2 ;大于 3 跳转(不积分) ct1: add cx,a
41、x ;积分过程 mov errdata,cx ct2: mov dx,k_set1 ;比例过程 imul dx add ax,cx mov kongzhi,ah ;add ax,cx ; mov kongzhi,ax ct3: popa ret ct endp ; ;标度变换 1(结果为真实值 x100); ; vtrans proc pusha mov ax,adnum mov cx,1221 mul cx mov cx,1000 div cx cmp dx,501 jb endv inc ax endv:mov check_num,ax popa ret vtrans endp ; ;显示
42、预处理(字码转换); ; pre_disp proc near ;显示值转换成显示字型码子程序 pusha lea si, disp_code_buf ;取显缓区指针 lea bx,tab moval,setdata1 ; mov ah,0 mov cl,10 div cl xlat tab mov si, al ;存设定值个位字型码 inc si mov al,ah xlat tab mov si,al ; ;存设定值十位字型码 inc si mov al,0bfh mov si,al inc si mov si,al inc si mov al,checknum1 ;拆分待显数据 mov ah,0 mov cl,10 div cl xlat tab ;得到个位字型码 mov si,al ; 保存个位字型码 inc si ; 指向下一位存储单元 mov al,ah xlat tab mov si,al popa ret pre_disp endp ; ;显示程序; ; disp proc near pusha cmp acount1,9 jne dis1 lea si,disp_code_buf mov dx,200h mov cx,3 dis: mov al,si out dx,al ;a 口显示 inc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘肃民族师范学院《古树养护与复壮》2023-2024学年第一学期期末试卷
- 沈阳音乐学院《项目导入设计》2023-2024学年第一学期期末试卷
- 宁波大学《园林艺术》2023-2024学年第一学期期末试卷
- 重庆机电职业技术大学《土木工程数值计算方法》2023-2024学年第一学期期末试卷
- 线上关系质量评估-洞察及研究
- 品酒活动抽奖活动方案
- 嘉兴市旭辉广场活动方案
- 国风书签活动方案
- 员工婚恋交友活动方案
- 嘉定买车活动方案
- 农村垃圾清运投标方案
- 优秀物业管理项目评选方案
- 贵州大方富民村镇银行股份有限公司(筹)招聘上岸提分题库3套【500题带答案含详解】
- GB/T 5470-2008塑料冲击法脆化温度的测定
- GB/T 40998-2021变性淀粉中羟丙基含量的测定分光光度法
- 图书管理系统毕业论文参考文献精选,参考文献
- 中国当代旧体诗选读幻灯片
- 吉林省全省市县乡镇卫生院街道社区卫生服务中心基本公共卫生服务医疗机构信息名单目录995家
- 倔强的小红军-精讲版课件
- 信息隐藏与数字水印课件(全)全书教学教程完整版电子教案最全幻灯片
- 公开招聘社区居委专职工作人员考试笔试、面试题集及相关知识(11套试题含答案)
评论
0/150
提交评论