收藏 分销(赏)

加热炉多参数检测和炉温控制系统学士学位论文.doc

上传人:可**** 文档编号:3034962 上传时间:2024-06-13 格式:DOC 页数:54 大小:514KB 下载积分:10 金币
下载 相关 举报
加热炉多参数检测和炉温控制系统学士学位论文.doc_第1页
第1页 / 共54页
加热炉多参数检测和炉温控制系统学士学位论文.doc_第2页
第2页 / 共54页


点击查看更多>>
资源描述
武汉科技大学机电与控制学院学士学位论文 加热炉多参数检测和炉温控制系统学士学位论文 目录 第一章 绪论 1 1.1 概述 1 1.2 MCS-51单片机的结构 4 1.3键盘及其显示器方式 9 第二章 采样与滤波 17 2.1 采样系统 17 2.2 数字滤波 18 2.3关于温度控制的PID算法 24 第三章 系统设计 31 3.1硬件电路模块 31 3.2软件系统设计 33 第四章 总结和展望 38 4.1引言 38 4.2 PID 控制 38 致谢 50 参考文献 51 湖北师范学院学士学位论文(设计)评审表 53 加热炉多参数检测和炉温控制系统 第一章 绪论 1.1 概述 随着现代工业的逐步发展,在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。其中,温度是一个非常重要的过程变量。例如:在冶金工业、化工工业、电力工业、机械加工和食品加工等许多领域,都需要对各种加热炉、热处理炉、反应炉和锅炉的温度进行控制。然而,用常规的控制方法,潜力是有限的,难以满足较高的性能要求。采用单片机来对它们进行控制不仅具有控制方便、简单和灵活性大的优点,而且可以大幅度提高被测温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。 单片机温度控制系统,是利用单片机作为系统的主控制器,测量电路中的温度反馈信号经A/D变换后,送入单片机中进行处理,经过一定的算法后,单片机的输出用来控制可控硅的通断,控制加热炉的输出功率,从而实现对温度的控制。 本单片机温度控制系统的具体指标要求是,对加热器加热温度调整范围为600℃—1000℃,温度控制精度小于3℃,系统的超调量须小于15%。软件设计须能进行人机对话,考虑到本系统控制对象为电炉,是一个大延迟环节,且温度调节范围较宽,所以本系统对过渡过程时间不予要求。单片机是一种集CPU、RAM、ROM、I/O接口和中断系统于一体的器件,只需要外加电源和晶振就可以实现对数字信号的处理和控制。本设计运用MCS-51系列单片集中的8051单片机为主控制器,对加热炉的温度进行智能化控制,最终通过软件设计来实现人机对话功能,实现对加热炉的温度控制。本论文主要介绍单片机温度控制系统,内容主要包括:采样、滤波、键盘显示、加热控制系统,单片机MCS-51的开发及系统应用软件的开发等。全文共分五章。第一章绪论介绍课题背景、目的、意义及设计的总体思路。第二章介绍主控电路核心部分MCS-51单片机8051的基本结构和配置。第三章介绍A/D采样技术和数字滤波技术。第四章介绍以PID为主的温度控制算法及系统加热控制系统。第五章主要是系统软件编程。 设计思路 根据系统具体指标要求,可以对每一个具体部分进行分析设计。整个控制系统分为硬件电路设计和软件程序设计两部分。 硬件电路见附录Ⅱ。分析硬件电路主要包括:加热及控制电路部分,数据采集和模/数(A/D)转换处理部分,键盘和显示器部分,单片机与各部分的接口处理部分。这些可用一个方框图来表示,如图1-1所示,显然,这是一个典型的单反馈控制系统。 图 1-1   单片机温度控制系统框图 从框图上我们可以看出,整个系统也可划分为控制电路部分、加热电路部分和测量电路三部分。控制电路是由单片机来处理给定信号和反馈信号,发出相应的指令来控制可控硅,是系统的核心。测量电路功能为将测量到的信号经过处理变成数字信号送入单片机中进行处理。主要由温度检测和变送器组成。温度检测元件和变送器的类型选择和被控温度及精度等级有关。镍络/镍铝热电偶(﹣200℃~﹢1000℃)适用于0℃—1000℃的温度测量范围,相应输出电压为0mV—41.32mV。变送器由毫伏变送器和电流/电压变送器组成:毫伏变送器用于把热点偶输出的0mV—41.32mV变换成0 mA—10 mA范围内的电流;电流/电压变送器用于把毫伏变送器输出的0 mA—10 mA电流变换成0 V—5V范围内的电压。 为了提高测量精度,变送器可以进行零点漂移。 本次设计的温度控制范围为600℃~1000℃之间,温度误差要求在3℃左右,系统超调量不超过10%,采用8位转换器ADC0809就可以使温度误差保持在±2.34℃以内,满足设计要求。除上述电路,89C51还要有8279﹑DAC0832﹑和ADC0809等芯片接口电路。其中8279用于键盘/LED显示器接口,DAC0832由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成,主要用于将最终输出电压值的数字信号转换成模拟信号。ADC0809为温度测量电路的输入接口,用于把连续变化的信号进行离散化。最终再通过控制电路中的键盘显示器电路实现人机对话功能。软件设计主要由温度控制的算法和温度控制程序组成。软件设计主要为控制器部分,即温度控制系统,采用PID算法,其原理是先求出实测炉温对所需炉温的偏差值,而后对偏差值处理而获得控制信号去调节加热炉的加热功率,以实现对炉温的控制。PID基本可满足系统要求。程序设计是本次设计的核心部分。整个程序包括管理程序和控制程序两部分。管理程序是对显示LED进行动态刷新,控制指示灯,处理键盘的扫描和响应,进行掉电保护,执行中断服务程序等。控制程序是用来对被控进行采样,数据处理,根据控制算法进行计算和输出等。 1.2 MCS-51单片机的结构 89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。 AT89C2051的引脚图如图3-1所示,其引脚定义如下: 1、Vcc:,电源电压。 2、GND:接地。 3、P1口:P1口是一个8位双向I/O口。其中P1.0、P1.1是片内精密模拟比较器的同相输入端和反向输入端,P3.6固定用于该比较器的输出端(P3.6对外无引脚,不可作I/O口访问)。当不用该模拟比较器时,P1.0、P1.1经外接上拉电阻后,也可作为普通I/O口使用。P1.2~P1.7为普通I/O口,内部已接上拉电阻。 图3-1 AT89C51引脚图 4、P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。但由于P3.6口固定用作片内精密模拟比较器的输出端,对外无引脚,所以真正可作为I/O口用的只有7个。除了作为一般的I/O口外,更重要的用途是它的第二功能. 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外中断0) P3.3 INT1(外中断1) P3.4 T0(定时/计数器0) P3.5 T1(定时/计数器1) 5、RST:复位输入,当振荡器工作时,RST引脚出现两个周期以上高电平将使单片机复位。 6、XTAL1、 XTAL2:晶体振荡电路反相输入端和输出端。使用内部振荡电路时外接石英晶体;外振荡输入时,XTAL1接地,XTAL2接外部振荡脉冲 单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。 MCS-51单片机芯片内部有数据存储器和程序存储器两类存储器,即所谓的内部RAM和内部ROM。同学重点要掌握内部数据存储器的结构、用途、地址分配和使用特点。   一是内部数据存储器的低128单元,它包括了寄存器区、位寻址区、用户RAM区,要掌握这些单元的地址分配、作用等。   二是内部数据存储器高128单元,这是为专用寄存器提供的,地址范围为80H~FFH。所谓专用寄存器是区别于通用寄存器而言的,即这些寄存器的功能或用途已作了专门的规定,用于存放单片机相应部件的控制命令、状态或数据等。在这些专用寄存器中,重点要掌握以下寄存器的使用:程序计数器、累加器A、B寄存器、程序状态字(PSW)、数据指针(DPTR)。堆栈是计算机的重要概念,要掌握以下几方面:1. 堆栈的功用2. 堆栈的设置3. 堆栈指示器4. 堆栈使用方式 89C51芯片内有4K ROM存储单元,其地址为0000H~0FFFH,这就是我们所说的内部程序存储器(或简称“内部ROM”)。无论是片内或是片外存储器(对于无片内ROM的单片机),在程序存储器中有一组特殊的保留单元0000H~002AH,使用时应特别注意。 系统的启动单元:0000H~0002H 五个中断源的中断地址区:0003H~002AH   0003H~000AH 外部中断0中断地址区   000BH~0012H 定时器/计数器0中断地址区   0013H~001AH 外部中断1中断地址区   001BH~0022H 定时器/计数器1中断地址区   0023H~002AH 串行中断地址区   中断响应后,系统能按中断种类,自动转到各中断区的首地址去执行程序。因此在中断地址区中本应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此一般也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址去。 MCS-51单片机系统的存储器结构特点 单片机的存储器结构有两个重要的特点:一是把数据存储器和程序存储器截然分开,二是存储器有内外之分。总的来说,由芯片内存储器和芯片外扩展存储器构成了单片机应用系统的整个存储器系统。 MCS-51单片机并行输入/输出口电路 单片机芯片内还有一项重要内容就是并行I/O口电路。MCS-51共有四个8位的并行双向I/O口,分别记作P0、P1、P2、P3,实际上它们已被归入专用寄存器之列。这四个口除了按字节寻址之外,还可以按位寻址,四个口合在一起共有32位。   在单片机中,口是一个集数据输入缓冲、数据输出驱动及锁存等多项功能于一体的I/O电路。MCS-51的四个口在电路结构上是基本相同的,但它们又各具特点,因此在功能和使用上各口之间有一定的差异。在学习中必须要掌握各个口的用途。 定时器及其应用 MCS-51单片机时钟电路与时序   时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。而时序所研究的则是指令执行中各信号之间的相互时间关系。要理解时钟电路的产生与作用,能根据外部所加入的晶体的振荡频率计算时序的定时单位。   1. MCS-51的外部晶体的振荡频率范围:1.2MHz~12MHz,   2. MCS-51时序的定时单位共有4个,依次是:拍节、状态、机器周期和指令周期。 8279芯片简介 利用软件的方法实现键扫描及动态显示的最大缺点是占用很多CPU时间,一旦程序进入 处理其它功能的程序段,键盘及显示器即停止工作。可编程键盘、显示器接口——8279可在编程后对键盘、显示器进行扫描,记下按下键的坐标并显示数据。 8279是一个40线的双列直插式器件,如下图所示。它最多可外接8×8的键盘及16×8的发光二极管显示器。 8279与CPU之间的连线有: D0~D7 数据线 IRQ 中断申请信号,高电平有效 /RD、/WR 读、写信号 RESET 复位信号 /CS 片选信号 A0 缓冲器地址。0表示数据口,1表示命令、状态口 CLK 外部时钟输入,用以产生内部100KHz的信号,输入 信号频率低于2MHz 8279与外部的连线有: SL0~SL3 扫描信号,用于键盘与显示器的扫描 RL0~RL7 键输入信号,由内部电阻拉成高电平 SHIFT,CNTL/STB 键控制线,由内部电阻拉成高电平 OUTB0~3,OUTA0~3输出显示数据,OUTA3为最高位,OUTB0为最低位 /BD 消隐信号 在8279内部,有8字节的先进先出的键输入缓冲器及16个字节的显示数据缓冲器。当外部有键闭合时,其键值存入键输入缓冲器,中断信号IRQ变为高电平,当CPU将键值读取后,IRQ信号变低。CPU向8279的显示数据缓冲器写入数据后,8279即自动地将此数据用动态显示的方式显示出来。 2.工作方式和编程 由缓冲器地址信号可以决定8279的两个端口,当A0=1时选中命令、状态口,8279的编程通过向其命令、状态口写入命令字来实现。 8279的命令字包括: ⑴键盘、显示器方式设置; ⑵程序时钟设置; ⑶读FIFO/传感器RAM; ⑷读显示RAM; ⑸写显示RAM; ⑹显示器写入禁止/空格; ⑺清除; ⑻中断结束/出错方式设置。 1.3键盘及其显示器方式 此命令用于设置键盘与显示器的工作方式,其格式为: 000为此命令的特征位。 0 0 0 D D K K K DD为显示方式设置,定义如下: D D 显示方式 0 0 8个8段字符显示,左边输入 0 1 16个8段字符显示,左边输入 1 0 8个8段字符显示,右边输入 1 1 16个8段字符显示,右边输入 根据显示方式的设置,可外接8个或16个8段发光二极管显示器,向显示器RAM写入显示字型的方式有左边输入和右边输入两种。 KKK为键盘操作方式,定义如下: K K K 键盘操作方式 0 0 0 外部译码,双键互锁 0 0 1 内部译码,双键互锁 0 1 0 外部译码,N键巡回 0 1 1 内部译码,N键巡回 1 0 0 外部译码,传感器方式 1 0 1 内部译码,传感器方式 1 1 0 选通输入,外部译码显示扫描 1 1 1 选通输入,内部译码显示扫描 根据键盘操作方式的选择,在选择外部译码方式时可外接8×8的键盘或8×8的传感器矩阵。在选择内部译码方式时,只能接4×8的键盘或4×8的传感器矩阵。此时显示器只能接4个8段的发光二极管显示器。在键盘方式时,SHIFT,CNTL/STB作为两个独立的键,其键值直接送入8279,在选用选通工作方式时,CNTL/STB为选通脉冲输入端,而RL0~RL7为信号输入口。 ·程序时钟设置 此命令用来设置分频系数,其格式为: 0 0 1 P P P P P 001为此命令的特征位。 PPPPP为分频系数,其数值为2~31,用来产生一个100KHz的内部时钟。在复位后自动定为31。 ·读FIFO/传感器RAM,其格式为 0 1 0 AI × A A A 010为此命令的特征位。 AI为地址自动加1标志,AAA为FIFO/传感器RAM地址。 在键扫描方式时,每次读取数据总按先进先出的原则依次读出,而与AI、AAA无关。在传感器方式及选通方式时,AAA为RAM地址。当AI=0时,CPU对地址为AAA的单元读数,读完后地址不变。当AI=1时,CPU对地址为AAA的单元读数,读完后其地址自动加1 。 ·读显示RAM 此命令用来设置读显示器RAM,其格式为: 0 1 1 AI A A A A 011为此命令的特征位。 AI、AAAA分别为地址自动加1 标记及显示器RAM的地址。 ·写显示RAM 此命令用来设置写显示器RAM,其格式为: 1 0 0 AI A A A A 100为此命令的特征位。 AI、AAAA分别为地址自动加1 标记及显示器RAM的地址。 ·显示器写入禁止/空格 此命令用来禁止数据写入显示器RAM或向显示器RAM写入空格,其格式为: 1 0 1 × IWA IWB BLA BLB 101为此命令的特征位。 此命令用在将一个8段显示分作两个4段显示的情况,在IWA置1、IWB置0时,将屏蔽半字节A,即CPU向显示器RAM写入数据时,只能更改半字节B,而不能更改半字节A。此时显示器仅将OUTB0~3的部分更改,而由OUTA0~3控制的显示器保持不变,即A的部分不允许新的数据写入。同样,当IWA=0、IWB=1时,屏蔽半字节B。 如果要求显示一空格,则可将BLA置成1或BLB置成1,这时由OUTA或OUTB控制的显示器显示空格。如果要求两个半字节都为空格,则应将BLA与BLB均置1。 ·清除 此命令用来清除显示器RAM和FIFO状态。其格式为: 1 1 0 CD CD CD CF CA 110为此命令的特征位。 CD CD CD用来置清除方式,具体如下: CD CD CD 1 0 × 显示器RAM清为全0 1 1 0 显示器RAM置成十六进制数20H 1 1 1 显示器RAM置成全1 0 此时为“1”时,允许清除显示器RAM(或用CA=1) 显示器RAM清为全0或置成全1,要看硬件的连接来决定。如显示器在高电平时点亮,低电压时不亮,则应清为全0,当显示器在低电平时点亮,高电平时不亮,则应在清除时将其置为全1。 CF=1时,清除FIFO状态,并将中断复位,对于传感器RAM的指示器也置为0。 CA=1为CD与CF的结合,此时清除显示器RAM以及FIFO状态。 ·中断结束/出错方式设置 此命令用来置中断结束及出错方式,其格式为: DU S/E O U F N N N NNN为FIFO RAM中字符的个数; F为FIFO RAM满标记; U为FIFO RAM空标记,在FIFO RAM中无字符时,CPU读FIFO RAM时置位; 0为FIFO RAM溢出标记。在FIFO RAM满时,再送入一个字符,此位置1. S/E 在传感器方式时,表示至少有一个传感器闭合,在特殊出错方式时,表示有多个按键同时按下。 DU 在清显示或总清命令执行期间此位为“1”,此时不可对显示器RAM写入数据。 从FIFO/传感器RAM中读回的数据格式根据键盘工作方式和传感器工作方式有所不同。 在键盘工作方式时,其格式为: D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHIFT 行 号 列 号 CNTL 指CNTL键的状态,按下为0,未按为1。 SHIFT 指SHIFT键的状态,按下为0,未按为1。 行号 指按下的键所在的行号,即扫描计数值。 列号 指按下的键所在的列号,由RL0~7的状态决定。 在传感器方式和选通输入方式时,其格式为: D7 D6 D5 D4 D3 D2 D1 D0 RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL0 此数据由输入信号RL0~7决定。 根据上述命令的设置,8279的扫描方式分为内部译码和外部译码两种。 在内部译码方式时,扫描输出信号SL0~3经驱动后可直接对显示器及键盘进行扫描。此时,只允许外接4个8段的显示器以及4×8的键盘。 在外部译码方式时,扫描输出信号SL0~3需经译码、驱动后,才能对显示器及键盘进行扫描。此时,只允许外接8或16个8段的显示器以及8×8的键盘。 根据显示方式的编程,可分为左边输入与右边输入两种。 当选择为左边输入方式时,写入数据的RAM地址与显示器从左到右的位置相对应。RAM地址0对应于最左边的显示器,而RAM地址15(在置为8个显示器时为7)则对应于最右边的一个显示器。 当写命令置AI=1时,则按设定的地址AAAA写入数据,写入后地址自动加1,如果加1后地址大于17(或是7),则再从地址0开始送入。 例如选择8个显示器,从左边输入。 若设定AI=1,AAAA=0000,依次送入10个字符,其过程如下: 0 1 2 3 4 5 6 7 显示器RAM地址 第1次送入 1 第2次送入 1 2 … 第8次送入 1 2 3 4 5 6 7 8 第9次送入 9 2 3 4 5 6 7 8 第10次送入 9 10 3 4 5 6 7 8 显示器位置 1 2 3 4 5 6 7 8 若设定AI=1,AAAA=0000,先送入2个字符: 0 1 2 3 4 5 6 7 显示器RAM地址 第1次送入 1 第2次送入 1 2 然后设定AI=1,AAAA=0101,再送入2个字符: 第3次送入 1 2 3 第4次送入 1 2 3 4 当选择为右边输入时,显示器RAM的地址和实际显示器的不相对应,在初始状态,显示器RAM的地址0相当于最右边的显示器,以后每写入一个数,地址向左移动一次。 例如选择8个显示器,从右边输入。 若设定AI=1,AAAA=0000,依次送入10个字符。此时,第1个字符送入最右边的显示器,地址自动加1后,第2个字符送入显示器RAM的地址1.此时,地址0向左移一格,即第1个字符移到右面第2 个,显示器RAM 地址1在最右边的显示器,即第2个字符仍送入到最右面。在送入第8个字符后,显示器从左到右为1到8的次序,然后第9个字符送入RAM地址0,仍为最右面。而第1个字符被消除。第10个字符再送入后,第2个字符被消去,在显示器为3到10的次序。 1 2 3 4 5 6 7 0 显示器RAM地址 第1次送入 1 2 3 4 5 6 7 0 1 第2次送入 1 2 … 0 1 2 3 4 5 6 7 第8次送入 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 0 第9次送入 2 3 4 5 6 7 8 9 2 3 4 5 6 7 0 1 第10次送入 3 4 5 6 7 8 9 10 在右边输入时,由于显示器RAM地址与实际显示器位置不相对应,因而在几次写入以后往往很难确定此地址与实际位置的关系。在使用时为避免不必要的差错,应尽可能地从AAAA=0开始写入。 根据键盘方式的设置,可置为双键互锁方式和N键巡回方式。 在双键互锁方式时,在只有一个键按下的情形,将此键值连同CNTL及SHIFT的状态一起送入FIFO RAM。若有两个或两个以上的键都按下,如果一个按键在其它任何一个键释放之前先释放,则不管此键是否比其它按键先按下,都被忽略。如此键释放之前,其它的键均已释放,尽管此键可能是较迟按下的,此键的键值仍被差额主FIFO RAM。 N键巡回方式时,对于每一个按下的键均将其键值送入FIFO RAM,此时。若用结束中断/错误方式置位命令时,对于多重键则设置出错标记。 在传感器方式中,传感器开关的状态直接送到传感器RAM,在传感器阵列扫描结束时,如检测出任一只传感器状态发生变化,则中断申请信号IRQ变为高电平。在读数据时,若AI=0,则第一次读出后,IRQ变为低电平;若AI=1,则就用结束中断命令来清除中断申请信号。 对8279进行编程可分为初始化,向显示器RAM写入数据以及读FIFO传感器RAM数据三部分。 初始化过程包括清除命令、设定时钟分频系数、键盘显示器工作方式设置。 在执行清除命令过程中,如果向显示器RAM写入数据则无效。 向显示器写入数据必须在设置写命令后进行,在设置写命令后允许输入多个数据。 读FIFO/传感器RAM时,应先读出FIFO状态字,若在FIFO/传感器RAM中有数据,才能进行读操作。 第二章 采样与滤波 2.1 采样系统 ADC0809是8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电 5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度。7)低功耗,约15mW。 ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。 ADC0809芯片有28条引脚,采用双列直插式封装。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 。ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。 ADC0809的工作过程:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。(1)定时传送方式 对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。(2)查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。 (3)中断方式   把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。 2.2 数字滤波 数字滤波器与模拟滤波器相比有以下优点:   (1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。   (2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本   (3)数字滤波器可以对频率很低(如0.01 Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。     (4)数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。  10种软件滤波方法的示例程序 OurWay 发表于 2005-9-2 22:24:00 10种软件滤波方法的示例程序(JKRL)  假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限副滤波 A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效。如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值   B、优点:能有效克服因偶然因素引起的脉冲干扰。   C、缺点:无法抑制那种周期性的干扰,平滑度差。 /*  A值可根据实际情况调整     value为有效值,new_value为当前采样值      滤波程序返回有效的实际值  */ #define A 10char value;char filter() {    char  new_value;    new_value = get_ad();    if ( ( new_value - value > A ) || ( value - new_value > A )       return value;    return new_value;          } 2、中位值滤波法 A、方法:连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。  B、优点:能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。  C、缺点:对流量、速度等快速变化的参数不宜。 /*  N值可根据实际情况调整     排序采用冒泡法*/ #define N  11char filter() {    char value_buf[N];    char count,i,j,temp;    for ( count=0;count<N;count++)    {       value_buf[count] = get_ad();       delay();    }    for (j=0;j<N-1;j++)    {       for (i=0;i<N-j;i++)       {          if ( value_buf[i]>value_buf[i+1] )          {             temp = value_buf[i];             value_buf[i] = value_buf[i+1];             value_buf[i+1] = temp;          }       }    }    return value_buf[(N-1)/2]; }      3、算术平均滤波法A、方法:连续取N个采样值进行算术平均运算。N值较大时:信号平滑度较高,但灵敏度较低;N值较小时:信号平滑度较低,但灵敏度较高。N值的选取:一般流量,N=12;压力:N=4   B、优点:适用于对一般具有随机干扰的信号进行滤波,这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。   C、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。#define N 12char filter() {    int  sum = 0;    for ( count=0;count<N;count++)    {       sum + = get_ad();       delay();    }    return (char)(sum/N); } 4、递推平均滤波法(又称滑动平均滤波法)A、方法:把连续取N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则),把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 #define N 12 char value_buf[N]; char i=0;char filter() {    char count;    int  sum=0;    value_buf[i++] = get_ad();    if ( i == N )   i = 0;    for ( count=0;count<N,count++)       sum = value_buf[count];    return (char)(sum/N); }   5、中位值平均滤波法(又称防脉冲干扰平均滤波法)A、方法:相当于“中位值滤波法”+“算术平均滤波法”。连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值。N值的选取:3~14   B、优点:融合了两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。   C、缺点:测量速度较慢,和算术平均滤波法一样,比较浪费RAM。 #define N 12char filter() {    char count,i,j;    char value_buf[N];    int  sum=0;    for  (count=0;count<N;count++)    {       value_buf[count] = get_ad();       delay();    }    for (j=0;j<N-1;j++)    {       for (i=0;i<N-j;i++)       {          if ( value_buf[i]>value_buf[i+1] )          {             temp = value_buf[i];             value_buf[i] = value_buf[i+1];              value_buf[i+1] = temp;          }       }    }    for(count=1;count<N-1;count++)       sum += value[count];    return (char)(sum/(N-2)); }     6、限幅平均滤波法A、方法:相当于“限幅滤波法”+“递推平均滤波法”,每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理。   B、优点:融合了两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。   C、缺点:比较浪费RAM。 /* */  略 参考子程序1、3 7、一阶滞后滤波法A、方法:取a=0~1,本次滤波结果=(1-a)*本次采样值+a*上次滤波结果。   B、优点:对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合。   C、缺点: 相位滞后,灵敏度低,滞后程度取决于a值大小,不能消除滤波频率高于采样频率的1/2的干扰信号。 /* 为加快程序处理速度假定基数为100,a=0~100 */#define a 50char value;char filter() {    c
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服