单片机控制直流调速系统(附程序清单)_第1页
单片机控制直流调速系统(附程序清单)_第2页
单片机控制直流调速系统(附程序清单)_第3页
单片机控制直流调速系统(附程序清单)_第4页
单片机控制直流调速系统(附程序清单)_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、南京工程学院毕业设计说明书(论文)目录前 言1第一章 概述21.1 单片机控制直流调速系统的设计方案21.2 单片机控制直流调速系统工作原理概述2第二章 单片机控制系统的硬件设计42.1单片机系统的地址分配4 2.2数据存储器6264的扩展52.3 adc0809与8051单片机的接口电路设计72.3.1给定速度的设计72.3.2 反馈速度采样电路设计82.4 dac0832与8051单片机的接口电路设计92.5 led数码显示电路设计112.6 单片机控制直流调速系统中的其它设计132.7 pcb板图的设计14第三章 单片机控制系统的软件设计163.1主程序的设计163.2采样子程序193.

2、2.1 adc0809的采样程序193.2.2中值滤波算法子程序213.3数字pid控制算法子程序233.4 dac0832的转换253.5程序中的代码的转换263.6给定速度显示与实际速度显示子程序293.6.1 给定速度显示程序设计293.6.2实际速度显示子程序313.7 程序的调试31第四章 总结33致 谢35参 考 文 献36附录 一 软件程序清单3746 第 页前 言自电动机成为第二次工业革命开始的标志以来,其在工业生产制造、交通运输、家用电器等领域发挥重要作用,电动机的应用无处不在。电机的控制系统随着计算机的发展而不断的改进。在很长一段时间内,在较高控制性能的传动系统中,直流电机

3、一直占据主导地位,主要原因在于其控制简单、调速平滑、性能良好。随着电力电子技术的发展,直流电机拖动将有逐步被交流电机拖动所取代的趋势。但在中、小功率的场合,采用永磁直流电动机,对其转速控制相对比较简单,只需对电枢回路进行控制。直流调速系统中应用最广泛的一种调速方法是调节电动机的电枢电压。为了获得可调的直流电压,利用电力电子器件的完全可控性,采用脉宽调制(pulse width modulation)技术,将恒定的直流电压调制成大小、极性可变的直流电压作为电动机的电枢电压,实现系统的平滑调速,这种调速系统就称为直流脉宽调速系统。它越来越广泛地应用于各种功率的调速系统中。微处理器使电机运动控制技术

4、再次发生巨大变革,使用微处理器实现数字化控制不仅可以简化控制硬件,而且可以加入人工智能对运动系统进行诊断,这对电机运动控制系统的发展影响重大。单片机用做微处理器的调速系统应用尤为广泛。单片机结构相对比较简单,通过学习一些专业基础知识以后依靠自己的技术力量,也能够开发出自己所希望的单片机应用系统。为了在比较简单的运动控制系统中实现智能控制,因此设计了单片机控制直流调速系统。单片机是应用于直流调速系统的最基本处理器,就其组成和结构而言,大大缩小控制器的体积,增加了功能,而且可以通过串行通信和计算机相连接,实现集中控制。第一章 概述1.1 单片机控制直流调速系统的设计方案本次设计的任务是单片机控制的

5、直流调速系统,该系统通过单片机对直流电动机的速度进行控制,同时对速度进行检测采样,并显示给定速度和实际速度。控制系统设计总体结构框图如下: 单 片 机a/d转换给定转速a/d转换测速电机直流电机速度显示示示示d/a转换pwm波形发生器pwm驱动 图1-1系统结构框图1.2 单片机控制直流调速系统工作原理概述整个系统的工作原理:首先是人为给定电动机转速的电压信号,然后将这个电压信号通过a/d转换器转换成数字信号后传送给单片机(8051)。单片机通过中断通信方式将接收到数据先保存起来。然后再对此数据进行处理:要将此二进制数进行转换,先将(00hffh)转换成对应的实际数值,接着启动adc0809开

