admin 管理员组

文章数量: 887021


2024年1月26日发(作者:拟合函数的优缺点)

嵌入式系统数据采集系统

摘 要

嵌入式数据采集系统是集计算机、通信及电子技术、工业控制为一体的综合探测系统。

模拟信号是人类可以直接感受到的信号,如温度、湿度、光线、声音等都属于模拟信号。模拟信号是一种连续性的信号,对模拟信号直接处理与传输容易失真,不容易保存。数字信号是一种非0即1的非连续性的信号,通常有高、低两种电平。数字信号比较容易保存与处理,而且效率高,在传输上不易失真,可以使用计算机来对数据进行处理和控制。

本文是通过温度传感器DS18B20把温度信号直接转换成数字信号,输入单片机处理,将实时温度显示在两个7段LED数码管上,并通过串口与上位机相连,将温度在linux服务器上实时显示,并保存到文件里。

关键词:嵌入式,数据采集,LINUX,51单片机,串口

I

EMBEDDED DATA ACQUISITION SYSTEM

ABSTRACT

Embedded data acquisition system is a set of computer,

communications and electronics, industrial control for an integrated

detection system.

Analog signals can be directly felt by the human signal, Such as

temperature, humidity, light, sound and so on are analog signals.

Analog signal is a continuous signal, analog signal processing and

transmission of easy distortion directly, not easy to save. Digital signal

is a non-0 or 1 non-continuous signal, there is usually high and low

level. Relatively easy to save and digital signal processing, and high

efficiency in transmission distortion is not easy, you can use the

computer to the data processing and control.

This article is DS18B20 the temperature through the temperature

sensor signals directly into digital signals, input MCU processing,

real-time temperature display in two 7-segment LED digital tube, and

connected with the host computer through the serial port, the

temperature in the linux server, real-time display, And save to file.

KEYWORDS : Embedded , Data Acquisition, LINUX, 51

SCM, Serial

II

目录

1

绪 论 ......................................................... 1

1.1

课题背景 ........................................................................................................ 1

1.2

系统开发功能、目的和意义 ........................................................................ 1

1.2.1

功能 ............................................................................................................ 1

1.2.2

目的和意义 ................................................................................................ 2

2

可行性分析 ..................................................... 3

2.1

系统整体设计思想 ........................................................................................ 3

2.2

技术可行性分析 ............................................................................................ 4

2.2.1

系统简要描述 ............................................................................................ 4

2.2.2

处理流程和数据流程 ................................................................................ 4

2.3

本章小结 ........................................................................................................ 4

3

需求分析 ....................................................... 6

3.1

系统的产生和发展 ........................................................................................ 6

3.2

系统的需求分析 ............................................................................................ 6

3.2.1

需求分析的意义 ........................................................................................ 6

3.2.2

需求分析的任务 ........................................................................................ 7

3.2.3

需求分析的过程 ........................................................................................ 7

3.2.4

数据流程图 ................................................................................................ 8

3.3

温度传感器 .................................................................................................... 8

3.4

本章小结 ...................................................................................................... 12

4

总体设计 ...................................................... 13

4.1

系统模块总体设计 ...................................................................................... 13

4.2

系统运行平台设置 ...................................................................................... 13

4.3

本章小结 ...................................................................................................... 15

5

详细设计 ...................................................... 17

5.1

目标机实现及代码 ...................................................................................... 17

i

5.2

上位机实现及代码 ...................................................................................... 19

5.3

本章小结 ...................................................................................................... 22

6

系统测试与性能分析 ............................................ 23

6.1

为什么要进行系统测试 .............................................................................. 23

6.2

软件测试 ...................................................................................................... 23

6.2.1

测试的基本概念 ...................................................................................... 23

6.2.2

测试步骤 .................................................................................................. 24

6.3

嵌入式系统测试 .......................................................................................... 25

6.4

本章小结 ...................................................................................................... 25

结论 ............................................................ 26

参考文献 ........................................................ 27

谢辞 ............................................................ 28

ii

1 绪 论

