毕业论文基于单片机的温度控制系统.doc

上传人:xin****828 文档编号:6680192 上传时间:2020-03-02 格式:DOC 页数:50 大小:929.50KB
返回 下载 相关 举报
毕业论文基于单片机的温度控制系统.doc_第1页
第1页 / 共50页
毕业论文基于单片机的温度控制系统.doc_第2页
第2页 / 共50页
毕业论文基于单片机的温度控制系统.doc_第3页
第3页 / 共50页
点击查看更多>>
资源描述
毕业设计(论文)题 目 基于单片机的温度控制系统设计 专 业 应用电子技术 姓 名 李 婉 青 班 级 09221班04号 指导教师 周 俊 成都电子机械高等专科学校二0一二年五月基于单片机的温度控制系统设计摘 要:文章介绍了基于单片机温度控制的硬件设计和软件设计,它在很多领域都广泛运用,而该系统硬件部分的重心在于单片机。文章以温度采集系统为例, DS18B20温度测量系统是以AT89C51单片机作为控制核心,智能温度传感器DS18B20为控制对象,用LM016L液晶显示,运用C语言实现系统的各种功能。设计完成了DS18B20的温度采集电路、显示电路、温度处理电路、报警提示电路。借助仿真工具Proteus和单片机编程软件Keil实现了系统软、硬件的交互仿真,实现了课题设计目的。本课题所设计的温度控制系统可实现对远程环境的温度测量与监控,适用于电力工业、农业、煤矿、火灾、高层建筑等场所,还可以用于环境恶劣的工业控制现场。关键词:数字温度传感器DS18B20;单片机;LMO16L ;Proteus仿真;KeilBased on SCM multi-channel data acquisition system designAbstract: this paper introduces the data acquisition based on single chip computer hardware design and software design, its existence has a very important role in many areas. This paper introduces is the focus of the data acquisition system, and the system hardware part is the center of gravity of the microcontroller. In this paper, the more temperature gathering system for example, DS18B20 temperature measuring system is based on AT89C51 single chip microcomputer as control core, intelligent temperature sensor DS18B20 is the object of control, with LM016L liquid crystal display, using C language implementation of various of system function. Design finished DS18B20 temperature selection screen circuit testing and points. Using simulation tools Proteus and single chip microcomputer Keil software programming realized the system software and hardware, realize the interaction of the topic the design purpose.This subject design temperature control system can realize to the remote environment temperature measurement and monitoring, used in electric power industry, coal mine, fire, high-rise buildings and other places, can also be used for the environmental bad industrial control field.Keywords: digital temperature sensor DS18B20; SCM; Proteus simulation; Keil目录摘 要:1第一章绪论31.1课题研究的目的和意义31.2 课题内容3第二章系统设计42.1系统的总设计42.2功能模块4第三章硬件设计53.1单片机主控制单元53.2温度信号采集单元83.3液晶显示屏输出123.3.1 1602LCD的基本参数及引脚功能133.3.2 1602LCD的指令说明及时序143.3.3 1602LCD的RAM地址映射及标准字库表173.4蜂鸣器报警电路18第四章软件设计194.1主程序194.2温度采集子程序204.3数据处理子程序254.4显示子程序264.5温度处理及蜂鸣器报警子程序27第五章仿真测试295.1 Keil C51 的使用295.2 Proteus 的仿真33结束语:37致谢:38参考文献:39第一章绪论1.1课题研究的目的和意义温度是一个永恒的话题和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化会给我们的生活、工作、生产等带来重大影响,因此对温度的测量及控制至关重要。其测量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其用途已遍及工农业生产和日常生活的各个领域。然而,随着科学测量的发展,数据采集及其应用也受到了人们的关注,数据采集系统得到迅速的发展,被广泛应用于各种领域。数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统。尽管现在以微机为核心的可编程数据采集与处理采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽内并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响。相较于数据采集板卡成本和功能的限制,单片机具多功能、高效率、高性能、低电压、低功耗、低价格等优点,这就使得以单片机为核心的数据采集系统在许多领域得到了广泛的应用。1.2 课题内容数据采集也是从一个或多个信号获取对象信息的过程, 它研究信息数据的采集、存储、处理等问题。它是对传感器信号的测量与处理, 以微型计算机等高技术为基础而形成的一门综合应用技术。该文以温度采集为例,以AT89C51单片机为核心,在单片机中编写对各个硬件设备的控制程序,先通过单片机与DS18B20温度传感器建立一个联系,使DS18B20温度传感器开始工作检测所在环境的温度值,再通过LCD液晶显示器显示DS18B20温度传感器检测到的温度值,最后根据对温度范围的控制设置一温度上下限温度值用于报警提示。当然数据的采集和显示都需要相应硬件和软件共同来完成,该系统难点是对温度传感器的温度采集并显示,而对采集到的温度通过软件程序设定来进行控制就相对来说容易多了。第二章系统设计2.1系统的总设计本设计使用单片机作为控制核心,采用单个温度传感器对温度进行检测,以液晶显示屏显示检测温度,通过继电器对加热降温系统进行控制:温度过高或者过低,蜂鸣器报警提示;温度偏低进行炉温加热处理;温度偏高进行电机降温处理;。系统总体控制框图如图2.1所示:AT89C51单片机温度传感器液晶屏显示升温处理 及降温处理蜂鸣器报警图2.1系统总体控制框图2.2功能模块根据总系统的结构可以将其分为五个功能模块:单片机主控制模块、温度信号采集模块、温度处理模块、液晶屏温度显示模块、蜂鸣器报警模块。单片机主控制模块即整个系统的核心模块,是一个AT89C51芯片,主要通过执行其程序存储器Rom中的程序来对其4个并行I/O口进行读写操作完成对其他模块的控制。温度信号采集模块是由一个温度信号采集器组成,主要是温度信号采集并将数据传回给单片机主控制模块。传感器采集的温度值通过传回给主控制模块AT89C51单片机进行处理,然后送入液晶显示器进行温度显示。温度处理模块是由继电器控制,加热炉和电机分别来对温度进行升温、降温处理。液晶屏温度显示模块当然就是对温度的当前值进行显示。蜂鸣器报警模块就是对当采集的温度值大于或者小于用户自定义的遇界温度值进行报警提示。第三章硬件设计3.1单片机主控制单元主控制单元是单片机选用市场上常见的美国ATMEL公司的AT89C51作为控制元件,以下是一些AT89C51的介绍:AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下所示主要特性:与MCS-51 兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P1口可作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口可接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。P3口也可作为AT89C51的一些特殊功能口,如下表所示: 管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 所用单片机AT89C51,见下图3.1所示:图3.1AT89C51(1)时钟电路:如下图3.2连接即可构成自激振荡电路,振荡频率取决于适应晶体的振荡频率,范围可取1.212MHZ,C1、C2主要起频率微调和稳定作用,电容可取530pF。图3.2时钟电路(2)复位电路:如下图3.3图3.3复位电路3.2温度信号采集单元对于温度的采集需要用到DS18B20一总线温度传感器,以下DS18B20的一些介绍:DSl8B20温度传感器是美国DALLAS半导体公司继DSl820之后最新推出的只用改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据要求通过简单的编程实现9l2位的数字直读方式。可以分别存93.75ms和750ms内完成9位和12位的数字量,并且从DSl8B20读出的信息或写入DSl8B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接DSl8B20供电,而无需额外电源。因而使用DSl8B20可使系统结构更趋简单,可靠性更高。他在测温精度,转换时时间,传输距离,分辨率等方面较DSl820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。DSl8B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如3.4所示:图3.4 DSl8B20的内部结构图DS18B20的内部结构主要有四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DSl8B20有2种封装形式:3脚PR-35直插式和8脚SOIC贴片式管脚排列如图3.5所示:图3.5 DS18B20的管脚DS18B20的引脚说明如下:GND :地DQ :数据I/OVDD :电源NC :空脚64位激光ROM开始8位是产品类型的编号,接着是每个器件的惟一的序号共有48位,最后8位是前56位的CRC校验码,这也是多个DSl8B20可以采用一线进行通信的原因。64位激光ROM的机构如表3.1所示:表3.1 64位激光ROM8位CRC编号48位序列号8位产品系列编码LSB MSB LSB MSB LSB MSB DSl8B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除EEPRAM。后者用于存储TH,TL值。数据先写入RAM,经校验后再传给EEPRAM。而配置寄存器为高速暂存器中的第5个字节,他的内容用与确定温度值的数字转换分辨率,DSl8B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。低5位一直都是1,TM是测试模式位,用于设置DSl8B20在工作模式还是在测试模式。在DSl8B20出厂时该位被设置为0,用户不要去改动,Rl和R0决定温度转换精度位数。如表3.2所示。表3.2内部存储器TMR1R011111由表3.3可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如表4所示。其中温度信息(第l,2字节),TH和TL值第3,4节,第68字节,表现为全逻辑1;第9字节读出的是前面所有的8字节的CRC码,可用来保证通信正确。表3.3温度数据转换与时间R1R0分辨率温度最大转换时间/ms00993.750110187.51011275.001112750.00当DSl8B20接收到温度转换命令后,开始启动转换,如表3.4所示。转换完成后的温度值就以16位带符号扩展到二进制补码形式储存在高速暂存存储器的第l,2字节。单片机可通过单线接口读到该数据,读取时低位在前面,高位在后,数据格式以0.0625LSB形式表示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。表3.4高速暂存存储器温度低位温度高位HL配置保留保留保留8位CRC在DSl8B20完成温度变换之后,温度值与贮存TH和TL内的触发值相比较因为这些寄存器仅仅是8位,所以0.5位在比较时被忽略。TH或TL的最高有较位直接对应于l6位温度奇存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DSl8B20将对告警搜索命令做出响应。这允许并联连接许多DSl8B20,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。部分温度转换如表3.5所示:表3.5部分温度转换温度输入(2进制)输出(16进制)+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 1111 0101 1110EE6FH-551110 1110 0110 1111FE90H参数特性:(1)独特的单线接口只需l个接口引脚即可通信(2)多点综合测温能力使分布式温度检测应用得以简化(3)不需要外部元件(4)可用数据线供电(5)需备份电源(6)测量范围从-55至+125增量值为05(7)以9位数字值方式读出温度(8)在1秒(典型值)内把温度变换为数字(9)用户可定义的非易失性的温度告警设置(10)告警搜索命令识别和寻址温度在编定的极限之外器件温度告警情况(11)应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统极限参数:(1)任何引脚相对于地的电压-0.5V至+7.0V(2)运用温度-55至+125(3)贮存温度-55。C至+125(4)焊接温度260/l0秒如图3.6所示,为单片机与DS18B20的接口电路。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的P3.0口电源与数字输入输出脚间需要接一个4.7K的电阻。当然如果单片机的I/O口内部自带有上拉电阻就可以不加上拉电阻了。 VccDS18B20 DQGND单P1.0 片 机4.7K图3.6 DS18B20与单片机接口电路DSl8B20使用中注意到事项:DSl8B20虽然具有测温系统简单,测温精度高、连接方便、占用IO 口线少等优点,但在实际应用中也应注意以下问题:(1)在实际片使用中发现,应使电源电压保持在5v左右,如果电压过低,会使所测得到温度与实际温度出现偏高现象,使温度输出定格在85。(2)连接DSl8B20的总线电缆是有长度限制的。当采用普通信号电缆传输长度超过50m时,读取的测温数据发生错误,当采用双绞线带屏蔽电缆为总线电缆时,正常通讯距离可达l50m,当采用每米胶合次数更多的双绞线带屏蔽电缆时,正常通讯距离可以进一步加长。这种情况主要由总线分布电容使信号波形产生畸变造成的。因此,存进行长距离测量时要充分考虑总线分布电容和阻抗匹配问题。根据要求设计的温度采集单元如图3.7所示:图3.7温度采集单元在本系统要采用一条总线上挂单个DS18B20器件。在P1.0口接DS18B20温度传感器。由于只采用单个传感器,故无需读出DS18B20温度传感器的序列号,在程序中直接跳过ROM。3.3液晶显示屏输出液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。3.3.1 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3.8所示:图3.8 1602LCD尺寸图1602LCD主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.6所示:表3.6:引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.3.2 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表3.7所示:表3.7:控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表3.8如下:表3.8:基本操作时序表读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无读写操作时序如图3.9和3.10所示:图3.9读操作时序图3.10 写操作时序3.3.3 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3.11是1602的内部显示地址。图3.11 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图3.12所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”图3.12字符代码与图形对应图连接显示电路如图3.13所示:图3.133.4蜂鸣器报警电路蜂鸣器报警电路由一个报警器与一个I/O口P2.2相连,通过对I/O通过输入高低电平来控制报警器的响铃。P2.2为低电平时报警并红灯亮。见下图3.14:图3.14蜂鸣器报警电路 第四章软件设计4.1主程序系统主流程图如图4.1所示,主要完成是调用LCD液晶显示器的初始化及18b20初始化,对温度的采集、转化并显示以及对相应温度的控制处理。主程序相当于一条主线,将各个准备子程序模块组合在一起,以实现功能要求,将当前温度值显示在液晶显示器上。开始1602初始化18b20初始化是否成功NY启动温度转换温度控制响应显示温度图4.1主函数流程图4.2温度采集子程序温度采集子程序主要是实现对温度的采集及对温度数据进行处理传回给单片机在进行显示。本系统用的DS18B20温度传感器要进行温度检测就需要对它进行初始化、写指令操作,读数据操作以及读温度前的准备工作等。因此温度采集子程序又由对DS18B20温度传感器的初始化子程序、写指令子程序、读数据子程序、读温度数据前的准备子程序组成。根据DS18B20时序如下:对DS18B20的初始化时序,如图4.2:图4.2 DS18B20的初始化时序主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。作为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。对DS18B20的写操作如图4.3:图4.3. DS18B20的写操作接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。对DS18B20的读操作如图4.4:图4.4. DS18B20的读对18B20以上这些操作的程序流程图如下图4.5所示:拉高数据总线延时6s拉低数据总线延时约600s拉高数据总线延时30s检测低脉冲返回存在低脉冲标志开始NY返回开始拉高数据总线等待一个机器周期拉低数据总线写入一位二进制数据延时30s释放总线i=8i=0?i自减一返回稍作延时NY开始拉高数据总线拉低数据总线等待一个机器周期稍作延时控制器采样读出一位二进制数据将读出的位放入一字节变量中由低位到高位储存i=8i自减一i=0?返回读出的一字节数据YN一字节数据分离一字节个位,然后整字节左移一个位DS18B20的写操作流程图分离一字节个位,然后整字节左移一个位图4.5对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成。DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。微控制器控制 DS18B20 完成温度的转换必须经过以下步骤 :()每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us,然后释放,DS18B20 收到信号后等待16us60us 左右,然后发出60us240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。()发送一条 ROM 指令,见表4.1:表4.1发送ROM指令(3)发送存储器指令,见表4.2:表4.2发送存储器指令现在要让DS18B20进行一次温度的转换,那具体的操作就是:1、主机先作个复位操作,2、主机再写跳过ROM的操作(CCH)命令,3、然后主机接着写个转换温度的操作命令,后面释放总线至少一秒,让DS18B20完成转换的操作。在这里要注意的是每个命令字节在写的时候都是低字节先写,例如CCH的二进制为11001100,在写到总线上时要从低位开始写,写的顺序是“零、零、壹、壹、零、零、壹、壹”。整个操作的总线状态如4.5图。图4.5转换时总线状态读取RAM内的温度数据。同样,这个操作也要接照三个步骤。1、主机发出复位操作并接收DS18B20的应答(存在)脉冲。2、主机发出跳过对ROM操作的命令(CCH)。3、主机发出读取RAM的命令(BEH),随后主机依次读取DS18B20发出的从第0一第8,共九个字节的数据。如果只想读取温度数据,那在读完第0和第1个数据后就不再理会后面DS18B20发出的数据即可。同样读取数据也是低位在前的。整个操作的总线状态如4.6图: 图4.6读取RAM内的温度数据在这里说明一下,第二步跳过对ROM操作的命令是在总线上只有一个器件时,若总线上不止一个器件,那么跳过ROM操作命令将会使几器件同时响应,这样就会出现数据冲突。因本系统只采用一条总线上挂一个DS18B20器件就不需要通过识别DS18B20的序列号。4.3数据处理子程序数据处理也就是先对DS18B20采集得到的温度值进行的一些变换,使其转换成真实值并成为十进制数,然后再进行变化使其能在液晶显示器上显示。temp是系统定义的一无符号整型变量,用于存储温度值,方便于对温度值的处理具体的流程图见图4.7所示:读取低、高位单字节温度值开始将高、低位温度值合并成一个整型值temp负数标志置0负数标志置1将temp中的值取反加一得到其负数绝对值放入temp中temp0x0fff根据说明书temp=temp*0.625得到温度真实值temp除以100得到温度百位数值temp对100取余再除以10得到温度个位数值temp对10取余得到温度个位值低位单字节温度值对of取余,再乘以10再除以16得到温度值小数值结束图4.7数据处理子程序流程图4.4显示子程序显示子程序主要功用是将传感器测得的温度值显示出来,本系统用的是LCD液晶显示器,而LCD液晶显示器要显示出数据在之前需要对液晶显示器进行初始化,写指令,写数据等操作因为本系统液晶显示器只写不读,所以没有附加读操作的时序图。所以R/W管脚一直处于低电平,在硬件中就直接接地,在软件中就不用操作此管脚的信号了,就只需要控制RS和E管脚就可以了。根据时序图LCD液晶显示器的写指令,写数据以及初始化的流程图如图4.8所示:图4.8 LCD液晶显示子程序流程图4.5温度处理及蜂鸣器报警子程序蜂鸣器报警在本系统中由单片机的P22管脚电平的高低来控制蜂鸣器报警。单片机的P22管脚低电平蜂鸣器报警,单片机的P22管脚高电平蜂鸣器不报警。通过对读到并且进行了数据处理的温度值进行判断是否大于或者小于某一报警值而进行报警,直到读到的温度值不在报警温度值之中就停止报警。本系统以大于60小于1蜂鸣器报警为例,T为读到并且进行了数据处理的温度真实值。当P20为低电平时,系统由三极管驱动继电器线包,并由继电器来驱动大功率的加热炉,做升温处理。相应的,当P21为低电平时,继电器驱动电机风扇工作,降温处理。温度处理及鸣器报警子程序见4.9图:送入温度值TT60|T1蜂鸣器开启T30启动升温启动降温返回YYYYYYNYNYNY图 4.9温度处理及蜂鸣器报警子程序第五章仿真测试5.1 Keil C51 的使用Keil软件是美国Keil Software 公司出品的51 系列兼容单片机C语言和汇编语言软件开发系统 ,而且是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统Keil有以下几个特点:1、全功能的源代码编辑器;2、器件库用来配置开发工具设置;3、项目管理器用来创建和维护用户的项目;4、集成的MAKE工具可以汇编、编译和连接用户嵌入式应用;5、所有开发工具的设置都是对话框形式的;6、真正的源代码级的对CPU和外围器件的调试器;7、高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信。在KEIL软件中编程的步骤如下:首先打开KeilUvision2,在KEIL系统中,每做个独立的程序,都视为工程。首先从菜单中的工程中“新建工程”,建立我们将要做的工程项目如图5.1:图5.1接下来Keil环境要求我们为12工程选择一个单片机型号;我们选择Ateml公司的89C51,“确定”后工程就算建立好了如图5.2和5.3所示:图5.2图5.3建立了工程项目以后现在就要为工程添加程序,点击“文件”中的新建,新建一个空白文档;这个空白文档就是我们编写单片机程序的场所。在这里可以进行编辑、修改等操作。根据题意,在文档中写入代码,写完后再检查一下,然后保存,然后再将保存好的文档添加到工程中,具体做法如图5.4所示: 图5.4程序文件添加完毕后,对其进行编译当前程序、编译修改过的文件并生成应用程序、重新编译所有文件并生成应用程序后,再点击TARGET,则其页面为图5.5:图5.5再点击图案上的Output键如图5.5图5.6接下来就是点击上图中的select folder for objects键,得到下图将其产生的HEX文件存储在E盘zh文件夹中图5.6图5.7最后一步就是将HEX文件烧录到单片机里如图5.75.2 Proteus 的仿真Proteus是英国Labcenter electronics公司研发的EDA设计软件,是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真下台。Proteus不仅可以做数字电路、模拟电路、数模混合电路的仿真,还可进行多种CPU的仿真,涵盖了51、PIC、AVR、HCll、ARM等处理器,真正实现了在计算机上从原理设计、电路分析、系统仿真、测试到PCB板完整的电子设计,实现了从概念到产品的全过程。Proteus ISIS的工作界而是一种标准的Windows界面,如图5.8包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口图5.8所示:图5.8 rotuse ISIS 工作界面原理图绘制:(1)新建文件:打开Protuse,点FILE,在弹出的下拉菜单中选择NEWDESIGN,在弹出的图幅选择对话框中选Landscape A4。(2)元器件选取:按设计要求,在对象选择窗口中点P,弹出PICK DEVICES对话框,在KEYWORDS中填写要选择的元器件,然后在右边对话框中选中要选的元器件,则元器件列存对象选择的窗口中。本设计所需选用的元器件如下:AT89C51:单片机LM016L:图形液晶RES、RESPACK-8:电阻、上拉电阻CRYSTAL:晶振 CAP:电容DS18B20:温度传感器RESISTOR:电阻SOUNDER:蜂鸣器LED_:发光二极管RLY_SPCO:继电器HEATER:加热炉MOTOR:电机 (3)按设计连接原理图,如图5.9所示:图5.9 Proutes中系统仿真原理图在图形编辑窗口内,将鼠标置于单片机上,单击鼠标右键,选中该对象,单击鼠标左键,进入对象属性编辑页面,如图5.10所示:在“Program File”中,通过打开按钮,添加编译工程文件产生后缀为.hex 的文件。然后将晶振频率改为12MHz,点击确定。最后点击左下角的运行按钮运行仿真就OK了。图5.10结束语:通过广泛查阅各类文献资料与实际调研走访,深入了解温度控制和数据采集系统在现实生活、生产中的广泛应用与研究意义。本文以温度信号多路采集为例,介绍了用DSl8B20温度传感器温度的采集,用单片机AT89C51控制DS18B20温度传感器进行温度的采集再将温度值传回单片机进行处理在送到LM016L显示屏显示。对所选取的系统分析各单元电路的设计,以及各电路与单片机的接口技术。着重分析系统软件的设计过程,使用单片机C语言进行程序没计。本文是采用模块化的方式进行叙述,对各模块的设计进行了比较详细地阐述。本次设计的基于DSl8B20的温度测量系统是一个分布式的温度测量系统,它可以远程对温度实现测量和监控,广泛应用于电力工业、煤矿、森林、火灾、高层建筑等场合。经过这一次毕业设计,我学了不少的知识,学会了怎样查阅资料和利用工具,学会了用C语言来进行单片机的程序编写以及熟练地使用PROTEUS仿真软件和KEIL开发工具。通过这次毕业设计,最主要的还是学会了根据硬件要求用C语言对单片机进行程序编写,以前课本学习的是用汇编语言对单片机进行程序编写,现在学会了用C语言编写程序将两者一比较发现C语言要好编写得多,而且移植性也很好,没有汇编那么繁琐。其次我也对一些常见电子原件和产品有了一些了解,虽然只是了解但是能从以前的茫然到现在的了解并且能简单运用也是一个很大的进步,同时通过这一次毕业设计也使我发现了自己知识面的严重不足,对很多东西都很陌生需要重复学习。我也深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自己的所学,认识到自己的不足,同时我们也要有一种积极学习的态度,时代在进步我们也要跟着时代前进,要不断学习,不断创新,用自己的知识与行动来证明自己的价值。致谢:经过两个月的努力,我的毕业设计顺利完成了。在这里,我向所有指导过我的老师和帮助过我的同学,对他们表示深深的谢意。在本文的撰写过程中,周老师作为我的指导老师,他治学严谨,视野广阔,为我营造了一种良好的学术氛围。通过辅导讲解,使我接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,了解通用的研究方法。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于他在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。最后,我还要认真地谢谢我身边所有的朋友和同学,谢谢你们,你们对我的关心、帮助和支持是我不断前进的动力之一,我的大学生活因为有你们而更加精彩。参考文献:1 胡汉才.单片机原理及接口技术M.北京:清华大学出版社,1996 2 沈红卫.单片机应用系统设计实例与分析M.北京:北京航空航天大学出版社,20033 张永枫.单片机应用实训教程M.西安:西安电子科技大学出版社,20054百度http:/www.56doc.com/electron/scm/3936.html5 百度http:/www.wsdxs.cn/html/lunwenzhidao/附录 1 系统C语言程序#include / 51 系类单片机头文件#include #define uint unsigned int#define uchar unsigned charsbit sw=P20; /定义升温sbit jw=P21; /定义降温sbit beep = P22; /定义扬声器sbit SB1=P23;sbit SB2=P24;sbit rs=P25; /lcd的控制sbit rw=P26;sbit e=P27;sbit DQ=P10;sbit DQ1=P11; bit flag=1; uchar T=0,temp1=0,temp2=0,flag_dis=0;uchar table=wait for component.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!