基于单片机的数据采集系统设计本科生毕业论文.doc

上传人:知****量 文档编号:43141685 上传时间:2022-09-16 格式:DOC 页数:59 大小:832KB
返回 下载 相关 举报
基于单片机的数据采集系统设计本科生毕业论文.doc_第1页
第1页 / 共59页
基于单片机的数据采集系统设计本科生毕业论文.doc_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《基于单片机的数据采集系统设计本科生毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的数据采集系统设计本科生毕业论文.doc(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中南大学 本科生毕业论文(设计)题 目 基于单片机的数据采集系统设计学生 屠 超 指导教师 邓联文 副教授 学 院 物理科学与技术学院 专业班级 电子工程0701班 完成时间2009年4月28日58 / 59目 录目录1摘要2ABSTRACT31 绪论41.1 数据采集器概述41.2 数据采集的发展历程41.3 数据采集的选择与应用62 开发环境72.1 画图工具 Protel99软件72.2 编程工具 KEIL C5182.3 烧写器103设计过程113.1 系统功能与结构简介113.2 硬件芯片选择与功能简介123.3 原理介绍183.4 软件设计203.5 PC机上数据接收软件制作213

2、.6 调试过程253.7 系统精度274 结论与展望284.1 结论284.2 展望28致29参考文献30附录一外文翻译31附录二程序48摘 要随着信息领域各种技术的发展,在数据采集方面的技术也取得了长足的进步,采集数据的信息化是目前社会的发展主流方向。各种领域都用到了数据采集,在石油勘探、地震数据采集领域已经得到应用。随着测控技术的迅猛发展,以嵌入式计算机为核心的数据采集系统己经在测控领域中占到了统治地位。数据采集系统是将现场采集到的数据进行处理、传输、显示、存储等操作。数据采集系统的主要功能是把模拟信号变成数字信号,并进行分析、处理、存储和显示。国大大小小很多公司多开发了数据采集器和卡之类

3、的产品,这使信息的数字化提供了极大的方便。本次毕业设计课题,数据采集器制作,是利用ATMEL公司的89C51单片机和AD0809芯片做一个采集模拟电压信号,转换为数字信号,再由单片机经过串口发送给PC机处理,另外三个数码管LED显示采集的数字信息。关键词:单片机;数据采集;信号处理;AD0809芯片ABSTRACTAlong with the development of information field various technologies, the technology in the aspect of data collection has also gotten rapid ad

4、vance, gather the informative process of data is now society develop the direction of main stream. Various fields have used data collection , in petroleum exploration and seismic data collection field have gotten application. As measuring to control technical swift development, with embedded compute

5、r for key data collection system Ji go through in measure to control field in have taken dominance position. Data collection system is to carry out the data that the collection on-the-spot goes to to handle , transmits and shows , stock etc. operation. The major function of data collection system is

6、 simulated signal become digital signal, and analyse handling , stock and show. Domestic size many companies have developed data collection ware and the product that blocks and so on , this makes the digitlization of information have offered maximum convenience. This graduated design program, data c

7、ollection ware produce is the only flat machine of 89 C51 that uses the company of ATMEL with AD0809 chip do a collection simulated voltage signal, conversion number word signal passes string mouth again by only flat machine to dispatch to the handling of personal computer, additionally, 3 number pi

8、pe LEDs show the digital information of collection. Keywords: Only flat machine;Data is gathered;Handle1绪 论1.1 数据采集器概述数据采集系统,正如名字所暗示的,是一种用来采集信息成文件或分析一些现象的产品或过程。在最简单的形式中,技术人员将烤箱的温度记录在一纸上就是数据采集。随着技术的发展,通过电子设备,这个过程已经得到简化和变得比较精确、多用途和可靠。设备从简单的存储器发展到复杂的电脑系统。数据采集产品像聚焦点一样为系统服务,和一系列产品一起,诸如传感器显示温度、水流、程度或者过程。数

9、据采集技术在过去30到40年以来已经取得了很大的飞跃。举例来说,在 40 年以前,在一个著名的学院实验室中,为追踪用青铜做的坩埚中的温度上升情况的装置是由热电偶、继电器、查询台、一捆纸和一支铅笔。今天的大学学生很可能在PC机上自动处理和分析数据,有很多种可供你选择的方法去采集数据。至于选择哪一种方法取决于多种因素,包括任务的复杂度、你所需要的速度和精度、你想要的证据资料等等。无论是简单的还是复杂的,数据采集系统都能够运行并发挥它的作用。1.2 数据采集的发展历程1.2.1 铅笔和纸早期的铅笔与纸的旧方式对于一些情形仍然是可行的,而且它便宜、易获得、快速和容易开始。而你所需要的就是捕捉到多路数字

10、信息(DMM),然后开始用手记录数据。不幸的是这种方法容易发生错误、采集数据变慢和需要太多的人工分析。此外,它只能单通道采集数据;但是当你使用多通道DMM时,系统将很快变得非常庞大和笨拙。精度取决于誊写器的水平,并且你可能需要自己动手依比例输入。举例来说, 如果DMM 没有配备处理温度的传感器,旧需要动手找比例。考虑到这些限制,只有当你需要实行一个快速实验时,它才是一个可接受的方法。1.2.2长条图表记录仪后来出现了多种版本的长条图表记录仪允许你从多个输入取得数据。他们提供数据的长备纸记录,因为数据是图解的格式,他们易于现场采集数据。一旦建立了长条图表记录仪,在没有操作员或计算机的情况下,大多

11、数记录仪具有足够的部智能运行。缺点是缺乏灵活性和相对的精度低,时常限制在百分点。你能很清楚地感觉到与笔只有小的改变。在多通道较长时间的监控,记录仪能发挥很好的作用,除此之外,它们的价值得到限制。举例来说,他们不能够与另外的装置轮流作用。其他的顾虑就是笔和纸的维护,纸的供给和数据的存储,最重要的是纸的滥用和浪费。然而,记录仪相当容易建立和操作,为数据快速而简单的分析提供永久的记录。1.2.3 PC机插件卡片PC机插件卡片是单板测量系统,它利用ISA或PCI总线在PC机扩大插槽。它们时常具有高达每秒1000的阅读速率。8到16通道是普遍的,采集的数据直接存储在电脑里,然后进行分析。因为卡片本质上是

12、计算机的一部分,建立测试是容易的。PC机卡也相对的便宜,一部分地,因为他们以来主机PC去提供能源、机械附件和使用界面。1.2.4 数据采集器与国外研究现状数据采集器是典型的单机仪器,一旦配备它们,就能测量、记录和显示数据而不需要操作员或计算机参与。它们能够处理多信号输入,有时可达120通道。精度可与无与伦比的台式 DMMs 匹敌,由于它在22字、 0.004个百分率的精度围运转。一些数据采集器有能力按比例测量,检查结果不受使用者定义的限制,而且输出为控制作信号。近十几年来,随着移动通信技术飞速发展,越来越多的信息采集和远程控制系统采用了无线数据传送技术,它与有线数传相比主要有布线成本低、安装简

13、便、便于移动的优点,而且随着互联网技术的迅猛发展和快速普与,越来越多的基于单片机为微控制器的的测控设备或智能仪器仪表都需要通过互联网上进行数据交换或传输数据。1.3 数据采集的选择与应用在缺点上,PC机插件卡片时常只有12字的容量,因此你不能察觉输入信号的小变化。此外,PC机的电子环境经常很容易发出噪声、产生高速率的时钟和总线噪声,电子接触面限制PC机插件卡片的精度。这些插件卡片也测量一定围的电压。为了测量其他输入信号,如电压、温度和阻力,你也许需要一些外部信号监测的器件。其它关心包括复杂的校正和全部的系统成本,尤其如果你需要购买额外信号监测器件或用PC机适应插件卡片。把这些考虑进去,如果你的

14、需要在卡片的能力和限制围变动,PC机插件卡片给数据采集提供吸引人的方法。使用数据采集器的一个好处就是他们的部监测信号。大部分能够直接地测量若干不同的输入信号,而不需要额外的信号监测器件。一个通道能够监测热电偶、温阻器(RTD)和电压。热电偶为准确的温度测量提供具有参考价值的补偿,是很典型的配备了多路插件卡片。设智能数据采集器帮助你设定测量周期和具体指定每个通道的参数。一旦你全部设定好,数据采集器就如同无与伦比的装置运行。它们存储的数据分布在存中,能够容纳500000或更多的阅读量。与PC机连接容易将数据传送到电脑进行进一步的分析。大多数数据采集器可设计为柔性和简单的组态和操作, 而且经由电池包

15、裹或其它方法,多数提供远程位置的操作选项。靠 A/ D 转换技术,一定的数据采集器阅读的速率比较低,尤其是跟PC机插件卡片比较。然而,每秒250的阅读速率比较少见。要牢记正在测量的许多现象本质上是物理的,如温度、压力和流量,而且一般有较少的变动。此外,因为数据采集器的监测精度,多量且平均阅读没有必要,就像它们经常在PC记插件卡片一样。在前面的分析基础上,现在开始发展数据采集器,数据采集器是采集数据的理想选择。2 开发环境2.1 Protel99软件在这里我用了PROTEL99设计原理图和画PCB板。Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从

16、电学概念设计到输出物理生产数据,以与这之间的所有分析、验证和设计数据管理。因而今天的Protel最新产品已不是单纯的PCB(印制电路板)设计工具,而是一个系统工具,覆盖了以PCB为核心的整个物理设计。 最新版本的Protel软件可以毫无障碍地读Orcad、Pads、Accel(PCAD)等知名EDA公司设计文件,以便用户顺利过渡到新的EDA平台。Protel99 SE共分5个模块,分别是原理图设计、PCB设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。 以下介绍一些Protel99SE的部分最新功能:1、可生成30多种格式的电气连接网络表;2、强大的全局编辑功能;3、在

17、原理图中选择一级器件,PCB中同样的器件也将被选中; 4、同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络; 5、既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理图和PCB在设计上的一致性; 6、满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5);7、支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层;8、强大的“规则驱动”设计环境,符合在线的和批处理的设计规则