1.1 课题背景

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。随着信息化、智能化、网络化的发展,嵌入式系统技术也将获得广阔的发展空间。进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。

随着计算机的普及应用,数据采集系统也得到了极大的发展,开始出现了通用的数据采集系统。20世纪90年代之后,数据采集技术已经在军事、航空电子设备以及宇航技术、工业等领域被广泛应用,由于集成电路制造技术的不断提高,出现了高性能、高可靠性的单片数据采集系统。

一个完整的数据采集系统通常由原始信号、信号调理设备、数据采集设备和计算机四个部分组成。有的时候自然界中的原始信号并非直接可测的电信号,所以,我们会通过传感器将这些物理信号转换为数据采集设备可以识别的电压或电流信号。加入信号调理设备是因为某些输入的电信号并不便于直接进行测量,因此需要信号调理设备对它进行诸如放大、滤波、隔离等处理,使得数据采集设备更便于对该信号进行精确的测量。数据采集设备的作用是将模拟的电信号转换为数字信号送入计算机进行处理,或将计算机编辑好的数字信号转换为模拟信号输出。计算机上安装了驱动和应用,方便我们与硬件交互,完成采集任务,并对采集到的数据进行后续分析和处理。

在这样的背景下,嵌入式系统数据采集系统将是一个大的研究方向,尤其在实时监控领域,通过嵌入式系统对模拟信号,如温度、湿度、光线、声音等的采集,并与上位机进行数据的传输,在上位机上实时监控,并保存数据。

1.2 系统开发功能、目的和意义

1.2.1 功能

主要功能:通过嵌入式系统实现对温度的的采集,实时监控、显示,并通过串口将采集到的数据发送出去。上位机是linux系统的PC机。通过串口连接嵌入

1

式系统与上位机,并且实现数据由嵌入式系统传送到上位机,在上位机上实时显示监控到的数据,并保存成文件。

1.2.2 目的和意义

毕业设计不仅是对学习期间的总结,同时也是自己综合运用所学知识解决实际问题的一次锻炼。

在此行业背景下,嵌入式系统数据采集系统,是一个在军事、商业、医疗、家庭等各个领域都是有很多实际应用的。

数据采集,是指从传感器和其它待测设备等模拟和数字被测单元中自动采集信息的过程。嵌入式数据采集系统是结合基于ARM处理器、51单片机的测量软硬件产品来实现灵活的、用户自定义的测量系统。

数据采集的目的是为了测量电压、电流、温度、压力或声音等物理现象。基于ARM、51单片机的数据采集系统,通过模块化硬件、应用软件和计算机的结合,进行采集、显示以及保存。尽管数据采集系统根据不同的应用需求有不同的定义,但各个系统采集、分析和显示信息的目的却都相同。数据采集系统整合了信号、传感器、激励器、信号调理、数据采集设备和应用软件。

2

2 可行性分析

2.1 系统整体设计思想

(1)嵌入式系统:

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,它将操作系统和功能软件集成于计算机硬件系统之中,简而言之就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式,具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时和多任务的体系。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业实际应用相结合的产物。嵌入式系统的结构由两大模块组成:硬件平台和软件平台。

(2)数据采集系统:

数据采集系统的采集任务在现场完成。采集系统设计为分布式的控制系统,系统上位机与现场检测下位机之间的通信基于串口。正常运行时,现场下位检测控制器完成数据采集、数据处理、数据存储、数据发送等多种任务。系统具有一定的自检测、自校正能力,能将异常情况传给PC机,以便维护。为了适应各种不同情况对焊缝自动检测的要求,整个检测系统采用模块化结构设计,可应用不同的模块组合成不同的应用系统。

(3)嵌入式软件开发的特点:

①人机交互界面。嵌入式系统和通用计算机之间的最大区别在与人机交互界面。嵌入式系统可能根本就不存在键盘、显示器等设备,它所完成的事情也可能只是监视网络情况或者传感器的变化情况,并按照事先规定好的过程及时完成相应的处理任务。

