基于51单片机的水质检测仪

基于51单片机的水质检测系统设计

[摘要]

本系统是基于低功耗的AT89S51单片机,通过Ne555定时器构成的多谐振荡器产生一定频率的波,再通过单片机的I/O接口对捕获高低电平的读出频率,然后通过程序算法处理抽换算成电阻的值,使用DS18B20作为温度采集模块,用RS485实现远距离传送。经过主机的数据转换和处理,将温度值通过字符液晶1602显示器显示。本设计结构简单,使用灵活,具有很大的使用和研究价值。

[关键字]

水质监测仪 NE555定时器 温度采集 RS485通信

[ Abstract ]

The system is based on low power consumption AT89S51 MCU, through the

Ne555timer multivibrator generates a certain frequency of the wave, and then through the MCU I / O interface to capture level read frequency, and then through the program algorithm is converted into the pumping resistance value, use DS18B20 as the temperature acquisition module, using RS485realize long-distance transmission. After a host data processing and conversion, the temperature value through the character LCD 1602LCD display. This design has the advantages of simple structure, flexible use, has great application and research value.

[ Key words ]

water quality monitor Ne555 timer multivibrator

temperature collection RS485 communication protocol

. 目 录

第1章 引言 ........................................ 错误!未定义书签。 第2章 水质检测的因素 ............................... 错误!未定义书签。

2.1 一般水质检测的因素 ............................... 错误!未定义书签。 2.2 电子设备检测的因素 ............................... 错误!未定义书签。 2.3 水质与水的导电率的相互关系 ....................... 错误!未定义书签。 第3章 系统设计要求及总体设计方案.................................... 3

3.1系统设计要求 ...................................................... 3 3.2 总体设计的总体设计方案 ............................................ 3 第4章 系统各组成单元方案设计与论证 .................................. 4

4.1 测量电阻模块方案设计 .............................................. 4 4.2 温度传感器方案选择 ................................................ 5 4.3 通信模块的方案选择 ................................................ 5 第5章 系统硬件设计 ................................................ 7

5.1 AT89S51单片机及其他器件的功能介绍及原理 .......................... 7 5.2 DS18B20温度传感器的简介 ......................................... 10 5.3 NE555的简介及应用 ............................................... 12 5.4 RS485总线的应用及介绍 ........................................... 17 5.5 字符液晶1602的介绍 .............................................. 16 5.6电源模块的设计 ................................................... 19 第6章 系统软件的设计 ............................................. 21 6.1 程序设计 ......................................................... 21 6.2 系统主程序流程图 ................................................. 21 第7章 测试方法及结果....................................................23

7.1 调试方法 ......................................................... 23 7.2 电导率的检测 ..................................................... 23 7.3 温度的检测 ....................................................... 23 结束语 . .......................................................... 24 致谢 ............................................................ 25 参考文献 ......................................................... 26 附录1 ........................................................... 27 附录2 ........................................................... 28 附录3 ........................................................... 29 附录4 ........................................................... 36

第1章 引言

水是生命之本,是本设计赖以生存必不可少的物质资源之一,水也是为人体获得各种营养物质的重要途径之一。随着科技的发展,水污染越来越严重。对水资源的保护成为一项重要的工程。水质检测是对水资源保护的重要指标。水质检测越来越受到人们的关注。因此本次设计本设计选择水质检测系统。其中饮水安全则是影响人体健康和国计民生的重大问题。饮用水主要考虑对人体健康的影响,其水质标准除有物理指标、化学指标外,还有微生物指标;对工业用水则考虑是否影响产品质量或易于损害容器及管道。近年来, 由于国际上一些地区和国家频繁发生恶性事件, 饮水安全和卫生问题引起了全球的关注, 饮水安全已成为全球性的重大战略性问题。近年来由于本设计国工业生产水平的迅猛发展,每年的废水也不断增加,其中对环境产生影响的来源主要有:

·未经处理而排放的工业废水 ·未经处理而排放的生活污水

·大量使用化肥、农药、除草剂的农田污水 ·堆放在河边的工业废弃物和生活垃圾 ·水土流失 ·矿山污水

导致人类周围的水环境污染日趋严重,严重制约了经济的发展和危害着人类的健康。严峻的水形势提高了人们对水污染控制的重视,对废水的处理和检测成为了维护良好人民生活环境所必不可少的要求,废水中是否有对环境产生重大影响的元素和他们的含量是否在标准以内直接关系到本设计的生存环境,做好水质监测是本设计这次课程设计的目标。

第2章 水质检测的因素

2.1一般水质监测的因素

水质检测是指对水样的各项指标进行测试,可以根据这些指标对水质进行分类,对水体质量进行判断和综合评价。其检测内容可以是pH 值、CODCr 、高锰酸盐指数、BOD5、氨氮、砷、氟化物、挥发酚、阴离子表面活性剂、总氮、总磷、粪大肠菌群、铅、镉、汞、锌、铜、石油类、硫化物、六价铬、氰化物等;地下水可以是PH 、总硬度、溶解性总固体、高锰酸盐指数、氨氮、硝酸盐氮、亚硝酸盐氮、氟化物、氯化物、硫酸盐、阴离子表面活性剂、氰化物、挥发酚、六价铬、铜、铅、锌、铁、锰、镉、总汞、总砷、硒、总大肠菌群、细菌总数及矿化度等 2.2电子设备检测的因素

