ADC0809CCN的数据采集 - 图文

更新时间:2023-10-14 22:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

摘 要 ---------------------------------------------------------------------------------------------------------- - 2 - ABSTRACT ------------------------------------------------------------------------------------------------- - 3 - 前 言 ---------------------------------------------------------------------------------------------------------- - 4 - 第1章 任务分析与方案确定 --------------------------------------------------------------------------- - 6 -

1.1 信号采集分析 ----------------------------------------------------------------------------------- - 6 -

1.1.1 信号采集 --------------------------------------------------------------------------------- - 7 - 1.1.2 A/D转换器的选取 ---------------------------------------------------------------------- - 9 - 1.2 控制与显示方法分析 ------------------------------------------------------------------------- - 10 -

1.2.1 单片机系统分析 ----------------------------------------------------------------------- - 10 - 1.2.2 显示与键盘分析 ----------------------------------------------------------------------- - 12 - 1.3 传输方式分析 ---------------------------------------------------------------------------------- - 14 - 第2章 系统硬件设计 ----------------------------------------------------------------------------------- - 15 -

2.1 信号调理电路 ---------------------------------------------------------------------------------- - 16 - 2.2 数据采集电路 ---------------------------------------------------------------------------------- - 16 -

2.2.1 A/D转换的一般步骤 ----------------------------------------------------------------- - 16 - 2.2.2 ADC0809内部功能与引脚介绍 ---------------------------------------------------- - 17 - 2.2.3 ADC0809与MCS-51系列单片机的接口方法 --------------------------------- - 19 - 2.4 控制器、振荡源和复位电路 ---------------------------------------------------------------- - 22 - 2.5 键盘与显示电路 ------------------------------------------------------------------------------- - 23 - 2.6 通信电路 ----------------------------------------------------------------------------------------- - 24 - 第3章 软件设计 ----------------------------------------------------------------------------------------- - 27 -

3.1 A/D转换 ------------------------------------------------------------------------------------------ - 28 - 3.2 标度变换 ----------------------------------------------------------------------------------------- - 30 - 3.3 数制转换 ----------------------------------------------------------------------------------------- - 31 - 3.4 键盘程序 ----------------------------------------------------------------------------------------- - 33 - 3.5 LED显示程序 ----------------------------------------------------------------------------------- - 34 - 3.6 通信程序 ----------------------------------------------------------------------------------------------- - 35 -

3.6.1 上位机程序 ----------------------------------------------------------------------------- - 35 - 3.6.2 下位机程序 ----------------------------------------------------------------------------- - 38 -

结论、讨论和建议 ---------------------------------------------------------------------------------------- - 40 - 致 谢 --------------------------------------------------------------------------------------------------------- - 43 - 参考文献 ---------------------------------------------------------------------------------------------------- - 44 - 毕业设计小结 ---------------------------------------------------------------------------------------------- - 45 - 附录 ----------------------------------------------------------------------------------------------------------- - 46 -

- 1 -

摘 要

以ADC0809和8051为核心,该系统有三个部分:数据采集,数据处理和显示,终端接收。具体包括控制、显示、A/D转换器、电平转换接口、个人计算机等。设计中用ADC0809进行8路数据的采样,利用MCS-51单片机的串行口发送和接收数据。显示部分由8155、75452、7407和LED数码显示器构成。硬件设计应用电子设计自动化工具,软件设计采用模块化编程方法。

关键字:数据采集,EDA,串行口,模块化编程

- 2 -

ABSTRACT

………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ………………………………………………………………………………………. ……………………………………………………………………………………….

- 3 -

前 言

随着计算机技术的飞速发展和普及,数据采集系统在多个领域有着广泛的应用。数据采集是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。

随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。在科学研究中,运用数据采集系统可获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。总之,不论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

此外,计算机的发展对通信起了巨大的推动作用.计算机和通信紧密结合构成了灵活多样的通信控制系统,也可以构成强有力的信息处理系统,这样对社会的发展产生了深远的影响。数据通信是计算机广泛应用的必然产物。

数据采集系统,从严格的意义上来说,应该是用计算机控制的多路数据自动检测或巡回检测,并且能够对数据实行存储、处理、分析计算以及从检测的数据中提取可用的信息,供显示、记录、打印或描绘的系统。

