多路数据采集器设计报告

合集下载

多通道数据采集器的设计

多通道数据采集器的设计
出 的又 一 款 1 6位 结 构 的 微 控 制 器 , 用 范 围 广泛 。 适 主要性能 : ◆1 6位 ’S 微 处理 器 ; n
◆工作电/ (P 1 DD为 24 36 I 1 DD  ̄ C U , V .- .V(O / V H为 24 5 v . . —5
◆ C U 时钟 : I MHz4 . 2 z P O3 2 .- 1 MH : .9 5 - ◆ 内置 2 字 S A ; K R M ◆ 内置 3 KF A H: 2 L S ◆可编程音频处理 :
◆2个 1 O位 D C( ~ 转 换 ) 出通 道 ; A 数 模 输
ma 0 i n

u sg e n i n i n d i tu UART a e O; d t= u sg e n a n l 0 n i d i tCh n e = ; n
◆3 通 用 可 编程 输 入 , 出 端 口: 2位 输 ◆ l 中 断源 可来 自定 时 器 A ,B,时 基 , 外 部 时 钟 源 输 入 , 4个 2个 键 唤醒: ◆具 备 面 详 细 阐 述 一 个 基 于 S C 0 1 单 片 机 的 多 通道 数 据 采 集 器的 设 计 过 程 。 本 硬 P E 6A
【 关键词 】 数据采集 ;P E 6 A; D采样 SC 01 A
◆ 内 置 在 线 仿 真 电 路 I E I—Crut muao) 口 ; C (n i iE l r接 c t
u’S T 的 内核 由总线 、 np M 算术逻辑运算 单元 、 寄存器组 、 中断系统 及堆栈等部分组成。 ,
222电 源 电 路 与 MAX 3 .. 2 2转 换 电路 电源 电路 主 要 是 为 仪 器 电 路 中 各 芯 片 提 供 稳 定 的工 作 电压 , 别 分

基于单片机的多路数据采集ADC0809

基于单片机的多路数据采集ADC0809

基于单片机的多路数据采集ADC0809单片机原理及系统课程设计专 业: 自动化班 级: 自动化姓 名:学 号:指导教师: 评语:考勤10分守纪10分 过程30分 设计报告30分 答辩20分 总成绩(100)2015年12月29日基于单片机的多路数据采集1 引言通过一个学期的学习,我认为要学好单片机这门课程,不仅要认真学习课本知识,更重要的是要学会通过实践巩固学到的知识,本次课设中我们设计制作的题目是基于单片机的多路数据采集系统设计。

1.1 设计背景随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数据采集。

本设计使用简便,功能丰富。

本设计控制芯片采用的是STC89C51,AD转换采用ADC0809芯片,显示采用的是四位共阴极数码管。

关键字:STC89C51、ADC0809、8路电压采集。

2.1 系统设计方案在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。

而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。

本次设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。

A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。

数据处理则由芯片STC89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外它还控制着ADC0809芯片工作。

2.2 总体设计方案8路电压输入AD转换51单片机按键切换电压显示蜂鸣器8路led灯图1 系统原理总框图3硬件设计3.1晶振电路晶体振荡器,简称晶振,它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络。

晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。

多路数据选择器

多路数据选择器

基于FPGA的多路数据采集器的设计李庭武李本印(陇东学院电气工程学院,甘肃庆阳745000)摘要:数据采集是从一个或多个信号获取对象的过程,它是计算机与外部物理世界连接的桥梁,尤其在恶劣的数据采集环境中得到广泛应用。

本课题主要研究利用FPGA把采集到的八路模拟信号电压分别转换成数字信号,在数码管上实时显示电压值,并且与计算机运行的软件示波器连接,实现电压数据的发送和接收功能。

关键词:FPGA;模数转换;数码显示管;键盘;设计Design of multi-channel data terminal Based on FPGALi Tingwu Li Benyin(Electrical Engineering College, Longdong University, Qingyang 745000, Gansu, China)Abstract: Data acquisition is a process that access to the object from the one or more signal, it is the bridge between the computer and the external physical world, and especially widely applied in data acquisition in harsh environment . This essay mainly studies on the usage of FPGA to collect the eight analog signals that are converted to digital voltage signal, digital tube display real-time voltage value. Connecting with the computer running software oscilloscope so that to realize the voltage data sending and receiving function.Keywords: FPGA; analog-to-digital converting chip; digital display tube; keyboard; design0 引言20世纪以来,数字信号处理技术已逐渐渗透到通信、家电、军事等各个应用领域。

多路数据自动采集系统的设计与实现

多路数据自动采集系统的设计与实现

整, 经 过调 整 的 数据 通 过 发 送装 置 发 出 , 发 出的 数 据经 过 传 输介 质 传 递 给 接 受装 置 , 然 后 再 经过 信 号 调理 装 置 进 行数 据 整理 , 并将 信 息存 储于 信宿 。 此 过程 就完 成了从 信 息的发 送 到信 息的接 受 。
3 数 据 接收 端的 电路设 计
学术平 台 l 工业技术 与实践
多路数据 自动采集 系统 的设计 与实现
D E S I G N A N D l M P L E M E N T A T I O N O F M U L T I C H A N N E L D A U T O M A T I C A C Q U I S I T I O N S Y S T E M
号 通过 显 示设 备 显示 给各 大 用户 , 同 时也 可 以根据 需 要把 数 据存 储
到 存储 器件 中 。 最 后用 户可 以通过 用户 输入 端 , 用 键盘 与系统 进 行交 互, 嵌入 想要 某种控 制的设 计参 数 , 对 系统参 量进 行实 时控制 。 数据接收端的核心部件是 MC U, 它的选型与 系统速度有着密 切关系, 同时也 关系 到 系统的体 积 与功 耗 。 选 用优 质 的 MC U能够 使 整个系统设计复杂度降低很多, 而且结构布局更加紧凑 。 对于信息 处 理 量 较大 的 系统 , 一 般选 用 1 6 位A R M处理器 , 如 果信 息 处理 量 更 加 巨大 , 处 理器 任务 十 分繁 重 , 且要 求 系统 具有 一 定速 度 , 一般 选 如 下图 1 所示 。 用更 高位 3 2 位A R M 处理 器 。 本 系统选 用 5 1系列 8 位 单 片 机 即可 胜 任信 息处 理任 务 。 本 系统 需 要 实现 的功 能 较多 , 而 且 需 要 实现 报 警 纪录 、 采样 纪 录及 系 统配 置 参 数 的存 储 , 因 此 需要 外 加 两片 E E P R OM 可 擦 式只 读 存储 器 。 该 存储 器 通过 I I C总线 与 MC U通 信 , 可实 现存 储 器 的即 插 即用功能。 系统对每次采样数据均以文件形式进行存储 , 可实现 对多个采样点多次采样进行存储 , 有助于存储空间的合理利用。 1 数据 采集 端功 能设 计图 本系统设计是一种基于 R F的无线数据采集系统的设计方案 , 2无线数 据传 输 模块设 计 选 用的 n R F 4 0 1 芯 片能 够较 好 的 完成 预 定任 务 。 同时 系统 设 计较 为 短 距 离 无线 通 信 具 有不 受地 理 条件 限制 , 抗 干 扰 能力 强 , 安 全 简单 , 而 且 所耗 成本 不 高 , 具 有一 定 的 实用性 和 可扩 展性 。 但 系 统设 性好 , 安装 工 艺 简易 , 而 且 可靠 性较 高 等优 点 。 目 前应 用较 为 广泛 的 计 中仍 然 存在 一 些 需 要 改进 的 地 方 , 而 且 针 对 实际 不 同 需要 , 需 要 短距 离无 线 通 信技 术 包 括无 线 局 域 网 、 蓝 牙 及红 外 数据 传 输 等 。 短 对 系统做 相应 的 改动与 调整 , 有 待在 实际应 用 中进一 步 实验验 证 。

多路数据采集系统的设计毕业设计

多路数据采集系统的设计毕业设计

多路数据采集系统设计序言随着计算机技术、电磁兼容技术、传感器技术和信息技术的飞速发展和普及,数据采集与处理系统得到了广泛的应用。

例如:在生产过程中,应用这一系统可对生产现场的工艺参数进行采集、监视和记录,为提高产品质量、降低生产成本提供信息和手段;在科学研究中,应用这一系统可获得大量的动态信号,是研究瞬间物理过程的有力工具,也是获得科学奥秘的重要手段之一。

总之,不论在哪个应用领域,数据采集与处理越及时,工作效率、性能价格比就越高,取得的经济效益就越好。

总之,数据采集是工、农业控制系统中至关重要的一环[1]。

数据采集是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。

同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。

本毕业设计对一种多路数据采集系统进行了初步的研究,该多路数据采集系统能对多路模拟信号进行采集和处理。

系统以89C51为控制单元核心,利用模数转换器AD0809完成模数转换功能,结合单片机RS232串口功能,实现八路信号的采集、存储、显示及与PC机通信等功能,形成了良好的人机界面。

第1章绪论1.1多路数据采集系统介绍随着工、农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。

在科学研究中,运用数据采集系统可获得大量的动态信息,也是获取科学数据和生成知识的重要手段之一。

总之,不论在哪个应用领域中,数据采集与处理将直接影响工作效率和所取得的经济效益。

此外,计算机的发展对通信起了巨大的推动作用。

算机和通信紧密结合构成了灵活多样的通信控制系统,也可以构成强有力的信息处理系统,这样对社会的发展产生了深远的影响。

数据通信是计算机广泛应用的必然产物[2]。

基于STM32单片机的多路数据采集系统设计毕业设计

基于STM32单片机的多路数据采集系统设计毕业设计

基于STM32单片机的多路数据采集系统设计毕业设计摘要:本篇设计主要以STM32单片机为核心,设计了一个多路数据采集系统。

该系统能够实现多路模拟量和数字量信号的采集和显示,并通过串口与上位机进行通信,实现数据上传和控制。

设计中使用了STM32单片机的AD转换功能实现模拟量信号的采集,使用GPIO口实现数字量信号的采集,通过串口与上位机进行通信。

经过实验验证,该系统能够稳定地采集多路数据,并实现远程数据传输和控制功能,具有较高的可靠性和实用性。

关键词:STM32单片机,数据采集,模拟量信号,数字量信号,上位机通信一、引言随着科技的发展,数据采集系统在工业控制、环境监测、生物医学等领域得到了广泛的应用。

数据采集系统可以将现实世界中的模拟量信号和数字量信号转换为数字信号,并进行处理和存储。

针对这一需求,本文设计了一个基于STM32单片机的多路数据采集系统。

二、设计思路本系统的设计思路是通过STM32单片机实现多路模拟量和数字量信号的采集和显示,并通过串口与上位机进行通信,实现数据上传和控制。

该系统采用了模块化设计方法,将系统分为采集模块、显示模块和通信模块。

1.采集模块采集模块通过STM32单片机的AD转换功能实现模拟量信号的采集,通过GPIO口实现数字量信号的采集。

通过在程序中设置采样频率和采样精度,可以对不同类型的信号进行稳定和准确的采集。

2.显示模块显示模块通过LCD显示屏显示采集到的数据。

通过程序设计,可以实现数据的实时显示和曲线绘制,使得用户可以直观地观察到采集数据的变化。

3.通信模块通信模块通过串口与上位机进行通信。

上位机通过串口发送控制命令给STM32单片机,实现对系统的远程控制。

同时,STM32单片机可以将采集到的数据通过串口发送给上位机,实现数据的远程传输。

三、实验结果与分析通过实验验证,本系统能够稳定地采集多路模拟量和数字量信号,并通过串口与上位机进行通信。

系统能够将采集到的数据实时显示在LCD屏幕上,并通过串口传输给上位机。

多路数据采集系统设计

多路数据采集系统设计

多路数据采集系统设计多路数据采集系统是一种用于采集多个信号源数据的系统。

它通常由采集器、信号源、传输线路、收集器和处理器等组成。

在多路数据采集系统中,采集器是一个关键组件,它负责接收和处理来自多个信号源的数据。

采集器可以是硬件设备,也可以是软件程序。

硬件采集器通常具有多个输入端口,可以同时接收多个信号源的数据,并将其转换为数字信号。

而软件采集器则可以通过计算机的输入设备接收数据。

采集器还可以进行数据处理和存储,以确保数据的质量和实时性。

信号源是指传感器、仪器仪表或其他设备,它们产生或接收数据并将其传输到采集器。

信号源可以是各种类型的传感器,例如温度传感器、压力传感器、光传感器等。

传输线路是将信号源和采集器连接起来的通道,可以是有线连接或无线连接。

其中,有线连接通常使用数据线或网络电缆,而无线连接通常使用无线电或红外线进行信号传输。

收集器是一个用于接收和存储来自采集器的数据的设备。

它可以是计算机、数据存储设备或远程服务器等。

收集器通常具有大容量存储设备,以便可以保存大量的数据。

它还可以进行数据压缩和加密,以确保数据的安全性和可靠性。

处理器是对采集的数据进行处理和分析的设备。

处理器可以是计算机、嵌入式系统或专用的数据处理设备。

它负责对数据进行处理、转换和分析,以提取有用的信息。

处理器还可以根据用户的需求进行实时监测和报警,以及生成报表和图表等输出。

多路数据采集系统广泛应用于各个领域,例如工业自动化、环境监测、医疗健康等。

在工业自动化领域,多路数据采集系统可以用于监测生产设备的运行状态和产品质量,实现智能化控制和优化生产过程。

在环境监测领域,多路数据采集系统可以用于监测空气质量、水质和土壤等环境参数,以提供科学依据和决策支持。

在医疗健康领域,多路数据采集系统可以用于监测患者的生理参数,例如心率、血压和血糖等,以帮助医生进行诊断和治疗。

总之,多路数据采集系统是一种实时监测和数据处理的工具,它可以帮助我们获得准确的数据和有用的信息,以支持决策和优化。

基于单片机的多路数据采集系统设计(3章)

基于单片机的多路数据采集系统设计(3章)

基于单片机的多路数据采集系统设计摘要数据采集是指从带有模拟、数字被测单元的传感器或者其他设备中对非电量或电量信号进行自动采集,再送到上位机中进行分析和处理。

近年来,众人时刻关注着数据采集及其应用的发展和市场形势。

广大人们的关注使得数据采集系统的发展有了质的飞跃,它被广泛用于各种数字市场。

本文介绍了数据采集的相关概念和基本原理,设计了基于STM32F407的多路数据采集系统的硬件和软件的实现方法及实现过程,并经过调试完成其主要功能和主要技术指标。

硬件部分包括:主控电路、信号采集处理电路、TFT液晶显示电路、SD 卡存储电路、串口通讯电路。

实现过程是以STM32F407为控制核心,通过模数转换器,实时对输入信号进行采样,得到一串数据流,通过控制器的处理实现数据的采集和显示。

软件部分包括:信号采集分析算法、嵌入式操作系统移植、UC-GUI人机交互界面设计、文件管理系统移植。

主要实现了对采集数据的存储和分析,频率和幅值的计算,液晶屏的控制和界面显示。

程序是在keil uVision的集成开发环境中用C语言写成的,编程具有模块化的特点,因此可读性比较高,维护成本较低。

最后,用Altium designer(DXP)设计了数据采集系统的原理图,并制作了PCB电路板。

在实验室里制作了数据采集系统并进行了系统调试,经过调试,达到了所应该实现的功能和技术指标。

关键词:多路数据采集,STM32F407,液晶显示MULTI-CHANNEL DATA ACQUISITION SYSTEMBASED ON SINGLE CHIP DESIGNABSTRACTData acquisition is the automatic acquisition of non electric or electric quantity signals from sensors and other devices, such as analog and digital.In recent years, data acquisition and its application has gradually become the focus of attention. Therefore, the data acquisition system has been rapid development, it is widely used in various fields.The software part includes: signal acquisition and the embedded operating system transplant, UC-GUI man-machine interface design. Mainly realizes the storage and analysis of the collected data, calculate the frequency and am plitude of the LCD screen display and control interface. The program is written by C language in the integrated development environment KEIL uVision and modular programming makes the program readable and easy maintenance features Finally, using designer Altium to design and manufacture the digital oscilloscope circuit board PCB. In the laboratory, the digital oscilloscope has been made and the system has been debugged. After debugging, it has achieved the function and technical index that should be realized.KEY WORDS: Multi-channel data acquisition,STM32F407,liquid-crystal display目录摘要 (I)ABSTRACT (II)1绪论 (1)1.1研究背景及其目的意义 (1)1.2国内外研究现状 (2)1.3研究的主要内容 (2)2系统总体方案设计 (4)2.1系统总体设计方案 (4)2.2系统总体框图 (4)2.3硬件系统方案设计 (4)2.3.1单片机的选择 (5)2.3.2信号衰减和放大电路 (5)2.3.3A/D模数转换器的选择 (6)2.3.4显示部分 (6)2.4软件系统方案设计 (6)2.5本章小结 (7)3硬件电路设计 (8)3.1电源部分 (8)3.2信号调理部分 (10)3.3信号采样 (12)3.4系统控制部分 (12)3.5本章小结 (14)1绪论1.1研究背景及其目的意义最近几年,众人时刻关注着数据采集及其应用的发展和市场形势。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多路数据采集器设计1.设计要求所设计的数据采集器,共有16路信号输入,每路信号都是直流0~20mV信号,每秒钟采集一遍,将其数据传给上位PC计算机。

本采集器地址为50H。

要求多路模拟开关用4067,A/D转换用ADC0809,运算放大器用OP07,单片机用89C51,通信用RS232接口,通信芯片用MAX232。

与PC机的RS232串口进行通信。

设计采集器的电原理图,用C51语言编制采集器的工作程序。

2.方案设计按要求,设计数据采集器方案如下所示:数据采集器采用AT89C51单片机作为微控制器,模拟开关4067的地址A、B、C、D分别与P1.0~P1.3连接,通过控制P1口输出来选择输入信号,将直流信号依次输入ADC0809的模拟信号输入端,ADC0809共有8路输入通道,在使用模拟开关时,仅将模拟开关的输出端连接到ADC0809的1路输入通道即可,本方案中使用0通道。

ADC0809的转换结果通过P0口传给单片机,单片机将采集结果通过串行通信RS232接口上传给上位PC机,实现数据的采集。

数据采集器方案示意图3.电路原理图a)AT89C51单片机电路本实验中选取8位单片机AT89C51作为微控制器,需要片外11.0592MHz的振荡器,4K字节EPROM,128字节RAM,与51单片机有很好的兼容性。

在本此实验中程序及数据不多,故无需另加外部程序存储器。

单片机部分的电路如下所示:AT89C51单片机电路b)数据输入部分数据输入部分由模拟开关4067实现多路信号的切换。