使用电子设备进行水质检测,主要是利用各类传感器,对水中的参数进行检测。其检测内容可以为PH 值,电导率,温度等。 2.3水质与水的导电率的相互关系

下面介绍一下水质及水的导电率的相互关系:

纯水本身可微弱地介离,使水具有微弱的导电能力。水中含有各种溶解盐类,并以离子的形态存在,使水溶液具有更强的导电性。当水中插入一对电极时,通电之后,在电场的作用下,带电的离子就产生一定方向的移动,水中阴离子移向阳极,阳离子移向阴极,使水溶液起导电作用,水的导电能力的强弱程度,就成为电导。电导度反映了水中含盐量的多少,是水的纯净度的一个重要指标。水质越纯,温度越低,电离度越低。因此水的导电率越低。超纯水几乎不能导电。

溶液导电能力以电阻值来表示,导电能力强电阻值小。纯水导电性微弱。电阻率P 的物理意义是1cm ,截面为1cm2均匀导电体的电阻值(即1cm ,水或水溶液的电阻值),并称之为水的“电阻率”或“比导电”。电阻率的单位为欧姆·厘米(Ω·cm )。电阻率

第3章 系统设计要求及总体设计要求

3.1 系统设计要求

由于不同水质的导电能力不同,不同温度对水的电导率也有影响,本设计通过检测不同水质及不同温度下水中的电阻,从而得出其电导,判断水质是否纯净。 本系统要能实现基本功能:

1、实现对水质的检测(电阻等) 2、实现对水温的检测 3、远距离传送

3.2 系统设计的总体设计方案

本设计将温度模块、485发送模块、485接收模块、测电阻模块、显示模块通过多路开关,传送到单片机中进行检测,在接通电源的条件下,通过显示系统显示检验水质的各种参数。整体设计框图如下图所示。

电路的工作原理:通过Ne555定时器构成的多谐振荡器和电容反馈式三点式攀比成的振荡电路产生的一定频率的波,再通过单片机的I/O接口对捕获高低电平的读出频率,然后通过程序算法处理抽换算成电 进行主从机之间的通信,将从机信号发送到主机,经过主机的数据转换和处理,将温度值以及电阻值通过字符液晶1602显示器显示。

图3-1 系统整体设计框图

第4章 系统各组成单元方案设计与论证

4.1 电阻检测模块方案论证

相位测量方案的关键问题是电阻测量方法的选择: 方案一:串联分压原理

图4-1 串联电路原理图

根据串联电路的分压原理可知,串联电路上电压与电阻成正比关系。通过测量RX 和R0上的电压。由公式

R X =UX /(U 0/RO )

方案二:利用直流电桥平衡原理的方案

图4-2 电桥

其中Z1,Z2,为可变电位器,Z3为已知电阻,Z4为被测电阻,根据电路平衡原理,不断调节电位器,使得电表指针指向正中间。由Z1*Z4=Z3*Z4. 在通过测量电位器电阻值,可得到R 4的值。

方案三:利用555构成单稳态的方案

图4-3 555定时器构成单稳态

根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电阻值。由

f=1/[(R1+2R2)*C*In2]

得到公式:

R 2=1/2*[1/(f*c*Ln2)-R1]

上述三种方案从对测量精度要求而言,方案一的测量精度极差,方案二需要测量的电阻值多,而且测量调节麻烦,不易操作与数字化,相比而言,方案三还是比较符合要求的,由于是通过单片机读取转化,精确度会明显的提高。故本设计选择了方案三。 4.2 温度传感器方案的选择

随着现代科技的发展,传感器技术的应用越来越广泛。温度传感器是检测温度的器

件,其种类最多,应用最广,发展最快。按照温度传感器的输出信号的模式,可大致分为三类:逻辑输出温度传感器、模拟式温度传感器、数字式温度传感器。

方案一:在许多应用中,本设计并不需要严格测量温度值,只关心温度是否超出了一个设定范围,一旦温度超出所规定的范围,则发出报警信号,启动或关闭风扇、空调、加热器或其他控制设备,此时可选用逻辑输出式温度传感器。LM56、MAX6501-MAX6504、是其典型代表。根据本设计的要求,不适宜用此类传感器。

方案二:由于传统的模拟温度传感器,如热电偶、热电阻及RTDS 对温度的监控,在一些温度范围内的线性不是太好,需要进行冷端补偿或引线补偿,而且热惯性大,响应时间较慢,所以在市场上已很少遇到。集成模拟温度传感器与之相比,具有灵敏度高、线性度好、响应速度快等优点,而且它还将驱动电路、信号处理电路以及必要的逻辑控制电路集成在单片IC 上,有实际尺寸小,使用方便等优点。常用的模拟温度传感器有LM3911、LM335、LM45、AD22103电压输出型、

该方案的缺点是模拟信号转换为数字信号的借口电路需要占用微机的数条数据/控制线。限制了微机功能的扩展;而且在温度监测点大范围分布的系统中,模拟信号需长距离传输,信号容易失真,抗干扰能力差。所以不采用此方案。