②有限的功能。嵌入式系统的功能在设计时已经定制好,在开发完成投入使用之后就不再变化,系统将反复执行这些预定好的任务,而不象通用计算机那样随时可以运行新任务。当然,使用嵌入式操作系统的嵌入式系统可以添加新的任务,删除旧的任务;但这样的变化对嵌入式系统而言是关键性的变化,有可能会对整个系统产生影响。

③时间关键性和稳定性。嵌入式系统可能要求实时响应,具有严格的时序

3

性。同时,嵌入式系统还要求有非常可靠的稳定性。其工作环境可能非常恶劣,如高温、高压、低温、潮湿等。这就要求在设计时考虑目标系统的工作环境,合理选择硬件和保护措施。软件稳定也是一个重要特征。软件系统需要经过无数次反复测试,达到预先规定的要求才能真正投入使用。

正是由于嵌入式系统具有以上的各种特性,所以在各个领域的应用都是很广泛的,具有实际应用价值。在嵌入式系统数据采集系统的设计中,系统的整体设计都是离不开系统本身具有的特性的。

2.2 技术可行性分析

2.2.1 系统简要描述

嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以理解嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。

嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、 不断创新的知识集成系统。所以,介入嵌入式系统行业,必须有一个正确的定位。例如Palm之所以在PDA领域占有70%以上的市场,就是因为其立足于个人 电子消费品,着重发展图形界面和多任务管理;而风河的Vxworks之所以在火星车上得以应用,则是因为其高实时性和高可靠性。

嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。

2.2.2 处理流程和数据流程

嵌入式系统数据采集系统是通过温度传感器DS18B20把温度信号直接转换成数字信号,输入单片机处理,将实时温度显示在两个7段LED数码管上,并通过串口与上位机相连,将温度在linux服务器上实时显示,并保存到文件里。

2.3 本章小结

4

可行性研究是确定建设项目前具有决定性意义的工作,是在投资决策之前,对拟建项目进行全面技术经济分析的科学论证,在投资管理中,可行性研究是指对拟建项目有关的自然、社会、经济、技术等进行调研、分析比较以及预测建成后的社会经济效益。在此基础上,综合论证项目建设的必要性,财务的盈利性,经济上的合理性,技术上的先进性和适应性以及建设条件的可能性和可行性,从而为投资决策提供科学依据。

5

3 需求分析

3.1 系统的产生和发展

随着信息技术的飞速发展,人们需要能够准确、快速和便捷地获得大量数据并能从中迅速提取出有用的信息。嵌入式系统是继IT网络技术之后,又一个新的技术发展方向。进入20世纪90年代,嵌入式技术的应用全面展开,目前已经成为通信和消费类产品的主要平台技术。嵌入式系统已经应用与信息家电、移动通信、工业控制、军事电子等诸多领域,并发挥着巨大的作用。

嵌入式系统的最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、设备指示等功能,一般没有操作系统的支持,只是通过汇编语言对系统直接进行编程控制,运行结束后再清除内存。这些装置已经具备了嵌入式系统的应用特点,但是只使用8位的CPU芯片来执行一些单线程的程序。这以阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小。由于这种嵌入式系统使用简便、价格低廉,因而在工业领域有非常广泛的应用。

随着微电子工业水平的提高,微控制器的出现,从而又出现了一些带有操作系统的嵌入式系统。

本设计主要是采用基于单片机的嵌入式系统,通过温度传感器将采集到的温度信息传送给单片机,经过单片机的处理显示并且传送信息,Linux系统的上位机是通过串口与单片机连接的,在单片机上通过串口将数据发送给上位机,在Linux系统下实时显示采集到的温度,并保存为文件。

3.2 系统的需求分析

3.2.1 需求分析的意义

需求分析就是分析硬件、软件用户的需求是什么。如果实现需求需要投入大量的人力、物力、财力、时间,开发出的硬件、软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个硬件、软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的。相信大家都有体会,比如,用户需要一个for linux的软件,而在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了 。需求分析之所以如此

6

重要,就因为他具有决策性、方向性、策略性的作用,它在硬件、软件开发的过程中具有举足轻重的地位,一定要对需求分析具有足够的重视,在一个大型软件系统的开发中,他的作用要远远大于程序设计。

