《单片机多点温度检测.doc》由会员分享,可在线阅读,更多相关《单片机多点温度检测.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实训成绩批阅教师日 期实 训 报 告课程名称 单片机实训 专业班级 电信1012 学 号 40 学生姓名 邓军 指导教师 殷群 实训地点 德信楼208、308 2013年 6 月 15 日摘要随着时代的发展、社会的进步、科学技术的不断提高,对温度测量的范围要求不断增大,同时对温度测量的精度要求也不断提高。因此,对如何方便、精确、实时的测量温度的研究也成为一个重要的研究课题。本设计以STC89S52单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、PC机与单片机串
2、口通讯电路和一些接口电路 。单片机通过对信号进行相应处理,从而实现温度控制的目的。 89C52单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实例也很多。使用8052单片机能够实现温湿度全程的自动控制,而且8052单片机易于学习、掌握,性价比高。使用8052型单片机设计温度控制系统,可以及时、精确的反映室内的温度的变化。本文主要使用C语言进行程序编写,通过程序与硬件仿真的配合,最终可以实现具有正常监测,报警上下限设置、报警和显示等功能的多路温度检测系统设计。关键字 :STC89C52,DS18B20,四位七段数码管,报警,延
3、时,keil,proteus,C语言,多路温度检测 Abstract STC89S52 single-chip microcomputer as the core of the design of temperature control system working principle and design method. By temperature chip DS18B20 temperature signal acquisition and digital signal transmitted to the microcontroller. This paper introduces t
4、he hardware part of the control system, including: temperature detection circuit, temperature control circuit, PC and single-chip microcomputer serial port communication circuit and some interface circuit. SCM through the signal is processed to achieve the purpose of temperature control.Chip 89 c52
5、is often used to control, control in the intelligent instruments and meters, industrial testing, the respect such as mechanical and electrical integration made remarkable achievements, used as an example of temperature and humidity control system is very much also. Using 8052 microcontroller to achi
6、eve temperature and humidity automatic control of the distance, and 8052 single-chip computer is easy to learn and master, cost-effective. Using 8052 single chip microcomputer temperature control system design, can be timely and accurately reflect the change of indoor temperature.This paper mainly u
7、sing C language for programming, through the program and hardware simulation, finally can realize having normal monitoring, alarm threshold setting, alarm and display functions such as multi-channel temperature detection system design.Key words: STC89C52, DS18B20, seven segment digital tube, alarm,
8、latency, keil, proteus, 目录 前言51.1、课题背景51.2、课题分析61.3、目的和意义6一、 总体设计61、 多点温度控制设计框图62、 总体功能7二、 详细设计71、硬件设计71)电路原理图72)实物图83)元器件清单84)电路说明92、 软件设计111)、软件流程图112)、关键代码描述12三、系统测试171、硬件测试172、软件测试18四、总结19五、参考文献20前言1.1、课题背景 随着社会经济的高速发展,电子技术在国民经济的建设生产中占有相当重要的地位,无论同人民生活,经济建设,还是国防建设和科学研究都有着紧密的关系。加强电子科学技术的研究,对于提高产品质
9、量,改进工艺,实现标准化、系列化、自动化;对于保障安全生产、提高生产效率,降低能源消耗;对于企业生产自动化、科学化、提高科研水平,增加经济效益都具有非常重要的作用。利用电子技术对温度进行测量,在社会经济发展的各个领域中都十分重要。人们的日常生活、工农业生产和科学技术试验等很多方面都与温度测量有着非常重要的关系。温度做为一个非常重要的物理量,是社会生产过程中最普遍也是最重要的测量参数之一。随着时代的进步、社会的发展、科技的不断更新,对温度测量范围的要求不断扩大,同时对温度测量的准确性要求不断增高。对温度监测的环境要求越来越广泛,测量的范围也越来越大,对温度监测的技术要求也越来越高。因而,对温度的
10、监控和温度监控技术的研究也成为了一个十分重要的研究课题。 单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济,数字化。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。适合于各种环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20可以程序设定912位的分辨率,分辨率设定,及可以设定的报警温度存储在 EEPROM中,掉电后依然保存。DS18B20使电压,特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。并且应用电路电但便于设计。1.2、课题分析 近年来随着单片机的发展和传感器技术
11、的革新,温度检测领域也完成了从模拟信号到数字信号的转变。DS18b20温度传感器的广泛应用更是推动了这一领域的发展。另外显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点在各类仪表和显示系统中得到越来越多的应用,现在也是单片机应用设计中最常用的信息显示模块。综合以上产品的发展特点,希望温度检测系统在未来的发展中有更广阔的应用空间并且具有更好的现场测量优越性。 本文将介绍数字温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89c52单片机为控制器构成的数字温度控制装置的工作原理及程序设计作了详细的介绍。其具有读数方便,方便控制,输出温度采用数字显示,本系统可以应用在大型工业及
12、民用常温多点监测场合。1.3、目的和意义 8051单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实例也很多。使用8051单片机能够实现温湿度全程的自动控制,而且8051单片机易于学习、掌握,性价比高。本设计是心STC89C52为单片机作为控制核心,提出了一种基于DS18B20的单总线多点温度测控系统,多个温度传感节点通过单总线与单片机相联形成分布式系统。单片机通过实时监控温度的变化,通过数码管显示各节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而远程实现对整个温度系统的管理和控制。这种分布式温度测量系统具有成
13、本低廉、传感精度高、系统稳定、易于管理等优点。一、 总体设计1、 多点温度控制设计框图单片机Stc89c52DS18B20 温度芯片1数码管显示两个温度DS18B20 温度芯片2报警电路,蜂鸣器和LED灯2、 总体功能本设计的总体设计方案是一个基于STC89C52单片机为主控芯片,DS18B20为温度传感器的职能多路监控检测系统,并加以复位电路,电源电路、LED指示电路和报警电路共同构成了本设计,其主要功能和指标如下:1、利用温度传感器DS18B20测量2点温度;2、温度测量范围:0100;3、测温误差根据传感器误差范围小于0.5;4、设置温度报警的上下限,具有报警功能;当达到上限时蜂鸣器发出
14、声音,并且有对应的LED指示灯亮。5、采用数码管显示,分别用两个四位七段数码管显示两个温度传感器的温度。二、 详细设计 1、硬件设计1) 、电路原理图2) 实物图3)元器件清单名称型号数量万能板3单片机STC89C521四位七段数码管HSN5642S2三极管90129电阻2.7K,560欧8,20排线杜邦线无数蜂鸣器无源1led4瓷片电容1032电解电容47u1晶振11.05921开关1按钮1排针无数温度传感器DS18B2024)电路说明上图所给电路时仿真电路图,电路元器件不齐全。比如单片机最小系统没有,数码管的段选端没有加上限流电阻,位选端没有加驱动三极管9012,LED也没有加限流电阻。
15、(1)报警电路 在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制。硬件电路如下图所示: (2)DS18B20温度测量模块介绍 DS18b20是美国DALLAS公司推出的单总线数字化测温集成电路,它具有独特的单线接口方式,将非电模拟量温度值转换为数字信号串行输出仅需占用1位I/O端口,能够直接读取被测现场的温度值。它体积小,电压适
16、用范围宽(3v5v),且可通过编程实现912位的温度读数,即具有可调的温度分辨率,因此实用性和可靠性较高,应用广泛。以下是DS18b20的内部结构图。DS18B20有4个主要的数据部件:1)、64位激光ROM。64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。2)、温度灵敏元件。3)、非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。4)、配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值 DS18B20的测温范围为-55+125,在-10+85范围内,精度为0.5。
17、在电压低于3.4v时精度误差较大。在本系统中使用了两个DS18b20温度传感器,测温范围为0100,另外根据器件稳定工作的特点,考虑到驱动能力的不足,采用外加5V电源以满足传感器精度高的要求。 根据其时序特点以下是DS18B20与STC89C52单片机构成的温度监测系统如下: 图2-6 DS18b20的典型应用本系统为多点温度测试。DS18B20采用外部供电方式,理论上可以在一根数据总线上挂256个DS18B20,但实际应用中发现,如果挂接8个以上的DS18B20就会产生功耗问题。另外单总线长度也不宜超过0.5M,否则会影响到数据的传输。在这种情况下我们可以采用分组的方式,用单片机的多个I/O
18、来驱动多路DS18B20。在本电路板的设计中考虑到初步实践的准确性,暂使用2个DS18B20分别连接单片机的p1.0 和p1.1口。2、 软件设计本系统采用C语言编写,主程序主要由四部分构成,系统通电后首先初始化系统,依次完成温度采集、温度处理、数据显示、报警处理等四项功能。温度采集部分主要完成2个温度测试点的温度数据采集任务;温度处理部分主要是将采集到的温度数据储存并且转换了可以在数码管上显示;数据显示部分主要实现温度数据的显示,显示方式根据设计要求2个温度测试点的固定显示;报警处理部分主要是将采集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则
19、蜂鸣器报警。1)、软件流程图开始系统初始化温度采集温度处理数据显示报警处理读温度初始化温度传感器扫描键盘选定所需芯片选定所需芯片进行温度转换读取温度调试显示子程序子程序返回 总流程图 DS18B20操作流程图2)、关键代码描述#include#define uchar unsigned char #define uint unsigned int sbit DQ=P10; /温度数据口sbit DQ1=P11;sbit wx1=P20; /位选1sbit wx2=P21; /位选2sbit wx3=P22; /位选3sbit wx4=P23; /位选4sbit wx5=P24; /位选1sbi
20、t wx6=P25; /位选3sbit wx8=P27; /位选2sbit wx7=P26; /位选4sbit beep=P13;sbit led=P14;sbit led1=P15;unsigned int temp, temp1,temp2,xs;unsigned int temp3,temp4,temp5,xs1;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99, /共阳数码管 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6;/*延时程序*/ void delay(unsigned int m) /温度延时程序 while
21、(m-);void delay1(unsigned int m) unsigned int i,j; for(i=m;i0;i-) for(j=110;j0;j-); void Init_DS18B20() unsigned char x=0;DQ = 1; /DQ复位 ds18b20通信端口 delay(8); /稍做延时DQ = 0; /单片机将DQ拉低delay(80); /精确延时 大于 480usDQ = 1; /拉高总线 delay(4);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);/*ds18b20读一个字节*/uchar ReadOn
22、eChar()unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 高电平拉成低电平时读周期开始 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; / delay(4); return(dat);/*ds18b20写一个字节*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; /从高电平拉至低电平时,写周期的开始 DQ = dat&0x01; /数据的最低位先写入 delay
23、(5); /60us到120us延时 DQ = 1; dat=1; /从最低位到最高位传入/*读取ds18b20当前温度*/void ReadTemperature() unsigned char a=0; unsigned b=0; unsigned t=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作/ WriteOneChar(0x44); / 启动温度转换 delay(5); / this message is wery important Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操
24、作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度/ delay(5); a=ReadOneChar(); /读取温度值低位 / b=ReadOneChar(); /读取温度值高位 / temp1=b4; /低8位中的高4位值加上高8位中后三位数的值 temp1室温整数值 temp2=a&0x0f; /小数的值 temp=(b*256+a)4); /当前采集温度值除16得 实际温度值 zhengshu xs=temp2*0.0625*10; /小数位,若为0.5则算为5来显示 xs小数 xiaoshu void wenduxianshi() wx
25、1=0; P0=tabletemp/10; /显示十位 delay1(1); wx1=1; wx2=0; P0=tabletemp%10+0x80; /显示个位 加上0x80就显示小数点了。 delay1(1); wx2=1; wx3=0; P0=tablexs%10; /显示小数位 delay1(1); wx3=1; wx4=0; P0=table12; /显示 C 字符 delay1(1); wx4=1; void Init_DS18B201() unsigned char x1=0;DQ1 = 1; /DQ复位 ds18b20通信端口 delay(8); /稍做延时DQ1 = 0; /单
26、片机将DQ拉低delay(80); /精确延时 大于 480usDQ1 = 1; /拉高总线 delay(4);x1=DQ1; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);/*ds18b20读一个字节*/uchar ReadOneChar1()unsigned char i=0;unsigned char dat1 = 0;for (i=8;i0;i-)DQ1 = 0; / 高电平拉成低电平时读周期开始 dat1=1; DQ1 = 1; / 给脉冲信号 if(DQ1) dat1|=0x80; / delay(4); return(dat1);/*ds18b20写
27、一个字节*/void WriteOneChar1(unsigned char dat1)unsigned char i=0; for (i=8; i0; i-) DQ1 = 0; /从高电平拉至低电平时,写周期的开始 DQ1 = dat1&0x01; /数据的最低位先写入 delay(5); /60us到120us延时 DQ1 = 1; dat1=1; /从最低位到最高位传入/*读取ds18b20当前温度*/void ReadTemperature1() unsigned char a1=0; unsigned b1=0; unsigned t1=0; Init_DS18B201(); Wri
28、teOneChar1(0xCC); / 跳过读序号列号的操作/ WriteOneChar1(0x44); / 启动温度转换 delay(5); / this message is wery important Init_DS18B201(); WriteOneChar1(0xCC); /跳过读序号列号的操作 WriteOneChar1(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度/ delay(5); a1=ReadOneChar1(); /读取温度值低位 / b1=ReadOneChar1(); /读取温度值高位 / temp4=b14; /低8位中的高4位值加上高8
29、位中后三位数的值 temp1室温整数值 temp5=a1&0x0f; /小数的值 temp3=(b1*256+a1)4); /当前采集温度值除16得 实际温度值 zhengshu xs1=temp5*0.0625*10; /小数位,若为0.5则算为5来显示 xs小数 xiaoshu void wenduxianshi1() wx5=0; P0=tabletemp3/10; /显示十位 delay1(1); wx5=1; wx6=0; P0=tabletemp3%10+0x80; /显示个位 加上0x80就显示小数点了。 delay1(1); wx6=1; wx7=0; P0=tablexs1%
30、10; /显示小数位 delay1(1); wx7=1; wx8=0; P0=table12; /显示 C 字符 delay1(1); wx8=1; void fm() uint m; for(m=500;m0;m-) beep=beep; delay(10); void baojing() if(temp=30) led=led; fm(); if(temp3=30) led1=led1; fm(); void main() uint i; i=0; while(1) i+; led=1; ReadTemperature(); wenduxianshi(); ReadTemperature1
31、(); wenduxianshi1(); if(i=20) baojing(); i=0; 三、系统测试1、硬件测试(1)在安装元件前要先认识和检测元件,一些常见元件的认识与检测如下:电容:电容在这里用到的是瓷片电容和电解电容,其外围上面都有标记,我们只需检测其好坏。在利用万用表检测时要注意如果为电解电容红表笔应接负极,黑表笔接正极。 色环电阻:我们在此使用的是五个色环标志的电阻。此类电阻前三环表示有效数字,第四环表示倍率,与前四环距离较大的第五环表示允许偏差。 二极管:在此装置中要用到发光二极管,对于发光二极管一般引脚长的那端为正极,引脚短的那端为负极。这是粟老师教给我的简便方法。三极管:在
32、此装置中,我们用到9012型号三极管,在使用三极管前我们首先要确定它的c、e和b极。(2)安装元件时的问题: 装配时,应该先安装那些需要机械固定元器件,在此装置中如中心芯片插座。为避免因元器件发热而减弱铜箔对基板的附着力,并防止元器件的裸露部分同印制导线短路。光洁整齐的外观,良好的焊点要求焊料用量恰到好处,外表有金属光泽,没有粒尖,桥接等现象,并且不伤及导线的绝缘层及相邻元器件。足够的机械强度,焊接不仅起到电气连接的作用,同时也是固定元器件,保证机械强度连接的手段。可靠的电气连接,焊接是电子线路从物理上实现电气连接的主要手段,锡焊连接不是靠压力而是靠焊接过程形成的牢固连接的合金层达到电气连接的
33、目的。(3)在焊接完成最小系统之后,还应该对单片机最小系统进行测试,连接上电脑,看是否可以下载程序到单片机,并准确运行所写程序。2、软件测试 软件调试是通过对程序的汇编(或者C语言)、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程,查看程序是否有逻辑的错误。在对硬件调试后再对软件进行,因为先对硬件检查没问题的情况下再对软件进行调试,编译软件可以通过编译去检查程序上的语法错误,然后可以在它的基础上在对它进行一些修改达到没有错误为止,然后将软件拿到硬件上去运行。在这次课程设计中,我在写程序时出现下列错误:1) 、延时程序,在报警程序时,延时程序延时时间过短,导致数码管显示闪烁不
34、停,更本无法看清数码管显示的数字,后经过更改延时才让数码管显示正常。2) 、IO口写重复。3) 、温度显示处理没写对,小数位一开始显示乱码,后边经过查资料更改。 P0=tabletemp3/10; /显示十位 delay1(1); wx5=1; wx6=0; P0=tabletemp3%10+0x80; /显示个位 加上0x80就显示小数点了。 delay1(1); wx6=1; wx7=0; P0=tablexs1%10; /显示小数位 delay1(1); wx7=1; wx8=0; P0=table12; /显示 C 字符 delay1(1); wx8=1; 4) 、报警程序,在判断上下
35、限时写错,后边经过更改才正确报警。5) 、主程序中忘记写报警程序,出现逻辑错误。四、总结由于本次课程设计含括了软件和硬件知识,所以在完成课程设计的同时也让我了解到了我在软硬件设计和制作方面的不足。在这两周的设计过程中我所 通过自己选题,找材料,分析、设计等,这为以后的学习做了铺垫。整个设计实现了从单一的理论学习到解决实际问题的转变。通过本次的课程设计,我最大的收获就是提高了自身的动手能力,培养了我的寻求解决问题的能力,也增强了我其它方面的能力。在设计中,我充分应用我们所学的知识,例如:单片机STC89c52的编程和实物焊接。单片机的c语言的进一步掌握。 通过不断的探索、测试和分析,最终完成了多
36、点温度检测设计与制作。此次课程设计是利用89c52实现多点温度测量功能。在试验的设计及仿真测试时,当没有得出正确的实验现象时,必须冷静、沉着的思考问题的来源,切勿太过紧张。在电路的连接过程,需仔细再仔细,按部分连接导线,切勿乱了头绪。这样才能在电路制作过程中减少许多不必要的错误。 此课题主要考察了对单片机部分知识的理解和应用,理论结合实践,使得对以前学习的单片机有了进一步的认识和学习,为以后的学习打下了坚实的基础,并且对本专业产生了浓厚的兴趣。 课程设计提高我的综合动手能力和工程设计能力,它使我的理论知识得到了综合应用,培养我综合运用所学理论的能力和解决较复杂的实际问题的能力。课程设计的自主设
37、计、学习和研究过程中,通过写课程设计的总结报告,初步训练我的书面表达能力。组织逻辑能力,这些技能应用性强,对我的将来就业和进一步发展帮助较大。同时也加强了对课本知识的理解,使我们做到理论和与实际的联系,收获很大。并且我也深深地体会到自己所学知识的不足,激发了我的自学能力和应对挑战的能力。为今后学习打下了良好的基础,培养了我们严谨务实的作风。五、参考文献1胡健,单片机原理及接口技术.机械工业出版社.2012.52 粟世明,刘湘涛.单片机原理与应用.电子工业出版社.2006.83 何立民,单片机中级教程.北京航空航天大学出版社.1999.124 李华,MCU-51系列单片机实用接口技术.北京:北京航空航天大学出版社,1993.65 陈光东,单片机微型计算机原理与接口技术(第二版).武汉:华中理工大学出版社,1999.46 徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999. 6.7 马田华等,可编程单总线数字式温度传感器DS18B2的原理与应用.电子质量,2004.78 于永学等,1-Wire总线数字温度传感器DS18B20及应用.电子产品世界,2003.129 张胜全,D18B20数字温度计在微机温度采集系统中的序编制.南京:南京大学出版社1998.310 郭天祥,新概念51单片机c语言教程.
限制150内