方案三:如果采用数字式接口的温度传感器,上述设计问题将得到简化。数字式温度传感器直接输出数字测温信号,不但节约了微机的数条数据/控制线,而且省去了A/D转换、放大、滤波等电路,在长距离传输过程中信号不易失真,抗干扰能力强,所以本设计采用数字式温度传感器。

而DS18B20是由美国DALLAS 公司生产的一种自带编码的单线数字温度传感器,可以把温度信号直接转换成数字信号。每片DS18B20含有唯一的64位序列号。以便不同测温点的识别。DS18B20的测温是+55℃到+125℃。符合本设计的要求,所以本设计采用DS18B20数字式温度传感器。 4.3 液通信模块方案选择

方案一:在工业测量和控制中,因为受到现场环境和其他条件的限制,使用传统的优先电缆传输信号由于存在着现场连接、接线麻烦等缺点,特别是在一些特定的环境下,极不方便,因此提出了无线数据传输。使用无线数据传输模块,进行数据信号的传输,对于长距离传输,带来了很大的便利。因此无线传输数据模块即发挥了它的无线优势。尽管在特定的条件下,使用无线传输比有线传输具有更大的可行性,但是由于无线传输也存在许多不足之处,如传统无线通讯方式通讯距离短、性能不稳定,受天气等情况影响较大,不能真正实现无缝覆盖等,所以针对本设计,不宜采用此通信方式。

方案二:随着数字技术的发展和计算机日益广泛的应用,现在一个系统往往由多台计算机组成,需要解决多站、远距离通信的问题。这就是迫切需要一种总线能适合远距离的数字通信。RS232线路简单,应用广泛,但距离受限,数据传输效率也不很高。RS-422 使用差分信号,差分传输使用两根线发送和接收信号(共4 线),对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。在RS-422标准的基础上,EIA 研究出了一种支持多节点、远距离和接收高灵敏度RS-485总线标准。在要求通信距离为几十米到上千米时,广泛采用RS-485收发器。RS-485收发器采用平衡发送和差分接收,因此具有抗干扰的能力,加上接收器具有高的灵敏度、能检测抵达200mv 的电压,故传输信号能在千米以外得到恢复。使用RS-485总线,一对双绞线就能实现多站联网,构成分布式系统,设备简单、价格低廉、能进行长距离通信的优点使其得到了广泛的应用。下表4.1为常见的三种串口通信性能比较。根据本设计要求,选择RS485作为实现长距离传送方案。

第5章 系统硬件电路设计

5.1AT8951单片机及其他器件的功能介绍及原理 5.1.1、单片机功能简介

引脚功能说明

GND:地 P0 口:P0 口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash 编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要

外部上拉电阻。

P1 口:P1 口是一个具有内部上拉电阻的8位双向I/O 口,P1 输出缓冲器能驱动4个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash 编程和校验时,P1口接收低8位地址字节。如下表为P1口的第二功能:

P2 口:P2 口是一个具有内部上拉电阻的8位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。

在访问外部程序存储器或用16位地址读取外部数据存储器时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash 编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3 口:P3 口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。P3 口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。

在flash 编程和校验时,P3 口也接收一些控制信号。如下表为P3口第二功能: ALE /PROG :地址锁存控制信号(ALE )是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash 编程时,此引脚(PRO G )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH 的SFR 的第0位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有效。否则ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0位)的设置对微控制器处于外部执行模式下无效。

表5-2 P3口第二功能

引脚号

第二功能

P SE N

: 外部程序存储器选通信号(P SE N )是外部程序存储器选通信号。当AT89S52

从外部程序存储器执行外部代码时,P SE N 在每个机器周期被激活两次,而在访问外部

数据存储器时,P SE N 将不被激活。

EA /VPP : 访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序E A 必须接GND 。E A 应该接VCC 。在flash 编程期间,E A 也接收12伏VPP 电压。

XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2: 振荡器反相放大器的输出端。

5.1.2、本系统采用的单片最小系统原理图

图5-2 单片机最小系统原理图

此单片机最小系统由AT89S52单片机、时钟电路及复位电路组成,时钟电路采用内部时钟利用单片机内部一个高增益的反向放大器,把一个晶振和两个电容器组成的自激震荡电路接到XTAL1(19脚)和XTAL2(18脚)之间。震荡器发出的脉冲直接送入内部时钟电路。本最小系统中晶振采用12M ,起振电容采用30pF 。CPU 第9管脚复位(RST )功能,本设计具有上电复位功能,主要功能是把PC 初始化为0000H ,使单片机从0000H

单元开始执行程序。在单片机最小系统上电时,利用R11和C3充放电原理,以达到实现的单片机最小系统的复位。 5.2DS18B20温度传感器的简介 5.2.1、DS18B20基本知识

DS18B20数字温度计是DALLAS 公司生产的1-Wire ,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点:

(1)、只要求一个端口即可实现通信。 (2)、在DS18B20中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任何元器件即可实现测温。

。。

(4)、测量温度范围在-55C 到+125C 之间。 (5)、数字温度计的分辨率用户可以从9位到12位选择。 (6)、内部有温度上、下限告警设置。

