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