数据采集系统一般由数据输入通道,数据存储与管理,数据处理,数据输出及显示这五个部分组成。输入通道要实现对被测对象的检测,采样和信号转换等工作。数据存储与管理要用存储器把采集到的数据存储起来,建立相应的数据库,并进行管理和调用。数据处理就是从采集到的原始数据中,删除有关干扰噪声,无关信息和必要的信息,提取出反映被测对象特征的重要信息。另外,就是对数据进行统计分析,以便于检索;或者把数据恢复成原来物理量的

- 4 -

形式,以可输出的形态在输出设备上输出,例如打印,显示,绘图等。数据输出及显示就是把数据以适当的形式进行输出和显示。

由于RS-232在微机通信接口中广泛采用,技术已相当成熟。在近端与远端通信过程中,采用串行RS-232标准,实现PC机与单片机间的数据传输。

在本毕业设计中对多路数据采集系统作了基本的研究。本系统主要解决的是怎样进行数据采集以及怎样进行多路的数据采集,并将数据上传至计算机。

- 5 -

第1章 任务分析与方案确定

根据系统基本要求,将本系统划分为如下几个部分: ? 信号调理电路

? 8路模拟信号的产生与A/D转换器 ? 发送端的数据采集与传输控制器 ? 人机通道的接口电路 ? 数据传输接口电路

数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。系统框图如图1-1所示

图1-1 一般系统框图 1.1 信号采集分析

被测电压为0~5V直流电压,可通过电位器调节产生。

- 6 -

1.1.1 信号采集

多路数据采集系统多采用共享数据采集通道的结构形式。 数据采集方式有顺序控制数据采集和程序控制数据采集。

方案一:顺序控制数据采集,顾名思义,它是对各路被采集参数,按时间顺序依次轮流采样。原理如下图1-2所示,系统的性能完全由硬件设备决定。在每次的采集过程中,所采集参数的数目、采样点数、采样速率、采样精度都固定不变。若要改变这些指标,需改变接线或更换设备方能实现。数据采集时,控制多路传输门开启和关闭的信号来自脉冲分配器,在时钟脉冲的推动下,这些控制信号不断循环,使传输门以先后顺序循环启闭。

图1-2 顺序数据采集原理

方案二:程序控制数据采集,由硬件和软件两部分组成。,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。如图1-3所示。

程序控制数据采集的采样通道地址可随意选择,控制多路传输门开启的通道地址码由存储器中读出的指令确定。即改变存储器中的指令内容便可改变通道地址。

由于顺序控制数据采集方式

图1-3 程序控制数据采集原理 - 7 -

缺乏通用性和灵活性,所以本设计中选用程序控制数据采集方式。

采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。利用多路开关(MUX)让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。当采集高速信号时,A/D转换器前端还需加采样/保持(S/H)电路。

待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。如对信号进行放大、衰减、滤波等。

通常希望输入到A/D转换器的信号能接近A/D转换器的满量程以保证转换精度,因此在直流电流电源输出端与A/D转换器之间应接入放大器以满足要求。

本题要求中的被测量为0~5V直流信号,由于输出电压比较大,满足A/D转换输入的要求,故可省去放大器,而将电源输出直接连接至A/D转换器输入端。

多路数据采集输入通道的结构图1-4所示。

图1-4 多路数据采集输入通道结构 注:缓慢变化信号和直流信号,采样保持电路可以省略。

- 8 -

1.1.2 A/D转换器的选取 1.转换时间的选择

转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转换速度差别很大。通常,8位逐次比较式ADC的转换时间为100us左右。由于本系统的控制时间允许,可选8位逐次比较式A/D转换器。

2.ADC位数的选择

A/D转换器的位数决定着信号采集的精度和分辨率。

要求精度为0.5%。对于该8个通道的输入信号,8位A/D转换器,其精度为

2输入为0~5V时,分辨率为

Fs?8?0.39%

v?5?0.0196V 2?12?1N8v

Fs

—A/D转换器的满量程值

N —ADC的二进制位数 量化误差为

Q?NvFs(2?1)?2?5(2?1)?28?0.0098V

ADC0809是TI公司生产的8位逐次逼近式模数转换器,包括一个8位的逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,为模拟通道的设计提供了很大的方便。