5.2.2、DS18B20的引脚介绍

TO -92封装的DS18B20的引脚排列见图1,其引脚功能描述见表5-3。

图5-3(DS18B20底视图)

表5-3 DS18B20详细引脚功能描述

由于DS18B20采用的是1-Wire 总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,本设计必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

图5-4 DS18B20的复位时序

对于DS18B20的读时序分为读0时序和读1时序两个过程。

对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us 才能完成。

图5-5 DS18B20的读时序

对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。

对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us ,保证DS18B20能够在15us 到45us 之间能够正确地采样IO 总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us 之内就得释放单总线。

图5-6 DS18B20的写时序

下面为DS18B20的程序流程图:

图5-7 DS18B20程序流程图

5.2.4、本系统所使用的DS18B20电路

图5-8 DS18B20电路图

5.3、NE555简介及应用 5.3.1、NE555基本知识

555时集成电路是一种将模拟功能与逻辑功能巧妙结合在同一硅片上的组合集成电路。它设计新颖,构思奇巧,用途广泛,备受电子专业设计人员和电子爱好者的青睐,人们将其戏称为伟大的小IC 。它有很多优异的性能而且用途极广,它们表现在:第一,定时精度,工作速度和可靠性高;第二,使用的电源电压范围宽,从3V 到18V ,能和数字电路直接连接;第三,有一定的输出功率,可驱动微电机,指示灯、扬声器,第四,结构简单,使用灵活,用途广泛,可组成各种波形的脉冲振荡器、定时延时电路、双稳触发电路、检测电路、电源变换电路、频率变换电路等,被广泛应用于自动控制,测数,通信等各个领域。

5.3.2、NE555内部结构及引脚说明

图5-9 555时基电路管脚排列图 图5-10 555电路结构方框图 555 芯片引脚图及引脚描述

555 的8 脚是集成电路工作电压输入端,电压为5~18V ,以UCC 表示;从分压器上看出,上比较器6 脚A1 的5脚接在R1 和R2 之间,所以5 脚的电压固定在2UCC/3 上;下比较器A2 接在R2 与R3 之间,A2 的同相输入端电位被固定在UCC/3 上。

根据555定时器构成单稳态,产生脉冲波形,通过单片机读取高低电平得出频率,通过公式换算得到电阻值。由 5.3.3、本系统使用的NE555电路

图5-11 NE555电路图

5.3.4、本系统所使用的NE555电路的工作原理

NE 555电路工作原理根据555定时器和外部器件构成无稳态多谐振荡器,电源经R4对电容C 充电,使电容两端电压按指数规律上升,当uc 上升到(2/3)Vcc 时,输出out 为低电平,放电管VT 导通,把电容两端电压从(1/3)Vcc 上升到(2/3)Vcc 这段时间内电路的状态称为第一暂稳态,其维持时间TPH 的长短与电容的充电时间有关。充电时间常数T 充=(R4+Rx )C 。Rx 和放电管放电,电路进入第二暂稳态. 其维持时间TPL 的长短与电容的放电时间有关,放电时间常数T 放=RxC0随着C 的放电,电容两端电压下降,当uc 下降到(1/3)Vcc 时,输出out 。为高电平,放电管VT 截止,Vcc 再次对电容c 充电,电路又翻转到第一暂稳态。不难理解,接通电源后,电路就在两个暂稳态之间来回翻转,则输出可得矩形波。电路一旦起振后,uc 电压总是在(1/3~2/3)Vcc 之间充电和放电,

从而在输出端产生一系列的脉冲频率波形,通过输出脚与单片机连接,将脉冲频率信号输入到单片机中。

5.4、RS485总线的应用及介绍 5.4.1、RS485及其接口介绍

RS232使用12V,0,-12V 电压来表示逻辑,(-12V 表示逻辑1,12V 表示逻辑0),全双工,最少3条通信线(RX,TX,GND ),因为使用绝对电压表示逻辑,由于干扰,导线电阻等原因,通讯距离不远,低速时几十米也是可以的。

RS422,在RS232后推出,使用TLL 差动电平表示逻辑,就是两根的电压差表示逻辑,RS422定义为全双工的,所以最少要4根通信线(一般额外地多一根地线),一个驱动器可以驱动最多10个接收器(即接收器为1/10单位负载),通讯距离与通讯速率有关系,一般距离短时可以使用高速率进行通信,速率低时可以进行较远距离通信,一般可达数百上千米。

RS485,在RS422后推出,绝大部分继承了422,主要的差别是RS485可以是半双工的,而且一个驱动器的驱动能力至少可以驱动32个接收器(即接收器为1/32单位负载),当使用阻抗更高的接收器时可以驱动更多的接收器。所以现在大多数全双工485驱动/接收器对都是标:RS422/485的,因为全双工RS485的驱动/接收器对一定可以用在RS422网络。