18、检查; 9、智能覆铜功能,覆铀可以自动重铺; 10、提供大量的工业化标准电路板做为设计模版; 11、放置汉字功能; 12、可以输入和输出DXF、DWG格式文件,实现和AutoCAD等软件的数据交换; 13、智能封装导航(对于建立复杂的PGA、BGA封装很有用); 14、方便的打印预览功能,不用修改PCB文件就可以直接控制打印结果; 15、独特的3D显示可以在制板之前看到装配事物的效果; 16、强大的CAM处理使您轻松实现输出光绘文件、材料清单、钻孔文件、贴片机文件、测试点报告等; 17、经过充分验证的传输线特性和仿真精确计算的算法,信号完整性分析直接从PCB启动; 18、反射和串扰仿真的波形显

19、示结果与便利的测量工具相结合; 19、专家导航帮您解决信号完整性问题。2.2 编程工具 KEIL C51在这里我用C语言编写程序,用的编程工具就是广受开发者喜爱的KEIL c51开发软件,他支持的功能强,适合很多公司的芯片。KeilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil

20、C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51与A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由O

21、H51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。图1 C51工具包整体结构图当设计一个小的嵌入式系统时,一般我们都用汇编语言在很多工程中,这是一个很好的方法因为代码一般都不超过8K,而且都比较简单。如果硬件工程师要同时设计软件和硬件,经常会采用汇编语言来做程序。我的经验告述我,硬件工程师一般不熟系像C一类的高级语言。使用汇编的麻烦在于它的可读性和可维护性,特别当程序没有很好的标注的时候,代码的可重用性也比较低,如果使用C 的话可以很好的解决这些问题。用C 编写的程序,因