用它可直接将8个单端模拟信号输入,分时进行A/D转换,在多点巡回监测、过程控制等领域中使用非常广泛,所以本设计中选用该芯片作为A/D转换电路的核心。

- 9 -

1.2 控制与显示方法分析

用单片机作为这一控制系统的核心,接受来自ADC0809的数据,经处理后通过串口传送,由于系统功能简单,键盘仅由两个开关和一个外部中断端组成,完成采样通道的选择,单片机通过接口芯片与LED数码显示器相连,驱动显示器显示相应通道采集到的数据。

1.2.1 单片机系统分析 1.复位电路

单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。51的RST引脚是复位信号的输入端。复位电平是高电平有效,持续时间要有24个时钟周期以上。本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。 方案一:上电复位电路

上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。上电复位所需的最短时间是振荡器建立时间加上二个机器周期,在这段时间里,振荡建立时间不超过10ms。复位电路的典型参数为:C取10uF,R取8.2k,故时间常数

图1-5 上电复位 ?=RC=10?10?6?8.2?103=82ms

以满足要求。 方案二.外部复位电路

按下开关时,电源通过电阻对外接电容进行充

图1-6 外部复位 - 10 -

电,使RES端为高电平,复位按钮松开后,电容通过下拉电阻放电,逐渐使RET端恢复低电平。 方案三:上电外部复位电路

典型的上电外部复位电路是既具有上电复位又具有外部复位电路,上电瞬间,C与Rx构成充电电路,RST引脚出现正脉冲,只要RST保持足够的高电平,就能使单片机复位。

一般取C=22uF,R=200,Rx=1k,此时

图1-7 外部上电复位 ?=22?10?6?1?103=22ms

当按下按钮,RST出现2.振荡源

在MCS-51内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1(19)、XTAL2(18)分别是此放大器的输入端和输出端。 方案一:内部方式

与作为反馈元件的片外晶体或陶瓷谐振器一起组成一个自激振荡器。 方案二:外部方式

外部振荡器信号的接法与芯片类型有关。CMOS工艺的MCU其XTAL1端接外部时钟信号,XTAL2端可悬空。HMOS工艺的MCU则XTAL2端接外部时钟信号,XTAL1端须接地。

在MCS-51单片机系列芯片中,用8051或8751芯片可以构成最小系统。因为8051和8751是片内有ROM/EPROM的单片机,用这种芯片构成的单片及最小系统简单、可靠。 8051构成的最小系统特点:

? 受集成度所限,只能用于小型控制单元。

1000?5=4.2V时,使单片机复位。 1200 - 11 -

? 有可供用户使用的大量的I/O口线。

? 仅有芯片内部的存储器,故存储器的容量有限。

? 8051的应用软件要依靠半导体掩膜技术植入,适于在大批量生产的应用系统中使用。

1.2.2 显示与键盘分析

对系统发出命令和输出显示测量结果,主要是由键盘和LED数码显示器组成。

缓慢变化信号和直流信号,要求用数码管适时地进行十进制显示,由于精度要达到0.5%,所以这里用5只LED数码显示器来表示该十进制数,用两只七段数码显示器表示通道号。为实现通道的选取,用键盘实现控制功能。 1.译码方法

用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。 方案一:硬件译码

硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。 方案二:软件译码

软件译码是用软件来完成硬件的功能,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。 2.显示方法

在该单片机系统中,使用7段LED显示器构成8位显示器,段选线控制显示的字符,位选线控制显示位的亮或暗。 方案一:静态显示

静态显示,显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不用再管,直到下一次显示数据需要更新时再传送一次数据。

- 12 -

编程容易,管理简单,显示亮度高,显示数据稳定,占用很少的CPU时间。但引线多,线路复杂,硬件成本高。 方案二:动态显示

动态显示需要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU时间多。

这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。

当显示装置中有多个多段LED时,通常采用动态扫描驱动电路,节省开销。

3.显示接口芯片的选择 方案一:8279接口芯片

8279是Intel公司的通用可编程键盘和显示器接口电路芯片,内部有显示RAM。8279可以实现对键盘和显示器的自动扫描,识别闭合键的键号,完成显示器的动态显示。从而大大节省了CPU处理键盘和显示器的时间,提高了CPU的工作效率。另外,8279与单片机的接口简单,显示稳定,工作可靠。但8279所需外围元件多(显示驱动、译码等)、命令字多,调试困难,占用电路板面积大、综合成本高,在中小系统中常常大材小用。 方案二:8155接口芯片

