毕业论文-多路温度采集系统设计.doc_第1页
毕业论文-多路温度采集系统设计.doc_第2页
毕业论文-多路温度采集系统设计.doc_第3页
毕业论文-多路温度采集系统设计.doc_第4页
毕业论文-多路温度采集系统设计.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

苏州大学本科生毕业论文(设计) 目 录摘 要 . .1Abstract. .2前 言. .3第一章 绪 论41.1 开发背景41.2 研究的目的及意义41.3 研究现状与存在问题41.4 本文所作的工作5第二章 硬件模块设计62.1 硬件设计方案62.2 控制电路62.3 温度采集电路82.4 温度显示电路82.5 报警电路92.6 按键电路102.7 MAX232串口通信电路11第三章 软件模块设计123.1 主程序123.2 温度显示程序123.3 1602液晶显示程序133.4 温度超限报警程序143.5 PC上机温度曲线显示程序15第四章 系统测试174.1 软件测试174.2 硬件调试174.3 故障现象及分析174.4 操作说明174.5 调试结果18第五章 总结与展望20参考文献致谢附录iii摘 要设计了以52单片机和串口通信为核心的多路温度采集系统,实现了多路温度的采集、报警和采集温度的实时显示。以52单片机为主,将温度传感器采集的温度通过温度转化公式转换成可以在LED上轮流显示采集的温度,并且根据所设置的温度的上限、下限作出判断,控制蜂鸣器的报警,以及报警灯红绿灯的暗灭,以此来达到对温度的采集和监控,并对过低或过高的温度产生警报。在PC机上显示温度曲线,采用了VB设计的程序,运用描点画曲线的方式,可以实时显示温度采集器所采集的温度,并且通过不同颜色的曲线表示,方便区分不同路的温度,解决了使用其他软件不能实时显示的问题。 关键词:温度,多路温度采集,驱动电路,串口通信 Abstract Designed with 52 single chip and serial port communication as the core of multi-channel temperature acquisition system, realizing the collection of multi-channel temperature, alarm and gathering the real-time display of temperature.With 52 single chip microcomputer is given priority to, turn the temperature of the temperature sensor acquisition by temperature formula into can take turns on the LED display the temperature of the acquisition, and according to set the upper limit and lower limit of temperature and control buzzer alarm, and alarm lamp lights in the dark, in order to reach the temperature acquisition and monitoring, and unfairly low or high temperature alarm. In PC display temperature curve, using VB to design programs, with the method of tracing dotted curve, can real-time display of temperature collected temperature collector, and through the curve of different colors, said easy to distinguish the different temperature, solves the problems of using other software cannot real-time display. Keywords: multi temperature;acquisition temperature;driving circuit;Serial communicationWritten by Yongqiang HeSupervised by Jingyu Peng前 言温度是工业对象中主要的被控参数之一,在各个种类的企业中应用广泛的各种加热设备、反应炉设备等都需要严格的控制温度。随着时代的进步,科技的发展,各行各业对于温度采集系统的要求也在不断提高以达到设备环境、生产流程的安全要求,也越来越成为温度采集系统的几个重要指标。设计的温度采集系统可以的采集任何时间和地点的温度,又可以根据环境的要求设置温度的上限、下限,并进行判断是否超出要求的温度范围,并对超出温度范围的同时响应报警电路,同时在PC机上可以清楚地观察到温度的变化曲线,为进一步的人为或是计算机进行温度的调节和控制做出准备。全文共分为五章。第一章绪论,第二章硬件模块设计,第三章软件模块设计,第四章系统测试,第五章总结与展望。第一章 绪 论1.1 开发背景温度是工业对象中主要的被控参数之一,在各个种类的企业中应用广泛的各种加热设备、反应炉设备等都需要严格的控制温度。随着时代的进步,科技的发展,各行各业对于温度采集系统的要求也在不断提高以达到设备环境、生产流程的安全要求,也越来越成为温度采集系统的几个重要指标。随着集成电路技术的越来越快、越来越大规模化的发展,由于单片机具有体积小、功能强、性价比高等优点,基于单片机开发出来的一系列采集、控制系统也逐渐受到广泛关注。采取以单片机作为核心,可完成对温度的采集要求。所以基于单片机的多路温度采集系统被广泛应用于很多工业过程控制中,使产品既提高了产品的功能和质量,又降低了成本,简化了设计。采用单片机设计的多路温度采集系统,可进行温度检测、采集、报警及显示,对于提高生产效率,节约能源、资源都有非常重要的作用。1.2 研究的目的及意义单片机运用于生产生活的各个方面,为电子和计算机发展提供了技术实践的平台。最近几年单线多点数字化测量技术正飞速发展,使温度检测技术变得更加快速、可靠,而且低成本,实现了数字化与网络化。此次设计提出了一种结构简单、能耗低、操作简单、方便的系统解决方案,采用DS18B20温度传感器,能以数字形式直接输出采集的周围环境温度值,并且具有测量温度误差小、分辨率高、制作成本低、抗干扰能力强、能够适应多种环境等优点,有很高的性价比,值得去开发研发。并使用52单片机作为微控制器,大大加快了运行和数据处理速度,最后实现多路温度采集与显示系统的功能。二十一世纪是科技高速发展的信息时代,人们所需要掌握的是温度的实时信息,就像股票一样,我们不仅要看到他现在的状态,还要可以保存之前的数据,方便拉出来进行参考。这就利用到VB软件,通过设计的程序,可以实时的显示温度传感器所检测到的温度,方便工作人员进行参考,从迅速而做出合理的判断来调整温度。1.3 研究现状与存在问题温度采集系统广泛的运用于生产生活中,而且以单片机为核心,具有操作简单,性价比高,方便等优点。用VB语言实现上位机数据传送,可很方便地控制通信对象的选择,灵活性较大。国外对温度检测系统的技术研究很早,从1970年就已经采用模拟式的组合仪,实现现场温度的采集,并进行指示和控制。而多路采集系统则在之后10年出现。现在开发和研究的重点是PC机的温度数据采集控制的综合控制系统。温度采集系统技术在全球发展都是很快的,其中一些国家正向着全自动化、无人化飞速发展,所采集的温度精度也非常高。相对于国外,国内对温度采集系统技术的研究起步相对较晚。我国的研究人员和技术人员不断吸取发达国家的先进技术和经验,掌握了对室内环境温度的检测控制,但仅限于单一的室内环境。我国的温度采集控制主要通过PC机控制,由原来的功能简单、操作复杂,准确性低变得功能强大、操作简单、精度高,并且性价比高。温度采集系统主要以单片机为主,我国的技术现在以单参数回路系统居多,在综合采集系统方面还不能和发达国家相比。我国的温度采集还没达到工业化程度,并且还存在许许多多的问题,例如产业化程度低,对于环境的控制水平相对落后,硬件技术落后,可靠性低等。 1.4 本文所作的工作基于单片机STC89C52的温度采集显示系统。采用温度传感器DS18B20采集温度数据,使用液晶显示屏1602液晶显示温度数据,存储器存储温度上限、下限设定值,按键设置温度上限、下限,若超过上限、下限都会报警,并且通过串口与PC机相连,通过之前用VB语言所编写的程序,显示温度的实时曲线变化。第二章 硬件模块设计2.1 硬件设计方案基于单片机的多路温度采集系统设计有单片机模块、液晶显示模块、基本的复位电路和报警电路,温度采集模块、PC曲线显示模块,最后通过其他硬件做合成完整的设计模块。连接单片机和PC机的则是采用串口通信,通过在硬件上设计的串口,将单片机采集的温度数据传输到PC机中。需要的软件设计用的程序为VB语言和C语言,通过合理的编写调试,仿真,最后输入到单片机中,来实现模块的最终功能。系统总体主要由对单片机进行编程后得到控制,系统的其他功能部件分别接至单片机的对应I/O口。整体模块如图2-1所示,此设计以STC89C52单片机为核心,使用DS18B20为温度采集器,单片机将采集到的温度实现转化,由LED显示电路来显示所采集的温度,同时通过按键电路来控制所采集的温度的上、下限,同时单片机将采集的温度与所设定的温度进行对比,从而控制报警电路的工作状态,使用晶振电路来控制单片机的复位重启,最后通过串口电路,将单片机所采集的温度发送到PC机上,通过VB设计的程序实时显示所采集的温度曲线。单片机系统LED显示电路温度采集电路报警电路按键电路晶振、复位电路PC显示温度曲线图2-1硬件模块工作图2.2 控制电路STC89C52是STC公司生产的一种功耗低、性能高的8位微控制器,拥有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很大的改进,使其在性能上比51单片机更加优越。单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能:8k字节Flash;512字节RAM;32位I/O口线;看门狗定时器;内置4KB EEPROM;MAX810复位电路;3个16 位定时器/计数器和4个外部中断,;一个7向量4级中断结构;全双工串行口。次外 STC89C52 频率可降至0Hz ,进行静态逻辑操作,并且支持2种软件可选择节电模式。在空闲模式下,CPU 停止工作但允许RAM、定时器、计数器、串口和中断继续工作。在掉电保护方式下,RAM的数据被保存下来,振荡器停止,单片机所有工作停止,直到下一个中断或硬件复位为止。STC89C52是增强型的51单片机,工作电压分为5V单片机和3V单片机,工作的频率在040MHz之间,可应用的程序控件为8K字节。当它作为总线扩展时不用加上拉电阻,但作为I/O接口时则需要添加上拉电阻。不需要下载专门的编辑器,通过串口可以直接下载自己设计的程序。具有EEPROM功能。具有3个16位的定时器和计数器。下图2-2为STC89C52引脚图: 图2-2STC89C52引脚分布图STC89C52各引脚的作用:VCC用于接+5V电源;接地GND;P0口作为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流;P1、P2口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流;P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。RST为复位输入;EA断家12V电源;XTAL1口为反向振荡器放大器的输入及内部时钟工作电路的输入。XTAL2口为来自反向振荡器的输出。P0口作为输出引脚与1602液晶显示相连;P1口与发光二极管相连,控制其工作状态;P3.53.7与按键电路相连,接受其控制信号;P2.02.3与4路温度采集器相连,接收采集的温度信号;P3.0和P3.1与MAX232的R1OUT和T1IN相连,传输采集的温度与采集时间信号;P3.4接蜂鸣器;RST接复位电路,是一种是电路恢复到初始状态的电路设备。单片机在启动时都需要复位,使得电路各部分处于初始状态,并且从初始状态工作。89系列的单片机的是复位信号都是从RST引脚输入到单片机内的施密特触发器的。在单片机正常工作情况下,若果RST引脚上存在高电平,并且能够维持2个机械周期,那么CPU就会响应将系统复位。电阻是控制复位时间,电容充电时间与RC的值成正比;X1和X2接晶振电路,晶振是给单片机提供工作信号的脉冲,单片机电路是由无数的门电路组成,而门电路工作时就需要时钟信号作为触发,过来一个脉冲,门电路就执行一次,过来多少个脉冲,门电路就执行多少次。所以,在同样电路的情况下,脉冲频率越高,单片机性能也越高。晶振就是在整个电路的时序中提供一个基本时钟,时序电路中时钟源必不可少。一般晶振电路都有这两个小电容的,它是振荡回路交联电容,如果没这两个电容的话,振荡部分会因为没有回路而停振,电路不能正常工作了。电容的大小根据振荡回路频率确定。2.3 温度采集电路本系统采用DS18B20作温度采集器。DS18B20数字温度传感器与硬件之间接线方便,能够适用于多种场合,而且此温度传感器体积小,方便使用,性价比高,不易损坏,可以在多种环境下使用,适用于各种狭小空间设备数字测温。硬件电路图如2-3所示:图2-3DS18B20引脚图DS18B20引脚功能:通过DS引脚与STC89C52的P2口相连,将采集的温度输入到单片机中处理,VCC接电源,GND接地。10K电阻作为上拉电阻,使之成为高电平,后续起到保护电路的作用。DS18B20的主要特征:温度的数字转换和输出;通信利用先进的单总线;精度高可达到0.5摄氏度;最大工作周期为750ms;多种多样的封装,方便使用于不同的硬件系统,内部存在EEPROM实现了温度的限制及报警功能;一般检测温度在-55C 到+125C之间。2.4 温度显示电路LED显示器的驱动是很重要的硬件组成部分,用来显示温度传感器所采集的温度数据。显示电路由LED液晶屏、段驱动电路、可调电阻、上拉电阻和位驱动电路组成。此设计是直接由STC89C52的P0口直接控制,实时显示采集的温度。硬件如图2-4所示:图2-41602液晶引脚连线图引脚功能说明:D0D7是8位双向数据线,接收单片机所传输的信息;R/W引脚负责读写,高电平时读取数据,低电平时写入数据;15、16分别为别光电源正负极;RS为选择寄存器,高电平时选择数据寄存器、低电平时选择指令寄存器;VL为对比度调整端;EN是使能端,当其由高电平转化为低电平时,显示模块执行操作。D0口与单片机的P0口相连接,单片机将接受的温度输出到1602液晶显示上,同时因为单片机的的P0口作为I/O使用,并且是作为输出时,时一定要加上拉电阻的。上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻对电路起到保护作用,同时提高输出的高电平值,OC们是必须要添加的;同时提高输出的驱动能力,这个在单片机内经常使用;在CMOS芯片中则是为了防止静电干扰,不用的引脚则可以用来降低阻抗;提高芯片输入信号的噪声容限,增强抗干扰能力;上拉电阻可以用来提高线的抗电磁的能力,不用的引脚容易受到电磁的干扰;在长线传输中能起到一直反射干扰。 上拉电阻是对器件注入电流,电流的强度由上拉电阻的阻值决定,但对非集电极开路输出型电路的提拉升作用非常有限,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。接可调电阻是用来调节对比度用的,若不接或者直接接VCC,此时对比度最低,将看不到电视,接GND是对比度最高,显示为方块,也看不到,只有用可调电阻调节到一定点位菜能清晰显示。应用晶液显示器作为输出器件有以下几个优点:1602液晶可以显示162个字符;正常的工作电压在4.55.5V之间;显示的数据清晰度高,且不会出现闪烁;数字式的接口使得他和单片机连接时更加可靠,操作起来更加方便;而且显示本身体积小、质量轻,方便携带和运用于各个硬件环境;而且作为节约的前提,他的功耗更加点,节约能源。2.5 报警电路此系统的报警电路采用8个发光二极管和一个蜂鸣器来模拟实现,如图2-5所示。当所采集的四路温度都处于安全温度范围内时红灯和绿灯都不亮,当其中有任何一路温度低于安全稳定范围内时,绿亮而且蜂鸣器响。同理当其中有任何一路温度高于安全稳定范围内时,红亮而且蜂鸣器响。 图2-5报警电路蜂鸣器、红绿LED灯电路由于发光二极管所允许通过的电流较小,约为10毫安左右,所以必须串联进一个电阻,起到限制电流的作用,避免了发光二极管被击穿,同时保护了电路。蜂鸣器是使电流不断地在其内部线圈流过,使得蜂鸣器的薄膜发生振动,引起空气的振动而发出报警声音,不同的频率交流电可以控制发出不同的音调。由于单片机I/O口输出的电流特别小,驱动不了蜂鸣器,所以必须加一个三极管来加强外部电源,增加了驱动能力,才能使蜂鸣器正常工作。但是I/O口的电压通常是高于三极管基极的正常工作电压0.7V的,如果I/O口内阻太低必定造成其电流加大,加大了集成电路的功耗,影响电路的稳定性,甚至烧毁电路,况且驱动电流不必太大。2.6 按键电路该设计一共有四个按键,其中一个是复位按键,如图2-6所示,起到将整个电路恢复重启的作用。VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下SW4,C放电,在10K电阻上出现电压,使得单片机复位。SW4松手,C又充电,几个毫秒后,单片机进入工作状态。图2-6复位按键另外的三个按键如图2-7所示,SW1控制调整的温度上下限,按下第一次调整温度上限,按下第二次调整温度上限,按下第三次电路设置完毕。SW2每按下一次温度增加5摄氏度;SW3每按下一次温度减少1摄氏度。图2-7温度设置按键2.7 MAX232串口通信电路该产品是由德州仪器公司(TI)生产研发的一款兼容RS232标准的芯片,如图2-10所示,MAX232就是用来进行电平转换的,该器件包含2个驱动器和接收器,一个电压发生器电路提供TIA/EIA-232-F电平。将电脑串口的10V电压转换成5V的单片机可用电压。内部结构基本可分三个部分:第一部分电荷泵电路,能够产生正负12V的电源,提供给RS-232串口使用;第二部分是数据转换通道,共有两个数据通道,数据从数据通道内输入,转换成RS-232数据送到电脑,而电脑的RS-232数据则是从两个通道输出;第三部分是供电,有VCC和GND提供。图2-8串口通信电路第三章 软件模块设计3.1 主程序设计思路的总原理,参见图3-1,通过DS18B20采集周围环境的温度,将采集到的温度数据传输到单片机内,单片机通过设置的温度公式将其转化成正常的温度,并通过延时,使得采集的四路温度能够在LED显示器上轮流显示,并且根据所设定温度的上下限做出判读,来改变报警系统红绿灯以及蜂鸣器的工作,温度高于设定的最高值则红灯亮、蜂鸣器报警;若低于设定的最低值则绿灯亮、蜂鸣器报警。同时单片机通过串口将采集的温度传输到PC机上,利用之前使用VB编好的程序,将采集的温度以曲线的形式实时显示出来。图3-1程序原理图3.2 温度显示程序4路DS18B20采集后温度的转化与显示,流程如图3-2。四路温度采集器同时采集周围环境温度,但传输使用延时使得温度的显示可以实现轮流显示。图3-2DS18B20采集显示流程3.3 1602液晶显示程序LED的读写通过按键来控制,从而达到温度上下限的控制,以及硬件的复位重启。如图3-3所示。按下key1键可以来设置温度的上下限,按一下设置上限,再按一次设置下限;key2键每按一次温度增加5摄氏度;key3键每按下一次温度减少一摄氏度;按下复位键则整个系统同恢复到初始状态。图3-3 1062液晶读写函数流程3.4 温度超限报警程序利用if语句,将采集的温度与所设定的温度上下限作对比,来控制红、绿警报灯以及蜂鸣器的工作,如图3-4所示。单片机将接受到的四路温度采集器的温度与所设定的温度上下限进行对比,若判定采集的温度在所设定的温度范围之内,则报警电路不工作;若采集的温度高于所设定的最高值,单片机驱使红色警报灯和蜂鸣器持续工作;若采集的温度低于所设定的最低值,单片机驱使绿色警报灯和蜂鸣器持续工作。 图3-4温度处理报警流程图3.5 PC上机温度曲线显示程序由于VB简单便捷的图形界面设计方法,以及他所提供的串行通信控件完全支持系统通信程序的设计和实现,所以利用VB可方便有效的实现中央监控与一个或多个通信点间的串行通信,如图3-5所示。主要有温度显示和动态曲线显示,PC机采用中断方式来接受单片机传过来的实时温度数据,即串口收到数据,VB通信控件会触发OnComm事件,在OnComm事件程序中接收数据并出俩。一个温度数据为16位两个字节,单片机传送温度数据时,按报文传送格式高低子节正好相反,所以,VB程序要对接收的数据进行处理,转换成温度值显示,并通过描点的方式来绘制曲线。图3-5温度曲线显示流程图第四章 系统测试4.1 软件测试单片机部分软件的调试主要是用Keil软件进行测试仿真,将实现编写好的软件输入到界面中,然后新建工程,进行仿真查看程序是否有错误,然后程序输入到完好的硬件电路中,插上电源,硬件电路可以完整的实现程序中所有编写的功能。PC机显示温度曲线部分,使用Visual Basic6.0来进行调试,首先新建工程,让后将自己编写的VB程序输入到里面,打开窗体,查看界面是否是自己所设置的,显示时间、温度、以及串口,还有本人姓名学校标注。然后通过USB接口将正常工作中的硬件模块接入到PC,串口选择COM3,同时打开串口,软件开始执行,可观察到四路温度为不同颜色的曲线,并且下方显示曲线的实时温度。4.2 硬件调试将硬件各模块互相连接起来,连接上电源,通过电脑之前调试成功的软件下载到单片机里,将四个DS18B20放入不同的环境,同时操作按键,可以实现对温度上、下限的调节,观察LED显示器,四路温度轮流显示。将DS18B20置于高温环境,外界温度高于设定的最高温度值,红色警报灯和蜂鸣器工作;置于低温环境,外界温度低于设定的最低温度,绿色警报灯蜂鸣器工作;当温度在设定范围之间时,红绿警报灯和蜂鸣器不工作。4.3 故障现象及分析LED显示器在插上电源后怎么都不亮,但能听到蜂鸣器有事会发出警报声,说明LED显示器的电源没接上,查看电路板,发现电源线没有焊接在一起。重新焊接,再次插上电源,LED显示器亮。按下复位键发现显示没有反应,首先先检查电路的连接问题,发现不存在问题。检查程序发现按键扫描函数存在问题,修改之后重新调试,按下复位键后LED显示恢复的最初状态。设计的VB程序在连山串口之后,无论换那个串口都无法连接到单片机,检查到串口协议都无误,发现电脑USB转串口驱动未下载,下载之后,通过串口三可以连接到单片机,则可在电脑上观察到温度变化的实时曲线。4.4 操作说明通上电以后,数码管会显示当下的环境温度,第一行显示温度,循环显示4路温度,按下K1键,可以设置温度的上下限,加K2(+)按一下上升5度,减K3(-)按一下下降1度,这样就可以设置温度的上限和下限。当温度超过上限时红色警报灯亮并且蜂鸣器发出警报,当温度低于下限时绿色警报灯亮并且蜂鸣器发出警报,详见图4-1:图4-1实物操作说明4.5 调试结果温度在所设置的上限和下限温度之间,四路温度轮流显示,报警灯和蜂鸣器不工作。如图4-2所示:图4-2正常温度工作图所测环境温度高于所设定的最高温度上限,可以看到红的亮,蜂鸣器发出警报。如图4-3所示:4-3高温警报图所测环境的温度低于所设定的最低温度,绿灯亮,蜂鸣器发出警报。如图4-4所示:4-4低温报警在PC机上显示的温度曲线,如图4-5所示:4-5实时温度曲线图第五章 总结与展望经过这次毕业设计,我学会了在给到一个方案时,如何选择最合适的电路,关于电路图的排版,元器件的选择对比,都是需要进过多次查阅资料和实践才能决定的,还有各模块之间的焊接,不是单纯的连接,还要考虑其他电路之间的影响。而编程反面则需要我有很好的逻辑思维,并不是单纯的按照书本上的知识,而是要根据操作的要求,进行合理的语言设计,来达到所要实现的目的。本次设计给了我充分展现自我的机会,锻炼了我的动手和思考能力,我相信在以后我可以凭借自己所学习的知识,独立完成给我的设计任务,并且比现在更好。参考文献1 兰羽,万可顺.基于AT89C51的无线温度采集系统设计J.国外电子测量技术,2013,062 程世田,李娟,于艳,郭亭亭.基于单片机与工控软件的多点测温系统研发J.共有人仪表与自动化装置,2014,013 周甦旸.基于单片机的温度采集系统的研究分析J.信息通信,2014,044 胡同花,周维龙.温室大棚多点温度采集系统的设计与实现J.电子设计工程,2014,135 胡军.基于无线传输多点温度采集系统的设计探讨J.通信电源技术,2014,046 张克.一种基于单片机的高精度无线温度采集系统j.工业加热,201,037 杨丹丹,杨风,马慧卿.基于单片机的温度采集系统设计J.山西电子技术,2014.038 张锐,沈大伟,马铁华,吕鹏飞.基于单片机多回路温度采集系统设计J.电子世界,2014,099 杨振东.多点远程温度采集系统J.黑龙江科技信息,2014,0310 顾涵,吴晓婷,李天福,张俊龙.基于51单片机的小型温度采集系统设计J.科技传播,2013,10致 谢首先感谢我的指导老师彭静玉对我的悉心指导,在我拿到毕业设计题目却无从下手的时候,彭老师耐心的帮我解析这个课题,并分成好几个模块,使我的思路和目的更加清晰,能够很快的完成我的毕业设计,为我今后的学习、工作道路上点亮了一盏指路明灯。彭老师这种认真教学,一丝不苟的精神值得我们每位同学学习,感谢彭老师给我们做了一个好榜样。还要感谢我的同学们,没有他们的帮助,我也不可能这么快完成我的设计,每当有什么细节的地方,不能去找老师时,我都会向他们请教,他们也睡仔细地回答我提出的问题,并帮我一起解决,整个系统才能得以顺序完成。最后感谢所有关心和帮助过我的老师与同学们,没有你的帮助,我感觉自己要完成这项设计相当困难,在这里我表示衷心的感谢。附录单片机部分:#include#include#include #define uchar unsigned char#define uint unsigned int/报警指示灯接口/sbit d1=P10;sbit d2=P11;sbit d3=P12;sbit d4=P13;sbit d5=P14;sbit d6=P15;sbit d7=P16;sbit d8=P17;/温度传感器接口/sbit DQ1=P20;sbit DQ2=P21;sbit DQ3=P22;sbit DQ4=P23;/按键接口/sbit key1=P35;sbit key2=P36;sbit key3=P37;/sbit w1=P24;sbit w2=P25;sbit w3=P26;sbit w4=P27;/1602/sbit rs=P26;sbit en=P27;/sbit beep=P34;/蜂鸣器端口uchar code table=0123456789;/uint wen_du1,wen_du2,wen_du3,wen_du4;uint wen;uint shang,xia;uchar lu;float t;uchar num;void delay(uint ms)uint x,y;for(x=ms;x0;x-)for(y=100;y0;y-);/*ds18b20延迟子函数(晶振12MHz )*/ void delay_18B20(uint i)while(i-);/第一路/*ds18b20初始化函数*/void Init_DS18B201(void) uchar x=0; DQ1=1; /DQ复位 delay_18B20(8); /稍做延时 DQ1=0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ1=1; /拉高总线 delay_18B20(14); x=DQ1; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ uchar ReadOneChar1(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ1 = 0; / 给脉冲信号 dat=1; DQ1 = 1; / 给脉冲信号 if(DQ1) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar1(uchar dat) uchar i=0; for (i=8; i0; i-) DQ1 = 0; DQ1 = dat&0x01; delay_18B20(5); DQ1 = 1; dat=1; /*读取ds18b20当前温度*/void deal_with1(void)uchar a=0;uchar b=0;Init_DS18B201();WriteOneChar1(0xCC); / 跳过读序号列号的操作WriteOneChar1(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B201();WriteOneChar1(0xCC); /跳过读序号列号的操作WriteOneChar1(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar1(); /读取温度值低位b=ReadOneChar1(); /读取温度值高位 wen_du1=(b*256+a)*0.625; /得实际温度值/第二路/*ds18b20初始化函数*/void Init_DS18B202(void) uchar x=0; DQ2=1; /DQ复位 delay_18B20(8); /稍做延时 DQ2=0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ2=1; /拉高总线 delay_18B20(14); x=DQ2; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ uchar ReadOneChar2(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ2 = 0; / 给脉冲信号 dat=1; DQ2 = 1; / 给脉冲信号 if(DQ2) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar2(uchar dat) uchar i=0; for (i=8; i0; i-) DQ2 = 0; DQ2 = dat&0x01; delay_18B20(5); DQ2 = 1; dat=1; /*读取ds18b20当前温度*/void deal_with2(void)uchar a=0;uchar b=0;Init_DS18B202();WriteOneChar2(0xCC); / 跳过读序号列号的操作WriteOneChar2(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B202();WriteOneChar2(0xCC); /跳过读序号列号的操作WriteOneChar2(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar2(); /读取温度值低位b=ReadOneChar2(); /读取温度值高位 wen_du2=(b*256+a)*0.625; /得实际温度值/第三路/*ds18b20初始化函数*/void Init_DS18B203(void) uchar x=0; DQ3=1; /DQ复位 delay_18B20(8); /稍做延时 DQ3=0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ3=1; /拉高总线 delay_18B20(14); x=DQ3; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ uchar ReadOneChar3(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ3 = 0; / 给脉冲信号 dat=1; DQ3 = 1; / 给脉冲信号 if(DQ3) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar3(uchar dat) uchar i=0; for (i=8; i0; i-) DQ3= 0; DQ3= dat&0x01; delay_18B20(5); DQ3= 1; dat=1; /*读取ds18b20当前温度*/void deal_with3(void)uchar a=0;uchar b=0;Init_DS18B203();WriteOneChar3(0xCC); / 跳过读序号列号的操作WriteOneChar3(0x44); / 启动温度转换delay_18B20(100); / this message is wery importantInit_DS18B203();WriteOneChar3(0xCC); /跳过读序号列号的操作WriteOneChar3(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar3(); /读取温度值低位b=ReadOneChar3(); /读取温度值高位wen_du3=(b*256+a)*0.625;/得实际温度值/第四路/*ds18b20初始化函数*/void Init_DS18B204(void) uchar x=0; DQ4=1; /DQ复位 delay_18B20(8); /稍做延时 DQ4=0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ4=1; /拉高总线 delay_18B20(14); x=DQ4; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ uchar ReadOneChar4(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ4 = 0; / 给脉冲信号 dat=1; DQ4 = 1; / 给脉冲信号 if(DQ4) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20写一个字节*/ void WriteOneChar4(uchar dat) uchar i=0; for (i=8; i0; i-) DQ4= 0; DQ4= dat&0x01; delay_18B20(5); DQ4= 1; dat=1; /*读取ds18b20当前温度*

温馨提示

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

评论

0/150

提交评论