22、为C 语言很好的结构性和模块化,更容易阅读和维护而且由于模块化,用C 语言编写的程序有很好的可移植性,功能化的代码能够很方便的从一个工程移植到另一个工程,从而减少了开发时间,用C 编写程序比汇编更符合人们的思考习惯,开发者可以更专心的考虑算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。使用像C 这样的语言程序员不必十分熟系处理器的运算过程,这意味着对新的处理器也能很快上手不必知道处理器的具体部结构。使得用C 编写的程序比汇编程序有更好的可移植性,很多处理器支持C 编译器,所有这些并不说明汇编语言就没了立足之地。很多系统特别是实时时钟系统都是用C 和汇编语言联合编程,对时钟要求很严格时

23、使用汇编语言成了唯一的方法,除此之外根据我的经验包括硬件接口的操作都应该用C 来编程,C 的特点就是可以使你尽量少地对硬件进行操作是一种功能性和结构性很强的语言。2.3 烧写器在这次设计中我用了炜煌编程器的TOP851型编程器,它具有体积小巧,功耗低,可靠性高的特点,是专为开发51系列单片机和烧写各类存储器而设计的普与机型。TOP851采用RS232串口与PC机连接通信,自动检测元件是否插好,如果插错了位置有提示,避免无谓的损失。有过电流保护,超过限制的电流时,在0.1秒切断电源,可以有效的保护编程器不受损害。电源效率高,静态电流只有50MA,机器不会过热。全中问操作界面软件,可自动探测厂家和