采用并行口扩展芯片扩展并行口的方法来设计显示系统。用做显示系统的传统的芯片有8155、8255、8279等。这种方式的优点是速度快,显示数据简单。缺点是,占用单片机口线多。如用8155,其内部集成有:256个字节的SRAM、一个14位二进制减法计数器和3个并行端口PA、PB和PC。但此方案同样需要驱动显示,同时显示扫描还需占用CPU大量时间。但为设计的简单化带来方便,所以采用该芯片作为显示接口芯片,A口为位选线,B口为段

- 13 -

选线。

4.键盘电路的确定

为了在控制系统中完成采集通道的选择,还需要为该系统设置键盘。由于功能要求简单,仅用两个按键即可完成选择功能,降低了系统的硬件开销,软件处理简单。

1.3 传输方式分析

1.传输方式的选择

串行通信有同步和异步两种工作方式。

方案一:同步方式要求发送与接受保持严格同步,由于串行传输逐位按顺序进行,为了约定数据是由哪一位开始传输,需设定同步字符。此方式传输速度快,但硬件复杂。

方案二:异步方式,规定了数据传输格式,每个数据均以相同的帧格式传送,每帧信息由起始位、数据位、奇偶效验位和停止位组成。帧与帧间用高电平分隔开,但每帧均需附加位,降低了传输效率。

异步通信依靠起始位、停止位保持通信同步。对硬件的要求低,实现起来比较简单、灵活,适用于数据的随机发送/接收,一般适用于50~9600bps的低速串行通信。 2.电平转换芯片选择

RS-232规定的电平和一般微处理器的逻辑电平不一致,必须进行电平转换。

方案一:采用MCl488和MCl489芯片的转换接口

MCl488和MCl489芯片为早期的RS-232至TTL逻辑电平的转换芯片,

- 14 -

需要±12V电压,并且功耗较大,不适合用于低功耗的系统。 方案二:采用MAX232芯片的转换接口

MAX232是MAXIM公司的产品,包含两路驱动器和接收器的RS-232转换芯片。芯片内部有一个电压转换器,可以把输入的+5V电压转换为RS-232接口所需的±10V电压,尤其适用于没有±12V的单电源系统。

由于RS-232信号电平与MSC-51型单片机信号电平(TTL电平)不一致,因此采用RS-232标准时,必须进行信号的电平转换。RS-232与TTL电平转换芯片各有特点,此处选用MAXIM公司的MAX232芯片。

小结:经简单的理论分析,本系统数据采集部分核心采用ADC0809,单片机系统选用8051构成的最小系统,用LED动态显示采集到的数据,数据传输则选用RS232标准,实现单片机与PC机的通信。

第2章 系统硬件设计

- 15 -

2.1 信号调理电路

信号调理的任务 将被测对象的输出信号变换成计算机要求的输入信号。 对于多通道数据采集系统的输入通道,设置多路选择开关,可降低硬件开销。如图2-1所示。为避免小信号通过模拟开关造成较大的附加误差,在传感器输出信号过小时,每个通道应设前置放大环节(本文可不加以考虑)。

图2-1 信号调理过程 2.2 数据采集电路

把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。 把以一定时间间隔T逐点采集连续的模拟信号,并保持一个时间t,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。 2.2.1 A/D转换的一般步骤 1.采样-保持

为了能不失真的恢复原模拟信号,采样频率应不小于输入模拟信号的频谱中最高频率的两倍,这就是采样定理,即

fs?2fImax

由于A/D转换需要一定的时间,所以在每次采样结束后,应保持采样电压

- 16 -

在一段时间内不变,直到下一次采样的开始。实际中采样-保持是做成一个电路。 2.量化与编码

模拟信号经采样-保持电路后,得到了连续模拟信号的样值脉冲,他们是连续模拟信号在给定时刻上的瞬时值,并不是数字信号。还要把每个样值脉冲转换成与它幅值成正比的数字量。

以上为A/D转换的一般步骤,在本电路中由ADC0809芯片完成。 2.2.2 ADC0809内部功能与引脚介绍

分辨率和精度在第一章中已作了相应的计算和分析。