6、始采样直流电动机的实际速度值,因为用到了中值滤波算法,所以需要连续采集三次数据,作比较之后取中间值,这个值即为直流电动机速度的实际值。然后用给定值与这个实际值作比较,再通过pid控制算法,得到一个输出信号值,再通过dac0832转换器将这个数字信号转换成相应的模拟电压控制信号,经过pwm波形发生器来驱动直流电动机;接着继续采样,又通过pid控制算法,同样又输出一个电压控制信号来驱动直流电动机,其实这是一个不断地循环往复的过程,作比较直至差值为零,即实际速度等于给定速度。并在这个循环往复的过程中,将采集到的不断变化的速度值,通过led数码管显示出直流电动机的给定速度值和实际速度值。整个系统设计包

7、括了四个大的部分: a/d转换电路部分、d/a转换电路部分、存储器的扩展部分、转速数字显示部分。(1)a/d转换电路的设计:从毕业设计任务书中给的原始数据知道,测速发电机的输出电压范围为(012v),直流电动机的额定转速值是1500转/分。选用了一块adc0809芯片,对测速发电机发出的电压进行转换,转换成相应的数字信号。但是adc0809芯片只能接受(05v)的电压范围,需要外加一个转换电路,将测速发电机发出的电压进行转换,达到adc0809芯片能接受要求范围。(2)d/a转换电路的设计:毕业设计任务要求单片机控制系统部分能够输出(05v)电压控制信号。这里选用dac0832芯片,因为它具有

8、数据锁存器、片选、读、写控制信号线,故可以与mcs-51扩展总线直接相连。但是dac0832的输出是电流,使用运算放大器可以将dac0832的电流输出线性的转换成电压输出。(3)存储器的扩展电路设计:mcs-51系列单片机内具有128b或256b的数据存储器ram,但在大多数的实时控制系统中,肯定会要求采集大量的数据信息,而这些信息又比较珍贵,为此需要将这些大量宝贵的数据保存下来,唯一可行的办法就是扩展控制系统的存储容量,因此外接一块6264芯片。(4)速度显示电路设计:从毕业设计任务书中给的原始数据知道,直流电动机的额定转速为1500转/分。led显示电路设计的目的就是为了显示给定转速和实际

9、速度值,而转速值又只能是整数,也就是说led显示的是一个4位的整数值。因此选用8个led显示器,可分别显示出给定速度值和实际速度值。第二章 单片机控制系统的硬件设计单片机控制直流调速系统接口电路集中了mcs-51系列单片机的功能芯片,包括数据存储器扩展芯片6264,i/o口扩展芯片8255,ad转换芯片adc0809及da转换芯片dac0832,另外还有3-8译码器74ls138,地址锁存器74ls373等。下面将分别介绍各个芯片的功能和设计电路图。2.1单片机系统的地址分配单片机与74ls138译码器的设计如图所示: 图2-1 8051与74ls138的连接图单片机控制直流调速系统的接口电路

10、属于ram和i/o容量较大的应用系统,单片机共有四个外围及接口芯片,需要四个片选信号,我们采用全地址译码方法。这种译码方法将低位地址作为片内地址,而用译码器74ls138对高位地址线进行译码,译码器输出的地址选择线用作片选线。本系统采用的38译码器74ls138,输入端占用3根最高位地址线,取a (p2.5), a (p2.6), a (p2.7)作为74ls138译码器的输入信号依次接至74ls138的a口、b口、c口,剩余的13根低位可作为片内地址线。因此,译码器的8根输出线分别对应8个8k字节地址空间。74ls138的控制端,接地,g1接+5v,否则译码器的8个输出端全为高阻状态。逻辑功