24、型号。使用时包括硬件安装和软件安装。3 设计过程3.1系统功能与结构简介我设计的数据采集器主要是采集05V模拟电压信号,现在大部分的模拟量多可以用各种器转换成电压模拟信号。系统把模拟的电压信号转换成数字数据,由单片机串口经过TTL电平转换后,发送到PC机由PC机处理采集的信号,另外3个数码管LED显示数字电压的大小,两个发光二极管指示工作状态。可以通过八个按钮选择八个采集通道,一个按钮控制转换开始或结束,系统可复位。系统结构图:图2 系统结构图3.2 硬件芯片选择与功能简介主控制芯片使用AT89C51芯片,转换模块使用ADC0809模数转换芯片,用双D触发器74LS74四分频89C51的ALE

25、信号输出脚2MHz为500KHz为ADC0809提供时钟信号,串口转换芯片MAX232,另外用74LS244驱动LED数码管。3.2.1 AT89C51芯片AT89C51是美国ATMEL公司生产的底电压,高性能CMOS 8位单片机,片含4K bytes的可反复擦写的FLASH只读程序存储器和128 bytes 的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。引脚图:图3 89C51引脚图特性:

26、80C51 核心处理单元,4k 字节FLASH 89C51X2,128 字节RAM 89C51X2,布尔处理器。全静态操作,12 时钟操作可选6 个时钟通过软件或并行编程器,存储器寻址围,64K 字节ROM 和64K 字节RAM,电源控制模式:时钟可停止和恢复、空闲模式、掉电模式。两个工作频率围:6 时钟模式时为0 到20MHz,12 时钟模式时为0 到33MHz。复位:在振荡器工作时,将RST 脚保持至少两个机器周期高电平12 时钟模式为24 个振荡器周期,6 时钟模式为12 振荡器周期可实现复位。为了保证上电复位的可靠,RST 保持高电平的时间至少为振荡器启动时间通常为几个毫秒再加上两个机