ADC0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。8路转换开关能直接连通8个单端模拟信号中的任何一个。其内部结构如图2-2所示。

1.ADC0809主要性能

- 17 -

图2-2 ADC0809内部结构 ? 逐次比较型 ? CMOS工艺制造 ? 单电源供电

? 无需零点和满刻度调整

? 具有三态锁存输出缓冲器,输出与TTL兼容 ? 易与各种微控制器接口 ? 具有锁存控制的8路模拟开关 ? 分辨率:8位 ? 功耗:15mW

? 最大不可调误差小于±1LSB(最低有效位) ? 转换时间(fCLK?500KHz)128us ? 转换精度:?0.4%

? ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz。

典型时钟频率为640kHz

2.引脚排列及各引脚的功能,引脚排列如图2-3所示。

各引脚的功能如下:

IN0~IN7:8个通道的模拟量输入端。可输入0~5V待转换的模拟电压。

D0~D7:8位转换结果输出端。三态输出,D7是最高位,D0是最低位。

A、B、C:通道选择端。当CBA=000时,IN0输入;当CBA=111时,IN7输入。

ALE:地址锁存信号输入端。该信号在上升沿处把A、B、C的状态锁存到内部的多路开关的地址锁存

- 18 -

图2-3 A/DC0809引脚 器中,从而选通8路模拟信号中的某一路。

START:启动转换信号输入端。从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。脉冲宽度应不小于100~200ns。

EOC:转换结束信号输出端。启动A/D转换时它自动变为低电平。 OE:输出允许端。

CLK:时钟输入端。ADC0809的典型时钟频率为640kHz,转换时间约为100μs。 REF(-)、REF(+):参考电压输入端。ADC0809的参考电压为+5V。 VCC、GND:供电电源端。ADC0809使用+5V单一电源供电。

当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。

2.2.3 ADC0809与MCS-51系列单片机的接口方法

ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本题中选用中断接口方式。

由于ADC0809无片内时钟,时钟信号可由单片机的ALE信号经D触发器二分频后获得。ALE引脚得脉冲频率是8051时钟频率的1/6。该题目中单片机时钟频率采用6MHz,则ALE输出的频率是1MHz,二分频后为500Hz,符合ADC0809对频率的要求。

由于ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。通道基本地址为0000H~0007H。其对应关系如表2-1所示。

- 19 -

C 0 0 0 0 1 1 1 1 表2-1 0809输入通道地址 地址码 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 输入通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 控制信号:将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。

在读取转换结果时,用单片机的读信号RD和P2.7引脚经或非门后,产生正脉冲作为OE信号,用一打开三态输出锁存器。 其接口电路如图2-4所示。

- 20 -

附录

Ⅰ主程序

;定义通道数

;定义模数转换缓冲区首地址 ;定义显示缓冲区首地址 ;定义通道号存储单元 ;定义数据显示缓冲区首地址 ;定义标度便换缓冲区首地址 ;定义量化阶 ;定义位选码初值

;定义8155控制寄存器地址

;外部中断0入口地址

;外部中断1入口地址

;串口中断入口地址

;键盘扫描端口初始化 ;置第一位LED显示码C ;初始化通道号 ;波特率设置

- 46 -

;调用显示子程序 ;调用发送子程序 ;转至下一轮采集 ;调用数制转换子程序 ;8155初始化

;标度变换量存入R4,R5备子程序 ;使用

;查标度变换表的基地址 ;取通道号 ;数据占两个字节 ;调用数据采集子程序 ;调用标度变换子程序

- 47 -

图 2-4 ADC0809与MCS-51的接口电路

START信号和OE信号的逻辑表达式为

当8051通过对0000H~0007H(基本地址)中的某个口地址进行一次写操作,即可启动相应通道的A/D转换;当转换结束后,ADC0809的EOC端向8051发出中断申请信号;8051通过对0000H~0007H中的某个口地址进行一次读操作,即可得到转换结果。

注:ADC0809的基准电压可通过基准电压芯片供给,如MAX875,可供给5V基准电压。

- 21 -

图2-5 ADC0809时序图 2.4 控制器、振荡源和复位电路

复位即回到初始状态,是单片机经常进入的工作状态。单片机振荡电路的振荡周期和时钟电路的时钟周期决定了CPU的时序。 1.复位电路