11、能表如下: c b a (cs3)(cs2)(cs1)(cs0)1 0 00 0 01 1 1 1 1 1 1 0(接6264)1 0 00 0 11 1 1 1 1 1 0(接8255)11 0 00 1 01 1 1 1 1 0(接0809)1 11 0 00 1 11 1 1 1 0(接0832)1 1 11 0 01 0 01 1 1 0 1 1 1 11 0 01 0 11 1 0 1 1 1 1 11 0 01 1 01 0 1 1 1 1 1 11 0 01 1 10 1 1 1 1 1 1 1其 它 状 态 1 1 1 1 1 1 1 1 表2-1 74ls138逻辑功能表根据

12、上表中地址线的连接方法可知各个芯片全部地址译码如下表所示:表2-2 地址译码元器件地址选择线片内地址单元数地址编码6264000 8k0000h1fffh82550011 1111 1111 11 43ffch3fffh08320101 1111 1111 111115fffh08090111 1111 1111 1 87ff8h7fffh 2.2数据存储器6264的扩展数据存储器即随机存取存储器,简称ram,用于存放可随时修改的数据信息,对ram可进行读、写操作。数据存储器用于存储现场采集的原始数据、运算结果等,所以外部数据存储器应能够随机读/写,通常采用半导体随机存储器ram电路。ram为

13、易失性存储器,断电后所存储的信息会立即丢失。因为设计的系统中需要采集大量的数据并要保存下来,因此使用一片6264扩展单片机的数据存储器,6264与单片机的电路设计如下图所示: 图2-2 8051与数据存储器6264的接口电路图因6264是8k字节的ram,故需要13根低位地址线(a0a12)进行片内寻址,6264有两个片选信号(cs2、),只有当cs2=1,=0时,芯片才被选中工作。否则就不工作,在实际应用中,往往只用其中一个,而另一个接成常有效。本系统将74ls138的片选信号cs0接至6264的,6264的cs2接+5v电源。6264数据线d0d7依次接到8051单片机的p0口,地址线a0

14、a7依次接到74ls373的输出端,高五位地址线(a8a12)依次接到8051单片机的(p2.0p2.4口)。、的信号分别接到8051单片机的和端口。6264在此系统中的工作原理,当6264的cs2=1,=0,=0,=1时从6264读出数据到d7d0;当6264的cs2=1,=0,=1,=0时把d7d0数据写入6264。具体工作方式见下表:表 2-3 6264的工作方式选择表工作方式cs2功 能禁止1000不允许同时为低电平读出1001从6264读出数据到d7d0写入1010把d7d0数据写入6264选通1011输出高阻未选通11输出高阻由于8051单片机的p0口是分时复用的地址/数据总线,因

15、此在进行数据存储器扩展时,必须利用地址锁存器将地址信号从地址/数据总线中分离开来。这里使用了带三态缓冲输出的8d锁存器74ls373,当74ls373用作地址锁存器时,三态门的使能信号应该为低电平。当c输入端为高电平时,锁存器输出(1q8q)状态和输入端(1d8d)状态相同;当c端从高电平返回到低电平(下降沿)时,输入端(1d8d)的数据锁入(1q8q)的8位锁存器中。mcs-51单片机外部数据操作简单,只有累加器a和外部数据存储器的数据传送操,它可以通过下面两类指令实现:movx ri, a ;累加器a中数据送片外数据存储器movx a, ri ;片外数据存储器中数据送累加器a中这类指令中,

16、片外数据存储器低8 位地址由ri(i=0,1)间接寻址,而高8位地址则隐含为程序指令地址的高8位。movx dptr ,a ;累加器a中数据送片外数据存储器movx a, dptr ;片外数据存储器中数据送累加器a这类指令中,片外数据存储器由16位数据指针dptr间接寻址。2.3 adc0809与8051单片机的接口电路设计2.3.1给定速度的设计 给定转速电路设计如下图所示:图2-3 给定模拟电压与adc0809的连接已知直流电动机的额定转速为1500转/分,为简化设计电路,给定转速由一个旋转电位器给定一个05v可变模拟电压,通过adc0809模数转换器将这一给定05v电压转换成对应的数字信