3.2.2 需求分析的任务

简言之,需求分析的任务就是解决“做什么”的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。

对于本设计而言,是基于51单片机的嵌入式数据采集系统设计,是通过传感器采集模拟信号(温度),并将其转换成数字信号,输入单片机,将实时温度显示在两个LED数码管上,并通过串口将采集到的温度信息传送到Linux系统的上位机上,上位机作为服务器,实时显示接收到的温度信息,并将其保存到文件里。

3.2.3 需求分析的过程

必须用行之有效的方法对软件需求进行严格的审查验证。需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明以及评审,如图3-1所示。

系统需求所写的软件需求说明用户分析员需求者规格说明语言规格说明处理规格说明关于规格说明的报告

图3-1 需求分析的一般过程

需求分析过程是整个系统开发的重要阶段,分析的成功与否,决定着整个系统功能的完善性以及稳定性。在该阶段需求分析人员需要确定整个产品的功能要

7

求,并且将现实事务抽象成对象并建模。

3.2.4 数据流程图

数据流程图就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

分层的数据流图为了表达数据处理过程的数据加工情况,用一个数据流程图是不够的,为表达稍为复杂的实际问题需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。先把整个数据处理过程暂且看成一个加工,它的输入数据和输出数据实际上反映了系统与外界环境的接口,这就是分层数据图的顶层。

3.3 温度传感器

DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总

线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、 传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。

DS18B20简介

独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;在使用中不需要任何外围元件;可用数据线供电,电压范围:+3.0~ +5.5 V;测温范围:-55 ~+125 ℃。固有测温分辨率为0.5 ℃;通过编程可实现9~12位的数字读数方式;用户可自设定非易失性的报警上下限值;支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温;负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。

DS18B20引脚如图3-2所示:

8

图3-2 DS18B20引脚排列图

引脚及其与单片机的连接方式:

引脚1:GND接地;

引脚2:DQ为数字信号输入/输出端,连接单片机I/O端口,电源+5V和信号线之间接有一个4.7欧姆的电阻;

引脚3:VDD为外接电源输入端,接+5V电源。

由于每片DS18B20含有唯一的串行数据口,所以一条总线上可以挂接多个DS18B20芯片。

外部供电方式单点测温电路如图3-3所示。

外部供电方式多点测温电路如图3-4所示。

图3-3 单点测温电路

9

图3-3 单点测温电路

DS18B20的主要特征:

使用电压范围宽,电压范围为3.0V到3.5V,在寄生电源方式下可用数据线供电;

单线接口方式,DS18B20在与微处理器连接时仅需要一条线即可实现微处理器与DS18B20的双向通信;

DS18B20支持多点组网功能,实现组网多点测温;

DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路都集中成在形如一只三极管的集成电路中;

测温范围为-55℃到+125℃,在-10℃到+85℃的精度为-0.5到+0.5;

可编程的分辨率为9到12位,对应的可辨温度分别为0.5℃、0.125℃和0.0625℃,可实现高精度测温;

转换速度快,在9位分辨率时最多在93.75ms内把温度转化为数字,12位分辨率时最多在750ms内把温度转化为数字;

测量结果直接输出数字温度信号,以“一线总线”串行总线送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;

用户可自设定温度报警上下限,其值是非易失性的;

报警搜索命令可识别哪片DS18B20超温度限。

DS18B20通信协议:

在对DS18B20进行读写编程时,必须严格保证读写时序,否则将无法读取温

10

度结果。根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过3个步骤:第一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待16到60us,然后发出60到240us的存在低脉冲,主CPU收到此信号表示复位成功。

DS18B20的ROM指令如表3-1所示:

DS18B20的RAM指令如表3-2所示:

表3-1 ROM指令表

表3-2 RAM指令

11

3.4 本章小结

需求分析报告是对系统需求的书面表达形式。由于需求分析报告是采用软件设计的术语编写的,因此常常令计算机背景知识较少的用户方难以理解,也就很难发现需求报告中与实际需求不符之处,更难提出建设性的意见。特别是那些编写得较差的需求分析报告,用户更是不知所云。