27、器周期。复位后,振荡器以12 时钟模式运行当已通过并行编程器设置为6 时钟模式时除外。低功耗模式:时钟停止模式:静态设计使时钟频率可以降至0MHz(停止)。当振荡器停振时,RAM 和SFR 的值保持不变。该模式允许逐步应用并可将时钟频率降至任意值以实现系统功耗的降低。如要实现最低功耗则建议使用掉电模式。空闲模式:CPU 进入睡眠状态,但片的外围电路仍然保持工作状态。正常操作模式的最后一条指令执行进入空闲模式。空闲模式下CPU 容片RAM 和所有SFR 保持原来的值。任何被使能的中断(此时,程序从中断服务程序处恢复并继续执行)或硬件复位(与上电复位使用一样的方式启动处理器)均可终止空闲模式。掉电

28、模式:为了进一步降低功耗,通过软件可实现掉电模式。该模式中,振荡器停振并且在最后一条指令执行进入掉电模式。降到2.0V 时,片RAM 和SFR 保持原值,在退出掉电模式之前Vcc 必须升至规定的最低操作电压。3.2.2 ADC0908 芯片AD0809 的逻辑结构:ADC0809 是8 位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。图

29、4 ADC0809 部结构AD0809 的工作原理:IN0IN7:8 条模拟量输入通道;ADC0809 对输入模拟量要求:信号单极性,电压围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条;ALE 为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B 和C 为地址输入线,用于选通IN0IN7 上的一路模拟量输入。通道选择表如下表所示。CBA 选择的通道:表一CBAINCBAIN000

30、IN0100IN4001IN1101IN5010IN2110IN6011IN3111IN7数字量输出与控制线:11 条.ST 为转换启动信号。当ST 上跳沿时,所有部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0 为数字量输出线。CLK为时钟输入信号线。因ADC0809的部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ

31、,VREF(),VREF()为参考电压输入。ADC0809 应用说明:(1)ADC0809 部带有输出锁存器,可以与AT89S51 单片机直接相连。(2)初始化时,使ST 和OE信号全为低电平。(3)送要转换的哪一通道的地址到A,B,C 端口上。(4)在ST端给出一个至少有100ns 宽的正脉冲信号。(5)是否转换完毕,我们根据EOC 信号来判断。(6)当EOC变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。3.2.3 74LS74 芯片74LS74为带预置和清除端的两组D 型触发器,在这次的系统设计中,它为AD0809芯片提供500KHz的时钟信号,这是利用了触发器的工作。一

32、个触发器可以2分频,二个触发器连接可提供4分频。原理其主要电特性的典型值如下:表二引出端符号:逻辑图:图 5 74LS74逻辑图3.2.4 MAX232芯片MAX232芯片为串口TTL电平转换芯片。接口电路为:图6 MAX232连接图3.2.5 74LS244 芯片74LS74为八同相三态缓冲器/线驱动器。这里主要用于驱动共阴数码管LED的显示驱动。结构图和功能图为:图7 74LS2443.3 原理介绍首先用PROTEL软件设计的原理图为:图8 系统原理图系统总的功能原理,系统开机,89C51芯片工作,由P2.1控制发光二极管1指示系统工作状态,亮表示工作,暗表示不工作由P3.5控制发光二极管

33、2指示AD0809工作状态,亮表示工作,暗表示不工作。P2.0控制转换开始和结束,P1.0P1.7控制八个按钮用来选择模拟输入转换通道,另外一个复位按钮。由P0口输入AD0809芯片的转换数据结果,P2.2、P2.3、P2.4口接AD0809芯片的ST、EOC、OE3个控制信号引脚,用于控制AD0809工作。P2.5、P2.6、P2.7接AD0809的A、B、C控制转换通道选择,另外89C51的LEA。数码管方面,有P0口输出数据,P3.2、P3.3、P3.4控制位选。和微机接口方面,89C51的RX、TX接MAX232,MAX232的13和14引脚接DB9的3、2引脚组成串口通信接线。串口通

