




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课题 单片机控制的单闭环直流调速系统性能指标:S=0,D=10。功 能:对直流电机调速;单片机控制,小键盘输入转速,实时LED显示转速。要 求: 直流电机:Z2-93型,60KW/220V/305A/1000rpm,V-M,R=0.18,CE=0.2Vmp,单闭环控制; 硬件设计(主电路,控制电路)、软件设计; 仿真。 目 录摘要3关键词3第一部分 直流单闭环直流调速系统方案分析31.1 VM调速系统方案分析31.2 PWM调速系统方案分析41.3 两种方案的比较4第二部分PWM直流电机调速系统系统设计52.1 系统组成52.1.1 系统结构框图52.1.2 系统功能说明(描述)52.2 PID参数的确定52.3 单元电路设计62.3.1 键盘输入单元72.3.2 显示单元72.3.3 串行接口单元92.2.4 测速单元10 2.3 PWM直流调速系统硬件电路及工作过程说明112.4 PWM直流调速系统软件设计112.4.1 接口定义112.4.2 RAM/ROM配置说明122.4.3 系统工作过程流程图132.4.4 程序流程图14第三部分 PWM直流调速系统测试报告14 3.1 测试仪器14 3.2 测试内容14 3.3 测试步骤14 3.4 测试分析15第四部分 设计总结15参考文献附录1 PWM直流调速系统硬件电路图16附录2 PWM直流调速系统元器件明细表17附录3 PWM直流调速系统程序清单18摘 要 本系统由微处理器模块、键盘模块、LED显示模块、测数模块、PWM波形生成模块、驱动缓冲模块以及主电路模块组成。微处理器模块以两片AT89C51为核心,外扩I/O接口所构造,其中第一片AT89C51实现着PID运算和转速的测量,同时完成键盘的中断处理以及LED模块的显示。第二片AT89C51专用产生PWM波形。测速单元采用光电传感器的非接触式转速计,利用单片机的门空信号求出脉冲的周期,在求其倒数,其测量范围从109999转分钟。驱动电路是西安电力电子技术研究所研制的GTR(大功率三极管)专用厚膜驱动电路HL201A,相比于UAA4002、M57125等驱动器,具有性能优良及价格便宜等优点。整个系统形成一个单闭环系统,能够对电动机的转速达到无静差控制。关键词 微处理器;ADC;DAC;LED;传感器 第一部分 单闭环直流调速系统方案分析与比较直流电动机具有良好的起、制动性能,适宜于在广泛范围内平滑调速。它的转速和其它参量的关系可用式表示:n=U-IR/KE。由该式可以看出,有三种方法调节电机的转速。(1) 调节电枢供电电压U。(2) 减弱励磁磁通。(3) 改变电枢回路电阻R对于要求在一定反内无极平滑调速的系统来说,以调节电枢供电电压的方式为最好。改变电阻只能有极调速,减弱磁通虽然能平滑调速,但调速范围不大,往往只是配合调压方案,在基速以上做小范围的升速。因此,自动控制的直流调素系统往往以变压调速为主。变压调速是直流调速系统的主要方法,调节电枢供电电压需要有专门的可控直流电源。常用的可控支流电源有三种:(1) 旋转变流机组用交流电动机和直流发电机组成机组,以获得可调的直流电压。(2) 静止可控整流器用静止的可控整流器,例如晶闸管可控整流器,以获得可调的直流电压。(3) 直流斩波器和脉宽调制变换器用恒定支流电源或不控整流电源供电,利用直流斩波器或脉宽调制器产生可变的平均电压。 旋转变流机组我们此次设计显然不能采用,因为它的调速性能不高,设备多,体积大,费用高,效率低,维护不方便。我们只要考虑静止可控整流器和脉宽调制变换器。1.1 VM调速系统方案分析 该方案,以单片机为控制核心,实现数字PID控制。目标转速从键盘输入,电动机的实际转速通过单片机测得,并由单片机进行实时显示,同时,由输入的转速与测得的实际转速得到转速差,由单片机进行PID运算,得到的结果进行D/A转换,于是将数字信号变成模拟信号,并用此模拟信号去控制可移触发装置,进而控制晶闸管的导通角,最终控制电动机的电枢电压,达到对电动的调速和稳速。整个系统形成一个单闭环系统,能够对电动机的转速达到比较精确的控制,是现在比较流行的一种调速系统。1.2 PWM调速系统方案分析 系统结构框图如图1.2所示。单片机单片机键 盘输 入脉冲输入显示驱动缓冲电路电力晶体 管电源电路 图1.1 PWM调速系统结构框图 该方案,同上一方案一样,也是一个单闭环系统,但该系统不是通过控制晶闸管的触发脉冲来控制电压,而是通过控制大功率晶体管的导通和关断时间比来控制电动机电枢电压。该系统中运用了两片单片机。其中一片单片机用来控制键盘输入,转速测量,转速显示,以及数字PID的运算。另一片单片机用来控制输出占空比可调可脉冲,从而控制晶体管的导通时间,达到调速和稳速要求。1.3 两种方案的比较 第一种方案采用了晶闸管进行调速, 但晶闸管也有它的缺点,首先,由于晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是,元件对过电压、过电流以及过高的du/dt和di/dt都十分敏感,其中任一指标超过允许值都可能在很短的时间内损坏元件,因此必须有可靠的保护装置和符合要求的散热条件,而且在选择元件的时候还应留有足够的余量。最后,但系统处于深调速的状态,即在较低速运行时,晶闸管的导通角很小,似的系统的功率因数很低,产生较大的谐波电流,引起电网电压波形畸变。会造成所谓的“电力公害”。在这种情况下,必须增设无功率补偿和谐波滤波装置。第二种方案采用的是大功率晶体管,属于PWM调速,它与VM系统相比,有下列优点: (1) 由于PWM的开关频率教高,仅靠电枢电感的滤波作用就足以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽。又由于电流波形比VM系统好,在相同的平均电流即相同的输出转矩下,电动机的损耗和发热都小。(2) 同样由于开关频率高,若与快速响应的电机配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3) 由于电力电子期间只工作在开关状态,住电路损耗较小,系统装置可以获得更高的效率。 综上所述,第二种方案比第一种方案有着明显的优点,是直流调速的趋势,因此,我们采用了方案二。 第二部分 PWM直流电机调速系统系统设计2.1 系统组成本系统由显示模块,键盘输入模块,测速模块,晶体管驱动缓冲模块,电源模块以及单片机的通讯模块组成。 2.1.1 系统结构框图单片机单片机键 盘输 入脉冲输入显示驱动缓冲电路电力晶体 管电源电路 图2.1 PWM调速系统结构框图2.1.2系统功能说明(描述) 系统的功能主要有:(1) 电动机的无静差调速转速,调速范围100rpm1000rpm(2) 实时显示转速2.2 PID参数的确定 PID 控制是工业过程控制中应用最早、最广泛、技术最成熟的一种控制规律,对于大多数工业对象都能够得到比较满意的控制效果。模拟PID控制器采用硬件来实现PID的控制规律。用软件来实现PID的控制算法比模拟PID控制器有更大的灵活性和可靠性。本设计再用了PID控制算法中的位置式PID控制算法。1.1图是典型的PID控制的系统结构图。在PID调节器作用下,对误差信号分别进行比例、积分、微分控制。调节器的输出作为被控对象的输入控制量。图2.2 典型PID控制的系统结构图PID控制器的传递函数为: G(S)=0.945/0.0042S2+0.038S+1利用MATLAB进行仿真实验最终得到的PID参数为:Kp=0.01、Ki =0.01、Kd=0.1、T=0.01S。但为了计算的方便,在编写程序时,先将各参数扩大128倍 ,最后将得到的结果右移7位,将结果还原,这样可以避免复杂的浮点运算。2.2 单元电路设计2.2.1 键盘输入单元1. 矩阵式键盘的结构与工作原理: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程方法如下所述。2. 矩阵式键盘的按键识别方法 确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。1. 判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2. 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。下面给出一个具体的例子: 图仍如上所示。8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。1. 检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。 2. 去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 3. 若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出: P1.7 1 1 1 0P1.6 1 1 0 1P1.5 1 0 1 1P1.4 0 1 1 1在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值2.2.2 显示单元1. LED数码显示器的连接在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。八段LED显示器 引入:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,可以拼成各种各样的图形,LED显示器实际上也是这么一个东西。八段LED显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。如下图所示。共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示P字符,即对于共阴极LED显示器,“P”字符的字形码是73H。如果是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。动态扫描显示接口 动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。由89C51的P0口能灌入较大的电流,所以我们采用共阳的数码管,并且不用限流电阻,而只是用两只1N4004进行降压后给数码管供电,这里仅用了两只,实际上还可以扩充。它们的公共端则由PNP型三极管8550控制,显然,如果8550导通,则相应的数码管就可以亮,而如果8550截止,则对应的数码管就不可能亮,8550是由P2.7,P2.6控制的。这样我们就可以通过控制P27、P26达到控制某个数码管亮或灭的目的。2.2.3串行接口单元串行接口的一般概念 单片机与外界进行信息交换称之为通讯。 8051单片机的通讯方式有两种:并行通讯:数据的各位同时发送或接收。串行通讯:数据一位一位顺序发送或接收。串行通讯的方式:1. 异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。2. 同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。3. 通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。28051单片机的串行接口结构8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。1. 串行口的控制与状态寄存器1. 串行口控制寄存器SCON 它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI SM0、SM1:串行口工作方式选择位,其定义如下:SM0、SM1 工作方式 功能描述 波特率 0 0 方式0 8位移位寄存器 Fosc/12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART Fosc/64或fosc/32 1 1 方式3 11位UART 可变 其中fosc为晶振频率2.2.4 测速单元 测量,一般采用的是接触式转速计,这种转速计必须顶在转轴中心才能进行测量,使用起来不方便,而且局限性很大,安全性也不是很好。因此,我们设计了采用光电传感器的非接触式转速计,测量范围从109999转分钟,该测量原理如下:在被测旋转轴上贴一片铝箔作为反光体,当反光体转到光电传感器的正前方时,光电传感器发出的红外光束被反射回来,同时被光电传感器上的红外接收管接收,产生一个脉冲信号,我们利用这个信号的边沿触发单片机内部的高精度定时器进行计时,精度可达1s,当反光体再次转到光电传感器的正前方时,利用光反射信号的边沿停止单片机计时。这样转轴的旋转周期t就被精确地测量出来了,然后单片机把周期换算成转速并通过LED数码管显示出来。INT1T0INT1T0一个周期 图2.2 波形图案 图2.3 连接示意 图2.2 波形图案 图2.3 连接示意 这里我们利用门控信号GATE启动的方法。定时器/计数器T0为计数器,定时器/计数T1为定时器,INT1/为高电平时,启动定时器,(定时器每中断一次,就让单片机的记数单元COUT加1)同时,计数器开始计数,且只计数两次就产生中断,让定时器和记数器都停止工作,这样,脉冲的周期T=COUT*K其中,K为定时器的定时常速,在此设计中,要求转速在100rpm1000rpm范围内,故要测的脉冲周期在60ms600ms之间,因此,K取20ms可以满足精度要求。 2.3PWM直流调速系统的电路构成及软件设2.3 PWM直流调速系统硬件电路及工作过程说明系统的电路图参见附录1,整个工作过程如下:当键盘输入转速信号时,单片机1获得此信号,并测量电动机的实际转速,通过与此转速比较得到转速差,然后该差值经过PID运算,得到一占空数。单片机1将控制占空数的信号发送给单片机2,而单片机1又继续进行测量实际转速工作,单片机2接到控制占空数信号后,就按该信号输出连续的方波。其中,键盘是采用中断处理方式, 电动机转速大小是通过光电传感器检测出来的。2.4 PWM直流调速系统软件设计为了提高编程效率,整个软件设计采用了模块处理。模块主要有:键盘模块,显示模块,串接模块,测速模块,PID运算模块,脉冲产生模块。 2.4.1 RAM/ROM配置说明 单片机1的 RAM的配置如下表所示:30H键盘输入的转速的个位(BCD)31H键盘输入的转速的十位(BCD)32H键盘输入的转速的百位(BCD)32H键盘输入的转速的千位(BCD)34H实测转速的个位(BCD)35H实测转速的十位(BCD)36H实测转速的百位(BCD)37H实测转速的个千位(BCD)38HKEY值39H实测转速的低字节(BIT)40H实测转速的高字节(BIT)41H键盘输入的转速的低字节(BIT)42H键盘输入的转速的低字节(BIT)43H占空比值44HP参数值45HI参数值46HD参数值47HE(K)的低字节(有符号)48HE(K)的高字节(有符号)49HPID结果的第一个字节50HPID结果的第二个字节51HPID结果的第三个字节52HPID结果的第四个字节53H积分项的第一个字节54H积分项的第二个字节55H积分项的第三个字节56H积分项的第四个字节57HE(K-1)的低字节(有符号)58HE(K-1)的高字节(有符号)59H2.4.3 程序流程图. E(K)100?开始初始化T0、T1、外部中断0、串行口调用测速子程序将测得转速转为BCD码调用显示子程序将输入的转速化为二进制将E(K)给E(K1)将运算结果发送给单片机2PID运算占空比值为70 图2.5 主程序流程图开始关定时器T1关门控信号重置定时初值计数器加1将20H.1取反返回中断开始清除中断标志禁止T0、T1中断关中断关定时器、计数器返回中断开 始延时消抖确定键值有无键按 下键处理YN返回中断图2.8 计数器T1程序流程图图2.9 定时器T2流程图图2.7 键盘程序流程图第三部分 单闭环直流调速系统测试3.1 测试软件ProteusbakProteusbk是一种用于单片机的仿真软件,它能对由单片机以及其外围电路或芯片所组成的系统进行模拟仿真,能经验出单片机程序的逻辑错误以及电路接口之间的逻辑错误,是一种非常使用的仿真软件。3.2 测试内容 键盘和显示单元3.3 测试步骤(1) 用WAVE6000编写单片机的原程序,然后编译成后缀为HEX的文件。(2) 用Proteusbak绘制键盘和显示单元的电路图。(3) 将WABE6000的HEX文件加载到Proteusbak的硬件图中。(4) 运行Proteusbak,进行时序仿真,仿真结果如图所示。3.4 测试分析 通过测试,可以说明所写的程序是真确的,无逻辑上的错误,外围电路的连接也是真确的,可以进行电路板的焊接和制作。第四部分 设计总结本课程设计对V-M调速方案和PWM调速方案作了说明和比较,从优选择了后者,并且对此方案作详细的说明和介绍设计的具体过程,从方案的选择到具体的硬件实现,从具体的硬件电路到具体的软件实现,从软件实现到调试,每一步都作了较为详细的说明,虽最后因为时间和条件有限的关系,最终未能在具体电路系统中调试整个系统,但这个为期两个多礼拜的课程设计,让我感悟最深的是基极驱动器的设计、PID的应用和原理以及单片机的编程技巧。每个晶体管应有独立的基极驱动器。为了确保晶体管在开通时能迅速达到饱和导通,关断时能迅速截止,正确设计基极 驱动器是非常重要的。首先,由于各个驱动器是独立的,但控制电路共用,因此必须使控制电路与驱动器电路相互隔离。其次,驱动器每个开关过程包括三个阶段,即开通、饱和 导通和关断。具体的基极驱动器电路可按电流的导通、饱和导通和关断波形设计,由功放三极管、门电路和延时环节组成。 由于本人的知识结构和经验的局限性,本设计需仿真的部分未能全部成功,这也是本设计的一个失误之一。 本设计的最大的失误是:没有尽可能地采用结构化的程序设计方法。在设计单片机应用系统程序时,首这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。参考文献1 李宏等.GTR基极驱动厚膜集成电路HL201A.国外电子元器件.2001(6)2 牟新斌.功率晶体管的驱动与保护.电力电子技术.1991(1)3张振熔,晋明武,王毅平.MCS51单片机原理及实用技术M.北京:人民邮电出版社.20004徐建军.MCS-51系列单片机应用及接口技术M.北京:人民邮电出版社.20035黄继昌.实用单元电路及其应用M.北京:人民邮电出版社.2000附录1 单闭环直流调速系统硬件电路图图3.1 总图1图3.2 总图2附录2 单闭环直流调速系统元器件明细表序号代号名 称型号或规格数量备注174LS04六反向器1274LS21四输入与门13R电阻1K134SWPB电动按钮125晶振12MHz26C1电容0.1uf127C2电容10uf18C3电容4800uf19C4电容470pf11074LS573锁存器21174LS02二输入或非门212共阴极LED813开关314MAX708215555定时器116整流桥117VT晶体管2N222118HL201A驱动器119GTR功率管SQD50AB100120D快恢复二极管FR107321直流电机122R电阻0.021附录3 单闭环直流调速系统程序清单单片机1的程序:KEY EQU 38HORG 0000HAJMP MAINORG 0003HAJMP INT0ORG 0BHAJMP T0ORG 1BHAJMP T1ORG 0030HMAIN: SETB P3.3 ;置P3.3 P3.4为输入状态 SETB P3.4 MOV TMOD,#95H MOV TL0,#0FEH MOV TH0,#0FFH MOV TL1,#0B1H MOV TH1,#0E0H SETB EA MOV IP,#02H ;T0中断优先于T1 SETB ET1 SETB ET0 MOV SCON,#80H MOV R0,#30H MOV R7,#8TT: MOV R0,#0 INC R0 DJNZ R7,TT MOV 44H, #19 ;置P,I,D参数(扩大128倍取整) MOV 45H,#19 MOV 46H,#128 MOV 53H,#0 MOV 54H,#0BEGIN: ACALL CESU MOV R2,#0 MOV R3,#0 MOV R4,#0BH MOV R5,#0B8H MOV A,R3 MOV R6,#0 MOV R7,A ACALL DIVD MOV 39H,R2 ;39H.40H为实测的转速 (二进制) MOV 40H,R3 ACALL HB2 ;二进制转为BCD码 MOV A, R3 ANL A,#0F0H MOV 34H,A MOV A,R3 SWAP A ANL A,#0F0H MOV 35H,A MOV A,R4 ANL A,#0F0H MOV 36H,A MOV A,R4 SWAP A MOV 37H,A ACALL DISPLAY MOV A,30H SWAP A ADD A,31H MOV R2,A MOV A,32H SWAP A ADD A,33H MOV R3,A ACALL BH2 ;BCD码转为二进制数 MOV 41H,R2 MOV 42H,R3 ;41H,42H为输入的转速(二进制)PID: MOV A,41H SUBB A,39H MOV 47H,A MOV A,42H SUBB A,40H MOV 48H,A MOV R2,44H MOV R3,#0 MOV R6,47H MOV R7,48H ACALL MULS MOV 49H,R2 MOV 50H,R3 MOV 51H,R4 MOV 52H,R5 MOV R2,45H MOV R3,#0 MOV R6,47H MOV R7,48H ACALL MULS MOV R0,53H MOV R1,54H MOV R6,55H MOV R7,56H ACALL SIJIA MOV 53H,R2 MOV 54H,R3 MOV 55H,R4 MOV 56H,R5 MOV R0,49H MOV R1,50H MOV R6,51H MOV R7,52H ACALL SIJIA MOV 49H,R2 MOV 50H,R3 MOV 51H,R4 MOV 52H,R5 MOV A,47H SUBB A,53H MOV 57H,A MOV A,48H SUBB A,54H MOV R2,57H MOV R3,A MOV R6,47H MOV R7,48H ACALL MULS MOV R0,49H MOV R1,50H MOV R6,51H MOV R7,52H ACALL SIJIA MOV 49H,R2 MOV 50H,R3 MOV 51H,R4 MOV 52H,R5 MOV R6,#128 MOV R7,#0 ACALL DIVD MOV R0,#7SS: MOV A,R5 ;将结果右移7位 RRC A MOV R5,A MOV A,R4 RRC A MOV R4,A MOV A,R3 RRC A MOV R3,A MOV A,R2 RRC A MOV R2,A DJNZ R0,SS MOV 43H,R2 MOV A,R2 MOV SBUF,A JNB TI,$ CLR TI MOV 57H,47H MOV 58H,48H AJMP BEGIN ;*四字节有符号相加加数在R2,R3,R4,R5中,被加数在 R0,R1,R6,R7中 ;* 结果在R2,R3,R4,R5中SIJIA: MOV A,R2 ADD A,R0 MOV R2,A MOV A,R3 ADDC A,R1 MOV R3,A MOV A,R4 ADDC A,R6 MOV R4,A MOV A,R5 ADDC A,R7 MOV R5,A RET;* 双字节码整数转换成双字节十六进制整数;待转换的双字节码整数在R2、R3中。 转换后的双字节十六进制整数仍在R2、R3中。BH2: MOV A,R3 LCALLBCDH MOVR3,A MOVA,R2 LCALLBCDH MOVB,#100;扩大一百倍 MULAB ADDA,R3;和低字节按十六进制相加 MOVR3,A CLRA ADDCA,B MOVR2,A RET;*单字节码小数转换成单字节十六进制小数;* 转换后的单字节十六进制小数仍在累加器A中。BCDH:MOVB,#10HDIVABMOVR4,B;MOVB,#10;将十位转换成十六进制MULABADDA,R4;按十六进制加上个位RETCESU: PUSH PSW PUSH SP PUSH ACC MOV PSW,#08H MOV R3,#0 ; 软件计数器清零 SETB 20H.0LOOP9: SETB 20H.1 SETB TR0 SETB TR1 JB 20H.1,$ JB 20H.0,LOOP9 RET;*双字节二进制无符号数除法 ,;*被除数在R2、R3、R4、R5中,除数在R6、R7中。;*双字节商在R2、R3中DIVD:CLRC;比较被除数和除数MOVA,R3SUBBA,R7MOVA,R2SUBBA,R6JCDVD1SETBOV;溢出RETDVD1:MOVB,#10H;计算双字节商DVD2:CLRC;部分商和余数同时左移一位MOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AXCHA,R2RLCAXCHA,R2MOVF0,C;保存溢出位CLRCSUBBA,R7;计算(R2R3R6R7)MOVR1,AMOVA,R2SUBBA,R6ANLC,/F0;结果判断JCDVD3MOVR2,A;够减,存放新的余数MOVA,R1MOVR3,AINCR5;商的低位置一DVD3:DJNZB,DVD2;计算完十六位商(R4R5)MOVA,R4;将商移
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神奇飞书教学课件下载
- 小儿全麻手术中护理配合
- 下肢动脉血栓形成的护理
- 内部市场化培训
- 民爆安全员题库及答案解析
- 人造血管的护理2025
- 热电公司安全培训试题库及答案解析
- 护理简答题库及答案解析
- 全面有效实施施工方案
- 廉租房服务方案范本
- 夫妻忠诚协议书8篇
- 2025年信用管理专业题库- 信用管理对企业市场风险的控制
- 双重上市公司“管理层讨论与分析”披露差异:剖析与弥合
- 物流会计面试试题及答案
- 集装箱货物高效清关代理服务合同范本
- 2025年结构上岗试题及答案
- 教科版小学五年级上册科学实验报告20篇
- 2025-2026学年人教版(五线谱)(2024)小学音乐三年级上册教学计划及进度表
- 江西省宜春市2025年上半年事业单位公开遴选试题含答案分析
- 开学第一课暨校长思政课:弘扬伟大抗战精神赓续强国复兴血脉
- 代销理财管理办法
评论
0/150
提交评论