单片机的复位是靠外部电路实现的。无论是HMOS还是CHMOS型,在振荡器正运行的情况下,RST引脚保持二个机器周期以上时间的高电平,系统复位。在RST端出现高电平的第二个周期,执行内部复位,以后每个周期复位一次,直至RST端变低。本文采用上电外部复位电路,如图2-6所示,相关参数为典型值。

2.振荡源

内部方式时钟电路如图2-7所示。外接晶体以及电容c1、c2构成并联谐振电路,接在放大器的反馈回路中,内部振荡器产生自激振荡,一般晶振可在2~12MHz之间任选。对外接电容值虽然没有严格的要求,但电容的大小

图2-7 内部振荡器方式 图2-6上电外部复位电多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。外接晶体时,c1和c2通常选30pF左右;外接陶瓷谐振器时,c1和c2的典型值为47pF。

- 22 -

2.5 键盘与显示电路

1.键盘

键盘由一组常开按键开关组成。键盘系统的主要工作包括及时发现有键闭合,并作相应的处理。

本系统中采用中断方式的开关代替键盘,完成采集通道的选择。硬件逻辑如图2-8所示。 2.显示

显示部分为8个共阴极的七段LED显示器,8个七段LED的a~dp字段的引脚分别由8个OC门同相驱动器驱动。OC门驱动器用7407,当7407输出低电平时,没有电流流过LED,当7407输出为开路状态时,电流经100?限流电阻流入LED显示器,每个七段LED的公共端都接一个反相驱动器,反相驱动器使用75452,当某一字段需要亮时,该LED公共端的反相驱动器必须是低电平输出,并且这一字段的同相驱动器必须是高电平输出。单片机通过8155接口芯片的A口位选,经B口确定那些字段LED发光。LED发光时,驱动电流计算如下,每一字段脉冲电流

图2-8 键盘硬件逻辑 I1?VF—LED正向压降 VCS—晶体管的饱和压降

VCC?(VF?VCS)5?(1.6?0.9)??25mA

R0.1公共端最大电流

I2?N?I1?8?25?200mA

原理图如图2-9所示

- 23 -

图2-9 显示电路原理 2.6 通信电路

51单片机有一个全双工的串行口,所以单片机和PC之间可以方便地进行串口通讯。进行串行通信时要满足一定的条件,如PC的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,这里用专用芯片MAX232进行转换,用专用芯片更简单可靠。MAX232如图2-10所示。

它包含两路接收器和驱动器,内部有一个电源电压变换器,可以把输入的+5V电压变换位RS-232输出电平所需的+10V电压。所以,用该芯片接口的串行通信只需单一的+5V电源就可以了。其应用性更强。图2-10(b)中上半部电容C1、C2、C3、C4及V?,V?是电源变换部分。实际应用中,器件对电源噪

- 24 -

Vcc对地需要加去耦电容C5,声很敏感。因此,其值为1.0uF。电容C1、C2、C3、C4取同样数值的电解电容,以提高抗干扰能力。

(a)

(b) 图2-10 MAX232引脚图和电容典型参数

图2-10(b)下半部分为发送和接收部分,T1in,T2in可直接接TTL/CMOS电平的MCS-51型单片机的串行发送端TXD;R1out,R2out可直接接TTL/CMOS电平的MCS-51型单片机的串行接受端RXD;T1out,T2out可直接接PC机的

R1in,R2in可直接接PC机的RS-232串口发送端TXD。RS-232串口接受端RXD;

硬件原理图如图2-11所示。

- 25 -

图2-11 通信接口电路 串口通信的硬件连接采用三线制连接串口,就是说和PC的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对本题来说已经足够了,MAX232的第11脚和单片机的11号引脚连接,第12脚和单片机的10脚连接,第15脚和单片机的20脚连接。MAX232的第14脚和PC机串口的2号引脚连接,第13脚和PC机串口的3号引脚连接,第15脚和PC机串口的5号引脚连接。

- 26 -

第3章 软件设计

整个系统软件设计分为两个部分,作为主控的PC端的软件设计及作为数据采集器的单片机终端节点的软件设计。系统采用模块化编程,将各部分功能分别实现,主要的功能子程序有:数据采集、标度变换、数制转换、数值显示、发送、接收和部分中断子程序。主程序流程图如图3-1所示。