34、信原理,单片机和PC机通信要经过TTL电平转换。这里串行通信使用RS-232标准,它本是美国电子工业协会的推荐标准,现已在全世界的围广泛采用。RS-232实际上是串行通信的总线标准。它用-3V到-25V表示逻辑“1”,+3V到+25V表示逻辑“0”。这里只用3个引脚构成串口通信,2脚发送数据TXD,3脚接收数据RXD和5脚接地。单片机的串口通信,在单片机芯片中,UART已集成在其中,做为组成部分,构成一个串行口,这个串行口是全双工的。单片机串口通信的波特率设置是有单片机的定时记数器1提供时钟。串口通信用到串口发送缓冲寄存器SBUF和与串行通信控制寄存器SCON。串口有3种工作方式,这里采用工作

35、方式1。串口工作方式1的原理为:TxD 脚发送,RxD 脚接收,每次数据为10 位,一个起始位0 ,8 个数据位,LSB 在前与一个停止位1,当接收数据时停止位存于SCON 的RB8 波特率可变由定时器1 溢出速率决定。串行口工作于模式1时,传输的是10位;1 位起始位0,8位数据低位在先与一位停止位1。由RxD接收,TxD发送。接收时,停止位存入SCON RB8。80C51 波特率取决于定时器1的溢出速率。发送过程是由执行一条以SBUF 为目的寄存器的指令启动的。写SBUF 信号还把1 TB8 装入发送移位寄存器的第9 位,同时通知发送控制器进行发送。实际上发送过程开始于16 分频计数器下次

36、翻转后的那个机器周期的S1P1 时刻。每位的发送时序与16 分频计数器同步,而并不与写SBUF 信号同步。发送以激活SEND 端开始,向TxD发送一起始位一位时间以后DATA端有效,使输出移位寄存器中数据得以送至TxD。再过一位,产生第一个移位脉冲。数据向右移出,左边不断填以0,当数据字节的最高位移到移位寄存器的输出位置时,其左边是装入1的第9位,再左的容均为0。此时通知TX 控制器作最后一次移位,然后禁止SEND端并置位TI。这都发生于写SBUF后16分频计时器的第10次翻转时。接收在RxD端检测到负跳变时启动,为此MCU对RxD不断采样,采速率为波特率的16倍。当检测到负跳变时,16分频计

37、数器立即复位,同时将1FFH 写入输入移位寄存器。复位16分频计时器确保计时器翻转时位与输入数据位时间同步。计数器的16个状态将每个位时间分为16份。在第7、8、9状态时,位检测器对RxD 端的值采样。取值为三个采样值中取多数至少2个作为读入值,这样可以抑制噪声。如果所接收的第一位不为0,说明它不是一帧数据的起始位,该位被摒弃,接收电路被复位,等待另一个负跳变的到来。这用来防止错误的起始位,如果起始位有效,则被移入输入移位寄存器,并开始接收这一帧中的其它位。当数据位逐一由右边移入时,1从左边被移出。当起始位0移到最左边时,通知接收控制器进行最后一次移位,将移位寄存器容9 位分别装入SBUF与R

38、B8,并置RI=1。仅当最后一位移位脉冲产生时同时满足下述2个条件:1、RI=0,SM2=0或接收到的停止位=1,才会装载SBUF和RB8,并且置位RI。上述两个条件任一不满足,所接收到的数据帧就会丢失,不再恢复。两者都满足时,停止位就进入RB88,位数据进入SBUF,RI=1。这时无论上述条件满足与否,接收控制单元都会重新等待RxD的负跳变。由于采样八百多MHz,波特率要大于9600BPS,这里我设置为9600bps,由定时器1工作方式2提供。在80C51 中模式1 和模式3 的波特率由定时器1 的溢出速率决定。使用定时器1 作波特率发生器当定时器1 用作波特率发生器模式1 和3 中波特率由

