1、0毕业论文题 目 水位水温控制系统 院 (系) 工程技术学院 专 业 应用电子 年 级 11 级 学生姓名 刘会超 学 号 201125110115 指导教师 许春香 二一四年 五月 12摘 要温度的精度控制一直是个难题,因此为了实现高精度的水温水位控制,我的论文介绍了一种以 AT89C51 单片机为控制核心,采用一种数字温度传感器(DS18B20)为温度采集器来实现水温的控制。论文着重介绍核心器件的选择、各部分电路设计及软件的实现。AT89C51 单片机完善的内部结构、优良的性能和强大的中断处理能力,决定了该控制系统具有电路结构简单、程序简短、系统可靠性高的特点。水位以 AT89C51 单片
2、机检测缺水、溢流,实现自动控制;温度采集采用数字温度传感器(DS18B20) ,不需要复杂的信号调理电路和 A/D转换电路,简单的数字处理电路大大降低了硬件和软件的设计复杂度,直接与单片机完成数据的采集和处理;采用 LCD1602 液晶实时显示温度值,实现方便、简单。本系统根据不同需要可用于各种场合。【关键词】AT89C51 单片机,DS18B20,LCD16023AbstractThe temperature has been a difficult problem accuracy control of, so in order to realize high precision temp
3、erature level control, my paper introduces an AT89C51 as control core, using a digital temperature sensor (DS18B20) for temperature water temperature control unit to realize. This paper mainly introduces the core device of choice, each part circuit design and software realization. AT89C51 perfect in
4、ternal structure, excellent performance and powerful interrupt handling ability, decided the control system has the circuit is simple in structure, procedures brief, system reliability high characteristic. Water level detection by AT89C51, water shortage, the realization of automatic control overflo
5、w; Temperature gathering adopting digital temperature sensor (DS18B20), not in need of sophisticated signal regulate circuit and A/D circuit, simple digital processing circuit greatly reduces the hardware and software design complexity, direct and single-chip commputer completes data acquisition and
6、 processing; LCD1602 LCD display by temperature, realize convenient, simple. This system can be used according to different requirements on various occasions.【Keywords】AT89C51 microcontroller ,DS18B20 ,LCD1602 4目 录引 言 .5第一章 系统方案设计 6(一)水温水位控制系统的设计任务和要求 .6(二)系统总体方案的选择 .6(三)温度传感器的选择 .7第二章 元器件介绍及硬件电路设计
7、8(一)元器件介绍 .8(二)硬件电路设计 15第三章 系统软件设计 .19(一)程序结构说明 19(二)程序流程图 19(三)操作指引 24第四章 实验测试 .25(一)LCD1602 显示“ABCD1234” .25(二)键盘及数字显示结合 25(三)整机调试 25第五章 设计总结 .27致 谢 28参考文献 295引 言上个世纪,由于工业过程控制的需要,特别是电子技术的迅猛发展,以及在自动控制理论和设计方法的推动下,温度控制系统发展迅速,并在智能化、自适应参数、自整定等方面取得了优异成果。现在的温度控制系统及仪器仪表正朝着高精度、智能化、小型化等方面快速发展。 温度控制系统在各行各业的应
8、用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等技术先进的国家相比,仍然有着较大的差距。成熟产品主要以“点位”控制及常规的PID 控制器为主,它只能适应一般温度系统控制,难于控制滞后复杂时变温度系统控制,而且应用于较高控制场合的智能化、自适应控制仪表国内的技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。温度、压力、流量和液位是四种最常见的过程变量,其中温度是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制在工业领域应用非常广泛,由于其具有工况复杂、参数多变、
9、运行惯性大、控制滞后等特点,它对控制调节器要求较高。温度控制不好就可能引起生产安全,产品质量和产量等一系列问题。尽管温度控制很重要,但是要控制好温度常常会遇到意想不到的困难。随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大、本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。本文主要介绍以单片机控制温度的系统设计过程,其中涉及系统结构设计、元器件的选取、程序的调试和系统参数的整定。在系统构建时选取了 AT89C51芯片作为该控制系统的核心,温度信号由新型的可编程温度
10、传感器(DS18B20)提供。通过软件实现对水温的控制,使用继电器作执行部件对水位的自动控制。系统控制对象为水箱。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变,具有较好的快速性与较小的超调。该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性。6第一章 系统方案设计(一)水温水位控制系统的设计任务和要求该系统为一实验系统,系统设计任务:设计一个水温水位自动控制系统,控制对象为水箱。水位实现自动加水和自动溢出控制,水温可以在一定范围内由
11、人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。利用 AT89C51 单片机实现对水温的智能控制,使水温在设定温度下控制温度恒定。利用仪器读出水温,并在此基础上将水温调节到我们通过键盘输入的温度(其方式是加热或降温) ,而且能够将温度显示在 LCD1602 液晶上。系统设计具体要求:(1)由键盘设定温度,设定范围为 40 一 90,最小区分度为 l,标定温差1。(2)温度低于设定温度值时加热,温度高于设定值时降温(3)用 LCD1602 液晶实时显示水的实际温度。(4)实现容器中无水时自动加水,溢出自动控制,防止烧干,故障报警。(5)环境温度降低时(例如用电风扇降温)温度
12、控制约静态误差1(二)系统总体方案的选择1 方案一 (如图 1-1)此方案是传统的二位式模拟控制方案,其基本思想与方案采用上下限比较电路,控制精度比较高。这种方法还是模拟控制方法,因此也不能实现复杂的控制算法使控制温度做的更精确。而且不能用数码管显示和键盘设定。信号采集信号放大上限比较下限比较信号处理固态继电器负载温度预置图 1-1 模拟电路2 方案二 (如图 1-2)此方案采用 AT89C51 单片机系统来实现。单片机软件编程灵活,自由度大,可用软件编程实现各种控制算法和逻辑控制 【1】 。单片机系统可用数码管显示水温的实际值,能用键盘输入设定值等功能。本方案选用了 AT89C51 芯片,不
13、需要外扩展存储器,可使系统整体结构更为简单。3 方案论证 方案一是传统的模拟控制方式,而模拟控制系统难以实现复杂控制规律,控制方案的修改也较麻烦。而方案二是采用以 AT89C51 为控制核心的单片机控制系统,尤其对温度控制,可以达到模拟控制所达不到的控制效7果,并且可以实现显示、键盘设定,报警等功能。大大提高系统的智能化,也使得系统所测结果的精度大大提高了。所以本次设计采用方案二。单片机键盘输入温度传感器水位检测电源LCD1602 液晶显示加热装置降温装置蜂鸣报警烧干溢流控制图 1-2 温度控制系统框图(三)温度传感器的选择本设计方案的选择主要是感温元件的选择,经查阅资料,IC式感温器在市场上
14、应用比较广泛的有以下几种:1 AD590:电流输出型的测温组件 ,温度每升高1 摄氏度 K (凯式温度),电流增加1A,温度测量范围在一55 150之间。其所采集到的数据需经A/D 转换,才能得到实际的温度值。2 DS18B20:除了测量温度外,它还可以把温度值以数字的方式(9 B i t ) 送出,温度送出的精度为0.5,温度测量范围在-55 125 之间,可以做恒温控制。3 SMARTEC感温组件:这是一只3个管脚感温IC,温度测量范围在-45 13,误差可以保持在0.7 以内。本设计选用 DS18B20 感温 IC,这是因其性能参数符合设计要求,接口简单,内部集成了 A/D 转换,测温更
15、简便,精度较高,反应速度快,且经过市场考察,该芯片易购买,使用方便。8第二章 元器件介绍及硬件电路设计(一)元器件介绍1 温度传感器温度传感器选用可编程温度传感器(DS18B20)芯片。DS18B20 是 DALLAS公司生产的 1Wire,即单总线器件,具有线路简单,体积小的特点。它在测温精度、转换时间、传输距离、分辨率等方面较 DS1820 有了很大的改进, 给用户使用带来了更多方便。(1)DS18B20 产品的特点(a)单线接口:仅需一根线与单片机相连;(b)由用总线提供电源,也可用数据线供电,电压范围:3.05.5V;(c)测温范围为-55+125,在-1085时,精度为0.5;(d)
16、可编程的分辨率为912位,对应的分辨率为0.50.0625;(e)用户可编程的温度报警设置;(f)12位分辨率时最多在750ms内把温度值转换为数字量。(2)DS18B20 的引脚介绍DS18B20 可编程温度传感器有 3 个管脚。(如图 2-1) GND 为接地线,DQ 为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。VDD 为电源接口,既可由数据线提供电源,又可由外部提供电源,范围 3O55 V【7】 。本文使用外部电源供电。9图 2-1 DS18B20 管脚(3)DS18B20 的内部结构DS18B20 内部功能模块主要由 4 部分组成:64 位光刻 R0M、温度传感器、非易失性
17、的温度报警触发器 TH 和 TL、配置寄存器。R0M 中的 64 位序列号是出厂前被光刻好的,他可以看作是该 DSISB20 的地址序列码,每个 DSI8B20 的 64位序列号均不相同。高低温报警触发器 TH 和 TL,配置寄存器均由一个字节的E2PROM 组成,使用一个存储器功能命令可对 TH, TL 或配置寄存器写入。配置寄存器中 R1,R0 决定温度转换的精度位数:R1R000,9 位精度,最大转换时间为 93.75 ms;R1R0 = 01,10 位精度,最大转换时间为 187.5 ms;R1R0 = 10,11 位精度,最大转换时间为 375 ms;R1R0 =11,12 位精度,
18、最大转换时间为 750 ms;未编程时默认为 12 位精度。(4)DS18B20 的使用方法由于 DS18B20 采用的是 1Wire 总线协议方式,即在一根数据线实现数据的双向传输 【8】 ,而对 AT89C51 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从
19、设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20 的复位时序10图 2-2 DS18B20 的复位时序图DS18B20 的读时序对于 DS18B20 的读时序分为读 0 时序和读 1 时序两个过程。对于 DS18B20 的读时序是从主机把单总线拉低之后,在 15us 之内就得释放单总线,以让 DS18B20 把数据传输到单总线上。DS18B20 要完成一个读时序过程,至少需要 60us 才能完成。 图 2-3 DS18B20 的读时序图DS18B20 的写时序对于
20、DS18B20 的写时序仍然分为写 0 时序和写 1 时序两个过程 【10】 。对于 DS18B20 写 0 时序和写 1 时序的要求不同,当要写 0 时序时,单总线要被拉低至少 60us,保证 DS18B20 能够在 15us 到 45us 之间能够正确地采样IO 总线上的“0”电平,当要写 1 时序时,单总线被拉低之后,在 15us 之内就得释放单总线。11图 2-4 DS18B20 的写时序图2 AT89C51 的特性AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4Kbytes的可反复擦写的Flash只读程序存储器和128byt 的随机存取数据存储器(RAM),兼容标准M
21、CS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51主要的功能特点如下:(1)兼容MCS-51指令系统(2)32个双向I/O口(3)两个16位可编程定时/计数器(4)一个串行中断(5)两个外部中断源(6)可直接驱动LED(7)低功耗空闲和掉电模式(8)4K可反复查写ROM(9)3级加密位(10)全静态操作0MHz-24MHz(11)软件设置睡眠和唤醒功能3 LCD1602 液晶字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,市面上字符液晶绝大多数是基于 HD44780 液晶芯片,H
22、D44780 是带西文字库的液晶显示控制器,用户只需要向 HD44780 送 ASCII 的字符码,HD44780 就按照内置的 ROM 点阵发生器自动在 LCD 液晶显示器上显示出来。所以,HD44780 主要适用于显示西文 ASCII 字符内容的液晶显示。1602 字符型 LCD 能够同时显示 16*2 即 32 个字符(16 列 2 行)。其内置 192种字符(160 个 5*7 点阵字符和 32 个 5*10 点阵字符),具有 64 个字节的自定义字符 RAM,可自定义 8 个 5*8 点阵字符或 4 个 5*11 点阵字符。1602 通常有 14 条引脚线或 16 条引脚线两种,多出
23、来的 2 条线是背光电源线和地线,带背光的比不带背光的略厚,控制原理与 14 脚的 LCD 完全一样,是否带背光在应用中并无差别。本设计中采用带背光 16 引脚线的。其主要技术参数为:显示容量:162 个字符。芯片工作电压:4.5-5.5V。工作电流:2.0mA(5.0V)。模块最佳工作电压:5.0V。字符尺寸:2.954.35(WH)mm。LCD1602 的 16 个引脚可参照图 2-5,其引脚功能分别为:VSS:电源地(GND)。图 2-5 LCD1602引脚图12VCC:电源电压(5V)。V0:LCD 驱动电压,液晶显示器对比度调整端。使用时可以通过一个 10K的电位器调整对比度,接正电
24、源时对比度最弱,接地电源时对比度最高。RS:寄存器选择输入端,选择模块内部寄存器类型信号。RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。RS=1,无论进行读操作还是写操作均指向数据寄存器。R/W:读写控制输入端,选择读/写模块操作信号。R/W=0,读操作;R/W=1,写操作。本设计中只需往 LCD 里写数据即可,写时序见图 3-4。E:使能信号输入端。读操作时,高电平有效;写操作时,下降沿有效DB0DB7:数据输入/输出口,单片机与模块之间的数据传送通道。选择 4位方式通讯时,不使用 DB0DB3。BLA:背光的正端+5V。BLK:背光的负端 0V。1602 模块内
25、部主要由 LCD 显示屏、控制器、列驱动器和偏压产生电路构成。控制器接受来自 MPU 的指令和数据,控制着整个模块的工作。主要由显示数据缓冲区 DDRAM,字符发生器 CGROM,字符发生器 CGRAM,指令寄存器 IR,地址寄存器 DR,忙标志 BF,地址计数器 AC 以及时序发生电路组成。模块通过数据总线 DB0DB7 和 E、R/W、RS 三个输入控制端与 MPU 接口。这三根控制线按照规定的时序相互协调作用,使控制器通过数据总线接受 MPU发来的数据和指令,从 CGROM 中找到欲显示字符的字符码,送入 DDRAM,在LCD 显示屏上与 DDRAM 存储单元对应的规定位置显示出该字符。
26、控制器还可以根据 MPU 的指令,实现字符的显示,闪烁和移位等显示效果。CGROM 内提供的是内置字符码,CGRAM 则是供用户存储自定义的点阵图形字符。模块字符在 LCD 显示屏上的显示位置与该字符的字符代码在显示缓冲区DDRAM 内的存储地址一一对应。LCD1602 模块内部具有两个 8 位寄存器:指令寄存器 IR 和地址寄存器DR,用户可以通过 RS 和 R/W 输入信号的组合选择指定的寄存器,进行相应的操作。表 2-1 中列出了组合选择方式:图 2-6 LCD1602 写时序13表 2-1 寄存器选择组合RS R/W 操 作0 0 将 DB0DB7 的指令代码写入指令寄存器 IR 中0
27、 1 分别将状态标志 BF 和地址计数器 AC 内容读到 DB7 和DB6DB01 0 将 DB0DB7 的数据写入数据寄存器中,模块的内部操作将数据写到 DDRAM 或者 CGRAM 中的数据送入数据寄存器中1 1 将数据寄存器内的数据读到 DB0DB7,模块的内部操作自动将 DDRAM 或者 CGRAM 中的数据送入数据寄存器中1602 提供了较为丰富的指令设置,通过选择相应的指令设置,用户可以实现多种字符显示样式。下面仅简要介绍本次设计中需要用到的一些指令设置。 清屏指令 Clear display清显示指令将空位字符码 20H 送入全部 DDRAM 地址中,时 DDRAM 中的内容全部
28、清除,显示消失,地址计数器 AC=0,自动增一模式。显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。清屏指令码见表 2-2。表 2-2 清屏指令码RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 0 0 0 0 1 进入模式设置指令 Entry mode set见表 2-3,进入模式设置指令用于设定光标移动方向和整体显示是否移动。表 2-3 模式设置指令码RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 0 0 1 I/D SI/D:字符码写入或者读出 DDRAM 后 DDRAM 地址
29、指针 AC 变化方向标志。I/D=1,完成一个字符码传送后,AC 自动加 1。I/D=0,完成一个字符码传送后,AC 自动减 1。S:显示移位标志。S=1,完成一个字符码传送后显示屏整体向右(I/D=0)或向左(I/D=1)移位。S=0,完成一个字符码传送后显示屏不移动。 显示开关控制指令 Display on/off control指令码见表 2-4,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。表 2-4 显示开关控制指令码RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 0 0 1 D C B14D:显示开/关标志。D=1,开显示;D
30、=0,关显示。关显示后,显示数据仍保持在 DDRAM 中,开显示即可再现。C:光标显示控制标志。C=1,光标显示;C=0,光标不显示。不显示光标并不影响模块其他显示功能。显示 5*8 点阵字体时,光标在第八行显示;显示 5*10 点阵字符时,光标在第 11 行显示。B:闪烁显示控制标志。B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。 功能设置指令 Function set功能设置指令用于设置接口数据位数,显示行数以及字形。指令码见表 2-5。表 2-5 功能设置指令码RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0
31、 1 DL N F * *DL:数据接口宽度标志。DL=1,8 位数据总线 DB7DB0;DL=0,4 位数据总线 DB7DB4,DB3DB0 不使用,此方式传送数据需分两次进行。N:显示行数标志。N=0,显示一行;N=1,显示两行。F:显示字符点阵字体标志。F=0,显示 5*7 点阵字符;F=1,显示 5*10 点阵字符。1602 模块内部设有上电自动复位电路,当外加电源电压超过+4.5V 时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。初始化大约持续 10ms 左右。初始化进行的指令操作为: 清显示 功能显示DL=1:8 位数据接口。N=0:显示一行。F=0:显示 5*8 点
32、阵字符字体。 显示开/关控制D=0:关显示。C=0:不显示光标。B=0:光标不闪烁。 输入模式设置I/D=1:AC 自动增一。S=0:显示不移位。但是需要特别注意的是,倘若供电电源达不到要求,模块内部复位电路无法正常工作,上电复位初始化就会失败。因此,最好在系统初始化时通过指令设置对模块进行手动初始化。4 继电器本系统利用继电器的吸合与否来控制加热装置和降温装置,实现水温15的自动化控制。本次设计采用型号为 JRC-21F 的继电器。其特点有:(1)超小型,低功耗;(2)触点型式:1H,1Z(1A.AC);(3)触点负载:2A,120VAC;(4)外型尺寸:15.7X10.4X11.4;5 键
33、盘键盘选用轻触开关,只用三个键来输入,它们的功能分别为“加一” ,“减一”和“确认”三个功能按键,详细电路和程序见后面章节。(二)硬件电路设计总电路图见附页 1,下面重点介绍各个模块的电路图。1 温度采集电路DS18B20 为单总线器件,接口电路简单,如下图 2-6 所示图 2-6 温度采集电路2 LCD1602 液晶显示电路将L1602的RS端和P2.0,R/W端和P2.1, E 端和P2.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS
34、为低电平时,液晶显示屏显示需要显示的示数。图2-8为1602液晶显示屏与单片机的硬件连接图。16图 2-8 LCD1602 显示电路3 水位监测电路图 2-10 控制原理图虚线表示允许水位变化的上下限。由继电器驱动电机开关水阀,单片机控制继电器吸合以达到对水位控制的目的。1 号电机控制供水阀,2 号电机控制排水阀。当水位上升,达到上限时,因水导电,B、C 棒连通+5V。b、c 均为“1” ,1 号电机工作,关闭水阀不再供水;当水位降到下限时,B、C 棒都不能与 A 棒导电。 b、c 均为“0” ,1 号电机工作,打开水阀,给水箱供水;当水位处于上下限之间时,B 与 A 棒导通。 b 为“1”
35、, c 为“0” ,维持原有的工作状态。如果设定温度比当前温度低的时候,需要降温处理,那么有1 号电机和 2 号电机同时工作,打开水阀,冷水在水箱中流动,等到设定温度等于当前温度时,两个电机分别关闭水阀。以达到降温的目的。上下限水位信号由 P1.0 和 P1.1 输入,这 2 个信号共有 4 种组合状态:17输入 输出C(P1.1) B(P1.0) P1.2(电机) P1.3(报警) 操作0 0 0 1 1 电机开水阀0 1 1 加热或降温处理1 0 0 故障报警1 1 1 1 1 电机关水阀由 P1.3 输出报警信号,蜂鸣器报警,同时切断加热装置,显示错误。4 输出驱动电路继电器通过一个三极
36、管来驱动,其中三极管的型号为 9015【3】 。这里用到四个驱动电路,一个用于驱动加热装置,另一个用于降温装置,还有一个用于驱动 1 号电机,最后一个用于驱动 2 号电机。电路如图 2-9 所示。其中加热装置可用小功率的电热棒,它可达到加热的目的,又较容易实现对温度的控制。当水的温度过高要进行降温时,可用加入冷水的方法,单片机驱动电路工作,1 号电机打开水阀,缓慢注入冷水,同时为了防止加入的水量过多而超出容器,增加了溢流控制,2 号电机工作排出多余的水,动态温度比较,实现对温度的实时控制。同时为了防止烧干,加热装置在水位正常才能启动。图 2-9 输出驱动电路5 键盘电路本键盘电路采用独立键设计
37、,三个键接到单片机的三个中断源上。当按下时为低电平。其中 S2 为“确认”键、S3 为“减一”键、S4 为“加一”键,电路如图 2-7 所示:18图 2-7 键盘电路6 蜂鸣报警电路蜂鸣器通过一个三极管来驱动,这里选用 9015。电路如图 2-10 所示:图 2-11 蜂鸣报警电路19第三章 系统软件设计(一)程序结构说明任何一个系统的软件设计都离不开硬件电路的连接,所以本次硬件设计的高度模块化决定了软件设计的模块化。其程序结构应包括:主控程序模块、键盘扫描及处理子程序、数据采集处理子程序、显示等子程序几个部分。结构框图如图 3-1。图 3-1 程序结构图主控程序模块在整个结构中充当管理者,管
38、理所有子程序的调用。它主要负责初始化各个 I/O 口,等待键盘事件的发生,并做出相应的处理。并在适当的时候调用数据采集程序,并将采集到的数据与键盘设定值比较。再通过计算后用于控制继电器的通断,从而控制电机等,来达到水温水位的调整。(二)程序流程图1 主程序程序按照模块化设计,所有功能都可通过调用子程序完成,主程序较简单,流程图如图 3-2 所示。显示模块,显示温度图 3-2 主程序流程图2 LCD1602 显示程序流程图显示程序流程图如图 3-3。流程图分析:首先对 1602 显示屏进行初始化(初始化大约持续 10ms 左右) ,然后检查忙信号,若 BF=0,则获得显示 RAM 的地址,写入相
39、应的数据显示;若 BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到 BF=0 为止。开始初始化有水? 报警处理调用读温度模块程序DS18B20 存在?错误显示显示error处理温度值转换为 BCD 码扫描键盘模块继电器控制模块主控程序模块键盘扫描键值处理温度采集继电器控制自动加水烧干溢流控制溢流控制模块故障报警LCD1602液晶显示NYYY20对 1 6 0 2 初始化 写入显示设置命令延时 5 m s检查忙信号获得显示R A M 地址写入相应的数据延时 5 m sB F = 0 ?开始结束数据显示完毕 ?YYNN图 3-3 显示流程图3 温度采集处理程序读取温度 DS18
40、B20 模块的流程图如图 3-4 所示,DSI8B20 温度传感器的内部存储器包括一个高速暂存 RAM (便笺式的内部存储器)和一个非易失性的可电擦除的 EEPROM,后者存放高温和低温触发器 TH,TL 和结构寄存器。便笺存储器包含了 9 个连续字节(08) ,前两个字节是测得的温度信息,字节 0 的内容是温度的低 8 位,字节 1 是温度的高 8 位,字节 2 是 TH(温度上限报警) ,字节 3 是 TL(温度下限报警) ,字节 4 是配置寄存器,用于确定输21出分辨率 9 到 12 位。第 5、6、7 个字节是预留寄存器,用于内部计算。字节 8 是冗余检验字节,校验前面所有 8 个字节
41、的 CRC 码,可用来保证通信正确 【8】 。图 3-4 温度采集处理流程图4 键盘程序由于机械触点有弹性,在按下或弹起按键时会出现抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间,如图所示。为了保证按键识别的准确性,必须消除抖动。消抖处理有硬件和软件两种方法:硬件消抖是利用加去抖动电路滤避免产生抖动信号;软件消抖是利用数字滤波技术来消除抖动。我们采用软件的方法,利用主程序循环扫描,主程序每循环一次扫描到的键值相同时,则说明是某键按下。22图 3-5 键按下的过程其流程图如图 3-6 所示:图 3-6 键盘处理流程图23(三)操作指引按键功能:(1)Enter P1.7(S2)(2)Down
42、P1.6(S3)(3)Up P1.5(S4 )显示温度:(1)没有 DS18B20 存在时,LCD1602 屏幕中间显示 DS18B20 ERROR(2)蜂鸣器报警,烧干状态时 LCD1602 屏幕中间显示 ERROR(3)有 DS18B20 存在时,LCD1602 第一行显示当前温度 now temp:xx.x(4)LCD1602 第二行显示设定温度 settemp:xx ,初始值为 40。设定温度:(1)按下 Enter,LCD1602 第二行显示 set temp:xx,xx 同时闪烁。(2)这时可以按 Up 和 Down 来调节设定温度。(3)调节好后,再按 Enter 退出。这时数字
43、不闪烁,执行相应命令。继电器随着设定的温度,依据情况跳变。24第四章 实验测试(一)LCD1602 显示“ABCD1234”编一段小程序,在液晶屏上实现显示“ABCD1234” 。源程序略。(二)键盘及数字显示结合编一段小程序,实现键盘及数字显示结合。先设定某个定值作为初始值,当按下键 S2 时,进入数值设定状态,这时可通过按下键 S3、S4 来加减所设定的初始值。源程序略。经过调式,可达到预期效果。(三)整机调试编译好主程序和个模块子程序,烧写进单片机 AT89C51 中,连接好各部分硬件电路。打开电源,电路自动复位,首先不要接入 DS18B20,此时屏幕中间只显示 DS18B20ERROR
44、,然后接入 DS18B20,但让其处于无水状态,此时屏幕中间显示错误 ERROR,并且蜂鸣器发出报警声。接着让 DS18B20 处于有水状态,此时 LCD1602 液晶显示 DS18B20 所读到水的当前温度 T1,用温度计测量水的当前温度 T2,对比 T1 与 T2 的值,结果如表 4-1。通过按键设定某个值,并使这个值大于当前温度值,当退出“确认”按键 时,观察到继电器 1 能够吸合。再次通过按键设定一个值,并使这个值小于当前温度值,当退出“确认”按键时,也能观察到继电器 2 的吸合,所测数据如表 4-2。在原理上基本能达到预期效果。表 4-1测量次数 1 2 3 4 5DS18B20 所
45、测温度 T1() 9.7 9.3 9.6 10.1 9.5温度计所测温度 T2() 9.5 9.2 9.6 10.2 9.4由于元器件 DS18B20 读温度时有延时,并且读温度计所测温度时人为的视觉误差,以及周围环境影响等原因,T1,T2 有较小的差别。表 4-2键盘设定的温度() 40 50 60温度设定前温度计所测温度() 10.3 10.3 25.4温度设定前 DS18B20 所测温度()10.2 10.2 25.325温度设定后系统再次达到稳定时温度计所测温度()40.3 50.4 60.6温度设定后系统再次达到稳定时DS18B20 所测温度( )40.2 50.3 60.4实验现象
46、由于所设定的温度与当前水温在整数上相等,所以系统不启动任何装置,两个继电器都不吸合。设定温度值大于当前水温,继电器 1 吸合,启动加热装置。当温度升到 25度时,继电器1 马上断开,停止加热。设定温度值小于当前水温,继电器 2吸合,启动降温装置。当温度降到低于 21 度时,继电器 2 断开。由于在实验过程中,当加热装置达到所设定的温度时,继电器断开后,加热装置仍有余热,所以水的温度仍然会上升一定的温度。所以本系统设定的允许温差为1。26第五章 设计总结本系统以单片机为核心部件的控制系统,利用软件编程,最终基本实现了各项设计要求。由于数据采集、显示的实时性要求不是很高,而单片机的执行速度相对于这
47、些过程要快得多,若分时选通各个采样或显示通道,虽然单片机对各个通道的处理是依次进行的,但是只要这一过程大到一定速度,总的来看几乎同时执行,不断重复这一过程,就产生了循环扫描的思想,它在单片机系统设计中得到了广泛的应用。在当今越来越趋向于自动化的社会,该系统的可用性及简易性更能取得广泛的应用。通过这次毕业设计使我从中学到了许多东西,了解到在电子制作方面的很多经验,同时也学到了那种坚决不放弃的制作精神,做 任 何 学 问 都 要一 丝 不 苟 , 对 出 现 的 任 何 问 题 和 偏 差 都 不 能 轻 视 , 要 找 方 法 去 解 决 , 做 事情 的 时 候 要 有 耐 心 和 毅 力 ,
48、 不 要 一 遇 到 困 难 就 打 退 堂 鼓 , 只 要 坚 持 下 去 就能 找 到 解 决 问 题 的 思 路 和 办 法 。 自己的求学之路还很长,以后更应该在工作实践中不断学习,努力使自己成为一个对社会有所贡献的人。27致 谢这次毕业设计得到了很多老师、同学的帮助,其中我的指导老师许春香老师对我的关心和支持尤为重要,感谢许老师一直以来对我毕业设计的建议和指导。这次毕业论文能够最终顺利完成,归功于各位任课老师三年间的认真负责,使我能够很好的掌握专业知识,并在毕业论文中得以体现。也正是你们长期不懈的支持和帮助才使得我的毕业论文最终顺利完成。最后,向应用电子专业的全体老师们再次表示衷心感
49、谢:谢谢你们,谢谢你们三年的辛勤栽培!28参考文献1 苏家健,等.单片机原理及应用技术M.北京:高等教育出版社,2004,26-55。2 石宗义.电路原理图与电路板设计教程 Protel 99SEM.北京:北京希望电子出版社,2002,65-80。3 江晓安,等.数字电子技术M.西安:西安电子科技大学出版社,1993,50-70。4 郑长勇,徐勇。单片机在温度检测与控制中的应用J。电子质量报,2005,12:0115 王任远,沈占彬。数字式智能温度控制器的研究J 。工矿自动化报,2008,02:0496 全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品汇编M. 北京:北京理工大学出版社,20047 DS18B20 官方英文文档 . DS18B20 官方英文站点下载 . 8 常君, 刘坤,等。基于 LPC2132 和 DS18B20 的单总线数字测温系统设计J。电子测试报,2008,04:014