调用数据发送子程序 调用数据显示子程序 取相应通道数据 调用标度变换子程序 调用数据采集子程序 系统初始化 开始 调用数制转换子程序

图3-1 主程序流程图 - 27 -

3.1 A/D转换

中断方式使用EOC信号作为向8051的中断申请。在主程序中,向ADC发出首次启动转换信号后,并计数管理转换通道数。当检测到EOC的请求后,转去执行中断服务程序,读取转换结果,并启动下一次转换,后继续执行。图3-2为A/D转换程序流程图。

开始 定义A/D转换缓冲区首地址 开中断 置通道数 置DPTR 启动转换 等待中断 中断处理 N 各通道采完? Y 关中断 返回 图3-2 数据采集程序流程图 - 28 -

以下是8路数据采集程序: ADSUB:

(略)

开始 取转换量 存入A/D转换数据缓冲区 通道号+1 缓存单元地址+1 通道数-1 启动下次转换 返回 图3-3 数据采集中断程序流程图 - 29 -

ADINT:

(略)

3.2 标度变换

该单片机系统中,被测量经过A/D转换,均统一为0~255二进制码,因此要把A/D转换的数码X变换成被测量的实际数值。 UNEX:

返回 图3-4 标度变换程序流程图 变换完毕? Y 标度变换 N R0指向A./D转换缓冲区 定义标度变换缓冲区 (略)

开始 - 30 -

3.3 数制转换

由于标度变换后得到两个字节的实际数值,不能直接送显示端显示,须经过适当的处理(此处将其转换为5位非压缩BCD码),才能送显示端输出显示。

开始 置取数地址指针R0的初值 置通道号存储单元 通道号左移1位 取数至R4R5 置BCD码存储单元的首地址 置BCD码个数 置除数 调用NDIV子程序 存入显示缓冲区 显示缓冲区地址+1 N BCD转换完毕? Y 返回 图3-5 双字节二进制整数转换成BCD码程序流程图 - 31 -

DISRAM:

NDIV Y (R2R3)?(R6R7)? N 16?B 1?F0 0?C R2 R3 R4 R5 C 左环移1位 C?F0 (R2R3)-(R6R7)?AR1 Y F0=1? Y C=1? N (AR1)?R2R3(执行减法) (R5)+1?R5(上商1) N N (B)-1?B=0? Y 0?F0 返回 图3-6 无符号双字节数除法程序框图 (略)

- 32 -

3.4 键盘程序

键盘部分软件主要功能是实现对通道号指示缓冲区的数值进行增或减,从而控制通道的选择。 KEYINT:

开始 PSW,ACC压栈保护 Y 按键1中断 P1.0=1? (通道加) N Y P1.1=1? 按键2中断 N (通道减) PSW,ACC出栈 返回 图3-7键盘中断程序流(略)

- 33 -

3.5 LED显示程序

将内部RAM中20H~28H单元中的8个分离BCD码,译码后从左至右依次显示出来,编制的程序如下: DISP:(略)

开始 指向A口 取位选码 指定显示位 指向B口 取显示字符 (略) 查七段码 段选码B口送出 调用1ms延时子程 准备显示下一位 位选 N 8位显示完毕? Y 返回 图3-8 LED显示程序流程图 - 34 -

3.6 通信程序

3.6.1 上位机程序 1.程序初始化

主要完成串口的选择、波特率及帧结构设置、打开串口以及发送和接收触发的时间控制等。 '初始化代码

Private Sub Form_Load()

MSComm.CommPort=2

‘设置串口2

‘波特率2400,无校验,8位

MSComm.Settings=\

数据,一位停止位

MSComm.InputLen=0

‘读取接受缓冲区的所有

字符

MSComm.InBufferSize=1024

‘设置接受缓冲区为1024

字节

MSComm.OutBufferSize=512

‘设置发送缓冲区为512

字节

MSComm.PortOpen=True MSComm.SThreshold=0 MSComm.RThreshold=1

‘打开串口 ‘不触发发送事件 ‘每一个字符到接收缓冲

区都触发接收事件

MSComm.InBufferCount=0 MSComm. OutBufferCount=0 Text_SEND.Text=“” Text_RECV.Text=“”

- 35 -

‘清除发送缓冲区数据 ‘清除接收缓冲区数据 ‘清空发送文本框 ‘清空接收文本框