CD4067是单16路(单刀16位)模拟开关,各开关由外部输入二进制的地址码A、B、C、D来切换。

其中脚10、11、14和13是地址码A(LSB)、B、C、D(MSB)的输入端;脚2~9和16~23是开关的输入/输出端(开关位);脚1是开关的输出/输入公共端(开关刀);脚15为控制端,低电平有效(选通),高电平禁止(开关开路)。

输入脚A、B、C、D分别与单片机P1.0~P1.3相连,改变P1输出即可切换输入通道,控制脚与P2.4相连。

输出脚1后接电压放大电路。

c)电压调理放大电路电压调理电路由于输入信号均为0~20mV的微弱电压信号,而模数转换器ADC0809的输入量要求为0~5V 直流电压,所以必须后接电压放大电路。

放大器选用OP07,将0~20mV电压放大到0~5V,其放大倍数为250倍,一般情况下,放大器的放大倍数最好小于200倍,安全起见,选用两个OP07进行两级放大,前级放大25倍,后级放大10倍,放大电路如上图所示。

d)模数转换部分ADC0809数模转换电路模数转换元件选用ADC0809,其主要特性有:8路8位A/D转换器,即分辨率8位;具有转换起停控制端;转换时间为100s;单个+5V电源供电;模拟输入电压范围0~+5V,不需零点和满刻度校准;工作温度范围为-40~85;低功耗,约15mW。