39、定时器1 的溢出速率和SMOD1 的值决定。在此应用中定时器1 不能用作中断,定时器1 可以工作在定时或计数方式和3 种工作模式中任何一个。在最典型应用中它用作定时器方式工作自动重装载模式TMOD 的高半字节为0010B,它的波特率值由下式给出:可以定时器1 的中断实现非常低的波特率将定时器配置为16 位定时器TMOD 的高半字节为0001B,并使用中断进行16位软件重装。LED显示原理,数码管的发光和发光2极管的显示原理一样。这里采用静态显示原理,扫描显示。3.4 软件设计在这里我用C语言编写系统程序,用C语言写程序的好处前面已经说过,KEILC51真的是很好的软件,我写的程序在KEIL上仿

40、真通过,程序见附录。软件结构图:图9 软件流程图可分为4个模块:(1)、控制模块(2)、AD转换模块(3)、LED显示模块(4)、串口发送模块3.5PC机上数据接收软件制作在这里我用VC+的MFC制作数据采集器的上位机数据接收软件。下面讲述主要制作过程:1.建立项目:打开VC6.0,建立一个基于对话框的MFC应用程序cg12.在项目中插入MSComm控件选择Project菜单下AddToProject子菜单中的ComponentsandControls选项,在弹出的对话框中双击RegisteredActiveXControls项,则所有注册过的ActiveX控件出现在列表框中。选择Micros

41、oftCommunicationsControl,version6.0,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。这时在ClassView视窗中就可以看到CMSComm类了,并且在控件工具栏Controls中出现了图标现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。3.利用ClassWizard定义CMSComm类控制对象打开ClassWizardMemberViariables选项卡,选择CGc1Dlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了/AFX_INCLUDES()

42、#includemscomm.h/AFX_INCLUDES(这时运行程序,如果有错,那就再从头开始)。4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的PropertiesStyles中把Miltiline和VerticalScroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。再打开ClassWizardMember

43、Viariables选项卡,选择CGc1g类,为IDC_EDIT_RXDATA添加CString变量m_strRXData,为IDC_EDIT_TXDATA添加CString变量m_strTXData。5.添加串口事件消息处理函数OnComm()打开ClassWizardMessageMaps,选择类CGc1Dlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm。这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已

44、想要的功能了。在函数中加入如下代码:voidCGc1Dlg:OnComm()VARIANTvariant_inp;COleSafeArraysafearray_inp;LONGlen,k;BYTErxdata1024;/设置BYTEAn8-bitintegerthatisnotsigned.CStringstrtemp;if(m_ctrlComm.GetCommEvent()=2)/事件值为2表示接收缓冲区有字符variant_inp=m_ctrlComm.GetInput();/读缓冲区safearray_inp=variant_inp;/VARIANT型变量转换为ColeSafeArray

45、型变量len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组for(k=0;klen;k+)/将数组转换为Cstring型变量charbt=*(char*)(rxdata+k);/字符型strtemp.Format(%02x,bt);/将16进制字符送入临时变量strtemp存放m_strRXData+=strtemp;/加入接收编辑框对应字符串if (strtemp=ffffff80)m_strRXData+=0;if (strte

46、mp=ffffff81)m_strRXData+=1;if (strtemp=ffffff82)m_strRXData+=2;if (strtemp=ffffff83)m_strRXData+=3;if (strtemp=ffffff84)m_strRXData+=4;if (strtemp=ffffff85)m_strRXData+=5;if (strtemp=ffffff86)m_strRXData+=6;if (strtemp=ffffff87)m_strRXData+=7;if (strtemp=ffffff88)m_strRXData+=8;if (strtemp=ffffff89)m_strRXData+=9;if (strtemp=ffffff8a)m_strRXData+=.;m_ctrlComm.SetInBufferCount(0); /清空接收缓冲区UpdateData(FALSE);/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