12

4 总体设计

4.1 系统模块总体设计

利用层次图来表示系统中各模块之间的关系。层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表各个数据的子集,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素)。

随着结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。从对顶层信息的分类开始,沿着图中每条路径反复细化,直到确定了数据结构的全部细节为止。

本系统一共分为目标机和上位机两大模块,两个模块之间通过串口实现数据的传送,是紧密相连的。目标机主要实现对数据的采集、显示和发送;上位机主要实现对数据的实时监控、显示和保存。

4.2 系统运行平台设置

模拟信号是人类可以直接感受到的信号,如温度、湿度、光线、声音等都属于模拟信号。模拟信号是一种连续性的信号,对模拟信号直接处理与传输容易失真,不容易保存。

模拟信号的波形图如图4-1所示:

图4-1 模拟信号示意图

数字信号是一种非0即1的非连续性的信号,通常有高、低两种电平。数字信号比较容易保存与处理,而且效率高,在传输上不易失真,可以使用计算机来对

13

数据进行处理和控制。

数字信号的波形图如图4-2所示:

图4-2 数字信号示意图

日常生活中,大部分数据是模拟信号,我们可把测得的模拟信号经模拟/数字转换器(ADC)转换成数字信号,这样可以进行较高效率的处理、保存和传输。当处理完成后,在经数字/模拟转换器(DAC)转换成模拟信号,以驱动控制设备,如图4-3所示:

图4-3 ADC、DAC系统图

通过温度传感器DS18B20把温度信号直接转换成数字信号,输入单片机处理,将实时温度显示在两个7段LED数码管上。

电路设计如图4-4所示:

14

图4-4 数字温度计电路

程序开始首先对温度传感器DS18B20进行复位,检测是否正常工作;接着读取温度数据。

主程序流程图如图4-5所示:

图4-5 主程序流程图

4.3 本章小结

温度传感器DS18B20外形像一个小型三极管,硬件连接非常简单,应用非常

15

方便,开销非常小。

16

5 详细设计

5.1 目标机实现及代码

目标机的功能是实现数据的采集、显示、传送的功能。

初始化及读取温度值子程序代码如下所示:

RE_TEMP:

SETB DQ

ACALL RESET_1820

JB FLAG,ST

RET

ST:

MOV A,#0CCH

ACALL WRITE_1820

MOV

ACALL

ACALL

MOV

ACALL

MOV

ACALL

ACALL

RET

A,#44H

WRITE_1820

RESET_1820

A,#0CCH

WRITE_1820

A,#0BEH

WRITE_1820

READ_1820

;初始化及读取温度值子程序

;

;调用复位子程序

;判断DS1820是否存在

;DS18B20存在

;跳出ROM匹配

;调用写入数据子程序

;发出温度转换命令

;调用写入数据子程序

;准备读温度前先复位

;跳过ROM匹配

;调用写入数据子程序

;发出读温度命令

;调用写入数据子程序

;调用读取数据子程序

写入子程序的代码如下所示:

WRITE_1820: ;写入子程序,有具体的时序要求

MOV R0,#8 ;一共8位数据

CLR C ;C=0

WR1:

CLR DQ ;总线低位,开始写入

MOV R3,#7 ;

DJNZ R3,$ ;保持16us以上

17

RRC

MOV

MOV

DJNZ

SETB

NOP

DJNZ

SETB

A

DQ,C

R3,#23

R3,$

DQ

R2,WR1

DQ

;把字节DATA分成8个位,环移给C

;写入一个位

;

;等待

;重新释放总线

;写入下一个位

RET

读取子程序的代码如下所示:

READ_1820:

DS18B20中读出

MOV R4,#2

MOV R1,#29H

RE0:

MOV R0,#8

RE1:

CLR

SETB

NOP

NOP

CLR

NOP

NOP

NOP

SETB

MOV

RE2:

DJNZ

MOV

MOV

RE3:

DJNZ

RRC

DJNZ

;读取子程序,将温度高位和低位从;读出两个字节的数据