RS-485的电气特性:逻辑"1" 以两线间的电压差为+(2-6)V 表示;逻辑"0" 以两线间的电压差为-(2-6)V 表示。接口信号电平比RS-232-C 降低了,就不易损坏接口电路的芯片,且该电平与TTL 电平兼容,可方便与TTL 电路连接。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A ”、“B ”端连接起来。而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:(1)共模干扰问题: RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中 共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。 由于PC 机默认的只带有RS232接口,有两种方法可以得到PC 上位机的RS485电路:(1)通过RS232/RS485转换电路将PC 机串口RS232信号转换成RS485信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。(2)通过PCI 多串口卡,可以直接选用输出信号为RS485类型的扩展卡。 5.4.2 RS485的网络布置

网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络。在构建网络时,应注意如下几点: (1)采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。有些网络连接尽管不正确,在短距离、低速率仍可能正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,会造成信号质量下降。 (2)

应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。 在RS485组网过程中另一个需要主意的问题是终端负载电阻问题,在设备少距离短的情况下不加终端负载电阻整个网络能很好的工作但随着距离的增加性能将降低。理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国MAXIM 公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。 一般终端匹配采用终端电阻方法, RS-485应在总线电

缆的开始和末端都并接终端电阻。终端电阻在RS-485网络中取120Ω。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100~120Ω。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。另外一种比较省电的匹配方式是RC 匹配。利用一只电容C 隔断直流成分可以节省大部分功率。但电容C 的取值是个难点,需要在功耗和匹配质量间进行折衷。 还有一种采用二极管的匹配方法,这种方案虽未实现真正的“匹配”,但它利用二极管的钳位作用能迅速削弱反射信号,达到改善信号质量的目的,节能效果显著。 最近两年一些公司基于部分企业信息化的实施已完成,工厂中已经铺设了延伸到车间每个办公室、控制室的局域网的现状,推出了串口服务器来取代多串口卡,这主要是利用企业已有的局域网资源减少线路投资,节约成本,相当于通过tcp/ip把多串口卡放在了现场。 5.4.3、RS485应用

在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV 的电压,故传输信号能在千米以外得到恢复。 市场上一般RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。本系统采用RS485建立多机通信网络,并以两个从机为例成功实现了主机对从机及自己的数据采集及处理,实现了多机通信。 5.4.4 本次设计所使用的RS-485的电路图

图5-12 RS485电路图

工作原理

本电路中使用的MAX485芯片为Maxim 公司的一个RS-485的接口芯片。具有一个驱动器跟接收器。RO 和DI 端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD 和TXD 相连即可;/RE和DE 端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE 为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A 端和B 端分别为接收和发送的差分信号端, 当A 引脚的电平高于B 时,代表发送的数据为1;当A 的电平低于B 端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。 5.4 字符液晶1602 5.5.1、1602液晶介绍

1602液晶模块内部的字符发生存储器(CGROM) 已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A ”的代码是01000001B (41H ),显示时模块把地址41H 中的点阵字符图形显示出来,本设计就能看到字母“A ”。

因为1602识别的是ASCII 码,试验可以用ASCII 码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A ’。 5.5.2、字符液晶对应的ASCII 值

表5-4 1602的16进制ASCII 码表:

读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII 为0x21,字母B 的ASCII 为0x42(前面加0x 表示十六进制)。

5.5.3、1602液晶寄存器选择控制表

本系统采用市场上常见的成本较低1602字符液晶为显示设备,充分利用屏幕资源,建立动态显示界面,完成了良好的人机交互界面。 5.5.4、本系统采用的1602液晶显示电路

图5-13 1602液晶显示电路

注:本图使用黑色排座为液晶接插提供方便

本设计采用1602液晶显示。如图4-3所示。3管脚接10K 电位器以方便调节LCD1602的亮度。由于本次设计只需用到LCD1602的写的功能,故干脆将其5管脚拉低。单片机P2.7口作为数据/命令选择端RS 输入,P2.6口作为使能端E 输入。LCD1602有多种的使用方式即并口数据传输和串行数据传输。设计中由于I/O口充足,所以采用的是并口传

输方式数据和命令端口接单片机的P0端口上,因为LCD 只是显示不需要读取内容,所以设计中的WR 管脚只写不读,RS 命令和数据管脚接在单片机的P2.7管脚,使能端E 接在单片机的P2.6管脚,实验表明设计可以正确显示内容。 5.6电源模块设计 5.6.1、芯片的选择

电子产品中,常见的三端稳压集成电路有正电压输出的78 ×× 系列和负电压输出的79××系列。顾名思义,三端IC 是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管,TO- 220 的标准封装,也有9013样子的TO-92封装。

图5-15 7805芯片

用78/79系列三端稳压IC 来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC 型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7806表示输出电压为正6V ,7909表示输出电压为负9V 。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。本系统采用常用的低价三端稳压集成电路7805芯片,通过电容滤波,7805集成芯片的稳压后输出线性度较好的5V 直流电压,为本系统提供电源,达到了节约资源,降低成本的效果。 5.6.2、电源模块电路

图5-16 电源模块电路图

第6章 系统软件设计

6.1程序设计

设计就是用计算机所能接受的语言把所需解决问题的步骤逐一描述出来,也就是编制计算机的程序,在设计应用系统时,软件的编制是重要环节。软件的质量直接影响整个系统功能的实现。应用程序的设计因系统而异,但程序设计总是有共同特点及其规律的。在编写程序时,采取如下几个步骤:

(1)分析问题,明确所要解决问题的要求,将软件分成若干个相对独立的部分。根据功能关系和时序关系,设计出合理的软件总体结构。

(2)定程序框图,即根据所选择的计算方法制定框图。

(3)根据程序的流程图和指令系统编写出程序。注意在程序的有关位置处写上功能注释,提高程序的可读性。

(4)程序调试。通过编辑软件编辑出的源程序,必须用编译程序汇编后生成目标代码。如果源程序有语法错误,需修改源文件后继续编译,直到无语法错误为止,然后利用目标代码通过仿真器进行程序调试,排除设计和编程中的错误直到成功。

(5)程序优化。使各功能程序模块化,子程序化,缩短程序的长度,加快运算速度和节省数据存储空间,减少程序执行的时间。 6.2系统主程序流程图

下图是系统温度检测主程序流程图:

图6-1 温度检测模块程序框图

图6-2 电阻检测模块程序框图

第七章 测试方案与测试结果

7.1 调试方法

根据设计要求,需要测量水质,以及关于长距离的通信。根据测试原理分析,就是对水质进行电阻及温度测量。还有要进行实时长距离通信。调试过程利用单片机P3口的P3.2引脚接到555时基电路构成的多谐振荡器的输出脚,将555多谢振荡器的频率信号f 送到单片机,然后单片机的定时器测量振荡电路的振荡周期,再求电阻值。这种数字化处理避免了由指针读数引起的误差。在设计中,合适的选择电容,可以控制电阻的测量范围。

7.2电导率的检测

电导率K 是水溶液导电能力的重要标志,是电阻率P 的倒数,根据电阻率的公式P=R*A/L

2

(式中,R 为导体电阻Ω,A 为导体有效横截面积,cm ;L 为导体的有效长度,cm ),电导率K =1/P=(1/R)·θ(式中,θ =L/A为电极常数)。因此,通过测量水质电阻R 即可求出电导率K 。)

本次测试的导体长度为100cm ,有效横截面积为1cm 2 由公式

K=(1/P)*θ = (1/P)* (L/A ) 可计算出某一电阻值对应的电导率 调试结果如下表一所示

其电阻不一样,水质越纯,其电阻越大,导电率越小。受本系统中NE555电路的影响,当水质的电阻值越大,其频率越低,而电阻值波动反而更大,造成所测的水质的电阻值误差较大。

7.3水温的检测

表7.2 用水质监测仪及温度计所测自来水温度

的检测是正确的。

结束语

本系统编程采用C 语言,用单片机AT89S51作系统核心,主要完成对显示电路设计、485通信电路,温度检测模块等功能的设计。实现了对水中电阻及温度的检测,以及实现了远距离传送。在本设计电路完成后,它可实现检验两种参数是否达标。而本设计不足在于只检测了温度及电阻两块,若能加上其他的传感器,则可以方便的检测水中的PH 值,浑浊度,溶解氧等。

随着科技的发展,工业发展进入了新的时代,这种结构具有接口简单和使用灵活等优点。由单片机构成的系统在一些较大型的工业过程控制、自动控制等方面得到了广泛的应用。在目前的发展形势下,因功耗越来越低,可靠性越来越高,Internet 的普及,单片机的应用领域将越来越广泛。因此,水质监测系统的研究和使用具有很大的应用价值。

致谢语

经过近半年的忙碌和工作,本次毕业论文已经接近尾声,作为一个本科生的毕业论文,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及同学们的支持,想要完成这个论文是难以想象的。

在这里首先要感谢本设计的指导老师任志山老师。任志山老师平日里工作繁多,但在本设计做毕业论文的过程中,从确定论文题目,任务计划书,资料查找等阶段都给予了本设计悉心的指导。有了老师们的监督和指导,让本设计能够很好地学习专业知识,培养自己的动手能力,这在毕业设计中发挥了非常重要的作用。在设计过程中,老师以自己精专的知识,不断地启发本设计,使本设计的设计得以顺利进行,也使得本设计自己的专业水平有很大程度的提高。除了任志山老师的专业水平外,其严谨求实的治学态度、高度的敬业精神对本设计产生重要影响。

再次,本设计要感谢同学对本设计帮助和指导,在设计中不懂的请教同学时,总是很热心的帮本设计发现问题,寻找更好的解决办法。

然后还要感谢大学四年来所有的老师,为本设计打下牢固的专业知识的基础,同时还要感谢所有的同学们,正是因为有了你们的支持和鼓励,此次毕业论文才会顺利完成。祝你们身体健康,工作顺利。

参考文献

[1] 乐嘉华,温度检测技术的现状和未来,煤油化工自动化[J].1998(3),36-38. [2] 何立民.MCS-51系列单片机应用系统设计,第一版,北京航空航天大学出版社,1993,19-24.

[3] 张君谟. 单片机中级教程,第一版,北京航空航天大学出版社,2000,25-43. [4] 沙占友. 集成温度传感器原理与应用. 北京:机械工业出版社,2002, 84-95. [5] 刘川来,李康康,刘成才,徐健,一种组合式温度传感器的研究[J]. 仪器仪表学报, 2007,28(31):888-892.