选择参考电压为+5V,当输入电压为+5V时,转换数据为#FFH,当输入电压为0V时,转换数据为#00H。

ADC0809片内没有时钟,用于51单片机系统时,时钟信号可由51单片机ALE端口经过一个2分频电路获得。

一般情况下,ALE信号频率是51单片机时钟频率的1/6。

若采用11.0592MHz 的晶振,则ALE的输出频率为1.8432MHz,经2分频后为921.6KHz,这个频率符合ADC0809对时钟频率的要求。

2分频电路由于多路输入信号切换由模拟开关4067实现,所以ADC0809的8路输入开关实际只使用1路,为方便起见,使用0通道输入,所以电路中将A、B、C脚接地处理,并且将IN1~IN7同样做接地处理。

IN0与电压放大输出相连。

转换结果的读取有3种方法:延时法:不利用EOC信号,启动A/D转换,等待130us后读取转换结果。

查询法:将EOC信号接到IO口,检测EOC, 若EOC=0, 则A/D转换没有结束, 继续检测; 当EOC=1 时, A/D 转换已经结束,可读取A/D转换结果。

中断法:将EOC信号接到INT0口,利用中断程序获取结果。

实际应用中,通常采用跳变触发方式。

EOC经过一个反向器接到单片机INT0上。

