基于单片机的远程数据采集系统的设计.doc_第1页
基于单片机的远程数据采集系统的设计.doc_第2页
基于单片机的远程数据采集系统的设计.doc_第3页
基于单片机的远程数据采集系统的设计.doc_第4页
基于单片机的远程数据采集系统的设计.doc_第5页
免费预览已结束,剩余54页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本论文提出一种利用DS18B20数字式温度传感器作为温度采集的工具,用单片机AT89C52对它进行控制,并且通过RS-485总线做远程传送将采集到的数据通过RS-232接口送入PC机测温系统的设计方法。基于单片机的远程采集系统中,采用串行协议和RS-485总线,其中RS485总线的通信距离可以达到1000m左右;在此通信距离下,串行通信的速率最高可以达到9600bit/s。本文论述的系统单片机的晶振采用的是12MHz的,为了减小单片机串行通信中波特率的初始值误差,采用4800bit/s的波特率。设计采用了模块化的思想,条理清楚,主要有硬件设计与软件程序设计两部分。本系统接口简单、使用方便、可靠性好,在温度检测中有较广泛的应用前景,具有较强的使用价值。就其采样频率和分辨率来说属于中速类型,适合对数据采样频率要求不是特别高的应用场合。关键词:单片机AT89C52;温度传感器DS18B20;RS-232;总线串行通信RS-485;VB6.0 AbstractA designing method which uses DS18B20 digital sensor as temperature-collecting tool, and MCU AT89C52 as Micro-controller unit is introduced.,It makes a long-range conveyance by using RS-485 Bus to send the collected data to PC temperature-measuring system by RS-232 interface. Acquisition of long-range Micro-controller unit-based system, using a serial protocol and RS-485 bus, which bus RS485 communications distance can reach about 1000 meters; in this communication distance, the highest rate of serial communication can be achieved 9600bit/s. In this paper, the crystal of MCU AT89C52 system is used in the 12MHz, in order to reduce the initial value error of the MCU serial communication baud rate , the system uses 4800 bit/s baud rate.This design has its clear order and has two main part of hardware design and software process design for its Modular thoughts. This system has widely perspective in temperature measurement and good use value for its simple and convenient interfaces. As far as sampling frequency and resolution ratio, it belongs to middle-speed type. It is proper to be used in application occasion without high requirement to data sampling frequency.Key words: MCU AT89C52;Temperature Sensor DS18B20;RS-232;Bus Serial Communication RS-485;VB6.052目 录摘 要IAbstractII1 绪 论11.1 课题来源12.2 课题意义、目的22.3 课题主要内容22 远程数据采集系统的硬件设计32.1 系统方案设计32.2 DS18B20数字式温度传感器模块的硬件电路设计52.3 数码管显示模块的设计82.4 RS-485总线及其与单片机、PC机的接口电路的设计143 远程数据采集系统的软件设计203.1 单片机的数据采集模块的程序设计203.2 数据采集的串口通信协议233.3 人机界面的设计284 系统仿真与分析324.1 单片机中测温显示模块的仿真324.2 串口通信仿真324.3 结果分析345 结论35参考文献36附 录38附录1 系统的整体硬件电路38附录2 DS18B20显示模块相关程序39附录3 串口程序47附录4 VB控件相关程序50致 谢53毕业设计(论文)1 绪 论1.1 课题来源数据采集(Data Acqusition)是获取信息的基本手段。数据采集技术作为信息科学的一个重要分支,是以传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术。数据采集系统是利用计算机、通信、测控等技术采集、记录和显示现场的各种物理参量,以供管理人员和现场操作者参考的系统,是现代测控系统的基础,用于获取各种现场测量数据。远程数据采集系统,与传统的数据采集系统相比,具有不受地理环境、气候、时间的影响等优势。而借助单片机手段的远程数据采集系统,更具有工程造价和人力资源成本低,传输数据不受地域的影响,可靠性高,免维护等优点。通信、计算机等技术的飞速发展,特别是远程传输手段的多元化和技术水平的提高,使远程数据采集技术有了广泛的应用。数据采集在各个测试和控制系统,数据采集系统的设计和实现包括很多方面的内容,涉及面也很广。在日常生活及工农业生产中经常要用到温度的检测及控制,能独立工作的温度检测系统已广泛应用于诸多的领域。于是本文采用温度检测作为引子来模拟远程数据采集系统的设计。传统的温度检测大多以热敏电阻或热电偶为传感器,它们测出的一般都是电压,再通过相应的A/D转换,转换成对应的温度,这种结构需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。在一些测量与控制系统的应用场合中,数据采集点与控制点通常有一定的距离,因此需要将采集的数据从采集现场进行远程传输,而传统的串口通信传输的最大的距离只有15m,因此相要完成远距离的传输,就应对系统的数据传输问题采取新的方法。为了简化电路,降低成本,提高性价比,增强抗干扰能力和扩大传输距离和使用的灵活性,研究一种新的温度数据远程采集系统也就很有必要。本设计提出一种利用DS18B20数字式温度传感器作为温度采集的工具,用单片机对它进行控制,并且通过RS-485总线做远程传送将采集到的数据通过RS-232接口送入PC机测温系统的设计方法。 系统上位机由一台微机构成,软件采用Visual Basic编程,做出十分直观的人机界面,由单片机构成的测温模块检测到的温度数据分别显示在单片机的显示模块和通过串口通信显示在PC机上。本系统设计完成了对温度数据的采集、数码管显示以及PC机的用户程序界面。设计采用了模块化的思想,条理清楚,主要有硬件设计与软件程序设计两部分。本设计接口简单、使用方便、可靠性好,在温度检测中有较广泛的应用前景,具有较强的使用价值。就其采样频率和分辨率来说属于中速类型,适合对数据采样频率要求不是特别高的应用场合。2.2 课题意义、目的基于单片机的远程数据采集应用范围十分广泛,意义重大。随着社会的发展,各行各业都在向信息化和自动化方向发展。远程数据采集在电力电子系统信息自动化、远程控制监测、远程医疗、远程信息管理等领域发挥着不可替代的作用。远程数据采集系统与传统的数据采集系统相比具有不受地理环境、气候、时间的影响等优点,己经广泛用于石油、电力、水利、公安、交通和安防等行业。随着通信技术、微电子技术的进步和智能化建设的发展,越来越多的设备如家电、电表、工业终端等都有了需要进行远程数据采集的需求,并且有大量的数据需要远距离传输,那么设计出功能齐全的、智能化水平较高的、能够实时传输数据的基于单片机的远程数据采集系统是本论文研究的目的。2.3 课题主要内容本课题通过学习数据采集系统的设计,结合单片机的理论知识,构成建立主站计算机与远程微处理器之间的通信,通过计算机的串口接受微处理器所发来的数据,而微处理器通过数据采集的芯片来获得现场的运行数据。因此课题的主要内容为 (1)设计单片机与底层数据采集系统的接口电路。 (2)选择合适的通信方式实现单片与PC之间的通信。并在通过几种方案的比较上,通讯方式上选择了利用单片机并且通过RS-485总线做远程传送将采集到的数据通过RS-232接口送入PC机测温系统的设计方法12。(3)编制相关的程序,包括数据采集子程序,PC应用程序界面等。2 远程数据采集系统的硬件设计2.1 系统方案设计目前常用的远程数据采集解决方案有(1) GSM/GPRS无线网络,它利用GSM/GPRS的话音信道或者短消息来进行信息传递,一般仅适用于移动应用场合,如车辆的监控调度系统,但其终端设备成本和运行费用都较高。远程无线数据采集系统基于GPRS技术实现远程数据通信,GPRS业务具有接入迅速、永远在线、流量计费等特点,在远程突发性数据实时传输中有不可比拟的优势;既具有有线方式的效率高,实时性好、成本低的优点,同时安装方便、可维护性好、易实现网络化管理。利用现有的GPRS网络资源,发挥网络覆盖率高、传输特性好等优势,为现有数据采集系统提供一种便捷的无线数据传输方式,代表着工业控制及现场监测等领域的一个发展方向。在远程数据采集系统的前端,由于测量终端数量较多,为每个测量终端都配置GPRS模块,势必造成成本很大,因此在测量现场对测量终端数据进行初步的集中成为必要。在测量终端较集中的现场和Internet能够覆盖到的地方,通常都采用有线连接的数据通信方式。然而在许多特殊工作场合,由于现场环境的制约,有线的连接方式已经不能满足数据采集系统的参量要求。如对于分散测控系统,由于测量点比较分散,线路铺设及维护均需较高的代价;对于运动构件上的传感器信号的采集,由于传感器空间位置不固定,使得通过电缆引出信号变得不可靠、甚至不可能,在环境恶劣、危险性大、对人体有危害的场合,操作者希望可以远离被测控对象,进行数据的采集和控制。但无线传输的费用过高,对于工业数据采集系统,采用无线数传技术进行短距离小规模的数据通讯很难应用。(2) 无线电台数字通讯,适用于偏远地区无人值守的场合,其最大的缺点是设备复杂,维护和运行成本很高,而且覆盖范围小。(3) 电话MODEM。Modem的状态可以分为命令状态和在线状态。除了拨号占据短暂的时间之外,Modem总是处于一种状态。当Modem启动后,首先处于命令状态,连接后进入在线状态。在命令状态下Modem命令形式接受命令,例如指示Modem去拨号或当电话响铃时给予自动应答。在在线状态下,Modem与远端系统通信,这时Modem不再尝试对发送给它的数据进行解释,而是直接将其发送出去。几种状态之间可以相互转换。当前应用较为广泛的一种远程数据采集解决方案,它通过电话的话音信道来进行数据传输。该方式适用于点对点大量的实时数据传输应用场合,对一些数据量少的多点数据采集场合其并不适用。(4) 电力线载波,该方式由于不能跨越变压器,传输距离有限而且误码率高等许多原因,现己很少使用。(5) TCP/IP网络,需要专门的网络建设和从ISP基于固话短信技术的远程数据采集系统的实现(Internet服务提供商)处申请专用的IP地址,硬件投资和运行成本都较高,适合于拥有大量的数据需要交互传输的应用场合。将Intranet网技术引入控制领域,通过连接不同的网络,形成一致的网络结构可以十分自然地将网络规范应用于控制设备领域,将Intranet与Internet相连,实现信息的完整共享。该项技术的应用为IST(Intemet Sensor Technology网络传感技术)、局部环境自动控制等Internet化提供了技术保证。PC机的串行接口为RS-232或USB总线,然而RS-232标准的传送距离最大约为15m,最高速率为20kb/s,并且RS-232是为点对点(即只用一对收、发设备)通讯而设计的,可见RS232只适合于本地通讯使用。为了降低成本和设计难度,本系统采用的是将RS-232接口转换成RS-485接口,再在单片机和PC机之间加入RS-485总线,采用RS-485进行长距离、高速的串行异步通信。PC机和单片机之间远程通信的RS-485原理方案,单片机采用RS-485进行串行通信,只需要将TTL电平的串行接口通过芯片转换为RS-485串行接口14。这种转换比较简单,本系统采用MAX485芯片来完成这种转换。对于PC机现有的RS-232 接口,系统中利用一片MAX485芯片和MAX232芯片组成的转换电路来实现RS-485电平与RS-232之间的转换。此转换电路一边与RS-232 标准9针接口相连,另一边与RS-485总线相连。这种新的远程采集系统提出了一种利用DS18B20数字式温度传感器作为温度采集的工具,用单片机AT89C52对它进行控制,并且通过RS-485总线做远程传送将采集到的数据通过RS-232接口送入PC机测温系统的设计方法。这种系统主要由DS18B20数字式温度传感器模块、单片机控制模块、数码管显示模块、RS-485传输总线模块、RS-485/RS-232转换接口模块、上位PC机显示和控制模块五个部分组成34。其框图如图2.1所示,本系统的整体硬件电路图见附录1。图2.1 远程温度数据采集系统框图2.2 DS18B20数字式温度传感器模块的硬件电路设计为了降低温度采集的硬件复杂性与提高整个设计电路的抗干扰能力,降低成本,数据采集模块中,采用美国达拉斯(DALLAS)公司推出的一种改进型智能温度传感器DS18B20作为检测元件。它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于多点温度测控系统。2.2.1 数字式温度传感器DS18B20DS18B20数字式温度传感器与传统的热敏电阻不同,可直接将温度转化成数字信号进行处理,每片DS18B20都具有惟一的产品号并可存入其ROM中,便于构成大型温度测控系统时在单线上挂接多个DS18B20芯片,CPU可用简单的协议就可识别。从DS18B20读出或写入DS18B20信息仅需要一根端口线,其读写及温度变换功率来源于数据总路线,该总路线本身也可以向所挂接的DS18B20供电,而无需额外电源,从而节省大量的引线和逻辑电路。根据实际需要通过简单的编程实现912位的数字值读数方式,分辨率最大可达0.0625,测量范围为-55125。它采用8脚SO封装或3脚PR-35封装,分别如图2.2、图2.3所示。 图2.2 DS18B20的8脚SO封装 图2.3 DS18B20的3脚PR-35封装 8脚封装的NC为空引脚;VDD为电源引脚,接3.05.5V;GND接地;DQ为数据的输入和输出引脚(单线总线),常态下呈高电平。DS18B20的内部结构如图2.4所示:图2.4 DS18B20的内部结构2.2.2 DS18B20的测温原理DS18B20的内部框图如图2.5所示,主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器、用于存储用户设定的温度上下限值、触发器存储与控制逻辑、8位循环冗余校验发生器等7部分。低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一个频率稳定的计数脉冲。高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。初始时,温度寄存器被预置成-55,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1,这个过程重复进行直到计数器2计数到0为止。初始时,计数器1的预置值是和-55相对应的一个初始值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性,斜率累加器提供的预置值也随温度作相应的变化。计数器1的预置数也就是在给定温度处使温度寄存器值加1所需的计数值。图2.5 DS18B20的内部框图DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部有斜率累加器,可对频率的非线性度加以补偿。测量结果以16位带符号扩展的二进制补码形式存入温度寄存器中。单片机可以通过单线接口读出数据,读数据时低位在前,高位在后,数据格式以0.0625/LSB形式表示。温度值格式的低、高字节如表2.1、表2.2所示。当符号位S=0时,表示温度值为正,可以直接将二进制数转换成十进制数;当符号位S=1时,表示温度值为负,要先将补码变成原码,再计算其对应的十进制数。表2.3是部分温度对应的二进制温度数据。表2.1 LS字节232221202-12-22-32-4表2.2 MS字节SSSSS262524表2.3 DS18B20温度与测得值对应表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H当符号位S=0时,表示温度值为正,可以直接将二进制数转换成十进制数;当符号位S=1时,表示温度值为负,要先将补码变成原码,再计算其对应的十进制数。表2.3是部分温度对应的二进制温度数据。2.2.3 DS18B20中的单总线技术DALLAS公司推出的1-wire Bus技术采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的56。系统中的数据交换、控制都由这根线完成。主机或从机通过一个漏极开路或态端口连到该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。单总线通常要求外接一个4.7k的上拉电阻,当总线闲置时,其状态为高电平。主机和从机之间的通信通过三个步骤完成:初始化1-wire器件、识别1-wire器件和交换数据78。由于是主从结构,只有主机呼叫时,从机才能应答,主机访问1-wire器件必须严格遵循总线命令时序,即初始化、读ROM、命令功能命令。如出现混乱,1-wire器件不会响应主机。1-wire协议定义了复位脉冲、应答脉冲、写0、读0、和读1时序等几种信号类型。在这些信号中除应答信号外,其它的都是由主机发出同步信号,且发送的所有命令和数据都是低字节在前面。基本的通信过程为:主机通过拉低单总线至少480s产生Tx脉冲;然后由主机释放总线,进入Rx模式。主机释放总线时,会产生一由低电平跳变为高电平的上升沿;单总线器件检测到该上升沿后,延时1560s;单总线器件通过拉低总线60240s来产生应答脉冲;主机接收到从机的应答信号脉冲后,说明有单总线器件在线,然后主机就可以开始对从机进行ROM命令和功能命令操作。所有的读写时序至少需要60s,且每两个独立的时序至少需要1s的恢复时间。在写时序中,主机将在拉低总线15s之内释放总线,并向单总线器件写1;若主机拉低总线后能保持至少60s的低电平,则向单总线写0。单总线器件仅在主机发出读时序时才向主机传输数据,当主机向单总线器件发出读数据命令后,必须马上产生读时序,以单总线器件能传输数据。2.2.4 温度数据采集的硬件电路图DS18B20有两种供电方式:直接由VDD供电、利用DQ线采用寄生电源供电。当采用DQ线寄生电源供电方式时,对DS18B20的一些命令操作上会有一些较特殊的要求。本系统是以DS18B20采用直接VDD供电的方式,即采用图2.6所示的供电方式,电源电压和单片机电源相同,采用5V供电即可。图2.6 直接由VDD供电其中DS18B20采集到的数据从它的DQ引脚输出经过一根数据线传输到单片机的P2.7脚,同时,单片机对DS18B20进行读/写操作也是通过该引脚实现的。2.3 数码管显示模块的设计数码管显示模块的设计主要包括两部分,一部分为LED数码管部分,一部分为AT89C52单片机的控制部分。2.3.1 LED显示部分介绍LED数码管是由发光二极管作为显示字段的数码型显示器件。图2.7(a)为LED数码管的外形和引脚图,其中7只发光二极管分别对应ag笔段,构成“8”字形,另一只发光二极管dp作为小数点,因此这种LED显示器称为八段数码管。LED数码管按电路中的连接方式可以分为共阴极型和共阳极型两大类:共阴极型是将各段发光二极管的负极连在一起,作为公共端COM接地,ag、dp各笔段接控制端,某笔段接高电平时发光,低电平时不发光,控制某几段笔段发光,就能显示出某个数码或字符。如图2.7(b)显示。共阳极型是将各段发光二极管的正极连在一起,作为公共端COM,某笔段接低电平发光,高电平时不发光,如图2.7(c)所示。本设计选用的是共阳极LED数码管。(a)外形图 (b)共阴极结构 (c)共阳极结构图2.7 LED数码管LED数码管按其外形尺寸有多种形式,使用较多的是0.5英寸和0.8英寸;按显示颜色也有多种,主要有红色和绿色;按亮度强弱可分为超亮、高亮和普亮。为了能更清晰的显示反应水的温度,本设计选用五位0.8英寸的高亮红色LED数码管显示温度。LED数码管的使用与发光二极管相同,根据其材料不同,正向降压一般为1.52V,额定电流为10mA,最大电流为40mA。静态显示时取10mA为宜,动态扫描显示,可加大脉冲电流,但一般不超过40mA。因此设计中要接入8个200的分压电阻。本论文中LED数码管是用来显示温度的,DS18B20的测温范围上限是150,下限为-55因此温度的十进制显示需要用4位,当为正时其中一位用于显示小数部分,当为负时其中一位显示负号,在这里设置了4位的LED。2.3.2 AT89C52控制部分介绍此部分是电路的核心部分,系统的控制采用了单片机AT89C52。AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。单片机AT89C52内部有8KB单元可反复擦写的Flash只读的程序存储器及256字节的随机存取数据存储器。因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。AT89C52是由美国生产的至今为止世界上最新型的高性能八位单片机。该芯片采用FLASH存储技术,内部具有2KB字节快闪存存储器,是目前在中小系统中应用最为普及的单片机。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。本设计中采用PLCC封装形式。(1)AT89C52主要功能特性如下。 兼容MCS51指令系统; 8k可反复擦写(1000次)Flash ROM; 32个双向I/O口; 256x8bit内部RAM; 3个16位可编程定时/计数器中断; 时钟频率024MHz; 2个串行中断,3级加密位; 可编程UART串行通道,2个读写中断口线; 2个外部中断源,低功耗空闲和掉电模式; 共6个中断源 ,软件设置睡眠和唤醒功能。(2)AT89C52各引脚功能及管脚电压。AT89C52各引脚图如2.8图所示。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3为可编程通用I/O脚,其功能用途由软件定义。下面就AT89C52的大部分引脚进行介绍。图2.8 AT89C52引脚图P0口:P0口是一组8 位漏极开路型双向I/O口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8 位双向I/O口, P1的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表2.4。Flash编程和程序校验期间,P1接收低8位地址。表2.4 P1.0和P1.1的第二功能引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在有上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或者16位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX RI指令)时,P2口输出P2锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。中断:AT89C52共有6个中断向量:两个外中断(INT0 和INT1),3个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。2.3.3 LED显示模块整体设计LED数码管显示电路采用动态扫描显示方法,将各个数码管的8个笔画段(a、b、c、d、e、f、g、h)同名端并联在一起,由一个8位I/O口控制,形成段选线合用;而每一位数码管的公共端(位选线)是各自独立地受I/O口控制,实现各位的分时选通9。单片机向字段输出字形码时,所有显示器都接收到相同的字表码,但究竟是哪个数码管亮,则取决于公共端,可通过控制公共端来决定哪一位数码管发亮显示。本设计采用的4位LED数码管动态显示的电路原理图如图2.9。动态扫描是采用分时的方法,轮流控制各位数码管的公共端,使各个数码轮流点亮。在轮流点亮的过程中,每位显示器的点亮时间极为短暂(约1ms),由于人类眼睛的视觉暂留及发光二极管的余辉效应,只要在轮流点亮各位二极管时,扫描的频率合适时就不会有闪烁感10。其中段选线占用一个8位I/O口,可用单片机的P1口作为段选线控制,位选线占用4位I/O口,可用单片机的P2.0P2.3控制,74HC245为总线驱动器驱动数码管显示。图2.9 数码管显示模块电路原理图2.4 RS-485总线及其与单片机、PC机的接口电路的设计RS-485是一个电气接口规范,属于7层开放系统互连(Open System Interconnection,OSI)模型物理层的协议标准。它只规定了平衡驱动器和接受器的电特性,没有规定接插件、传输电缆和通信协议。支持半双工或全双工模式,网络拓扑结构通常采用终端匹配的总线型结构,不支持环型或星型网络11。由于RS-485是从RS-422基础上发站而来的,RS-485 采用平衡传输方式,需要在传输线上接匹配电阻。RS-485 可以采用二线与四线方式,二线制,可实现真正的多点双向半双工通信。采用四线连接时,只能实现点对多点的全双工通信,即只能有一个主(Master) 设备,其余为从设备。无论是四线还是二线连接方式总线上最多只能接32个设备。RS-485的共模输出电压在-7+12V之间,RS-485接收器最小输入阻抗为12k。RS-485的最大传输距离约为1219m,最大传输速率为10Mb/s 。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100m长双绞线最大传输速率仅为1Mb/s。RS-485需要2个匹配电阻,其阻值要求等于传输电缆的特性阻抗。在短距离传输时可不需要匹配电阻,一般情况下在300m以下不需匹配电阻,匹配电阻接在传输总线的两端(一般接120的匹配电阻即可)。RS-485常采用平衡发送和差分接收方式来实现通信。两条传输线采用通常使用双绞线,故具有较强的抗共模干扰能力。接受灵敏度也相当高,能检测低达200mV的电压,某些芯片已经能检测到低达50mV 的电压(如MAX3080等),同时,最大传输速率和最大传输距离也大大提高。RS-485总线以双绞线为物理介质,通常工作在半双工通信状态,即在同一时刻总线上只能有1个节点为主节点且处于发送状态,其它所有节点必须处于接收状态。如果同一时刻有2个以上的节点处于发送状态将导致所有发送方的数据发送失败,即所谓总线冲突12。为了避免总线冲突,RS-485总线一般工作在主从模式下。整个通信总线系统由1个主节点、若干个从节点组成,按照轮循的方式,主节点依次和从节点通信,这样就解决了RS-485总线的冲突。本系统中的主机,即上位PC机和从机,即下位单片机之间的通信也工作在主从模式下的。在本系统中,除了一个PC机作为主机外,只有一个单片机作为从机。2.4.1 MAX485简介为了构建满足本系统远程数据传输的RS-485总线,本设计采用了一款专门的电平转换芯片,即MAX485接口芯片13。它是Maxim公司的一种RS-485芯片。采用单一电源+5V工作,额定电流为300A,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。其引脚结构图如图2.10所示。图2.10 MAX485的内部结构图从MAX485的内部结构图中可以看出,MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出端和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;和DE端分别为接收和发送的使能端,当为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选120的电阻。2.4.2 MAX232介绍Max232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。其引脚图如2.11所示。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5VTTL/CMOS电平。每一个发送器将5VTTL/CMOS电平转换成TIA/EIA-232-F电平。图2.11 MAX232引脚图MAX232芯片为电脑的RS-232标准串口设计的接口电路,使用+5V单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由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)。2.4.3 PC机和单片机之间远程通信的RS-485原理方案PC机的串行接口为RS-232或USB总线,然而RS-232标准的传送距离最大约为15m,最高速率为20kb/s,并且RS-232是为点对点(即只用一对收、发设备)通讯而设计的,可见RS-232只适合于本地通讯使用。而使用USB总线的话,系统的成本和设计难度将大增加。为了降低成本和设计难度,本系统采用的是将RS-232接口转换成RS-485接口,再在单片机和PC机之间加入RS-485总线,采用RS-485进行长距离、高速的串行异步通信。PC机和单片机之间远程通信的RS-485原理方案,如图2.12所示。 图2.12 单片机和上位PC机间的RS-485通信方案单片机采用RS-485进行串行通信,只需要将TTL电平的串行接口通过芯片转换为RS-485串行接口14。这种转换比较简单,本系统采用MAX485芯片来完成这种转换。对于PC机现有的RS-232 接口,系统中利用一片MAX485芯片和MAX232芯片组成的转换电路来实现RS-485电平与RS-232之间的转换。此转换电路一边与RS-232 标准9针接口相连,另一边与RS-485总线相连。2.4.4 RS-485总线和单片机接口硬件的设计在图2.12中可以看到,数据通信在硬件上采用3线制,将单片机和PC机串口(RS-232C)的3个引脚(TXD、RXD、GND)分别连在一起,即将PC机和单片机的发送数据线TXD和接收数据线RXD交叉连接,两者的地线相连,而其它信号线如握手信号线均不用,采用软件握手的方式。只不过为了达到数据能远程传输,在下位单片机和上位PC机之间加入了RS-485总线,在单片机系统中使用MAX485芯片,完成单片机TTL电平到RS-485电平之间的转换,在总线末端接一个匹配电阻,吸收总线上的反射信号,使得正常传输信号无毛刺。匹配电阻的取值应该与总线的特性阻抗相当。转换电路见图2.13。图2.13 MAX485构成的RS-485总线及其和单片机的接口电路由于MAX485工作在半双工状态,可只用单片机的一个引脚控制它的接收使能端和发送使能端DE,以决定MAX485是工作在接收还是发送状态15。在图2.13中可以看到,和DE两个引脚连在一起,单片机通过P1.7,即单片机的第9个引脚对它们进行控制,当P1.7输出逻辑0时,MAX485处于接收状态,当P1.7输出逻辑1时,MAX485处于发送状态。单片机的第11脚是串口接收引脚RXD,和MAX485的接收器输出端RO相连接,从上位机发过来的控制信号将从这个端输入到单片机内,使单片机进行相应的控制操作;单片机的第12脚为串口发送引脚TXD,和MAX485的驱动器输入端DI相连,单片机的温度数据将通过这个引脚传输到MAX485总线,经过长距离传输后最终送到远程上位PC机上进行显示和处理。2.4.5 RS-485总线和PC机接口硬件的设计在PC机端用MAX485和MAX232组成的电平转换电路完成TTL电平到PC机的RS-232串口电平的转换1617。相应的电路如图2.14所示。在总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。将总线上的差分信号的正端A+和负端B-之间接一个10k的电阻;负端B-和地间接一个10k的电阻,形成一个电阻网路。当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,也很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。MAX485采用的串行通信波特率选为4800bit/s,AT89C52的晶振相选用12MHz),可满足系统对波特率误差的要求。图2.14 单片机和上位PC机之间的RS-485通信原理图3 远程数据采集系统的软件设计3.1 单片机的数据采集模块的程序设计此系统数据采集模块包含两个方面的内容,一方面是利用单片机控制DS18B20工作,进行温度数据的采集;另一方面是利用单片机将DS18B20温度传感器采集到的数据传输到显示器进行显示18。下面将讨论这两方面的内容。3.1.1 单片机的数据采集部分的主要程序DS18B20操作流程DS18B20的一线制总线要求的操作流程:(1)初始化;(2)ROM操作命令;(3)存储器和控制操作命令; (4)处理/数据。 主控MCU对DS18B20的每一次完整的操作都应遵循上述的流程进行操作。初始化一线制总线上的所有处理都从初始化开始,初始化包括主控MCU发出的总线复位信号(Reset Plus),以及从器件(本文指DS18B20)发出存在应答信号(Presence Plus)。 存在应答信号让主控MCU知道总线上存在DS18B20器件,并且从器件已准备好接受主控MCU的操作。ROM操作指令及流程一旦完成初始化后,主控MCU便可以发出对DS18B20的6个ROM 操作命令之一,所有ROM 操作命令均为8 位长。ROM操作命令的操作流程请参考前面的图 2.4,这些命令的描述如下:Read ROM(读ROM)33h 此命令允许总线的主控MCU读DS18B20 的8 位产品系列编码、唯一的48 位序列号以及8 位的CRC;此命令只能在总线上仅有一个DS18B20 的情况下可以使用,如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象,漏极开路会产生线与的结果。 Match ROM(匹配ROM)55h匹配ROM 命令,即以64 位的ROM 数据序列与总线上的多个DS18B20器件进行匹配(当然只可能有一个器件与主控MCU发出的匹配ROM数据相匹配),相当于总线主控MCU对多点总线上特定的DS18B20寻址,只有与64 位ROM 序列严格相符的DS18B20 才能对后继的存储器操作命令做出响应,所有与64位ROM 序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。Skip ROM(跳过ROM)CCh在单点总线系统中,通过此命令允许总线上的主控MCU不提供64 位ROM 编码而访问存储器操作,以此来节省时间;如果在总线上存在多于一个的从属器件,而且在Skip ROM 命令之后发出读命令,那么由于多个从片同时发送数据会在总线上发生数据冲突,漏极开路下拉会产生线与的效果。Search ROM(搜索ROM)F0h 当系统开始工作时总线上的主控MCU可能不知道总线上的从器件个数或者不知道其64 位ROM 编码,搜索ROM 命令允许总线主机使用一种排除查询的方法来识别总线上所有从片的64 位ROM 编码;有关搜索ROM的具体操作流程,可以参考DS18B20器件的数据手册,从该手册可以获取详细的操作说明。 Alarm Search(告警搜索)ECh 此命令的流程与搜索ROM 命令相同,但是仅在最近一次温度测量出现告警的情况下DS18B20才对此命令做出响应。告警的条件定义为温度高于TH 或低于TL,只要DS18B20 一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH 或TL 的设置,使得测量值再一次位于允许的范围之内,贮存在EEPROM 内的触发器值用于告警。 在总线上的主控MCU完成ROM操作命令后,主控MCU便可以对总线上的DS18B20进行存储器操作了(存储器操作包括存储器操作命令和控制操作命令);存储器操作命令有6个,描述如下:写缓冲存储器Write Scratchpad 4Eh 此命令将后面跟着的数据写至DS18B20 的缓冲存储器,从地址2开始接着写的3个字节数据将被保存在缓冲存储器地址2到4之中;发出一个复位(Reset Plus)便可在任

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论