End Sub 2.发送数据

Private Sub Button_SEND_Click()

Dim x As String

If Text_SEND.Text=“”Then

‘发送数据不能为空

X=MsgBox(“发送数据不能为空”,16) Exit Sub

End If

If Not MSComm.PortOpen Then

MSComm.PortOpen=True

‘保证串口打开

End If

MSComm.OutPut=Text_SEND.Tex+Chr$(13) ‘发送数据 For i=1 To 20000000

‘延时

Next

End Sub 3.接收数据

Private Sub MSComm_OnComm.()

Slect Case MSComm.CommEvent

Case comEventOverrun

Text_SEND.Text=“” Text_RECV.Text=“” Text_SEND.SetFous=“” Exit Sub

- 36 -

‘检验串口事件错误处理 ‘数据丢失 ‘清空发送缓冲区 ‘清接收缓冲区

Case comEventRxOver

‘接收缓冲区溢出 ‘清空发送缓冲区

Text_SEND.Text=“”

Text_RECV.Text=“” Text_SEND.SetFous=“”

Exit Sub

Case comEventOver

Text_SEND.Text=“”

Text_RECV.Text=“”

Text_SEND.SetFous=“”

Exit Sub

‘事件处理

Case comEvReceive

Dim str As String

str= MSComm.InPut

串 Text_RECV.Text=Text_RECV.Text+str

End Select

End Sub 4.清空文本框

Private Sub Button_RECV_C_Click() Text_RECV.Text=“”

Text_SEND_SetFocus

End Sub ‘清空发送文本框

Private Sub Button_SEND_C_Click() Text_SEND.Text=“”

Text_SEND_SetFocus

- 37 -

‘清空接收缓冲区

‘发送缓冲区已满 ‘清空发送缓冲区 ‘清空接收缓冲区

‘接收缓冲区内有数据

‘从接收队列中读入字符

‘读出字符串送显

‘清空接收文本框

‘清空发送文本框

End Sub

上位机实现通信效果的界面如图3-9所示。 3.6.2 下位机程序 MAIN: MOV MOV MOV SETB CLR

MOV

1.发送程序 SENDSUB:

TH1, #0F3H TL1,

#0F3H

TMOD, #20H ES ET1

SCON, #50H

- 38 -

图3-9 VB接收界面 开始 禁止串口中断 发通道号 发完? N Y 清中断标志位 发送数据 发完? N Y 清中断标志位 全部发完? N Y 返回 图3-10数据发送子程序 (略)2.接收程序 REC:

返回 图3-11数据接收子程序 清中断标志位 出栈现场恢复 数据正确? Y 数据送缓冲区 接收数据 压栈保护 (略)

开始 N

- 39 -

结论、讨论和建议

数据采集技术可应用于不同的工农业现场,是一项非常实用的技术。通过对数据采集和传输的初步研究,以8051、ADC0809、PC机和一些相关接口建立起这样一个基于单片机的数据采集和传输系统的硬件平台,配合相应的软件实现对8路模拟量的采集与传输。

由于时间,水平有限本论文还有许多部分未能详细分析,在此仅作简单了解和认识。

信号采集过程中,被测量一般由传感器供给,常为微弱信号,需要对其进行适当的调整。由于此处输入信号满足A/D转换器的输入要求,所以本文并为详细讨论。但在实际工程设计中必不可少。

信号调理的任务就是将被测对象的输出信号变换成计算机要求的输入信号。

信号调理包括:阻抗匹配、放大电路、隔离电路、滤波等。 a.阻抗匹配

放大电路与传感器之间往往存在阻抗不匹配的现象,信号要进入A/D转换器也存在阻抗匹配问题,阻抗不匹配会使信号在传输过程中严重畸变,导致严重检测误差,调理过程中必须十分注意阻抗匹配问题,一般阻抗匹配可以由运放组成的跟随器完成。 b.信号放大电路

信号放大电路是信号调理电路的核心,一般传感器输出的物理信号量幅值很小,需要通过放大调理电路来增加分辨率和敏感性,将输入信号放大为A/D转换所需要的电压范围,为了获得尽可能高的精度,应将输入信号放大至与ADC量程相当的程度。 c.信号隔离电路

- 40 -

本文来源:https://www.bwwdw.com/article/nwjf.html

Top