17、号,将这个数字信号作为控制直流电动机转速的给定速度值。旋转电位器r4的一端接+5v直流电压,另一端接地,可变输出端接adc0809模拟量输入通道in0。当电位器输出电压为0v时即给定转速为0转/分,当电位器输出电压为+5v时即给定转速为1500转/分。这样当给定电压在05v之间变化时,其转换后的数字信号相当于01500转/分。2.3.2 反馈速度采样电路设计 反馈速度采样电路设计如下图所示:图2-4 adc0809和8051的连接电路图在设计中首先要将给定直流电动机转速的模拟电压转换成数字信号,同时还要对测速发电机进行采样并转化成数字信号,因此需要一片a/d芯片。a/d的种类很多,根据转换原理

18、可以分为双积分式(优点是转换精度高,抗干扰性好,价格便宜,但转换速度慢)、逐次逼近式(转换精度、速度、价格适中)、并行式(速度快,但价格昂贵)和计数器式。其中逐次逼近式a/d转换器应用比较普遍,也能满足设计要求,因此选用了一片adc0809芯片。adc0809是8路8位逐次逼近式a/d,由多路模拟开关、通道地址所存、译码器、8位a/d转换器及三态输出数据锁存器组成。本次设计中,由于adc0809片内无时钟,因此利用8051单片机 的ale提供,而8051单片机的晶振频率为12mhz,则其ale脚输出的频率为2mhz,再将8051单片机的 ale经过触发器74ls74 四分频后为500khz。a

19、dc0809的clk典型值为640 khz,超过640 khz时会使转换精度降低,因此经过四分频后8051单片机的ale连接到adc0809的clk能够满足系统的设计要求。adc0809具有输出三态锁存器,其8位数据输出线d0d7可直接与8051单片机的p0口相连。adc0809的adda、addb、addc分别与8051单片机的地址总线d0、d1、d2经过74ls373相连后a0、a1、a2连接,以选中in0in7的某一路,但是实际上只需要两个转换通道就行了(in0给定转速电压通道;in1测速发电机反馈电压通道)。而将74ls138的cs3()作为片选信号,由8051单片机的写信号控制adc

20、0809的地址锁存和转换启动。由于adc0809的ale和start连在一起,故在锁存通道的同时,启动并进行转换,输出允许信号enable由8051单片机的读信号rd与74ls138的cs3()组合产生。显然cs3()应为低电平。a/d转换是否完成的判断。因为只有确认数据转换完成后,才能把数据传送给8051单片机做处理。通常有三种方式:定时传送方式、查询方式、中断方式。从adc0809和8051单片机的连接电路图中可知 adc0809 的eoc经过74f04反向器后再和8051单片机的int0相连接,所以采用的是中断方式进行数据传送。由于采用的是中值滤波算法,所以需要采集三次。当检测到eoc为

21、高电平时,即a/d转换完成,单片机将数据读入并做相应的处理。adc0809和8051单片机的连接电路图中主要涉及到三个问题:第一个是adc0809的8路模拟信号的通道选择(上文中已经做出说明),第二个就是a/d转换完后转换数据的传送,第三个就是adc0809的8路模拟信号的通道所能承受的电压为05v,而测速发电机输出电压为012v,因此需要加一个转换电路将测速发电机的输出电压转换成能够满足adc0809的模拟量输入通道的要求,通常将测速发电机的输出电压接到一个电位器上,调整电位器使输出电压变成05v的直流电压。a/d转换后得到的是数字量,传送给单片机进行处理。2.4 dac0832与8051单

22、片机的接口电路设计 dac0832与单片机连接电路如图所示: 图2-5 dac0832和8051接口电路图数/模转换器是一种将数字信号转换成模拟信号的器件。 设计中需要将给定转速与实际速度的差值经过数字pid算法后再转换成(05v)电压输出,故选择一片dac0832实现设计要求。dac0832是8位d/a,片内带数据锁存器,电流输出,输出电流稳定时间为1µs,+5+15v单电源供电,功耗为20mw。从dac0832和8051单片机的接口电路图可以看到:dac0832的di0di7这八个引脚和8051单片机的p0口依次相连,用于输入cpu送来的待转换的数字量,di7为最高位。dac08