启动A/D转换后,单片机可以做其它工作, A/D转换结束时, EOC端产生一个由低到高的正跳变, 经反向器传输到INT0,若此时单片机的CPU处于开中断状态,并且允许INT0中断, 又没有高一级的或同一级的其他中断正在服务,则CPU立即执行中断服务程序, 在中断服务程序中读取A/D转换结果。

本次试验中,采取中断法实现转换结果的读取。

e) 串行通信部分串行数据通信单片机串口通信采用RS232C 标准,由于RS232C 标准采用正负电压表示逻辑状态,与TTL 以高低电平表示逻辑状态的规定不同,必须使用电平转换器件进行装换,本方案采用Maxim 公司的MAX232芯片实现接口的电平转换。

MAX232的11、12脚分别与单片机P3.0、P3.1脚相连,13、14脚与电脑串口相连接。

串行口工作于工作方式1下,使用定时器1作为波特率发生器,定时器1工作于定时器方式2下,由于系统使用11.0592MHz 晶振,所以取初值为FDH ,得,系统工作的波特率为9600bps 。

4. 软件设计程序流程如下图所示,详细程序见附录一。

TMOD x SCON x ⎧⎪⎪定时器模式设置,=020通信方式设置,=050程序流程图5.仿真实验采用Proteus7.1可以很方便地进行单片机单路的仿真,本方案中需要用到串口通讯仿真,由两个MAX232器件连接模拟单片机和PC机的通信,如下图所示,左边虚线框中Max232与单片机相连,右边实线框中Max232与PC机相连,模拟上位机。