;低位存入29H,高位存入28H

;数据一个有8位

C

DQ

DQ ;读前总线保持为低

DQ

R3,#9

R3,RE2

C,DQ

R3,#23

R3,RE3

A

R2,RE1

;开始读总线释放

;延时18us

;从总线读到一个位

;

;等待50us

;把读到的位值环移给A

;读下一个位

18

MOV

DEC

DJNZ

RET

@R1,A

R1

R4,RE0

5.2 上位机实现及代码

上位机的作用是作为服务器,实时监控目标机,读取目标机通过串口传送过来的数据。

在Linux PC端使用串口接收数据之前要对串口进行配置,主要是设置波特率、数据位、校验位、停止位等。

配置串口代码如下:

int Serial::Set_port(int fd,int nSpeed,int nBits,char nEvent,int nStop)

{

struct termios newtio;

struct termios oldtio;

int i;

int arr[]={1200,2400,3600,4800,6000,7200,8400,9600,10800,12000,115200};

tcflush(fd,TCIOFLUSH);

//int tcgetattr(int fd,struct termios *termios_p);

//int tcsetattr(int fd,int optional_actions,const struct termios *termios_p);

if(tcgetattr(fd,&oldtio)==-1)

{

fprintf(stderr,"tcgetattr error:%sn",strerror(errno));

}

if(tcgetattr(fd,&oldtio)==0)

{

fprintf(stderr,"tcgetattr oldtio success!n");

fprintf(stderr,"start set serial!n");

}

tcflush(fd,TCIOFLUSH);

bzero(&newtio,sizeof(newtio));

newtio.c_cflag|=CLOCAL|CREAD;

19

newtio.c_cflag&=~CSIZE;

//speed

if(nSpeed==arr[i])

{

cfsetispeed(&newtio,arr[i]);

cfsetospeed(&newtio,arr[i]);

}

//bits

switch(nBits)

{

case 7:

newtio.c_cflag|=CS7;

break;

case 8:

newtio.c_cflag|=CS8;

break;

}

//event

switch(nEvent)

{

case 'O':

case 'o':

newtio.c_cflag|=PARENB;

newtio.c_cflag|=PARODD;

newtio.c_iflag|=(INPCK|ISTRIP);

break;

case 'E':

case 'e':

newtio.c_cflag|=PARENB;

newtio.c_cflag&=~PARODD;

newtio.c_iflag|=(INPCK|ISTRIP);

break;

20

case 'N':

case 'n':

newtio.c_cflag&=~PARENB;

break;

}

//stop

switch(nStop)

{

case 1:

newtio.c_cflag&=~CSTOPB;

break;

case 2:

newtio.c_cflag|=CSTOPB;

break;

newtio.c_cc[VTIME]=0;

newtio.c_cc[VMIN]=0;

tcflush(fd,TCIOFLUSH);

if(tcsetattr(fd,TCSANOW,&newtio)==-1)

{

fprintf(stderr,"tcsetattr error:%sn",strerror(errno));

return -1;

}

if(tcsetattr(fd,TCSANOW,&newtio)==0)

{

fprintf(stderr,"tcsetattr newtio success!n");

fprintf(stderr,"good luck!n");

}

printf("set down!n");

return 0;

21

}

return 1;

}

5.3 本章小结

详细设计阶段是整个系统的具体实现,本设计主要通过目标机对数据进行采集、显示,通过串口连接上位机与目标机,上位机作为服务器,实时监控目标机发送的数据,并显示以及保存数据。

22

6 系统测试与性能分析

6.1 为什么要进行系统测试

信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。不论软件的生产者或者还是软件的使用者,生存在竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用中使用质量有问题的软件,还可能造成灾难性的后果。

6.2 软件测试

经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。

测试是一项很艰苦的工作,其工作量约占软件开发总工作量的40%以上,特别对一些关系到人的生命安全的软件。

6.2.1 测试的基本概念

a) 测试的目的

软件测试的目的是尽可能多的发现软件产品(主要是指程序)中的错误和缺陷。