23、32的cs和74ls138的cs2相连,当dac0832的cs为低电平时,此芯片被选中工作;当cs为高电平时,此芯片不被选中工作。dac0832的iout1和iout2是两条模拟电流输出线。iout1+iout2为一常数;若输入数字量为全“1”,则iout1为最大,iout2为最小;若输入数字量为全“0”,则iout1最小,iout2最大。为了保证额定负载下输出电流的线性度,iout1和iout2引脚线上的电位必须尽量接近低电平。单片机控制直流调速系统中要求用05v 模拟电压来控制pwm,因此dac0832的电流输出必须转换成电压输出,方法就是在dac0832的iout1和iout2的输出端接

24、运算放大器,本设计中选用的是lm339作为运算放大器。dac0832的 wr1、wr2为两条写命令输入线。wr1用于控制数字量输入到输入寄存器:若ile为“1”,cs为“0”和wr1为“0”同时满足,则与门m1输出高电平,“8位输入寄存器”接收信号;若上述条件中有一个不满足,则m1输出由高到低,“8位输入寄存器”锁存di7di0上的输入数据。wr2用于控制d/a转换的时间:若xfer和wr2同时为低电平,则m3输出高电平,“8位dac寄存器”输出跟随输入; dac0832的cs和xfer共同构成片选线,接到74ls138译码器输出端cs2()。根据对dac0832的数据锁存器和dac寄存器的不

25、同控制方法,da0832有三种工作方式。单缓冲方式、双缓冲方式、直通方式。本次设计采用的是单缓冲方式。此方式适用于只有一路模拟量输出或几路模拟量非同步输出的场合,方法是控制数据锁存器和dac寄存器同时接收数据,或者只用数据锁存器而把dac寄存器接成直通方式。dac0832的输出是电流,有两个电流输出端(iout1和iout2),它们的和为常数。使用运算放大器可以将dac0832的iout1和iout2电流输出线性的转换成电压输出。根据运算放大器和dac0832的连接方法,运算放大器的输出可以分为单极性和双极性两种,这次设计使用的是单极性的连接方法。输出电压vo与对应输入数字量的关系为:式子中:

26、 ; /256为一常数。显然,vo和b成正比关系。输入数字量b为00h时,vo也为0,输入数字量为ffh时,由于=-5v,vo为正的最大值5v,输出电压为正的单极性。2.5 led数码显示电路设计数码显示电路设计如图所示: 图2-6 8255与8051的连接电路图 本次设计中要将给定的转速电压转换成数字量的转速,并用led(light emitting diode)数码管显示这一给定转速,同时还要显示直流电机实际转速。已知给定电机的转速为01500转/分,因此需要两个四位的led数码管才能满足设计要求。 led显示器是由发光二极管够成的字段组成的显示器,有8段和16段管两大类,本次设计采用的是

27、8段数码管。显示器有静态显示和动态显示两种方式。动态显示控制的基本原理是,单片机依次发出段选控制字和对应哪一位led显示器的位选控制信号,显示器逐个循环点亮。适当选择扫描速度,利用人眼睛的“留光”效应,使得看上去好像几位显示器同时在显示一样,而在动态扫描显示控制中,同一时刻实际上只要一位led显示器被点亮。单片机控制系统的接口电路中的led数码显示器使用的是共阴极接法。共阴极接法的原理:将所有发光二极管的阴极互相连接后接地,每个发光二极管的阳极通过电阻与输入端相连,当阳极端输入高电平时,段发光二极管就导通点亮,当阳极端输入低电平时,段发光二极管就不点亮。设计中采用动态显示,单片机控制系统采用动