串口通信模拟电路测试输入信号由Proteus中电压探针工具提供,如图所示:各通道相应测试输入电压值如下表所示:测试输入电压值串口通信调试时实现方式有两种:1)通过虚拟串口软件VSPDXP5.0设置两个相关联的串口如COM3和COM4,在Proteus中增加一个虚拟串口控件COMPIM,通过串口调试软件如串口调试小助手进行串口调试,其过程如下:虚拟串口软件及设置在虚拟串口软件中添加一对关联的串口,本次添加的为COM1和COM2,并将红色方框处勾上。

COMPIM控件及其属性设置在Proteus中添加一个COMPIM控件,并按上图设置其属性后,运行仿真电路.。

打开串口调试小助手,按下图设置后就可以进行串口通信的调试了。

串口调试小助手及其设置运行效果图2)通过Proteus中的虚拟终端仿真串口通信过程,如下图所示,运行后,在PTXD窗口中点鼠标右键,在弹出菜单中选上“Echo Typed Characters”和“Hex Display Mode”,在PRXD窗口中同样选中“Hex Display Mode”,后在PTXD窗口中按Shift+p(即输入大写字母P,其对应ASCII码为50H),结果如下:虚拟终端结果运行效果图6. 实验结果分析上表中:测试电压V1为由电压探头提供的测试电压值; 仿真结果为ADC0809输出的结果;仿真电压V2为由仿真结果计算所得的电压值,公式为:200V2256-=⨯()mV仿真结果;模拟开关输出端电压V3为直流毫安表测量得到电压值(接调理放大电路时);由结果看,随着输入电压的升高,仿真电压值V2与测试电压V1的误差逐渐变大,尤其当输入为满量程的20mV 时,误差达到0.781mV ;V3电压同样与V1误差越来越大,满量程时误差值最大为0.7mV ;V3与V2电压则始终相差不超过0.1mV ,较为精确。