[6] 余威明. DS18B20高精度多点温度检测显示系统[J]. 仪表技术, 2007,03:37-39. [7] 王海燕. 在线水质电导率信号采集系统的电路设计[J] 医疗卫生装备,2008,10 [8] 郑联英. 水溶液电导率的测量方法研究[D]. 北京: 北京化工大 学,2007:4-6. [9] [2] 赵亮. 跟我学51单片机(七)——LCD1602液晶显示模块[J].电子制作. 2011: 卷7期74-77

[10] HU Hong-bin.Measuring for temperature characteristic of temperature relay. Electro Mechanical,2003,(9):46-48

[11] Sun Kai.Controlling temperature system of resistance stove.Sensor Technology,2003,22(2):50-52

附录1 电路原理图

附录(2). 电路PCB 图

附录(3). 主要程序

温度检测:

#include #include #include"1602.h"

sbit DE_RE=P3^4;

sbit DQ=P2^3; //ds18b20与单片机连接口

uchar gao,di;

uchar bai,shi,ge; uchar tflag;

uchar recdata;

uint tvalue,tvalue1,tvalue2,TEMP; //温度值

/******************************************* 函数名称: delay_18B20 功 能: 为18b20温度转换器提供延时 参 数: 延时i 微秒 返回值 : 无

********************************************/ void delay_18B20(unsigned int i) {

while(i--); }

/******************************************* 函数名称: ds1820rst() 功 能: 18b20温度转换器复位功能 参 数: 复位函数 返回值 : 无

********************************************/ void ds1820rst() {

unsigned char x=0;

DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); }

/*******************************************

函数名称: ds1820rd

功 能: 读出18b20温度转换器中数据

参 数: 无

返回值 : dat读出的数据

********************************************/

uchar ds1820rd()

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; //给脉冲信号

dat>>=1;

DQ = 1; //给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

/*******************************************

函数名称: ds1820wr

功 能: 写入18b20温度转换器指令

参 数: wdata为写入的数据

返回值 : 无

********************************************/

void ds1820wr(uchar wdata)/**/

{

uchar i=0;

for (i=8; i>0; i--)

{

DQ = 0;

DQ = wdata&0x01;

delay_18B20(10);

DQ = 1;

wdata>>=1;

}

}

/*******************************************

函数名称: read_temp()

功 能: ds1820读取温度值并转换

参 数: 无

返回值 : tvalue为读出并经过转换的温度值

********************************************/

read_temp()

{

uchar a,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0x44);//*启动温度转换*/

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue

tvalue=tvalue|a;

if(tvalue

tflag=0;

else

{

tvalue=~tvalue+1;

tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 一点代表0.625度 return(tvalue);

}

uchar rxdata() //接受数据

{

uchar dataa;

while(!RI);

//等待数据接收完毕

dataa=SBUF;

RI=0;

return(dataa);

}

void txdata(unsigned char dataa) //发送数据子函数

{

DE_RE=1;

SBUF=dataa;

while(!TI);

//等待数据发送完毕

TI=0;

DE_RE=0;

}

main()

{

SCON=0X50; //串口工作方式初始化

PCON=0X00;

TMOD=0X20;

EA=1;

TL1=0XFD;

TH1=0XFD; //波特率9600

TR1=1;

DE_RE=0; //接收数据模式

while(1)

{

read_temp();

TEMP=tvalue;

gao=TEMP/256;

di=TEMP%256;

if(RI)

{

RI=0;

recdata=SBUF;

if(recdata==0x66)

{

delay(2);

txdata(gao);

//delay(1);

}

if(recdata==0x77)

{

delay(2);

txdata(di);

//delay(1);

}

}

}

}

电阻检测:

#include

#include

#include"1602.h"

display();

jishu();

uchar table2[]={'0','1','2','3','4','5','6','7','8','9'}; uchar num,l,f,i,h,flag=1;

long r; /*上为测电阻声明*/

sbit DE_RE=P3^4;

long tvalue; //温度值 为传送信号声明

uchar bai,shi,ge;

uchar zhi2m,zhi2n;

void txdata(unsigned char dat)

{

DE_RE=1;

SBUF=dat;

while(!TI);

//等待数据发送完毕

TI=0;

DE_RE=0;

}

main()

{

int i=0,j=0;

init_1602();

while(1)

{

if(flag==1)

{

TR0=0;

//EX0=0;

//ET0=0;

SCON=0X50; //串口工作方式初始化

PCON=0X00;

TMOD|=0X20;

EA=1;

TL1=0XFD;

TH1=0XFD; //波特率9600

TR1=1;

DE_RE=0; //接收数据模式

txdata(0x66);

RI=0;

while(!RI);

RI=0;

delay(20);

zhi2m=SBUF;

txdata(0x77);

RI=0;

while(!RI);

RI=0;

delay(20);

zhi2n=SBUF;

tvalue=zhi2m*256+zhi2n;

if(tvalue>0) { bai=tvalue/100; shi=tvalue%100/10; ge=tvalue%10; } display1(1,0,'w'); display1(1,1,'e'); display1(1,2,'n'); display1(1,3,'d'); display1(1,4,'u'); display1(1,5,0x3a); display1(1,6,bai+48); display1(1,7,shi+48); display1(1,8,0X2e); display1(1,9,ge+48); display1(1,10,0xdf); display1(1,11,0x43); flag=0; } else { TR1=0; EX0=1; ET0=1; IT0=1;// TMOD|=0x01; EA=1; TH0=0x3c; TL0=0xaf; TR0=1; h=jishu()*6/14; delay(40); if(h!=0) { r=(320000/h-330)/2; } else { r=0; } /*display1(2,7,table2[h/10000]);//获取计数值的万位 display1(2,8,table2[h/1000%10]); // 获取计数值的千位 display1(2,9,table2[h/100%10]); // 获取计数值的百位 display1(2,10,table2[h/10%10]); // 获取计数值的十位

display1(2,11,table2[h%10]); // 获取计数值的个位 */

display1(2,0,'s');

display1(2,1,'h');

display1(2,2,'u');

display1(2,3,'i');

display1(2,4,'z');

display1(2,5,'h');

display1(2,6,'i');

display1(2,7,0x3a);

display1(2,8,table2[r/10000]);//获取计数值的万位

display1(2,9,table2[r/1000%10]); // 获取计数值的千位 display1(2,10,table2[r/100%10]); // 获取计数值的百位 display1(2,11,table2[r/10%10]); // 获取计数值的十位 display1(2,12,table2[r%10]); // 获取计数值的个位 flag=1;

}

}

}

void external0() interrupt 0 //外部中断0中断程序

{

num++;

}

void timer0() interrupt 1 //定时器0中断程序

{

TH0=0x3c;

TL0=0xaf;

l++;

}

jishu()

{

while(l==20) //定时器定时50ms ,故20次中断就表示1秒钟到达 {

f=num;

num=0;

l=0;

}

if(f>0)

return f;

}