明确测试的目的是一件非常重要的事,因为在现实世界中对测试工作存在着许多模糊或者错误的看法,这些看法严重影响着测试工作的顺利进行。

有人认为测试是为了证明程序是正确的,也就是说程序不再有错误,事实证明这是不现实的。因为要通过测试来发现程序中的所有错误就要穷举所有可能的输入数据,检查它们是否产生正确的结果。例如,一个需要3个16位字长的整型输入数据的程序,输入数据的所有组合情况大约有3×1014种,若每组数据的测试时

23

间为1ms,那么即使一年365天,每天24小时地测试,也大约需要1万年的时间。

b) 测试用例

要进行测试,除了要有测试数据(或称输入数据)外,还应同时给出该组测试数据应该得到怎样的输出结果,我们称它为预期结果。在测试时将实际的输出结果与预期结果比较,若不同则表示发现了错误。因此测试用例是由测试数据和预期结果构成的。

为了发现程序中的错误,应竭力设计能暴露错误的测试。一个好的测试用例是极有可能发现迄今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。

测试的关键是测试用例的设计,其方法可分成两类:白盒测试和黑盒测试。

白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。

黑盒测试是把程序看成一只黑盒子,测试者完全不了解(或不考虑)程序的结构和处理过程。它根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。

6.2.2 测试步骤

软件测试的主要步骤有单元测试、集成测试和确认测试。

1) 单元测试(Unit Testing)

单元测试也称模块测试。通常单元测试可放在编码阶段,程序员在编写好一个模块后,总会对自己编写的模块进行测试,检查它是否实现了详细设计说明书中规定的模块功能和算法。单元测试主要发现编码和详细设计中产生的错误,通常采用白盒测试。

2) 集成测试(Integration Testing)

集成测试也称组装测试,它是对由各模块组装而成的程序进行测试,主要检查模块间的接口和通信。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试。

3) 确认测试(Validation Testing)

确认测试的任务是检查软件的功能、性能及其他特征与用户的需求一致,它是

24

以需求规格说明书(即需求规约)作为依据的测试。确认测试通常采用黑盒测试。

确认测试产生测试程序是否满足需求规格说明书所列的各项要求,然后要进行软件配置复查,特别是文档是否齐全,各方面的质量是否符合要求等。如果一个软件是为某个专门客户定制的,那么最后由客户来实施验收测试(acceptance

testing),以便客户确认该软件是他所需要的。如果一个软件是作为产品被许多客户使用的话,那不可能为每个客户进行验收测试。大多数软件生产者使用一种Alpha测试和Beta测试的过程,来揭露仅由最终用户才能发现的错误。

6.3 嵌入式系统测试

在嵌入式软件测试中,基于目标的测试消耗较多的经费和时间,而基于宿主的测试代价较小,但毕竟是在模拟环境中进行的。目前的趋势是把更多的测试转移到宿主环境中进行,但是,目标环境的复杂性和独特性不可能完全模拟。

在两个环境中可以出现不同的软件缺陷,重要的是目标环境和宿主环境的测试内容有所选择。在宿主环境中,可以进行逻辑或界面的测试、以及与硬件无关的测试。在模拟或宿主环境中的测试消耗时间通常相对较少,用调试工具可以更快地完成调试和测试任务。而与定时问题有关的白盒测试、中断测试、硬件接口测试只能在目标环境中进行。在软件测试周期中,基于目标的测试是在较晚的“硬件/软件集成测试”阶段开始的,如果不更早地在模拟环境中进行白盒测试,而是等到“硬件/软件集成测试”阶段进行全部的白盒测试,将耗费更多的财力和人力。

6.4 本章小结

软件测试是软件开发中的重中之重,在项目管理过程中,强调的是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。因为软件测试中考虑的问题基本上是项目管理中需要考虑的问题。具体说,软件测试是事务性的,而项目管理是策略性,一些策略性的东西必须在一些事务性的事务上来实现。软件测试的事务性操作很多,这些操作需要一个良好的心态去对待。总之,软件开发是一件很辛苦的事,只有在工作中多总结,才能找到符合自己的方式方法,才能在工作中事半功倍。

