1、目 录摘要IABSTRACTII引 言1第一章 方案论证21.1课题的来源21.2系统设计思路概述21.3系统方案对比21.3.1系统设计方案一31.3.2系统设计方案二31.3.3方案对比与选择4第二章 硬件系统设计52.1硬件系统设计概述52.2单片机最小系统设计52.2.1单片机简要介绍52.2.2时钟电路与复位电路52.2.3单片机的工作方式62.2.4单片机最小系统72.3 温度采集电路设计72.3.1 传感器的选用72.3.2 温度传感器DS18B20简介82.4 键盘控制电路设计112.4.1 键盘控制的主要功能112.4.2 键盘电路设计112.5 液晶显示电路设计132.5.
2、1 LCD1602液晶显示模块132.6 报警电路设计15第三章 软件设计163.1 程序设计语言与软件开发环境163.1.1 程序设计语言的选用163.1.2 Keil C51简介173.2 程序流程图173.2.1 主程序流程图173.2.2 键盘控制子程序流程图183.2.3 温度采集子程序流程图193.2.4 LCD1602显示子程序流程图203.2.5 报警电路子程序流程图21第四章 仿真测试234.1Proteus简介234.2仿真结果23总 结27致 谢28参考文献29附件A 原理图30附件B 程序31基于单片机的多点温度采集系统摘要:本课题设计制作了一个两点温度采集系统,主要实
3、现两路温度采集,采集的温度可在LCD上显示,可根据需要手动调整LCD上显示哪一路的温度数据,包括实时温度值,高温限值,低温限值,并可以通过按键对限值进行设定。本设计硬件部分以STC89C52单片机为核心,通过两路DS18B20温度传感器进行温度采集,在单片机控制下对相应传感器采集到的温度数据进行处理,并将处理后的数据显示在LCD1602显示器上。此外,还配有5V电源电路,晶振电路,复位电路,按键电路,报警电路。其中按键电路对两路传感器的温度限值进行调节;当实测温度值超过温度限值时,报警电路会进行报警,此时蜂鸣器鸣响,发光二极管发光。软件部分采用Keil uVision4集成开发环境,以C51语
4、言编写,并结合仿真软件proteus进行了仿真。在Proteus仿真环境仿真成功后,在Altium Designer summer09软件中绘制了原理图和相应的PCB图,在实验室完成了PCB板的制作。经过焊接,调试,本系统最终能实现预定的各项功能,运行良好。关键词:温度;单片机;传感器;LCDThe detecting System of the muti-point Environmental Temperature Based on Single chip MicrocomputerAbstract: This paper designed a two-point temperature
5、collection system, mainly the realization of two temperature acquisition, acquisition of temperature can be displayed on the LCD, according to the need to manually adjust the LCD show which way the temperature data, including real-time temperature, high temperature limit, low temperature limit, and
6、can be key to the limit set.The design of the hardware part of the STC89C52 MCU as the core, through the two DS18B20temperature sensor for temperature acquisition, under the control of the microcontroller on the corresponding sensor collected temperature data are processed, and the processed data is
7、 displayed in the LCD1602 display. In addition, it also equipped with a 5V power supply circuit, a crystal oscillator circuit, a reset circuit, a key-board circuit, alarm circuit. The key circuit can adjust the limit value of two sensors temperature; when the measured temperature value exceeds the l
8、imit value of temperature, the alarm circuit can alarm, buzzer ringing, emitting diode lighting.The software part adopts the Keil uVision4 integrated development environment, using C51 programming language, combined with the simulation software Proteus for simulation.In the Proteus simulation enviro
9、nment simulation is successful, in the Altium Designer summer09 software rendering of the schematic diagram and the corresponding PCB, completed in the laboratory PCB board production. After welding, debugging, this system can realize all the function of expecting, and running well.Key words: single
10、 chip microcomputer; sensor; temperature; LCD II引 言温度是重要的环境条件,也是最基本的环境条件,它与人们的生产生活息息相关。一方面,适宜的温度给人以舒适的感觉;另一方面,温度的状况决定了许多工农业产品的质量与品质。因此,对于温度的检测必不可少,也显得十分必要。做好环境温度状况的实时检测与显示,可以给后续针对环境温度状况的调节提供依据,进而更好地服务于工农业生产,更好的服务于人民生活。近年来,关于环境温度检测的技术层出不穷,检测技术与显示技术得到了很大的发展,有关的研究成果更是迅速地服务于工农业实际生产。本课题基于STC89C52单片机,采用温度
11、传感器进行温度数据采集,并交由单片机处理,最后通过LCD显示屏进行数据显示,为工农业生产提供直观的数据。第一章 方案论证1.1课题的来源温度是一种最基本的环境参数,人们生产生活与环境温度息息相关,在工农业生产过程中需要实时测量温度,在生产条件要求苛刻的实验室等场所更需要实时测量温度。而随着日常生产生活的需要,多点温度的同时采集和监测成为需要,如大型粮仓等环境,因此,研究多点环境温度的测量方法和测量装置具有重要的意义。进入21世纪,科学技术的发展日新月异,科技的进步在推动社会进步的同时也带动了测量技术的发展。在工农业生产逐步进入快车道的过程中,测量技术也成为当今科技的一个主流,被广泛地应用于工农
12、业生产的各个领域。在信号测量中,我们常采用温度传感器来检测温度。在后续的信号处理中,多交由单片机进行信号的处理与分析。采用单片机来处理温度传感器检测到的环境温度信号,不仅具有系统控制简单方便、可扩展性强、灵活性大等优点,而且,还可以大幅度地提高环境温度的检测精度与准确度。因此,本次毕业设计选择以STC89C52单片机为核心器件的环境温度检测系统作为研究课题。1.2系统设计思路概述本次系统设计以STC89C52单片机为核心部件,主要由温度信号采集电路、时钟电路、复位电路、电源电路、键盘控制电路、报警电路、LCD液晶显示电路。系统通过温度传感器电路对环境中的温度信号进行准确的采集,并将采集到数据交
13、于单片机进行分析与处理。在单片机进行数据分析与处理的同时,LCD液晶显示电路对检测到数据进行显示。若信号采集电路检测到的任何一个传感器的检测值超过人为的设定值时,则由单片机发送报警指令,此时,报警电路进行警示报警,以引起相关工作人员的注意,从而实现对环境温度状况的检测、显示、报警。本设计具体可实现如下功能:(1)检测两处环境的温度状况;(2)通过LCD显示屏显示温度采集电路采集到的环境温度状况;(3)通过拨动开关选择LCD显示哪一路传感器的温度数据;(4)使用键盘电路对温度的上下限进行设定及修正;(5)检测值与设定值比较,并通过报警电路进行警示。1.3系统方案对比在本次系统设计中,需要采用传感
14、器作为信号采集器件。所谓传感器,就是能感受规定的被测量并按一定的规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成。简单的说,就是能把被测的非电量转换成为电信号输出的器件或装置称为传感器。信号检测效果的好坏是检测系统设计成败的关键,传感器的选择又决定了信号检测的效果。为此,本次系统设计根据传感器的选用设计以下两种方案。1.3.1系统设计方案一在方案一中,采用多个温度传感器AD590来测量环境温度,然后分别将采集到的多路数据通过模数转换芯片ADC0809进行信号转换,即将采集到的模拟信号转换为数字信号,然后送到单片机进行数据的分析与处理。在方案一种,辅助电路主要由电源电路、复位电路
15、、报警电路、液晶显示电路、键盘控制电路等组成。方案结构如图1.1所示。单片机电源电路键盘控制复位电路AD590AD590模数转换液晶显示电路报警电路图1.1 方案一结构图1.3.2系统设计方案二在信号采集检测系统中,传感器的选用尤为重要,往往决定着检测到的信号是否准确,不同的传感器也会使硬件的复杂度不同。在系统设计方案二中,采用集成化的多个温度传感器DS18B20来检测环境的温度并完成转换,然后送给单片机进行分析与处理,不需要再使用ADC0809模数转换电路。系统设计方案二的结构如图1.2所示。单片机电源电路键盘控制复位电路DS18B20DS18B20液晶显示电路报警电路图1.2 方案二结构图
16、1.3.3方案对比与选择在现代生产生活中 ,温度监测被广泛应用于仓储管理、智能化建筑、气象、环保、生物制药、食品加工等众多领域。随着信息科学与微电子技术,特别是微型计算机与通信技术的迅猛发展,传感器逐渐与微处理器、微型计算机相结合,产生了智能式传感器。智能化传感器是借助于半导技术将传感器部分与信号调节电路、接口电路和微处理器制作在同一块芯片上,即构成大规模集成电路的智能化传感器。方案一中分别采用温度传感器进行温度采集,不仅需要各自配备相应的数模转换电路,使电路变得复杂,而且在后续的系统调试过程中也容易出现许多不必要的麻烦,但是编程相对简单。而方案二中采用温度一体化的传感器,不仅简化了电路结构,
17、而且,省去了方案一中由于电路调试所带来的不必要麻烦,但编程相对复杂。因此方案二电路简单,抗干扰能力强,采用温度采集转换一体化的传感器,不仅具有信号检测、转换和处理功能,同时还具有存贮、记忆、自动检测报警等多种功能。因而体积缩小、线路简化、结构更紧密,可靠性和抗干扰能力大大提高,但编程相对复杂一些。综合考虑硬件电路、软件设计、经济条件等原因,通过方案之间的比较,本课题选择第二种方案进行系统设计。第二章 硬件系统设计2.1硬件系统设计概述 本系统设计采用STC89C52系列单片机作为核心部件,采用DALLAS公司生产的DS18B20温度检测、转换、报警一体化的数字传感器作为环境温度采集电路的主要部
18、件,DS18B20采集到的环境温度信号送给STC89C52单片机进行分析与处理。由于显示的数据只有温度数据和英文字符,数据较少,液晶显示电路采用LCD1602就可以完成显示需求。报警电路由发光二极管和蜂鸣器等组成,当检测值超过设定值时,报警电路中的发光二极管发光,蜂鸣器响起,实现报警功能。键盘控制电路由于所需按键较少,采用独立式键盘方式以及拨动开关完成相应的控制调节功能。2.2单片机最小系统设计2.2.1单片机简要介绍单片机是单片微型计算机(Single Chip Microcomputer)的简称。它是把组成微型计算机的各个功能部件:中央处理器CPU、随机存储器RAM、只读存储器ROM、I/
19、O接口电路、定时/计数器以及串行通信接口等部件集成在一块芯片中,构成一个完整的微型计算机。STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供灵活、有效的解决方案。2.2.2时钟电路与复位电路(1)时钟电路STC89C52单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地工作的。常用的时钟电路设计有两种方式,一种是内部时钟方式,另一种为外部时钟方式,本系统采用内部时钟方式,将XTAL1与XTAL2两引脚跨接石英晶体振荡器和微调电容
20、,时钟电路如图2.1所示。图2.1 时钟电路2.2.2.2复位电路STC85C52单片机的复位是由外部复位电路来实现的。复位电路通常采用上电自动复位和按键复位两种方式。在本次系统设计中采用按键复位的方式,复位电路如图2.2所示,接在单片机的第9引脚(RST引脚)。图2.2 复位电路2.2.3单片机的工作方式STC89C52单片机有复位、程序执行、低功耗、编程和校验四种工作方式。 (1)复位复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中,程序出错或操作失误使系统不能正常运行时单片机会进入死锁状态,需要进行复位操作,从而使单片机摆脱死锁状态。复位时,PC初始化为0000H,使STC
21、89C52单片机从0000H单元开始执行程序。复位除对PC产生影响外,还会对其他一些寄存器产生影响。(2)程序执行方式程序执行方式是单片机的基本工作方式。系统复位后PC=0000H,考虑到单片机存储器结构的特殊性(0003H002AH共40个单元,预留用于存放中断程序的入口地址),在0000H0002H中放一条绝对跳转指令,从而使程序从指定的地址开始执行。配合程序调试,程序又可运行在单步、跟踪、全速运行三种执行方式。目前一般仿真器都提供这三种程序执行方式。(3)低功耗工作方式51单片机中有HMOS和CHMOS两种工艺芯片,它们的节电运行方式不同,HMOS单片机的节电工作方式只有掉电工作方式,C
22、HMOS单片机的节电工作方式有掉电工作方式和空闲工作方式两种。(4)编程和校验方式对于片内程序存储器为EPROM型的单片机,需要一种对EPROM可以操作的工作方式,即用户可对片内的EPROM进行编程和校验。这种工作方式即称为编程和校验方式。2.2.4单片机最小系统单片机最小系统,也称单片机最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对于STC89C52单片机而言,最小系统应该包括:单片机、时钟电路、复位电路等。下图即为一个单片机的最小系统,其具体结构如图2.3所示。图2.3 单片机最小系统2.3 温度采集电路设计2.3.1 传感器的选用在温度采集电路中,传感器的选用是关键。在大多
23、数情况下,对温度传感器的选用,需考虑以下几个方面的问题:1、被测对象的温度是否需记录、报警和自动控制,是否需要远距离测量和传送。2、测温范围的大小和精度要求。3、测温元件大小是否适当。4、在被测对象温度随时间变化的场合,测温元件的滞后能否适应测温要求。5、被测对象的环境条件对测温元件是否有损害。6、价格如何,使用是否方便。根据以上原则,DS18B20温度一体化的数字传感器完全可以满足设计要求,因此本次设计采用DS18B20温度传感器。2.3.2 温度传感器DS18B20简介2.3.2.1 DS18B20的引脚图DS18B20数字温度传感器的外形及管脚示意图如图2.4所示。图2.4 DS18B2
24、0外形及管脚排列示意图各引脚的功能如下:引脚1电源地;引脚2数字信号输入/输出端;引脚3外接供电电源输入端(在寄生电源接线方式时接地);2.3.2.2 DS18B20的内部结构DS18B20的内部存储资源分为8个字节的ROM、9个字节的RAM、3个字节的EEPROM,如表2.1所示。表2.1 DS18B20内部存储器分布ROM(8个字节)A1A2A3A4A5A6A7A8RAM (9个字节)B1B2B3B4B5B6B7B8B9EEPROM(3个字节)C1C2C3(1)ROM:在DS18B20内部光刻了一个长度为64bit的ROM,这个编码是器件的身份识别标志。如表2.2所示。64位光刻ROM的排
25、列是:开始(最低)8位是产品类型标号,对于DS18B20来说就是(28H),接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。表2.2 DS18B20中64位ROM存储内容分布8位CRC编号48位序列号8位产品系列编码 MSB LSB MSB LSB MSB LSB 注:MSB为最高有效位 LSB为最低有效位(2)RAM:高速暂存存储器(RAM)由9个字节组成,包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是
26、温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是温度高限TH、温度低限TL暂存区,第五个字节是配置寄存器暂存区,第6、7、8字节是系统保留用,就相当于DS18B20的运算内存,第九个字节是冗余检验字节。其分配如表2.3所示。表2.3 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位(LS Byte)0温度值高位(MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8第0和第1字节:当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。两字节所表示内容如表2.4所示。单片机可通过单线接口读到
27、该数据,读取时低位在前,高位在后。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表2.4 DS18B20温度值低位和高位寄存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0232221202-12-22-32-4LS Byte bit15 bit14 bit13 bit12 bit11 bit9 bit8 bit7SSSSS262524MS Byte 温度转化后得到的16位二进制数据中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于
28、0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07D0H,十进制是2000,乘以0.0625就等于125。第2第3字节:RAM的第2、3、4字节和EEPROM的三个字节是对应的,内容是相同的,只是RAM因为是暂存器,失电后数据就丢失了。而EEPROM是电擦除只读存储器,失电后数据不会丢失。第2字节为报警值高限TH,第3字节为报警值低限TL。第4字节 配置寄存器:第4字节的配置寄存器是用来设置DS18B20的工作模式和测量精度的,其内容如表2.6所示。表2.6 DS18B20配置寄存器结构TMR1R011111低五位一直都是1,TM是测试模式位
29、,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表2.7所示(DS18B20出厂时被设置为12位)。表2.7 DS18B20温度分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms我们使用时可以跟据实际需要通过修改RAM第4字节的R0和R1的值来DS18B20的温度测量精度。需要保存这种设置时,还要用一条复制命令将RAM内的数据复制到EEPROM内。第5、6、7、8字节:RAM的第5、6、7字节是器件的保留字节,就相当于器件内部转换运算
30、时所用的内存。第8字节是循环冗余校验字节。它是前面8个字节的CRC值。起着对前面字节的校验作用。(3)EEPROM:EEPROM只有三个字节,和RAM的第2、3、4字节的内容相对应,它的作用就是存储RAM第2、3、4字节的内容,以使这些数据在掉电后不丢失。2.3.2.3 DS18B20供电方式外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证测量精度。所以本系统采用外部电源供电方式。在外部电源供电方式下,
31、DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上可以挂接任意多个DS18B20传感器,组成多点测温系统。外部电源供电方式如图2.5所示。在外部供电方式下,DS18B20的GND引脚必须接地,不能悬空,否则不能转换温度,读取的温度总是85。图2.5 DS18B20外部电源供电本次设计中,将两个DS18B20温度采集电路分别接于单片机的P0.0引脚和P0.1引脚。2.4 键盘控制电路设计2.4.1 键盘控制的主要功能在单片机应用系统中,键盘用于输入数据、代码和命令;显示器用来显示单片机的输入值、控制过程中间信息及运算结果等。
32、键盘和显示器是实现人机对话两个必不可少的硬件配置。在本系统中,键盘控制电路的主要功能是用于温度限值的设定和切换LCD显示的温度数据项。2.4.2 键盘电路设计在键盘接口技术中,键盘分独立式键盘和矩阵式键盘两种。1、独立式键盘独立式键盘是最简单的键盘电路,每个键独立的连接一根输入线。这种键盘的优点是结构简单、使用方便,目前这种结构的键盘应用还相当普遍,这种键盘的缺点是每个键占用一根I/O口线,这样随着键盘数量的增加I/O端口会不足。因此独立式按键结构的键盘只适应于键盘数量较少的应用系统。2、矩阵式键盘矩阵式键盘也称行列式键盘。在系统所需按键数较多时,采用此种结构式键盘。行列式键盘由键盘开关矩阵、
33、输出(行线)锁存器、输入(列线)缓冲器三部分组成。在行列式键盘有以下几种结构形式。第一种是直接使用I/O口构成的行形式键盘电路。MCU的I/O口输出具有锁存器,输入具有缓冲器,因此应用I/O口直接与行线、列线相连就可以组成行列式键盘。第二种是利用I/O口和译码器构成的行列式键盘电路。第三种是利用串行口和移位寄存器构成的行列式键盘电路。尽管构成的行列式键盘结构形式不一样,但它们的工作原理是相同的。按键扫描方式有以下3种:第一种程控扫描方式。CPU从执行程序就开始了键盘的扫描,等待来自键盘的命令。这种程控扫描方式,适用单任务多分支结构。第二种定时扫描方式。在多任务应用系统中,既要执行当前任务,又要
34、及时接受键盘命令,定时扫描方式适应这种需要。具体做法是:在程序初始化时,先对定时/计数器进行设置,使其每10ms中断一次,每次中断,CPU将去扫描一次键盘,若扫描到有键按下,CPU将对键盘输入作相应的处理。第三种中断扫描方式。当有键按下时,产生中断请求,CPU响应中断,在中断服务程序扫描键盘后做相应处理。这是多任务应用系统常用的一种方式。在这次设计中,键盘控制电路主要用于设定温度的上下限和对显示的内容进行切换等,所用按键数较少,所以使用独立式键盘,足以满足系统设计的要求。所需的一个拨动开关和三个按键分别接单片机的四个引脚即可。其电路结构如图2.6所示。图2.6 独立式键盘连接图拨动开关和按键的
35、功能如下:拨动开关:拨动开关用来决定LCD上显示的是哪一路传感器的数据:若触头接1(接地),则显示传感器1的温度数据;若触头接3(悬空),则显示传感器2的数据。按键1(S3):显示项切换键。LCD显示一个传感器的数据时,有三个数据选项,分别为当前传感器采集温度值,当前传感器设定的最高限值(TH),当前传感器设定的最低限值(TL),按S3键可以对这三个数据分别进行显示查看。按键2(S4):限值+1键。若当前LCD上显示的数据是一个传感器的最低限值或最高限值,则按下S4后该限值加1;若当前显示的是采集到的温度值,则该按键不起作用。按键3(S5):限值+1键。若当前LCD上显示的数据是一个传感器的最
36、低限值或最高限值,则按下S4后该限值加1;若当前显示的是采集到的温度值,则该按键不起作用。2.5 液晶显示电路设计本次设计中,所需要显示的数据主要有当前温度值和上下限参数,也即所需显示的数据不多,而LCD1602可以总共显示32个字符,因此,采用LCD1602完全能够满足显示要求,这就是液晶显示电路设计中采用LCD1602的缘故。2.5.1 LCD1602液晶显示模块液晶显示模块以其功耗、体积小、显示内容丰富、模块化、接口电路简单等诸多优点,在电器设备、仪器、仪表中得到广泛应用。液晶显示模块分字符型和点阵型两种,前者字符型显示模块只能显示常用的字符,后者点阵型液晶显示模块除显示字符外还能显示各
37、种图形和汉字。目前,尽管液晶显示模块种类繁多,但是其结构及控制方法是一样的。LCD1602液晶显示模块表示横向有128点,纵向有16点,可显示162中文字2行,每行16个字。芯片工作电压为4.5V5.5V,最佳工作电压为5V。1602液晶显示芯片的引脚分布如图2.7所示。图2.7 1602液晶显示芯片引脚分布图LCD1602芯片各引脚接口说明如表2.8所示。表2.8 1602液晶显示模块引脚功能管脚号管脚名称电平管脚功能描述1VSS0V地电源2VDD5V正电源3VL液晶显示偏压,为显示器对比度调整端4RSH/L寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。5R/WH/L读写信号线
38、,高电平进行读操作,低电平进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。6EH/L使能端,E为高电平跳到低电平时,液晶模块执行命令。7D0H/L双向数据线8D1H/L双向数据线9D2H/L双向数据线10D3H/L双向数据线11D4H/L双向数据线12D5H/L双向数据线13D6H/L双向数据线14D7H/L双向数据线LCD1602显示电路连接图如图2.8所示。其中VL引脚经滑动变阻器与地相连,通过调节滑动变阻器可调节液晶背光;RS引脚与单片机P1.5连接,用于控制LCD寄存器的选择;R/W
39、引脚与单片机P1.6引脚连接,用于通过单片机对LCD进行读写控制;数据端口D0-D7则直接与单片机P3连接,用于数据的传送。图2.8 LCD1602显示电路连接图2.6 报警电路设计当传感器的测定值超出系统预设值时,蜂鸣器发出报警声音,同时发光二极管闪烁。提示监测人员注意,以便做出相应调整。报警电路与单片机的接口电路如图2.9所示。图2.9 报警系统与单片机接口图第三章 软件设计3.1 程序设计语言与软件开发环境3.1.1 程序设计语言的选用在单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。对于用惯了汇编语言的人来说,高级语言的可控性不好,不如汇编语言那样能够随心所欲。但是使用汇
40、编语言会遇到很多问题,首先它的可读性和可维护性不强,特别是当程序没有很好标注的时候;其次就是代码的可重用性也比较的低。C语言却没有这些问题。C语言具有模块化,容易阅读和维护等优点。由于模块化,用C语言编写的程序有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少了开发的时间。用C语言编写程序比用汇编语言更符合人们的思考习惯,开发者可以更专心地考虑算法而不用费很大力气考虑一些细节问题,这样就减少了开发和调试的时间。使用C语言,程序员不必十分熟悉处理器的运算过程,这是因为很多处理器支持C编译器,这也使得用C语言编写的程序有很好的可移植性。对于大多数51系列单片机,使用C语
41、言有如下优点:1、不需要了解处理器的指令集,也不必了解存储器结构。2、寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的寻址和数据类型等细节。3、指定操作的变量选择组合提高了程序的可读性。4、可使用与人的思维更相近的关键字和操作函数。5、与使用汇编语言编程相比,C语言的程序的开发和调试时间大大缩短。6、C语言中的库文件提供许多标准的例程,例如格式化输出、数据转换和浮点运算等。7、可实现模块化编程技术,从而可将已编制好的程序加入到新程序中。8、C语言可移植性好且非常普及,C语言编译器几乎适用于所有的目标系统,已完成的软件项目可以很容易地转换到其他的处理器或环境中。综上所述,在本次毕业
42、设计中,使用C语言来编写程序。3.1.2 Keil C51简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行的开发51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起
43、。3.2 程序流程图3.2.1 主程序流程图系统程序经开始初始化之后,进入工作模式。首先,进行键盘扫描,扫描是否有按键按下,有按键按下则做出相应的响应与处理,完成设定值的输入或通道及选项的切换;没有按键按下则显示当前指定输出;按键处理完成之后,单片机会根据当前指定的通道使相应的DS18B20开始采集温度数据并完成转换,将采集到的数据发送给单片机,并由单片机将数据发送给LCD1602进行数据显示;然后进行报警检测,若判断出检测值超出设定值的范围,则报警电路的蜂鸣器响起,报警发光二极管发光,起到报警警示作用。主程序的流程图如下图3.1所示。初始化蜂鸣器、LCD开始扫描结果处理在LCD上显示数据两温
44、度传感器温度是否超限?报警Y按键扫描N图3.1 主程序流程图3.2.2 键盘控制子程序流程图键盘控制电路主要用来设定温度上下限和切换显示选项(传感器1温度Temperature1或者传感器Temperature2,对应上限温度TH1、TH2,下限温度TL1、TL2)。程序开始后,首先检测拨动开关所对应引脚为高电平还是低电平,若为低电平,则接通温度传感器1对应通道,LCD上显示1通道所对应的数据;若为高电平,则接通2通道,LCD上显示2通道所对应的数据。然后检测是否有按键按下,若有键按下,则检测是哪个键按下,若为1键,则当前通道对应的模式值加1,若2键按下,则当前通道的温度上限值或下限值加1;若
45、3键按下,则当前通道的温度上限值或下限值减1。其流程图如下图3.2所示。开始初始化按键扫描拨动开关接低电平?按键1按下?按键1处理程序YY按键2按下?YN按键2处理程序按键2按下?YN按键3处理程序按键1按下?按键1处理程序Y按键2按下?YN按键2处理程序按键2按下?YN按键3处理程序N结束NN图3.2 键盘控制流程图3.2.3 温度采集子程序流程图温度采集电路用于温度数据的采集,在初始化之后,等待单片机发送的数据采集指令,在单片机发送采集指令后,等待DS18B20响应,DS18B20做出响应后就会进行一次温度数据的采集,DS18B20所要采集的温度信号是模拟信号,需要在片内经过模数转换后再送给单片机进行必要的处理,然后调用显示子程序完成数据的显示,至此结束程序。其工作流程图如图3.3所示。开始初始化是否有数据采集指令?YN数据采集片内数据转换调用显示子程序线束图3.3 温度采集程序流程图3.2.4 LCD1602显示子程序流程图LCD1602显示电路用于显示温度值和时间的显示,其具体工作流程为先由单片机向其发送指令,即向LCD1602写指令,设置第一行显示位号,