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

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

ID:874876

大小:47.24 KB

页数:29页

时间:2017-09-22

上传者:^_^
基于单片机的多路数据采集系统设计_第1页
基于单片机的多路数据采集系统设计_第2页
基于单片机的多路数据采集系统设计_第3页
基于单片机的多路数据采集系统设计_第4页
基于单片机的多路数据采集系统设计_第5页
资源描述:

《基于单片机的多路数据采集系统设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

基于单片机的多路数据采集系统设计TheDesignOfMulti-channelDataAcquisitionSystemBasedOnSCM摘要本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机AT89S52来实现,硬件部分是以单片机为核心,还包括A/D模数转换模块,显示模块,和串行接口部分。该系统从机负责数据采集并应答主机的命令。8路被测电压通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据通过串行口MAX232传输到上位机,由上位机负责数据的接受、处理和显示,并用LED数码显示器来显示所采集的结果。软件部分应用VC++编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。关键词:数据采集89C52单片机ADC0809MAX232AbstractThisarticledescribesthehardwaredesignandsoftwaredesignofthedataonwhichbasedonsignal-chipmicrocomputer.Thedatacollectionsystemisthelinkbetweenthedigitaldomainandanalogdomain.Ithasanveryimportantfunction.Theintroductivepointofthistextisadatatocollectthesystem.Thehardwareofthesystemfocusesonsignal-chipmicrocomputer.Datacollectionandcommunicationcontrolusemodulardesign.Thedatacollectedtocontrolwithcorrespondencetoadoptamachine8051tocarryout.Thepartofhardware’scoreisAT89S52,isalsoincludesA/Dconversionmodule,displaymodule,andtheserialinterface.Slavemachineisresponsiblefordataacquisitionandansweringthehostmachine.8roadsweremeasuredtheelectricvoltagetopasstheingeneralusemold-fewconversionofADC0809,therealizationcarriesontheconversionthatimitatestomeasurethenumeraltomeasuretowardsthedatathatcollect.ThensendthedatatothehostmachinethroughMAX232.thehostmachineisresponsiblefordataanddisplay,LEDdigitaldisplayisresponsibledisplaythedata.ThesoftwareispartlyprogrammedwithVC++.Thesoftwarecanrealizethefunctionofmonitoringandcontrollingthewholesystem.Itdesignsmuchprogramlikedata-acquisitiontreatment,data-displayanddata-communicationect.Keyword:dataacquisitionAT89C52ADC0809MAX232目录第一章绪论11.1研究背景及其目的意义11.2国内外研究现状21.3该课题研究的主要内容内容2第二章数据采集42.1数据采集系统42.2方案论证52.2.1A/D模数转换的选择52.2.2单片机的选择52.2.3串行口的选择52.2.4显示部分62.2.5按键6第三章硬件部分83.1主机部分8 3.1.1主机部分原理图设计83.1.2单片机93.2从机部分133.2.1从机的电路原理图设计133.2.2单片机之间的通信143.2.3模数转换器ADC080918第四章软件部分224.1简介KeilUvision2224.2主机程序设计264.3从机部分程序设计30第五章调试结果33总结34致谢36参考文献37附录138附录240 第一章绪论1.1研究背景及其目的意义近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统,目标是测试中不依靠相关的测试文件,由非成熟人员进行操作,并且测试任务是由测试设备高速自动控制完成的。由于该种数据采集测试系统具有高速性和一定的灵活性,可以满足众多传统方法不能完成的数据采集和测试任务,因而得到了初步的认可。大概在60年代后期,国内外就有成套的数据采集设备和系统多属于专用的系统。[11]20世纪70年代后期,随着微型机的发展,诞生了采集器、仪表同计算机溶为一体的数据采集系统。由于这种数据采集系统的性能优良,超过了传统的自动检测仪表和专用数据采集系统,因而获得了惊人的发展。从70年代起,数据采集系统发展过程中逐渐分为两类,一类是实验室数据采集系统,一类是工业现场数据采集系统。[11]20世纪80年代随着计算机的普及应用,数据采集系统得到了很大的发展,开始出现了通用的数据采集与自动测试系统。该阶段的数据采集系统主要有两类,一类以仪表仪器和采集器、通用接口总线和计算机组成。这类系统主要应用于实验室,在工业生产现场也有一定的应用。第二类以数据采集卡、标准总线和计算机构成,这一类在工业现场应用较多。20世纪80年代后期,数据采集发生了很大的变化,工业计算机、单片机和大规模集成电路的组合,用软件管理,是系统的成本减低,体积变小,功能成倍增加,数据处理能力大大加强。[11]20世纪90年代至今,在国际上技术先进的国家,数据采集系统已成功的运用到军事、航空电子设备及宇航技术、工业等领域。由于集成电路制造技术的不断提高,出现了高性能、高可靠的单片机数据采集系统(DAS)。数据采集技术已经成为一种专门的技术,在工业领域得到了广泛的应用。该阶段的数据采集系统采用模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速组成一个新的系统。[11]尽管现在以微机为核心的可编程数据采集与处理采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽内并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响。相较于数据采集板卡成本和功能的限制,单片机具多功能、高效率、高性能、低电压、低功耗、低价格等优点,而双单片机又具有精度较高、转换速度快、能够对多点同时进行采集,因此能够开发出能满足实际应用要求的、电路结构简单的、可靠性高的数据采集系统。这就使得以单片机为核心的数据采集系统在许多领域得到了广泛的应用。1.2国内外研究现状数据采集系统是通过采集传感器输出的模拟信号并转换成数字信号,并进行分析、处理、传输、显示、存储和显示。它起始于20世纪中期,在过去的几十年里,随着信息领域各种技术的发展,在数据采集方面的技术也取得了长足的进步,采集数据的信息化是目前社会的发展主流方向。各种领域都用到了数据采集,在石油勘探、科学实验、飞机飞行、地震数据采集领域已经得到应用。我国的数字地震观测系统主要采用TDE-124C型TDE-224C型地震数据采集系统。近年来,又成功研制了动态范围更大、线性度更高、兼容性更强、低功耗可靠性的TDE-324C型地震数据采集系统。该数据采集对拾震计输出的电信号模拟放大后送至A/D数字化,A/D采用同时采样,采样数据经DSP数字滤波处理后,变成数字地震信号。该数据采集系统具备24位A/D转化位数,采样率有50HZ、100HZ、200HZ。[11]由美国PASCO公司生产的“科学工作室”是将数据采集应用于物理实验的崭新系统,它由3部分组成:(1)传感器:利用先进的传感技术可实时采集技术可实时采集物理实验中各物理量的数据;(2)计算机接口:将来自传感器的数据信号输入计算机,采样速率最高为25万次/S;(3)软件:中文及英文的应用软件。[11]受需求牵引,新一代机载数据采集系统为满足飞行实验应用也在快速地发展。如爱尔兰ACRA公司2000年研发推出的新一代KAM500机载数据采集系统到了2006年。本系统采用16位(A/D)模拟数字变换,总采样率达500K/S,同步时间为+/-250ns,可以利用方式组成高达1000通道的大容量的分布式采集系统。1.3该课题研究的主要内容内容数据采集技术是信息科学的重要分支之一,它研究信息数据的采集、存储、处理以及控制等问题。它是对传感器信号的测量与处理,以微型计算机等高技术为基础而形成的一门综合应用技术。数据采集也是从一个或多个信号获取对象信息的过程。随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力等场合。数据采集是工业控制等系统中的重要环节,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统。  A/D转换器单片机单片机LED显示器键盘MAX232采集信号尽管现在以微机为核心的可编程数据采集与处理技术作为数据采集技术的发展方向得到了迅速的发展,并且适于通用微机(如IBMPC系列)使用的板卡级数据采集产品也已大量出现,组成一个数据采集系统简单到只需要一块数据采集卡,把它插在微机的扩展槽内,并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响,因为单片机功能强大、抗干扰能力强、可靠性高、灵活性好、开发容易等优点,使得基于单片机为核心的数据采集系统在许多领域得到了广泛的应用.传统的基于单片机的数据采集系统由于没有上位机的支持,不管采用什么样的数据存储器,它的存储容量都是有限的,所以不得不对存储的历史数据进行覆盖刷新,这样不利于用户对数据进行整体分析,因而也不能对生产过程的状况进行准确的把握。本系统采用下位机负责模拟数据的采集,从单片机负责采集八路数据,并应答主机发送的命令,上位机即主机是负责处理接受过来的数字量的处理及显示,主机和从机之间用RS-232进行通信。这样用户可以在上位机上编写各种程序对文件中的数据进行有效查询和分析,有利于工业过程的长期正常运行和检查。该系统采用的是AT89S52单片机,此芯片功能比较强大,能够满足设计要求。第二章数据采集2.1数据采集系统数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。70年代初,随着计算机技术及大规模集成电路的发展,特别是微处理器及高速A/D转换器的出现,数据采集系统结构发生了重大变革。原来由小规模集成的数字逻辑电路及硬件程序控制器组成的采集系统被微处理器控制的采集系统所代替。由微处理器去完成程序控制,数据处理及大部分逻辑操作,使系统的灵活性和可靠性大大地提高,系统硬件成本和系统的重建费用大大地降低。在该系统中需要将模拟量转换为数据量,而A/D是将模拟量转换为数字量的器件,他需要考虑的指标有:分辨率、转换时间、转换误差等等。而单片机是该系统的基本的微处理系统,它完成数据读取、处理及逻辑控制,数据传输等一系列的任务。在该系统中采用的是8051系列的单片机。双机通信的串行口可以采用RS232C标准接口,由芯片MAX232实现双机的通信。而数据的显示则采用的是LED数码管,该器件比较简单,在生活中接触也较多。数据采集系统一般由信号调理电路,多路切换电路,采样保持电路,A/D,单片机等组成。完成毕业设计所需要的系统框图如图2.1所示图2.1系统框图2.2方案论证2.2.1A/D模数转换的选择 A/D转换器的种类很多,就位数来说,可以分为8位、10位、12位和16位等。位数越高其分辨率就越高,价格也就越贵。A/D转换器型号很多,而其转换时间和转换误差也各不相同。(1)逐渐逼近式A/D转换器:它是一种速度快、精度较高、成本较低的直接式转换器,其转换时间在几微秒到几百微秒之间。(2)双积分A/D转换器:它是一种间接式的A/D转换器,优点是抗干扰能力强,精度比较高,缺点是数度很慢,适用于对转换数度要求不高的系统。(3)并行式A/D转换器:它又被称为flash(快速)型,它的转换数度很高,但她采用了很多个比较器,而n位的转换就需要2n-1个比较器,因此电路规模也极大,价格也很贵,只适用于视频A/D转换器等数度特别高的领域。鉴于上面三种方案,在价格、转换速度等多种标准考量下,在本设计选用的是逐渐逼近式A/D转换器——ADC0809.2.2.2单片机的选择单片机是一种面向大规模的集成电路芯片,是微型计算机中的一个重要的分支。此系统是由CPU、随即存取数据存储器、只读程序存储器、输入输出电路(I/O口),还有可能包括定时/计数器、串行通信口、显示驱动电路(LCD和LED驱动电路)、脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一个单块芯片上,构成了一个最小但完善的计算机任务。单片机要使用特定的组译和编译软件编译程序,在用keiluvision2把程序下载到单片机内。而本设计选用的是AT89C52.2.2.3串行口的选择该串行口我选用了标准RS-232C接口,它是电平与TTL电平转换驱动电路。常用的芯片是MAX232,MAX232的优点是:(1)一片芯片可以完成发送转换和接收转换的双重功能。(2)单一电源+5V供电(3)它的电路设计与连接比较简单而且功能齐全。2.2.4显示部分LED数码显示管是一种由LED发光二极管组合显示字符的显示器件。它使用了8个LED显示管,其中7个用于显示字符,1个用来显示小数点,故通常称之为八段发光二极管数码显示器。对LED数码显示器的控制可以采用按时间向它提供具有一定驱动能力的位选和段选信号。LED数码显示有动态扫描显示法和静态显示。在单片机中,为了节省硬件资源,多采用动态扫描显示法。2.2.5按键键盘是一种常见的输入设备,用户可以向计算机输入数据或命令。根据案件的识别方法分类,有编码键盘和非编码键盘两种。通过硬件识别的键盘称编码键盘;通过软件识别的键盘成为非编码键盘。非编码键盘有两种接口方法:一种是独立按键接口;另一种是矩阵式按键接口。1、独立按键接口在单片机中,如果所需的按键较少,可采用独立式键盘。每只按键接单片机的一条I/O线,通过对线的查询,即可识别各按键的状态。如图2.2所示。4只按键分别宇单片机的P1.0~P1.3I/O线上。无按键按下时,P1.0~P1.3线上均输入高电平。当某按键按下时,与其相连的I/O线将得到低电平输入。图2.2独立按键接口图2.矩阵式按键接口 在单片机中需要的按键较多时,通常把键排成矩阵形式,这样可以节省硬件资源。如对于20只按键接口,如采用按键独立方式,需要20个I/O口。如采用矩阵式按键方式,则只需要9个I/O口。如图2.3所示。单片机系统中的非编码式键盘程序主要由判别是否有键按下子程序、键的识别子程序、找到闭合键后,读入相应的键值,再转到相应的键处理程序几个部分组成。图2.3矩阵式按键接口图在该系统中所用到的按键有9个,所以采取矩阵式按键接口方式。第三章硬件部分3.1主机部分该系统是一个主从式多路数据采集系统,主机和从机均用单片机实现,它的主机部分负责数据处理和显示,主机和从机之间用RS-232进行通信。它由AT89S52、MAX232、LED数码显示器组成。3.1.1主机部分原理图设计由于主机要对从机有一个命令,所以用到按键,将按键接到单片机AT89C52的P3.4的端口上,按键的一端接地,当P3.4这条I/O线是一个低电平时,则表示按键按下。主机还要负责对采集到的数据进行处理和LED显示,用两个74HC573,一个与单片机AT89C52的P2.7口相连用于位选,一个与单片机AT89C52的P2.6口相连用于段选。单片机的P0口的8位数据线与用于段选的74HC573的D0~D7相连,用于数码管上具体的数字的显示。单片机P0口的八位数据线与用于位选的74HC573的D0~D7相连,用于在哪个数码管上显示。主机跟从机的连接,又涉及到一个串行口双机通信的问题,根据单片机双机通信距离、抗干扰性等要求,选择RS-232C串行接口方法,选择串行口MAX232来连接主机和从机,将MAX232的11、12脚分别与单片机AT89C52的P3.1,P3.2脚相连,再将MAX232上的13、14脚分别与db-9的3、6脚相连。单片机AT89C52的18、19脚与它的晶振电路相连,第9脚与它的复位电路相连。其原理图如图3.1所示 图3.1主机部分电路原理图3.1.2单片机(1)单片机的概述单片机是一种集成的电路芯块采用了超大规模技术把具有运算能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换及A/D转换器等电路集成到一块单片机上,构成一个最小然而很完善的计算机系统。这些电路能在软件的控制下准确快速的完成程序设计者事先规定的任务。总的而言单片机的特点可以归纳为以下几个方面:集成度高、存储容量大、外部扩展能力强、控制功能强、低电压、低功耗、性能价格比高、可靠性高这几个方面。[8]单片机按内部数据通道的宽度,可分为4位、8位、16位及32位单片机。它们被应用在不同领域里,8位单片机由于功能强大,被广泛的应用在工业控制、智能接口、仪表仪器等各个领域。8位单片机在中、小规模应用场合仍占主流地位,代表了单片机的发展方向,在单片机应用领域发挥越来越大的作用。随着移动通讯、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足发展。纵观单片机的发展过程,可以预示单片机的发展趋势:1、   微型单片化2、   低功耗CMOS3、与多品种共存4、可靠性和应用水平越来越高单片机有着微处理器所不具备的功能,它可以独立地完成现代工业控制所要求的智能化控制功能这就是单片机的最大特点。然而单片机又不同于单板机,芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果赋予它特定的程序,它便是一个最小的、完整的微机控制系统。它与单板机或个人电脑有着本质的区别,单片机属于芯片级应用,需要用户了解单片机芯片的结构和指令系统以及其它集成电路应用技术和系统设计所需要的理论和技术,用这样特定的芯片设计应用程序,从而使芯片具备特定的智能。[8](2)简介AT89C52AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。[8]AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模 式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。[8]其引脚图,如图3.2所示图3.2AT89C52的引脚图它一共有40个引脚,引脚又分为四类。其中有四个电源引脚,用来接入单片机的工作电源。工作电源又分主电源、备用电源和编程电源。还有两个时钟引脚XTAL1、XTAL2。还有由P0口、P1口、P2口、P3口的所有引脚构成的单片机的输入/输出(IO)引脚。最后一种是控制引脚,控制引脚有四条,部分引脚具有复位功能。综上所述,单片机的引脚特点是:1、       单片机多功能,少引脚,使得引脚复用现象较多。2、       单片机具有四种总线形式:P0和P2组成的16位地址地址总线;P0分时复用为8位数据总线;ALE、PSEN、RST、EA和P3口的INT0、INT1、T0、T1、WR、RD以及P1口的T2、T2EX组成控制总线;而P3口的RXD、TXD组成串行通信总线。89C52单片机的主要功能l 与MCS-51单片机产品兼容l 8K字节在系统可编程Flash存储器l 1000次擦写周期l 全静态操作:0Hz~33Hzl 三级加密程序存储器l 32个可编程I/O口线l 三个16位定时器/计数器l 八个中断源l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符 3.1.3LED数码显示器的应用原理简单的讲,LED数码显示器就是由发光二极管组成的,其内部结构如图3.3所示,LED数码显示器有两种连接方式:(1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极与输入端相连。如图3.4所示(2)共阳极接法。把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。如图3.5所示图3.2LED内部结构图3.3共阴极接法图3.4共阳极接法为了显示字符,要为LED显示器提供显示段码(或称字形代码),组成一个“8”字的七段,再加上1个小数点位,共计八段。各段位码位的对应关系如表3.1所示。[8]表3.1段位码对应关系段位码D7D6D5D4D3D2D1D0位码段dpgfedcba3.2从机部分该系统的从机负责A/D模数转换,并应答主机的命令,需要用到ADC0809、AT59C52,又由于它们两个的时钟频率不一样,所以又要用到一个74LS74。3.2.1从机的电路原理图设计该部分需要对模拟量进行一次模数转换,则要用到一个ADC0809,又因为它们之间的时钟频率不一样又需要用到一个74LS74对其进行一个二分频的工作,这个只需要将74LS74的第3根引脚与单片机AT89C52的第30根引脚相连,将74LS74的第9根引脚与ADC0809的时钟信号引脚相连。单片机AT89C52的P0口与ADC0809的D0~D7相连,而ADC0809的ADDA、ADDB、ADDC分别与P0口的低三位相连。其用到的MAX232与主机部分的电路连接方法一样。其电路图如3.5所示 图3.5从机部分电路设计图3.2.2单片机之间的通信(1)串口通信RS-232C计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。(1)接口的信号内容实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通讯中一般只使用3-9条引线。RS-232-C最常用的9条引线的信号内容。见表3.2所示(2)接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”,-5—-15V;逻辑“0”+5—+15V。噪声容量为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”,高于—3V的信号作为逻辑“1”。表3.2常用引线的信号内容引脚序号信号名称符号流向功能2发送数据TXDDTE->DCEDTE发送串行数据3接收数据RXDDTE<-DCEDTE接收串行数据4请求发送RTSDTE->DCEDTE请求DCE将线路切换到发送方式5允许发送CTSDTE<-DCEDCE告诉DTE线路已接通可以发送数据6数据设备准备好DSRDTE<-DCEDCE准备好7信号地信号公共地8载波检测DCDDTE<-DCE表示DCE接收到远程载波20数据终端准备好DTRDTE->DCEDTE准备好 22振铃指示RIDTE<-DCE表示DCE与线路接通,出现振铃(3)接口的物理结构RS-232C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端。一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。两个DB-9的连接如图3.6所示图3.6两个DB-9的连接图(4)传输电缆长度由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺。(2)简介MAX232MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电,可以实现TTL电平与RS-232C电平相互转换的IC芯片。MAX内部结构图如图3.7所示 图3.7MAX232的内部结构图内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)。引脚结构图如图3.8所示: 图3.8MAX232的引脚结构图其中引脚1-6(C1+、V+、C1_、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应电解电容即可;引脚7-10和引脚11-14构成两组TTL信号电平与RS-232C信号电平的转换电路,对应引脚可直接与单片机串行口的TTL电平引脚和PC的RS-232C电平引脚相连。单片机与MAX232的连接如图3.9所示图3.9单片机与MAX232的连接图3.2.3模数转换器ADC0809在我们所测控的信号中军事连续变化的物理量,而要对这些信号进行处理,则需要将其转换为数字量,A/D转换器就是为了将连续变化的模拟量转换成计算机能接受的数字量。按模拟量转换成数字量的原理可以分为3种:双积分式、逐次逼近式及并行式A/D转换器。而该系统选用的是ADC0809,下面就具体的介绍一下ADC0809的工作原理。1、   C0809的介绍ADC0809是八通道的八位逐次逼近式A/D转换器。由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关。由C、B、A的编码来决定所选的模拟通道。转换时间为100us。转换误差为1/2LSB。它的引脚的排列及其功能,其引脚图见3.10 图3.10ADC0809的引脚图IN7~IN0:八个通道的模拟输入量。ADDA、ADDB、ADDC:模拟通道地址线。当CBA=000时,IN0输入,当CBA=111时,IN7输入。ALE:地址锁存信号。START:转换启动信号,高电平有效。D7~D0:数据输出线。三态输出,D7是最高位,D0是最低位。OE:输出允许信号,高电平有效。CLK:时钟信号,最高频率为640KHZ。EOC:转换结束状态信号。上升沿后高电平有效。Vcc:+5V电源。Vref:参考电压。2、ADC0809时序图及其接口电路ADC0809的时序图如图3.11所示:图3.11ADC0809的时序图其工作过程是:ALE的上升沿将A、B、C端选择的通道地址锁存到8位A/D转换器的输入端。START的下降验启动8位A/D转换器进行转换。A/D转换开始使EOC端输出低电平。A/D转换结束,EOC输出高电平。该信号通常可作为中断申请信号。OE为读出数据允许信号。OE端为高电平时,可以读出转换的数字量。硬件电路设计时,需根据时序关系及软件进行设计。ADC0809与AT89C52单片机的接口方式,如图3.12所示: 图3.12ADC0809与单片机的连接图由于ADC0809具有输出3态锁存器,其八位数据输出引脚可直接与数据总线相连。地址译码引脚A、B、C分别与地址总线低三位A0、A1、A2相连,以选通IN0~IN7中的一个通道。在启动A/D转换时,由单片机的P3.4控制A/D转换器的地址锁存和转换启动,由于ALE和START连在一起,因此AD0809在锁存通道的同时,也启动了A/D转换器。在读取转换结果时,用低电平的读信号RD,产生的正脉冲作为OE信号,用以打开三态输出锁存器。将转换结果输出。而低电平的写信号WR则表示转换结束状态信号。第四章软件部分4.1简介KeilUvision2Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些组合在一起。Keil有以下几个特点:1、                         全功能的源代码编辑器;2、                         器件库用来配置开发工具设置;3、                         项目管理器用来创建和维护用户的项目;4、                         集成的MAKE工具可以汇编、编译和连接用户嵌入式应用;5、                         所有开发工具的设置都是对话框形式的;6、                         真正的源代码级的对CPU和外围器件的调试器;7、                         高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信其使用的过程为:首先打开KeilUvision2,在KEIL系统中,每做个独立的程序,都视为工程。首先从菜单中的工程中“新建工程”,建立我们将要做的工程项目: 接下来Keil环境要求我们为12工程选择一个单片机型号;我们选择Ateml公司的89C51(虽然我使用的是AT89S52,但由于89S51与89C51内外部的结构完全一样,所以这里仍然用“89C51”)。“确定”后工程就算建立好了。立了工程项目以后现在就要为工程添加程序,点击“文件”中的新建,新建一个空白文档;这个空白文档就是我们编写单片机程序的场所。在这里可以进行编辑、修改等操作。根据题意,在文档中写入代码,写完后再检查一下,然后保存,然后再将保存好的文档添加到工程中,具体做法如下: 程序文件添加完毕后,对其进行编译当前程序、编译修改过的文件并生成应用程序、重新编译所有文件并生成应用程序后,再点击TARGET,则其页面为: 再点击图案上的Output键接下来就是点击上图中的selectfolderforobjects键,得到下图将其产生的HEX文件存储在E盘zh文件夹中。最后一步就是利用STC-ISP将HEX文件烧录到单片机里。4.2主机程序设计 本软件系统有一个主程序,五个子程序,五个子程序分别为向串口发送数据子程序putc_to_serialport()、键盘扫描子程序Keys_Scan()、LED数据显示子程序Display_Result(intd)、延时子程序Delay()、主机串口接受中断子程序Serial_INT()interrupt4。(1)主程序主程序对系统进行初始化,主要是进行定时/计数的初始化,然后调用键盘扫描程序Keys_Scan(),再根据按下的键来调用向串口发送数据子程序putc_to_serialport()将相应的数据发送给串行口。当没有键按下时,则送一个数F给LED显示器。其流程图见图4.1(2)向串口发送数据子程序putc_to_serialport()该程序首先将数据发送到串行口,当T1=0时,表明传送结束。其流程图如4.2所示(3)键盘扫描子程序Keys_Scan()该程序是先将行选好,然后再选定列就可以确定到具体的哪一个按键。其流程图如图4.3所示(4)LED显示程序Display_Result(intd)该子程序用的数码管动态显示方式。先将单片机的P2.7口选通进行位选,然后将位选的值发送给单片机P1口。接着将单片机的P2.6口选通进行段选,然后将要显示的数字的值发送给P0口。然后调用延时,接着将P2.7、P2.6口置0,下面是重复上面的过程,直到要显示的数字全部显示在数码上。其流程图如4.4所示。(5)主机串口接受中断子程序Serial_INT()interrupt4。当RI=1时,接受串口过来的数据,并对该数据进行X*05H/0FFH的处理,接下来用处理过的数据调用LED显示程序Display_Result(intd)。如图4.4所示开始初始化启动定时器1开中断再根据扫描到的键盘号,发送相应的数据给串口,调用一个Display()在LED上显示F判断是否有按键按下YN图4.1主程序 数据发送到串行口当T1=0时,则传送结束TI=0图4.2向串口发送数据子程序putc_to_serialport() 开始先将低4位置1选定4行然后判断该按键发生在哪一列是否有按键按下YN将列数赋给KeyNoKeyNo=16将高4位置1选定4列再判断发生在那一行0—3行分别附加起始值0,4,8,12返回图4.3键盘扫描子程序Keys_Scan()开始显示个位显示十分位显示百分位显示小数点结束 图4.4LED显示程序Display_Result(intd)开始接受数据对数据进行相关处理调用Display_Result(m)图4.5主机串口接受中断子程序Serial_INT()interrupt44.3从机部分程序设计该部分的程序包括一个主程序、三个子程序,三个子程序分别为从机串口接受中断函数Serial_INT()interrupt4、向串口发送数据子程序putc_to_SerialPort(ucharc)和模数转换子程序ADCON。(1)主程序主程序是进行系统的初始化,由于主从两个单片机要进行通信,所以两个单片机的初始化应该是相同的,并调用A/D转换。其流程图如图4.6所示(2)从机串口接受中断函数Serial_INT()interrupt4因为发送完成和接受到新字节都会触发串口中断,因此串口中断程序里用if(RI)来表示接受中断,然后将RI清0。再判断接受到的数据第4位是否为1,如果为1,则按照主机发送过来的通道进行采集,如果为0,则调用循环采集程序。如图4.7所示(3)模数转换子程序ADCON先要选通ADC0809,又因为ADC0809具有8个通道,利用For循环进行8次采集,接下来选择转换通道,F8H~FFH用以选择输入模拟信号的通道IN0~IN7的选择,首先从第一个通道开始,然后执行一条读取转换结果的指令,再将转换得到的结果送给串行口,再依次循环,将通道号自增1,直到8个通道全部转换完。其流程图如图4.8所示(4)向串口发送数据子程序putc_to_SerialPort(ucharc)程序首先将数据发送到串行口,当T1=0时,表明传送结束。如图4.2所示 开始初始化启动定时器1开中断调用Adcon()结束图4.6主程序开始接收串口数据判断接受到的数据第4位是否为1YN按选定的通道号采集选定循环采集方式结束图4.7从机串口接受中断函数Serial_INT()interrupt4 开始选定通道号开始转换转换结束将得到的数据发送给串口结束图4.8模数转换子程序ADCON第五章调试结果这个系统是一个主从式的数据采集系统。系统调试以程序为主,硬件调试应先检测电路的焊接是否正确,然后用外用表检测或通电检测其是否有短路或断路。软件调试包括调试程序和对硬件准确性的调试。在整个系统中,主机用到了9个按键,按键0按下后,发送一个00H的数据给从机,而从机接收到这个信号就开始调用一个循环采集方式,然后从机采集完数据后再将转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;按键1-8用于选择采集方式,分别送相应的采集线路的通道号给从机,然后再将从机转换好的数据和采集线路的通道号发送给主机并用LED数据显示器显示出来;当主机没有按键按下时,则发送一个数0给LED。参考文献[1]严洁.单片机原理及其接口技术.机械工业出版社,2010,65-105[2]范红刚.51单片机自学笔记.北京航空航天大学出版社,2009[3]高云.基于MSP430的温室多路数据采集系统.农机化研究,2009,No.8[4]常铁原,王欣,陈文军.多路数据采集系统的设计.电子技术应用,2008,No.11[5]叶红海,李丽敏.基于单片机的多路数据采集系统的设计与实现.2008,No.4[6]彭伟.单片机C语言程序设计实训100例.电子工业出版社,2009,46-48,104-110[7]杨居义,杨晓琴,王益斌等.单片机课程设计指导.清华大学出版社,2009,135-141[8]刘刚,秦永左,朱杰斌.单片机原理及应用.北京大学出版社,2006,76-98,134-155[9]林祝亮,武林,杨金华.基于双单片机的多路数据采集系统设计.仪器仪表学报,2006,No.6[10]元增民,张文希.单片机原理与应用基础.国防科技大学出版社,2006,205-266[11]王琳,商周,王学伟.数据采集的发展及应用.电测与仪表,2004,No.464[12]V.Schmidt,Control,dataacquisition,andremoteparticipationforfusionresearch,FusionEng.Des.81(2006)1702–1712.[13]A.Neto,H.Fernandes,A.Duarte,Firesignal-Dataacquisitionandcontrolsystemsoftware.FusionEngineeringandDesign82(2007)1359-1364.附录1系统硬件图附录2主机部分程序 #include#defineucharunsignedchar#defineuintunsignedintsbitk1=P3^4;sbitsmgd=P2^6;sbitsmgk=P2^7;ucharPre_KeyNo=16,KeyNo=16;ucharcodeLEDData[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71}/*****延时子程序*****/voidDelay(uintx){uchari;while(x--)for(i=0;i<120;i++);}/**************LED显示子程序***************/voidDisplay_Result(intd){smgk=1;P0=0X7C;smgd=1;P0=LEDData[d/100];//显示百位Delay(5);smgd=0;smgk=0;smgk=1;P0=0X7D;smgd=1;P0=LEDData[d/10%10];//显示十位Delay(5);smgd=0;smgk=0;P0=0x7E;smgd=1;P0=LEDData[d%10];//显示个位Delay(5);smgk=0;smgd=0;smgk=1;P0=0X7C;smgd=1;P0=0x80;//显示小数点Delay(5);smgd=0; smgk=0;}/************键盘扫描子程序**************/voidKeys_Scan(){ucharTmp,An;P3=0XF0;//低四位置1,放入4行Delay(1);An=P3^0XF0;//按键后11110000将变成XXXX0000,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1Tmp=An>>4;//该表达式将高4位移到低四位swith(Tmp)//判断按键发生在哪列{case1:KeyNo=0;break;case2:KeyNo=1;break;case4:KeyNo=2;break;case8:KeyNo=3;break;default:KeyNo=16;//无键按下}P3=0X0F;//高4位置0,放入4列Delay(1);Tmp=P3^0xF0;//按键后00001111将变成0000XXXX,X中有一个为0,3个仍为1,而异或操作会把3个1变成0,唯一的0变成1switch(Tmp)//0—3行分别附加起始值0,4,8,12{case1:KeyNo+=0;break;case2:KeyNo+=4;break;case4:KeyNo+=8;break;case8:KeyNo+=12;break;}}/********向串口发送数据子程序*********/voidputc_to_serialport(ucharC){SBUF=C;while(T1==0);TI=0;}Display(){smgK=1;P1=0X01;Smgd=1;P0=OXOF;} /*******主程序*******/voidmain(){P0=0x00;SCON=0x50;//串口工作于方式1TMOD=0x20;//T1工作于模式2PCON=0x00;//波特率不加倍TH1=0xFD;//波特率为9600TL1=0xFD;TI=RI=0;TR1=1;//启动定时器1IE=0x90;//允许串口中断while(1){Delay(100);if(P3!=0X0F)Keys_Scan();swith(KeyNo){case0:putc_to_serialport(0X00);break;case1:putc_to_serialport(0XF8);break;case2:putc_to_serialport(0XF9);break;case3:putc_to_serialport(0XFA);break;case4:putc_to_serialport(0XFB);break;case5:putc_to_serialport(0XFC);break;case6:putc_to_serialport(0XFD);break;case7:putc_to_serialport(0XFE);break;case8:putc_to_serialport(0XFF);break;case16:Display()}}}/*******主机串口接受中断函数*********/voidSerial_INT()interrupt4{if(RI) {inti,j,m;longintn;ucharc;c=SBUF;i=c*0x05;j=i*0x10;n=j*0x10;m=n/0xFF;Display_Result(m);}从机部分程序#include#defineucharunsignedchar#defineuintunsignedintsbitST=P3^2;sbitEOC=P3^6;sbitOE=P3^7;voidDelay(uintx){uchari;while(x--)for(i=0;i<120;i++);}/********向串口发送数据子程序********/voidputc_to_SerialPort(ucharc){SBUF=c;while(TI==0);TI=0;}/*********A/D转换子程序*********/voidAdcon(){intj,m=0XF8;ucharn;for(j=0,P0=m;j++;j<8){ST=0;ST=1;ST=0;while(EOC==0);OE=1;n=P1;putc_to_SerialPort(n);m++;}} /*******主程序*******/voidmain(){TMOD=0X20;//T1工作于模式2SCON=0X50;//串口工作于方式1PCON=0X00;//波特率不加倍TH1=0XFD;TL1=0XFD;TI=RI=0;IE=0X90;//允许串口中断TR1=1;//启动定时器1while(1){Delay(100);Adcon();}}/********从机串口接受中断函数********/voidserial_INT()interrupt4{if(RI){RI=0;inti,c;ucharval;c=SBUF;i=c&0X08;//判断接收到的第四位是否为1,如果为1,则按选定的通道采集,否则就是循环采集switch(i){case0:Adcon();break;case8:P0=c;ST=0;ST=1;ST=0;while(EOC==0);OE=1;val=P0;putc_to_SerialPort(val);break;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