基于单片机保温箱的温控系统研究最终版.doc_第1页
基于单片机保温箱的温控系统研究最终版.doc_第2页
基于单片机保温箱的温控系统研究最终版.doc_第3页
基于单片机保温箱的温控系统研究最终版.doc_第4页
基于单片机保温箱的温控系统研究最终版.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳工学院毕业设计题 目:基于单片机保温箱的温控系统研究 院 系: 信息与控制学院 专 业: 自动化 班级学号: 10303232 学生姓名: 苏 铮 指导教师: 王艳秋 成 绩: 2014年6月25日目 录1 设计要求与方案论证31.1 设计任务要求31.2 硬件方案设计31.2.1 单片机芯片的选择方案和论证31.2.2 传感器温度的设计方案论证41.2.3 模块显示的方案论证51.3 编程语言与调试环境选择62 恒温箱的硬件设计72.1 单片机主芯片STC89C51介绍72.1.1 STC89C51主要功能及PDIP封装82.1.2 STC89C51引脚介绍82.1 3 单片机的晶振与复位电路:92.2 温度采集电路设计122.2.1 温度传感器的选取122.2.2 温度采集器DS18B20接口电路设计142.2.3 温度采集器DS18B20的内部设计142.3 温度显示电路设计152.4 继电器电路的设计162.5 报警电路设计172.6 自锁开关电路的设计182.7 DC插口的设计193 系统的软件设计203.1 软件说明203.2 温度传感器DS18B20的程序流程图203.3 主程序流程图21参考文献22附录A 硬件原理图23附录 B程序代码24附录C实物图3233沈阳工学院本科毕业设计1 设计要求与方案论证首先要明确设计恒温箱的要求,然后再整体讨论和确定制作恒温箱方案,最后在完成。1.1 设计任务要求温度基本范围0-99 ;温度精度误差小于 0.1 ;数码管直读显示;可以控制温度;扩展功能:可以进行温度上下限的任意设定控制及报警功能,并且可以驱动负载进行升温或降温。1.2 硬件方案设计 1.2.1 单片机芯片的选择方案和论证因为单片机具有以下的很多优点,所以被我们拿来作为制作恒温箱的的首选芯片单片机具有的特点:1、易扩展 单片内部具有正常运行计算机所必需的所有部件。芯片外部具有许多可以扩展用的三总线及串行、并行输入/输出的管脚,很容易的就能组成各种规模的计算机应用系统。2、高可靠性,集成度高,体积小等特点 单片机在一块晶体芯片上将各功能部件集成起来,以为集成度比较高,所以单片机体积自然而然也就比较小了。芯片本身是按照在工业生产测控环境的要求下进行设计的,芯片内部布线很短,其工业抗噪音性能也优于一些通用的CPU。一般单片机将程序指令,常数及表格等都固化在ROM中不易照成损坏,大部分的信号通道都在同一个芯片内部,故而可靠性比较高。3、电压低,功耗低,便于生产便携式产品 为了满足广泛使用于便携式的系统,许多单片机的内部最低工作电压仅为1.8V3.6V,而且工作电流仅仅为数百微安。4、控制功能强 为了满足对对象的控制需求,单片机的控制指令系统均有极其丰富的条件:I/O口的逻辑操作,分支转移能力以及位处理能力,非常适用于专门的控制功能。 5、优异的性价比 单片机所具有的性能极强。因为为了提高效率和运行速度,所以单片机开始使用RISC流水线和DSP等相关技术。单片机的寻址能力已经突破64KB的限制,有的已可达到1MB或16MB,片内的ROM容量以达到62MB,RAM容量则以达到2MB。因为广泛的使用单片机,因而单片机的销量极大,各大公司的商业竞争已经使其具有很高的性价比。 方案一:采用STC89C51芯片作为核心。STC89C51内部芯片具有4KB ROM 存储的空间, 512字节数据存储空间,具有2K字节的EEPROM存储空间,完全与MCS-51系列单片机兼容,STC89C51同时可通过串口进行下载。方案二:采用AT89S51。AT89S51片内具有4K字节的程序储存空间,虽然256字节的数据存储空间没有EEPROM存储空间,但同时与MCS-51系列单片机也完全兼容,有在线编程的可擦除技术。两种单片机都能够满足设计,但STC89C51相对于ATS89C51来说价格跟低一些,而且具有下载方便简单的特点。所以,选用STC89C51片作为系统芯片。1.2.2 传感器温度的设计方案论证温度传感器是利用物质的物理性质来跟随温度变化的规律把温度转化为电量的传感器。温度传感器是温度测量仪表的核心部分,它们种类繁多。按测量方式可分为非接触式和接触式两大类,按传感器的电子元器件特性材料以及材料可分为热电偶和热电阻两大类。现代信息技术的三大基础是信息采集(即传感器技术)、信息处理(计算机技术)和信息传输(通信技术)。温度传感器的发展大致经历了三个阶段;(1)分立式温度传感器(含敏感元件);(2)模拟集成温度传感器/控制器;(3)智能温度传感器。新型温度传感器正是从模拟式转向数字式、由集成化转向智能化、网络化的发展方向。在20世纪90年代中期利用的8位A/D转换器的温度传感器,它的温度分辨能力只能达到1C,而且它测量温度的精度比较低。而现在的912位A/D转换器,分辨能力高达0.50.0625C。现在为了提高多通道智能温度传感器的转换速率,有的芯片也采用高速逐次逼近式的A/D转换器。目前,智能型温度传感器的总线技术同时也实现了规范化、标准化,采用的总线主要包含I2C总线、1-Wire总线、spI总线以及SMBus总线。作为从机的温度传感器可以通过专用的总线接口与主机进行通信。方案一:本设计是测温电路,固使用热敏电阻之类的器件利用其温度感应的效应,在将随被测温度变化的电流或者电压采集过来,用 A/D 转换后,就可用单片机来进行数据的处理,在显示器上,可以将被测物体的温度显示出来,这种设计需要用到 A/D 转换电路,而感温电路比较麻烦。方案二:考虑到使用的是温度传感器,所以在单片机电路设计中,大多数使用的都是传感器,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易的读取被测物的温度值,从而进行转换。从这两种方案来看,他们都能够完全满足设计的需求,但是从两种方案来看,采用方案二,电路会比较简单,并且软件设计也会比较简单,所以故本次设计采用了方案二。 1.2.3 模块显示的方案论证方案一:1602液晶模块1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等显示模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 它的优点是微功耗、体积小、显示内容丰富、超薄轻巧。方案二:数码管的显示 数码管是一种半导体发光元器件,它的发光二极管是其基本单元。它按段数分为七段数码管和八段数码管,其中八段数码管比七段数码管多了一个发光二极管单元(多一个小数点显示);按能显示多少个“8”也可分为1位、2位、4位等一些数码管:从发光二极管单元的连接方式可以分为共阳极数码管、共阴极数码管。共阳极数码管就把所有发光二极管的的阳极连接到一起,共阳数码管在应用时应将公共极COM连接到+5V上,当其中某一字段发光二极管的阴极为低电平时,相应字段会就点亮,但当它某一字段的阴极为高电平时,他所对应的字段就不会被点亮。共阴数码管就是指将发光二极管所有的的阴极接到一起从而形成公共阴极(COM)数码管,共阴数码管在使用时应将公共极COM连接到地线GND上面,当某一字段的发光二极管阳极为高电平时,它所对应字段就会被点亮,但当某一字段的阳极为低电平时,相应字段就不不会被点亮。由于它的价格便宜切使用简单在所以在家电领域应用广泛。综上所诉:虽然LCD1602显示较全;由于价格也差数倍之多,而且对于只显示温度值的话数码管完全够用,所以本设计选择数码管,固本设计的显示模块选着数码管。1.3 编程语言与调试环境选择本设计采用的是C语言编程,与其他语言相比C语言具有很多的优点。比如可以适用于软件开发,直接编辑调用内存,驱动程序等等。 与汇编相比,C语言在可读性、功能性、可维护性、结构性上具有明显的优势,而且含有可以调用的大量库函数。本设计通过Keil C51来调试,Keil C51是美国Keil Software公司出品的51系列并兼容单片机C语言软件开发的系统。Keil包含包括C编译器、连接器、宏汇编、库管理与功能齐全的仿真调试器在内的等等完整开发方案,并且通过一个集成开发环境(uVision)将这些部分整合到在一起。2 恒温箱的硬件设计2.1 单片机主芯片STC89C51介绍STC89C51是由宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。1、内部数据存储器(内部RAM)8051芯片中一共有256个RAM单元,但它能作为寄存器供用户使用的只有前128,后128个单元只能被其专用的寄存器所占用。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。2、中央处理器(CPU)它的中央处理器是单片机的核心,能够完成控制和运算的功能。8051的CPU能够处理8位二进制数或代码3、内部程序存储器(内部ROM)8051一共有4KB掩膜ROM,用于储存原始数据、程序或表格,因此,称它为程序存储器,简称内部ROM。4、并行I/O口 MCS-51共有4个8位的I/O口(P0、P1、P2、P3),用以实现数据的并行输入/输出。5、计数或定时器8051共有两个16位的计数或者定时器,用以实现计数或定时功能,并以其计数或定时结果控制计算机。6、串行口8051单片机有一个全双工的串行口,用以实现单片机和其它设备之间进行的串行数据传送。此串行口的功能极大,不但可以用做全双工异步通信的收发器,同时也可以作为同步的移位器应用。7、 时钟电路8051芯片的内部有时钟电路,但英晶体和微调电容需要外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6 MHz和12 MHz。8、中断控制系统8051单片机中断作用比较强,为控制应用提供了有力的支持。8051共有5个中断源,即串行中断一个,外中断两个,定时/计数中断两个。全部中断只分为低级和高级共两个优先级别。从而可以看出,MCS-51虽然是只一个单片机芯片,但其包括作为计算机应该具有的基本部件,因此,实际上MCS-51已是一个简单的微型计算机系统了。2.1.1 STC89C51主要功能及PDIP封装兼容MCS51指令系统8K可反复擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能2.1.2 STC89C51引脚介绍1、 主电源引脚(共有2根)VCC(Pin40):电源输入,接5V电源GND(Pin20):接地线2、外接晶振引脚(共有2根)XTAL1(Pin19):芯片内振荡电路输入端XTAL2(Pin20):芯片内振荡电路输出端3、控制引脚(共有4根)RST/VPP(Pin9):复位引脚,引脚上出现的2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。4、可编程输入/输出引脚(共有32根)STC89C51单片机有4组8位的可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(共有8根引脚),共32根。P0口(Pin39Pin32):8位双向I/O口线,名称:P0.0P0.7图2.1 STC89C51引脚介绍 P1口(Pin1Pin8):8位准双向I/O口线,名称:P1.0P1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称:P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线,名称:P3.0P3.7图2.2 STC89C51封装图2.1.3 单片机的晶振与复位电路:从STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就会执行复位的操作,手动按键复位有脉冲式和电平式两种方式。其中电平复位是通过RST端经过电阻与电源VCC接通而实现的。最小系统如图2.3所示。图2.3 单片机最小系统电路1、内部方式时钟电路8051芯片内部具有一个高增益的反相放大器,芯片引脚XTAL1端为其输入端,XTAL2引脚为其输出端。但是芯片的外部,XTAL1与XTAL2相跨接的微调电容与晶体振荡器,组成一个牢固的自激振荡器,单片机的时钟电路就组成了,如图2-3所示。时钟电路所产生的振荡脉冲经过触发器进行二分频后,才成为了单片机的时钟脉冲信号。其中要特别注意时钟脉冲与振荡脉冲之间的二分频关系,否则会造成概念上的混淆。一般,晶体的振荡频率范围在1.212MHz,电容C1和C2一般取30pF左右。晶体振荡频率越高,则系统的时钟频率也越高,单片机运行速度也就越快。8051在通常应用情况下,使用振荡频率一般为6MHz或12MHz。图2.4 时钟振荡电路2、外部方式时钟电路由多片单片机组成的系统中,为了使各个单片机之间时钟信号同步,应当引入惟一的公用外部脉冲信号作为各个单片机之间的振荡脉冲信号。这时,外部的脉冲信号的注入由XTAL2引脚完成,其连接如图2-4所示。图2.5 外部时钟源接法3、时序时序是用定时单位来说明的。8051的时序定时单位一共有4个,从小到大依次是:节拍、状态、机器周期和指令周期。它们之间的关系如下:(1)一个振荡脉冲的周期为节拍;(2)一个状态就包含两个节拍;(3)一个机器周期的宽度为6个状态;(4)一条指令周期由若干个机器周期所组成。 4、单片机的复位电路单片机复位就是使CPU和系统中的其他的功能部件都处在一个确定的初始状态,并从这个初始状态开始工作,复位后PC=0000H,使单片机从第一个单元取指令。单片机复位的条件是:必须是使RSTRST/VPD 或RST/VPD引脚加入持续的两个机器周期(即24个振荡周期)的高电平。若是时钟频率为12 MHz,每个机器周期为1s,则只需要2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机复位期间不在产生ALE和PSEN信号,即ALE=1和PSEN=1。这表明单片机复位期间不会有任何取指操作。复位后,内部各专用寄存器状态如下:PC: 0000H TMOD:00HACC: 00H TCON: 00HB: 00H TH0: 00HPSW: 00H TL0: 00HSP: 07H TH1: 00HDPTR: 0000H TL1: 00HP0P3:FFH SCON: 00HIP: *00000B SBUF: 不定IE: 0*00000B PCON: 0*0000其中,*表示无关位。注意:(1)复位后PC值为0000H,表明复位后程序从0000H开始执行。(2)SP值为07H,表明堆栈底部在07H。一般需重新设置SP值。(3)P0P3口的值为FFH。P0P3口为作输入口时,必须先写入“1”。单片机在复位后,已使P0P3口每一端线为“1”,为这些端线用作输入口做好了准备。电路以STC89C51单片机作为最小的系统控制核心,电路测温由DS18B20提供,三个独立式按键S1、S2、S3作为系统的输入部分。数码管显示部分。具体电路连接,2.2 温度采集电路设计2.2.1 温度传感器的选取在现代检测的技术中,传感器占据着不可动摇的位置。对数据的处理能力主机已经相当高了,但是对现实世界中的模拟量却也无能为力。如果没有各种精确可靠的传感器对模拟信号和非电量进行检测并且提供可靠的数据,那么计算机也就无法发挥出它应有的作用。当传感器把非电量转换为电量,经过放大处理后,转换为数字量的输入计算机,由计算机对信号进行分析处理。从而计算机技术与传感器技术结合起来,对自动化和信息化起到了非常重要作用。采用各种微处理技术和传感器技术可以对各种工业产品以及工业参数进行测控和检验,从而准确的测量产品性能,及时发现隐患。为了提高产品的质量、进而改进产品性能,防止事故发生而提供更可靠的数据和必要的信息。由于系统在工作中的环境比较恶劣,且对测量又相对要求较高,所以对选择合适的传感器来说就很重要。目前,国际上新型温度传感器逐渐由模拟式发展为数字式、智能化与网络化渐渐取代了集成化。智能温的度传感器DS18B20逐渐向总线标准化、高安全性、高可靠性与高精度、开发虚拟的传感器、网络的传感器、单片测温系统的研发等方向发展态势迅猛。所以,DS18B20作为温度测量装置已经广泛应用于人民的日常生活和工农业生产中。美国DALLAS公司生产的 DS18B20片可组网数字温度传感器芯片加不锈钢保护管封装而成,具有使用方便,耐磨耐碰,体积小,同时在小空间的设备同样完美适用。其单线接口方式比较特殊,仅用一条口线就能实现DS1820与微处理器的双向通讯;测温的范围为 55125,测温分辨率为0.5;多个DS1820可以并联在唯一的三线上,实现多点测温;工作电源为35V/DC;在使用中不用要添加其他外围元器件。18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后48位是芯片唯一序列号,最后8位是以上56位的CRC码。设置在出产数据时不是由用户更改的。DS18B20共64位ROM。RAM 数据暂存器,用于数据存取和内部计算,断电或失电时导致数据丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM的镜像。在上电复位时其值将被从新写入。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,可以使用户得到更高温度分辨率,单元计算的暂存、同时也是内部温度转换。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于长期存放需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,用以方便用户的操作。DS18B20的性能特点如下:1、数据线可以为其提供电量,其供电电压的范围:+3.0V+5.5V;2、其单线接口方式比较特殊:只需要一条口线就能实现微处理器与DS18B20的双向通讯;3、通过编程可实现912位的数字读数方式;4、在使用中不用要添加其他外围元器件;5、用户可自设定非易失性的报警上下限值;6、其测量温度的范围为:-55+125,测量温度分辨率为0.5。当在-55+125之间,测量温度的误差小于2,在-10+85之间,测量温度的误差小于0.5;7、可应用于各种系统/单片机;8、内含64位的激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。产品序号在出厂前就以写入ROM中。在大型温控系统组成时,多片DS18B20可以连接在单线总线上。9、负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能防止因DS18B20过热而损坏,但此时芯片的工作状态将受到影响;10、支持多点的组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温11、DS18B20的转换速率较高,9位的温度值转换只需93.75ms;2.2.2 温度采集器DS18B20接口电路设计图2.6 DS18B20引脚各引脚功能为:I/O是数据的输入与输出端,它是漏极开路的输出,外接上拉电阻之后,一般为高电平。UDD为可以连接外部电源端的端口,不工作时接地,GND为地,NC空脚。2.2.3 温度采集器DS18B20的内部设计DS18B20内部的组成主要包括7部分:温度的传感器、寄生电源、高速暂存器、64位激光(loser)ROM与单线接口、TH触发寄存器和TL触发寄存器,用来存储用户设定的存储和控制逻辑、温度上下限值、位循环冗余校验码(CRC)发生器。图2.7 DS18B20内部结构图2.8 DS1820B的电路图图 2.9DS1820B实物图2.3 温度显示电路设计数码管是一种半导体的发光器件,发光二极管是其基本单元。数码管按段数分为七段数码管和八段数码管,七段数码管比八段数码管只少了一个单元的发光二极管(少一个小数点);按可以显示几个“8”可以分为1位或2位或4位数码管; 从发光二极管单元的连接方式可以分为共阳极数码管、共阴极数码管。共阳极数码管就是把所有发光二极管的的阳极连接到一起,共阳数码管在应用时应将公共极COM连接到+5V上,当其中某一字段发光二极管的阴极为低电平时,相它所应字段就会被点亮,但当它某一字段的阴极为高电平时,它所对应的字段就不会被点亮。共阴数码管就是指将发光二极管所有的的阴极接到一起从而形成公共阴极(COM)数码管,共阴数码管在使用时应将公共极COM连接到地线GND上面,当某一字段的发光二极管阳极为高电平时,它所对应字段就会被点亮。图2.10 数码管图2.11 数码管电路图数码显示器是由LED发光二极管组合显示字符的显示器件,它使用了8个Led发光二极管,一个显示小数点,其中七个用于显示字符,所以通称为七段发光二极管数码显示器。4位一体数码管,其内部段已连接好,引脚如图所示(数码管的正面朝自己,小数点在下方)。a、b、c、d、e、f、g、dp为段引脚,S1、S2、S3、S4分别表示四个数码管的位。2.4 继电器电路的设计 电磁继电器一般由衔铁、铁芯、触点簧片、线圈、等组成的。只要在线圈两端加上一定的电压,线圈中就会流过电流,从而电磁效应就会产生,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也会随之消失,在弹簧的反作用力下衔铁就会返回原来的起始位置,使动触点和以前的静触点释放。以这种方式吸合、释放,在电路中完成了导通、切断的宗旨。关于继电器的“常开与常闭”的接触点,用此种方法区分:未通电时继电器的线圈位于断开状态的静触点时,叫做“常开触点”;静触点位于接通状态时称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。图2.12 继电器剖析图图2.13 继电器电路图2.5 报警电路设计此设计的声音报警电路所采用的是无源蜂鸣器,当一定电压流过无源蜂鸣器时,蜂鸣器就会发出报警的响声。具体电路如图2.9所示。在单片机通过驱动三极管而把信号放大时,进而就会对蜂鸣器进行驱动。图2.14 蜂鸣器电路图2.6 自锁开关电路的设计自锁开关电路中起到电源的开关作用,常开的其中一脚接DC电源插口电源脚,常开的另一脚接电路的VCC。图2.17 自锁开关电路图图2.18 继电器实物图2.7 DC插口的设计2、3脚接地,1脚实际是VCC(电源),但是电路中要接蓝色的自锁开关,然后开关的另一个脚再接电源。图2.19 DC插口电路图图2.20 DC插口实物图3 系统的软件设计3.1 软件说明 用C语言编写程序,C语言是一种程序设计语言,拥具有高级语言的特性,也有汇编语言的特性。相较汇编语言有许多的优势。编译器使用Keil Version4进行程序编译,Keil Version4使用快捷,操作简单。3.2 温度传感器DS18B20的程序流程图DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。图3.1 温度传感器DS18B20流程图3.3 主程序流程图本程序能提供温度的检测与保持温度的恒定。图3.2:主程序流程图参考文献1 陈权昌,李兴富.单片机原理及应用M.广州:华南理工大学出版社,2007:84102.2 李庆亮.C语言程序设计实用教程M.北京:机械工业出版社,2005:3258.3 杨志忠.数字电子技术M.北京:高等教育出版社,2003:125132.4 及力.Protel 99 SE原理图与PCB设计教程M.北京:电子工业出版社,2007:89150.5 徐江海.单片机实用教程M.北京:机械工业出版社,2006:128156.6 胡宴如.模拟电子技术M.北京:高等教育出版社,2008:60104.7 汪文,陈林.单片机原理及应用M.湖北:华中科技大学出版社,2007:3668.8 康华光.电子技术基础数字部分M.北京:高等教育出版社,2008:203209.9 杨欣电子设计从零开始M.北京:清华大学出版社,2005:28102.10郑永坤.电力系统接地线在位监测系统的研发雨应用D.山东:山东轻工业学院,2011:234511刘莹,王威.无线传感网的设计与实验D.大连:大连海事大学,2011:1227附录A 硬件原理图附录 B程序代码#include #define uint unsigned int#define uchar unsigned char /宏定义sbit SET=P31; /定义调整键sbit DEC=P32; /定义减少键sbit ADD=P33; /定义增加键sbit BEEP=P36; /定义蜂鸣器sbit ALAM=P12;/定义灯光报警sbit ALAM1=P14;sbit DQ=P37; /定义DS18B20总线I/Obit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间隔标志sbit DIAN = P05; /小数点uchar x=0; /计数器signed char m; /温度值全局变量uchar n; /温度值全局变量uchar set_st=0; /状态标志signed char shangxian=38; /上限报警温度,默认值为38signed char xiaxian=5; /下限报警温度,默认值为5/uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;uchar code LEDData=0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B;/=/=DS18B20=/=/*延时子程序*/void Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 Delay_DS18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 Delay_DS18B20(80); /精确延时,大于480us DQ = 1; /拉高总线 Delay_DS18B20(14); x = DQ; /稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20);/*读一个字节*/unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; Delay_DS18B20(4); return(dat);/*写一个字节*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat=1; /*读取温度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; /放大10倍输出并四舍五入 return(t);/=/=/=/*延时子程序*/void Delay(uint num) while( -num );/*初始化定时器0*/void InitTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0; /50ms(晶振12M)/*读取温度*/void check_wendu(void)uint a,b,c;c=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差a=c/100; /计算得到十位数字b=c/10-a*10; /计算得到个位数字m=c/10; /计算得到整数位n=c-a*100-b*10; /计算得到小数位if(m99)m=99;n=9; /设置温度显示上限 /*显示开机初始化等待画面*/void Disp_init(void) P0 = 0x80; /显示-P2 = 0x7F;Delay(200);P2 = 0xDF;Delay(200); P2 = 0xF7;Delay(200);P2 = 0xFD;Delay(200);P2 = 0xFF; /关闭显示/*显示温度子程序*/void Disp_Temperature(void) /显示温度P0 = 0x98; /显示CP2 = 0x7F;Delay(400);P0=LEDDatan; /显示个位P2 = 0xDF;Delay(400);P0 =LEDDatam%10; /显示十位DIAN = 0; /显示小数点P2 = 0xF7;Delay(400);P0 =LEDDatam/10; /显示百位P2 = 0xFD;Delay(400);P2 = 0xff; /关闭显示/*显示报警温度子程序*/void Disp_alarm(uchar baojing)P0 =0x98; /显示CP2 = 0x7F;Delay(200);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论