28、态扫描显示。动态显示采用软件法把将要显示的十六进制数(或bcd码)转化为相应字型码,所以需要在ram区中建立一个显示缓冲区。显示缓冲区内包含的存储单元个数需和系统中的led显示器的个数相等。而显示缓冲区的起始地址很重要,它决定了显示缓冲区在ram中的位置。显示缓冲区的每个存储单元用于存放相应led显示管将要显示字符的字型码地址偏移量,所以cpu可以根据这个地址偏移量通过查字型码表找出所显示字符的字型码,以便送到字型口显示。为了显示字符,要为led显示器提供显示段选码(或称字型码)。采用共阴极接法的8段led数码显示器字型码表如下:表2-3 8段led数码显示器字型码表所显字符012345678

29、9共阴极字型码3fh06h5bh4fh66h6dh7dh07h7fh6fh2.6 单片机控制直流调速系统中的其它设计单片机控制直流调速系统中除上述电路设计之外,还有8051单片机的复位电路设计,本次设计中采用手动复位,当用手按一下按钮s1时就可以对8051单片机进行复位。除此之外原理图中还具备测速发电机接口卡j3,用来将测速发电机的电压信号接入系统。基准电源输入和模拟电压输出接口卡j2,为单片机系统引入5v的基准电压,还有将05v的模拟电压输出的接口卡j1。前面已经分别介绍了系统中各个部分的设计,现在将系统整体的原理图设计如下: 图2-7单片机控制系统原理图2.7 pcb板图的设计单片机控制直

30、流调速系统的硬件电路设计基本完成,接下来是使用protel软件画出上述设计的电路原理图,绘图时要注意元器件的布局合理,按照绘制原理图规则绘制。然后是对绘制的原理图进行电气规则检查和标注。下一步是对元器件的封装,有时有些元器件的封装在封装库中是找不到的。在封装按钮时就没有找到其封装,因此只有自己画封装图。接下来是生成网络表,网络表是描述电路元器件的编号、封装和元器件管脚之间的连接关系的列表。最后就是生成pcb板。在布线时分为人工布线和自动布两种,为了节省时间采用了自动布线。布线的原则:线长铜膜线应该尽可能的短;线宽铜膜线的宽应满足电气性能要求而又便于生产为准则,它的最小值取决于流过它的电流;线间

31、宽相邻铜膜线之间的间距应满足电气安全要求,最小间距要能承受所加电压的峰值;屏蔽与接地铜膜线的公共地线应尽可能放在电路板的边缘。自动布线后可以对其进行手工改动,使布线更加完善。此次设计的pcb板图如下: 图2-8 pcb板图第三章 单片机控制系统的软件设计为实现单片机对直流电机的控制,满足设计的要求,系统的工作过程是靠软件来实现的。因此软件的设计和编写很重要,程序的编写采用汇编语言。 3.1主程序的设计主程序的内容一般包括:主程序的起始地址、中断服务程序的起始地址、设置堆栈指针、相关存储单元和元器件的初始化以及一些子程序的调用等。(1)主程序的起始地址:mcs-51系列单片机经复位后,(pc)=

32、0000h,而0003h0023h为各中断源的入口地址,所以在编程的时候应在0000h处写一跳转指令(一般写长跳转指令),cpu在执行指令时,直接从0000h跳过各中断服务程序的入口地址,直接到0300h执行主程序(本程序设置的main从0300h开始)。在设计的系统中,使用了两个中断,即t0,int0。其中在t0中断程序中必须要对电机的转速进行定时采样,所以t0中断必须允许嵌套外部中断0的中断申请,所以在主程序初始化中置外部中断0为高优先级中断,在t0中断服务程序中必须要开外部中断0中断。t0定时器的工作参数确定后,在主程序初始化部分,对t0定时器进行设定,并且启动t0定时器(setb tr

33、0),开始工作,定时器t0和cpu并行工作。当定时1ms到,t0定时器向cpu提出中断请求,程序中设置软计数器,当一定的时间到,执行相应的中断程序。t0定时器中断服务程序的功能:15ms执行一次a/d转换、数据采集、pid算法、d/a转换,结束后进行显示,1ms显示一位。int0 中断主要的功能是完成数据的采集,采集完一次数据后向cpu发送中断请求。(2) 中断服务程序的起始地址:当cpu接收到中断请求信号并给予响应后,cpu把当前接收到的内容进行堆栈保护,然后转入相应的中断服务程序入口地址处开始执行。int0的中断入口地址为0003h。(3) 设置堆栈指针:在cpu经复位后,sp中的内容为0