25

结论

温度传感器DS18B20外形像一个小三极管,硬件连接非常简单,应用非常方便。它不仅能测量温度,而且也是一个ADC转换器,它能将测得的温度信号直接转换成数字信号输入到单片机,经过单片机处理后,将实时温度显示在两个7段LED数码管上,并通过串口将采集到的数据发送给上位机。

上位机是linux系统的PC机,通过对串口进行配置,接收与上位机连接的嵌入式系统的串口传送过来的数据,基于linux系统的上位机是作为服务器,实时监视、显示嵌入式系统传来的温度数据,并将采集到的数据以文件的形式保存。

通过对毕业设计的操作,我已经对嵌入式系统的软件和硬件设计有了进一步的掌握,但是毕业设计也暴露出自己专业基础的很多不足之处。比如缺乏综合应用专业知识的能力,以及对细节的把握等等。这次实践是对自己大学四年所学的一次总结,使我明白自己知识还很浅薄,虽然马上要毕业了,但是自己的学习之路还很长,以后在工作中还要努力学习,努力使自己成为一个对社会有所贡献的人。

26

参考文献

[1]史蒂文斯,拉戈.UNIX环境高级编程.人民邮电出版社,2006.

[2]罗苑棠,杨宗德.嵌入式linux应用系统开发实例精讲.电子工业出版社,2007.

[3]李善平,刘文峰,王焕龙等.linux与嵌入式系统.清华大学出版社,2006.

[4]韦东山.嵌入式linux应用开发完全手册.人民邮电出版社,2008.

[5]潘新民,王燕芳.微型计算机控制技术.高等教育出版社,2009.

[6]王守中,聂元铭.51单片机开发入门与典型实例.人民邮电出版社,2009.

[7]胡汉才.单片机原理及其接口技术.清华大学出版社,2010.

[8]科波特,魏永明等.linux设备驱动程序.中国电力出版社,2006.

[9]刘淼.嵌入式系统接口设计与linux驱动程序开发.北京航空航天大学出版社,2006.

[10]华清远见.嵌入式linux C编程入门.人民邮电出版社,2009.

[11]汤小兵,梁红兵,哲凤屏,汤子瀛.计算机操作系统.西安电子科技大学出版社.

[12]白中英.计算机组成原理.科学出版社,2008.

[13]秦风.数据结构(C语言版).中国科学技术大学出版社,2009.

[14]许文建,周雷,李晓.基于ARM的嵌入式数据采集系统.中国矿业大学信息与电气工程学院,江苏徐州(221008).

[15]樊莉莉.基于ARM9的无线视频监控系统的设计.太原理工大学信息工程学院.太原(030024).

[16]陈文志.数据采集演示平台系统设计与实现.北京邮电大学信息与通信工程学院,2008.

[17]赵恒永,雷周骏.嵌入式linux数据采集系统的研制.北京化工大学网络与数据库研究室,2007.

[18]翟辉.基于51单片机和C语言的通用数据采集系统.大连交通大学电气信息学院,2006.

[19]徐小明.基于单片机的数据采集系统研究.武汉理工大学信息学院.2009.

27

谢辞

在老师和同学的支持与帮助之下,我顺利地完成了本次毕业设计。在毕业设计的这段日子里,我学到了很多知识,尤其是在实际动手操作能力方面的提高。

本次毕业设计是在詹林老师的精心指导下完成的,导师渊博的知识、严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪;从开始的搜集材料,初稿的审核到最后论文的定稿的整个过程中,老师都及时给予我建议,指出不足之处,帮助我更好地组织论文结构,不断充实论文的内容。

在此,我对导师在毕业设计期间给予的指导和帮助表示衷心的感谢。同时也感谢其他老师在此期间的关怀和帮助,以及学院为我提供良好的毕业设计环境。最后感谢在毕业设计中为我提供帮助的众多益友和同学,以及在设计中被我引用或参考的论著的作者。

再次感谢在本次毕业设计中帮助过我的各界人士!

28


本文标签: 系统 数据 测试 采集 进行