附录(4). 作品图片


相关文章

  • 张优贤基于单片机的自来水加氯控制系统硬件设计
  • 理 工 学 院 本科生毕业设计(论文) 学院(系): 电子与电气工程系 专 业: 电子信息工程 学 生: 张优贤 指导教师: 牛 军 完成日期 2011 年 5 月 理工学院本科生毕业设计(论文) 基于单片机的自来水加氯控制系统硬件设计 H ...

  • 基于Cygnal技术便携式浊度仪的设计与应用
  • 基于Cygnal技术便携式浊度仪的设计与应用 便携式浊度测量仪是现场快速分析工业用水.废水处理.生活用水以及自然水体水质质量的重要检测手段之一.本文基于C8051F340单片机技术,应用冷光源技术及90°角接收散射光柱积分测量的方法,设计完 ...

  • 基于单片机计步器的设计_崔秋丽
  • 科技创新与应用 2013年第34期 科技创新 基于单片机计步器的设计 崔秋丽 (苏州工业职业技术学院,江苏苏州215104) 摘 要:本系统是一个针对人体步行的特点设计的智能计步系统,对腰部运动加速度的峰值检测从而得到步数.文章通过对系 统 ...

  • 机的交流伺服电机转速控制系统研究
  • -匿E譬E墨一壑重量:量王望丘垫笪銮速鱼8垦皇熟整逢壁劁丞筮亟窒 基于单片机的交流伺服电机转速控制系统研究 赵磊1,王哈力1,何绪锋2,周永勤1 (1.哈尔滨理工大学黑龙江哈尔滨 150040:2.淄博牵引电机集团公司 山东淄博255100 ...

  • 电子类毕业设计
  • 电子通讯] 出租车计价系统 [过程控制] 基于单片机实现单回路智能调节.. [电子通讯] 脉冲数字频率计 [机床仪表] 仪表机床数控系统的设计(论文.. 磁流体发电论文 [电子通讯] 基于VC++6.0的PC机与单片机串行.. [电子通信] ...

  • 基于单片机的智能浇花系统设计与实现_赵丽
  • 第22卷第6期长春大学学报Vol.22No.62012年6月JOURNAL OF CHANGCHUN UNIVERSITY June 2012 基于单片机的智能浇花系统设计与实现 赵12丽,张春林 (1.长春职业技术学院,长春130033: ...

  • 编码器四倍频电路的单片机高速算法设计
  • 2007年第11期 文章编号:1001-2265(2007)11-0073-02 ・控制与检测・ 编码器四倍频电路的单片机高速算法设计 王子博 (大连理工大学电子信息工程学院.辽宁大连116023) 摘要:文章针对增量式光电编码器输出信号的 ...

  • 基于红外传感器的智能寻迹小车资料
  • 单片机智能寻迹机器人功能描述: 单片机智能寻迹机器人功能描述 1:前方位红外探头让你实现智能寻迹功能(可走黑线或白线) 前方位红外探头让你实现智能寻迹功能(可走黑线或白线) 前方位红外探头让你实现智能寻迹功能 2:正前方的红外反射探头实现智 ...

  • 基于超声波倒车雷达 文献综述
  • 浙江理工大学本科毕业设计(论文)文献综述报告 基于单片机的倒车预警系统的设计 严团 09自动化2班 B09330224 1 前言 我们把频率高于20000赫兹的声波称为"超声波".超声波具有方向性好,穿透能力强,易于获得 ...

© 2024 范文参考网 | 联系我们 webmaster# 12000.net.cn