34、7h,和工作寄存器区中的内容重复了,所以将sp中的内容改为70h。(4) 主程序的初始化:所谓的初始化,就是对将要用到的mcs-51系列单片机的内部单元和扩展的芯片进行初始化工作状态的设定。mcs-51系列单片机复位后,特殊功能寄存器ie、ip的内容为00h,所以应对ie、ip进行初始化编程,以开cpu总中断,允许某些中断源中断,并设置中断优先级等。 主程序流程图和t0中断流程图设计如下:t0中断服务程序开始设置数据、显示缓冲区地址设置时间初值(1ms)等待t0中断主程序设置各中断服务程序的入口地址设置堆栈指针相关寄存器清零设置定时器0工作方式设置中断优先级 t0定时中断判断15ms到否?ny

35、int0开中断,上一时刻数据进行采集a/d转换pid算法d/a转换转换为压缩bcd码后显示显示中断返回图3-1 主程序流程图 图3-2 t0中断服务流程图程序如下:org 0000hljmp main ;转主程序org 0003h ;外部中断int0的入口地址ljmp inta ;转外部中断int0服务程序org 000bh ;t0中断的入口地址ljmp t0-sev ;转t0中断服务程序org 0300hdatabuf equ 50h ;数据缓冲区的首地址disbuf1 equ 60h ;给定速度显示缓冲区的首地址disbuf2 equ 64h ;实际速度显示缓冲区的首地址samp-d1 e

36、qu 0000h ;保存给定速度采样数据的首地址samp-d2 equ 0500h ;保存实际速度采样数据的首地址main: mov sp,#70h ;设置堆栈指针mov r0,#7fh ;相关寄存器清零mov r0, #0 mov tmod,#01h ;定时器t0工作方式1 mov tl0,#18h ;定时器赋初值,定时1ms mov th0,#0fchmov ip,#01h ;设置外部中断int0优先 setb tr0 ;启动t0工作 setb ex0 ;允许int0中断 setb ea ;开cpu中断 sjmp $ ;等待中断t0中断程序:t0-sev: ; t0中断服务子程序 mov

37、tl0,#18h ;定时器重新赋值mov th0,#0fchsetb it0 ;中断触发方式为边沿触发方式 setb ea ; cpu开中断 setb ex0 ;允许外部中断0中断inta: push acc ;保护现场 push dph push dpl acall ad1 ;调用ad1给定速度采样子程序 acall filter ;调用中值滤波子程序 acall fa1 acall ad2 ;调用ad2实际速度采样子程序 acall filter ;调用中值滤波子程序acall fa2pop dph ;恢复现场 pop dpl pop acc reti acall pid ;调用数值pid

38、控制算法子程序 acall dac ;调用dac转换程序 lcall trast1 lcall dbcd1 lcall dis1 ;调用速度显示子程序 mov a,2ah ;实际速度值送a lcall trast1 ;调用代码转换子程序 lcall dbcd2 ;将实际转速bcd码转换成单独的bcd码 lcall dis2 ;调用实际速度显示子程序 reti ;中断返回3.2采样子程序3.2.1 adc0809的采样程序 dac0809 的地址可为7ff8h7fffh,具体该为哪一个地址涉及到转换通道的选择,在第二章中已经设定给定转速电压模拟量地址为7ff8h(in0),实际速度电压通道地址为