由V2和V3的关系可以看出ADC0809的转换精度基本能够满足要求,测量电压V2与测试电压V1之间的误差并非由ADC0809造成。

进一步分析电路,当将模拟开关输出端与后面的放大电路断开时,毫安表输出值V3’完全与测试电压V1相同;当与放大电路再次连接时,再次出现上表中的较大误差值。

误差是由于电压放大电路等效电阻分压造成电压值的损失。

解决方案有2种:由上面测量结果通过插值多项式拟合出误差与测量结果的关系式,在单片机的测量程序中修正测量结果。

通过硬件电路进行电压补偿。

比较两种方案,可以看出第一种方案比较方便,下面计算插值公式:根据理论输出值和误差值计算插值公式,插值公式为0.304810.04Y X=+,由于单片机不适合做浮点运算,所以将插值公式改为=,经过插值修正后,实际输出应为X+Y,即ADC0809转换值加上实时误差值。

40/1000Y X经过修正后,结果如下:可以看出,修正后精度大幅提高。

附录一:main.c文件#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit m_enable = P2^4; //低电平有效sbit adc_a = P2^5; //ALE:上升沿锁存通道地址,地址已固定为0通道sbit adc_s = P2^6; //START:上升沿清除ADC寄存器,下降沿启动ADC sbit adc_oe = P2^7; //OE:高电平有效uchar data adc_result[16] = 0;uchar adc_in = 0;void delay(unsigned int t){ //延时t x 0.1msdo{TH0 = 0xFF;TL0 = 0xA3;TR0 = 1;while ( !TF0 );TF0 = 0;TR0 = 0;}while(--t);}void send_char(uchar ch){SBUF=ch;while(TI==0);TI= 0 ;}void INT0_SVC(void) interrupt 0 using 0{EA = 0;adc_oe = 1;adc_result[adc_in] = P0;adc_oe = 0;EA = 1;}void sirial_SVC(void) interrupt 4 using 2{uchar i;EA = 0;if(RI==1){RI = 0;i = SBUF;if(SBUF==0x50){TI = 0;for(i=0;i<16;i++){send_char(adc_result[i]);}}TI = 0;}EA = 1;}void adc_start(uchar i){uchar t;m_enable = 1; //初始化使模拟开关不工作adc_a = 0; //初始化0809 ALE=0adc_s = 0; //初始化0809 START=0adc_oe = 0; //初始化0809 OE=0P1=(i & 0x0F); //输出模拟开关通道信号m_enable = 0; //打开模拟开关for(t=200;t>0;t--); //使电压信号稳定adc_a = 1; //ALE上升沿,锁存地址,通道0adc_s = 1; //START脚上升沿,0809清除寄存器adc_a = 0; //下降沿adc_s = 0; //START下降沿启动ADCdelay(50); //T_EOC信号延时8+2us 及适电压有效}void main(){P1 = adc_in; //初始化通道为0(0-15)m_enable = 1; //初始化使模拟开关不工作adc_a = 0; //初始化0809 ALE=0adc_s = 0; //初始化0809不工作START=0adc_oe = 0; //初始化0809输出关闭EA = 0;//设置0809中断INT0IT0 = 1; //负边沿触发中断EX0 = 1; //允许外部中断//设置串口通信TMOD = 0x21; //定时器模式设置SCON = 0x50; //通信方式0,1位起始位,8位数据,1位停止位 PCON = 0x00; //设置SMOD=0TH1 = 0xfd;RI = 0;TI = 0; //清收发标志ET1 = 0; //C/T 禁止T1中断TR1 = 1; //启动T1计时器PS = 1; //串行口中断为较高中断优先级ES = 1; //允许串行口中断EA = 1;adc_in=0;while(1){adc_start(adc_in);delay(400);//对结果进行修正adc_result[adc_in]=adc_result[adc_in]+40*adc_result[adc_in]/1000;adc_in=(adc_in+1)%16;}}。

相关文档
最新文档