39、 7ff9h(in1)。 采样设计流程图如下:启动adc采样子程序开始a/d是否完成?延时返回采样值起始地址送r0采样次数送r2所有采样是否完成?nyny图3-3 adc0809采样子程序流程图程序如下:ad1: ;调用ad1给定速度采样子程序mov r0,#2ch ;采样值起始地址送r0 mov r2,#03h ;采样次数初值送r2 mov dptr,#6ff8h jmp adc1ad2: mov r0,#2ch ;采样值起始地址送r0 mov r2,#03h ;采样次数初值送r2mov dptr,#6ff9hadc1: movx dptr,a ;启动adc0809工作 mov r3,#20

40、hdly djnz r3,dly ;延时deng: jb p3.3,deng ;等待a/d完成 movx a,dptr ;采样值送a mov r0,a ;存放采样值 inc r0 djnz r2,adc1 ;若采样未完,则adc1 ret ;若采样完,则返回3.2.2中值滤波算法子程序 因为要对速度进行三次采样,取其中间值作为转速的实际值来减小误差,以达到设计要求。设三次采样值分别放在2ch、2dh、2eh中,程序流程图如下:大送2ch,小送2dh判断(2ch)、(2dh)相等否判断(2dh)、(2eh)相等否(2dh)< (2eh) ?判断(2ch)、(2eh)相等否n(2eh) &l

41、t; (2ch) ? y(2ch)送2ah(2eh)送2ah返回nn(2eh)送2ah(2dh)送2ah(2dh)送2ahyyynyy 图3-4 中值滤波流程图程序如下:filter: ;中值滤波算法子程序mov a,2ch ;(2ch)送a cjne a,2dh,cmp1 ;(2ch)(2dh),则cmp1 ajmp cmp2 ;否则转cmp2cmp1: jnc cmp2 ;若(2ch)=(2dh),则cmp2 xch a,2dh xch a,2chcmp2: mov a,2dh ;(2dh)送a cjne a,2eh,cmp3 ;若(2dh)(2eh),则cmp3 mov 2ah,a ;否

42、则(2dh)送2ah ret ;返回cmp3: jc cmp4 ;若(2dh)<(2eh),则cmp4 mov 2ah,a ;否则(2dh)送2ah ert ;返回cmp4: mov a,2eh ;(2eh)送a cjne a,2ch,cmp5 ;若(2eh)(2ch),则cmp5 mov 2ah,a ;否则(2en)送2ah ret ;返回cmp5: jc cmp6 ;若(2eh)<(2ch),则cmp6 xch a,2ch ;否则(2eh)(2ch)cmp6: mov 2ah,a ;a送2ah retfa1: mov dptr,#samp-d1 movx dptr,a ;将采样

43、值送到外部ram中的0000h单元 mov 1ah, a inc dptrfa2: mov dptr,#samp-d2 movx dptr,a ;将采样值送到外部ram中的0000h单元 inc dptr ret3.3数字pid控制算法子程序pid控制的理想微分方程为: 式1-1其中称为偏差值,可作为速度调节器的输入信号,为给定值,为被测变量值,为比例系数,为积分时间常数,为微分时间常数,为调节器的输出控制电压信号。但计算机只能处理数字信号,故上述数学方程必须加以变换,若设速度的采样周期为t,第n次采样得到的输入偏差为,调节器输出为,则有: (微分用差分代替) 式1-2 (积分用求和代替) 式1-3 式1-1可改写为 式1-4写成递推形式为 式1-5pid计算程序: 根据计算计算计算计算计算计算返回 图3-5 pid算法流程图表3-1 内部ram的有关参数分配图 2ah中间值42h2bh43h2ch三次采样值46h最低字节积单元2dh47h次低字节2eh48h次高字节2fh本次计算值49h最高字节30h4ah最低字节积单元31h给定值4bh次低字节32h4ch次高字节33h给定值4dh最高字节34h35h给定值36h37给定值38h3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论