数字温度计说明书_第1页
数字温度计说明书_第2页
数字温度计说明书_第3页
数字温度计说明书_第4页
数字温度计说明书_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计题目:数字温度计院别:机电学院专业:机械电子工程班级:姓名:学号:指导教师:十二月二十一日摘要本设计即用单片机对温度进行实时检测与控制,本文所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,重要用于对测温比较准确的场合,或科研实验室使用,本次课程设计采用51单片机以及锁存器74HC573N、四位共阴数码管、DS18B20温度传感器、蜂鸣器、三极管等组成的自动过温报警器,该过温报警器测温准确,使用方便,显示清楚,最高精度可达成0.0625度,最长温度转换时间不到1秒,应用范围广泛。用四位共阴数码管实现温度显示,能准确达成设计规定。本温度计属于多功能温度计,功能较强,可以设立上下限报警温度,且测量准确、误差小。当测量温度超过设定的温度上下限时,启动蜂鸣器和指示灯报警。关键词过温报警;锁存器;单片机;温度传感器目录TOC\h\z\t"样式1,1,样式2,2"前言 1一.本次课程设计实践的目的和意义 2二.设计任务和规定 22.1设计题目 22.2重要技术性能指标 22.3功能及作用 2三.系统总体方案及硬件设计 23.1查阅相关资料后有以下两个方案可供选择 23.2元件采购 33.3系统总体设计 3四.接口电路设计 64.1模块简介 64.2主控制器 64.3显示电路 74.4温度传感器 74.5温度报警电路 9五.系统软件算法分析 105.1主程序流程图 105.2读出温度子程序 115.3温度转换命令子程序 115.4计算温度子程序 125.5显示数据刷新子程序 125.6按键扫描解决子程序 13六.电路仿真 14七.焊接好的电路实体图 15八.检查与调试 16九.作品的使用 16十.设计心得 20参考文献 20附录 21前言温度是工业对象中重要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热解决炉、反映炉等,对工件的温度解决规定严格控制。随着科学技术的发展,规定温度测量的范围向深度和广度发展,以满足工业生产和科学技术的规定。基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训规定。以单片机为核心设计的温度报警器,具有安全可靠、操作简朴方便、智能控制等优点。数字温度计一.本次课程设计实践的目的和意义学习和掌握单片机常用接口电路的应用和设计技术,充足结识理论知识相应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践可以进一步加深对专业知识和理论知识学习的结识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。二.设计任务和规定2.1设计题目:数字温度计2.2重要技术性能指标(1) 数字温度计规定测温范围为-50~70℃,精度误差在0.1℃以内,显示分辨率:0.1,误差:±(2) 设立上下报警温度,当温度不在设立范围内时,可以报警显示(本产品报警上限温度为70℃,报警下限温度为-50℃,低于报警下限温度显示“L”,高于报警上限温度显示“H(3) 可以间隔存储1000个数据,采用定期刷新数据,刷新频率可以调整。温度数据可以查询,且由LED显示要查询的数据。2.3功能及作用:(1)实时显示当前前环境温度数值(2)具有过温声光报警功能(3)可以根据实际情况设定温度显示的精度三.系统总体方案及硬件设计3.1查阅相关资料后有以下两个方案可供选择方案一由于本设计是测温电路,可以使用热敏电阻之类的器件运用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的解决,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的相应值的计算,感温电路比较麻烦。并且在对采集的信号进行放大时容易受温度的影响从而出现较大的偏差。方案二考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简朴,精度高,软硬件都以实现,并且使用单片机的接口便于系统的再扩展,满足设计规定。从以上两种方案,很容易看出,采用方案二,电路比较简朴,费用较低,可靠性高,软件设计也比较简朴,故采用了方案二。3.2元件采购重要元件如下表所示电子元件数量单价万用板18数码管(4位共阴)14STC89C52RC1574HC573(锁存器)32蜂鸣器21自锁开关20.5DS18B20(温度传感器)17排式电阻10.5三极管901350.5晶振11.059221电阻4.7K500.1551下载器16数据线183.3系统总体设计整个电路的工作原理是:在正常的供电状态下,一方面运用单片机从DS18B20(温度传感器)解决接受的相应数据,然后经其解决后并将相应的数据分别传送到相应的锁存器接受口,通过锁存器控制数码管实现实时显示。根据设定的温度上、下阀值,控制蜂鸣器做出相应的反映。如图3.1图3.1有了总体设计方案后,下面就是原理图的制作了。原理图如下图3.2及图3.3所示。将数码管电路与主控制电路分开画,最后两者是用导线连接。数码管位选接P2.0,段选接P2.1口。图3.2数码管电路图3.3单片机控制电路四.接口电路设计4.1模块简介系统由单片机最小系统、显示电路、报警电路、温度传感器等组成,电路采用USB供电。4.2主控制器主控制器采用STC89C52单片机,STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有机灵的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定期器,内置4KBEEPROM,MAX810复位电路,2个16位定期器/计数器,一个6向量2级中断结构,全双工串行口。此外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定期器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。图4.1STC89C52单片机电路晶振采用11.0592MHZ,电容采用22pF的电容值图4.2晶振电路4.3显示电路显示电路采用4位共阴极LED数码管,P2.1口作为段码输出并作为数码管的驱动。P2.0口的低四位作为数码管的位选端。采用动态扫描的方式显示。如图3.2所示4.4温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改善型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际规定通过简朴的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:1、独特的单线接口仅需要一个端口引脚进行通信;2、多个DS18B20可以并联在惟一的三线上,实现多点组网功能3、无须外部器件;4、可通过数据线供电,电压范围为3.0~5.5V;5、零待机功耗;6、温度以9或12位数字;7、用户可定义报警设立;8、报警搜索命令辨认并标志超过程序限定温度(温度报警条件)的器件;9、负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。DS18B20内部结构重要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图4.3所示,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。其电路图4.4示.。图4.3装形式图4.4电路图DS18B20的测温原理如图4.5图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完毕温度测量.计数门的启动时间由高温度系数振荡器来决定,每次测量前,一方面将-55℃所相应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所相应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就反复上述过程,直至温度寄存器值达成被测温度值,这就是DS18B20的测温原理。此外,由于DS18B20单线通信功能是分时完毕的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→解决数据。图4.5DS18B20测温原理图在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:一方面用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25℃、0.75℃图4.6温度传感器与单片机的连接4.5温度报警电路对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,假如我们所设计的系统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。我们便能很好的对设备进行解决,就不会应温度的变化而导致不必要的损失。温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、发光二极管点亮。蜂鸣器由单片机P2.3口控制,用三极管驱动。图4.7温度报警电路五.系统软件算法分析系统程序重要涉及主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。5.1主程序流程图主程序的重要功能是负责温度的实时显示、读出并解决DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图5.1所示。图5.1主程序流程图5.2读出温度子程序读出温度子程序的重要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图5.2示5.3温度转换命令子程序温度转换命令子程序重要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完毕。温度转换命令子程序流程图如图5.3所示图5.2读文读流程图图5.3温度转换流程图5.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的鉴定,其程序流程图如图5.4所示。5.5显示数据刷新子程序显示数据刷新子程序重要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。程序流程图如图5.5。图5.4计算温度流程图图5.5显示数据刷新流程图5.6按键扫描解决子程序按键采用扫描查询方式,设立标志位,当标志位为1时,显示设立温度,否则显示当前温度。如下图5.6示。图5.6按键扫描解决流程图六.电路仿真通过仿真软件验证该原理图的可行性。采用protues软件对电路仿真,可以得到预期效果。仿真图如图6.1示。图6.1电路仿真图七.焊接好的电路实体图八.检查与调试系统调试系统的调试以程序调试为主。硬件调试比较简朴,一方面检查电路焊接是否对的,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的对的性检查,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示数据刷新子程序等的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用C语言编写,用KeilC51编译器编程调试。软件调试到能显示温度值,并且在有温度变化时,显示温度能改变就基本完毕。性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于DS18B20的精度很高,所以误差指标可以限制在0.5℃九.作品的使用10.1实物图如下图10.1测试温度10.2用打火机模拟高温图10.2高温报警10.3由于低温报警下限温度为-50℃,现实中较难达成,为了展示低温报警功能,我们把低温报警下限温度改为20图10.3低温报警十.设计心得本次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节犯错或是时序控制不到位的话就不能得到对的的数据。一旦学会了对的的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能不久上手了。由于在大一二我们学的都是一些理论知识,没能体会到亲自动手焊接东西实际操作过程是如何的。在焊接过程当中我们深深的感觉到,电路图看似简朴的,事实上也许并非如此,没有亲自去做它,就不会懂理论与实践是有很大区别的。看一个元件简朴,但它在焊接过程中就是有许多要注意的地方,会碰到一些历来没想过的问题。软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思绪,使问题简朴化。定义变量时,尽量定义局部变量,在字符型变量能达成规定的情况下就不用定义成整形变量了,以节省内存空间。同时局部变量应避免与全局变量取同名,否则全局变量将被屏蔽或与局部变量相冲突而达不到设计的效果。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改善或做扩展的话就比较困难了,由于即使是自己写的程序也变得难读难懂了。总的来说,从通过理论设计,到拟定具体方案,再到编译程序,最后到调试、成型。整个过程都需要充足运用所有知识进行思考、借鉴。本次设计是针对相关知识进行的一次比较综合的检查,也是目前为止我们觉得受益匪浅是收获最大的一次课程设计。在做本次设计的过程中,我们感触最深的就是查阅大量的设计资料了。由于在查阅的过程中,不仅丰富了我们的一些课外知识,还巩固了课堂上所学的知识。与此同时,我们觉得为了让设计更加完善,查阅这方面的设计资料是十分必要的。参考文献1、徐爱钧主编单片机原理实用教程电子工业出版社2、阎石主编数字电子技术基本教程清华大学出版社3、郭天祥主编51单片机C语言教程电子工业出版社附录源程序如下:#include<reg52.h> //52系列单片机头文献#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitled=P1^7; //控制发光二极管sbitbuzzer=P2^3; //控制蜂鸣器sbitDQ=P1^0;//数据口defineinterfacesbitdula=P2^1;//数码管段选sbitwela=P2^0;//数码管位选ucharA1,A2,A3,A4; //定义uinttemp;//定义整型的温度数据ucharnum; //定义 floattt; //定义浮点型的温度数据uchara,b; //定义//不带小数点0~9,AbCDEF(可以不写入)unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};//带小数点unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};/*************精确延时函数*****************/voiddelay(unsignedchari){while(--i);}/******************************************此延时函数针对的是12Mhz的晶振delay(0):延时518us误差:518-2*256=6delay(1):延时7us(原帖写"5us"是错的)delay(10):延时25us误差:25-20=5delay(20):延时45us误差:45-40=5delay(100):延时205us误差:205-200=5delay(200):延时405us误差:405-400=5*******************************************//*****************DS18B20******************/voidInit_Ds18b20(void)//DS18B20初始化sendresetandinitializationcommand{DQ=1;//DQ复位,不要也可行。delay(1);//稍做延时DQ=0;//单片机拉低总线delay(250);//精确延时,维持至少480usDQ=1;//释放总线,即拉高了总线delay(100);//此处延时有足够,保证能让DS18B20发出存在脉冲。}ucharRead_One_Byte()//读取一个字节的数据readabytedate//读数据时,数据以字节的最低有效位先从总线移出{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//将总线拉低,要在1us之后释放总线//单片机要在此下降沿后的15us内读数据才会有效。_nop_();//至少维持了1us,表达读时序开始dat>>=1;//让从总线上读到的位数据,依次从高位移动到低位。DQ=1;//释放总线,此后DS18B20会控制总线,把数据传输到总线上delay(1);//延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分if(DQ)//控制器进行采样{dat|=0x80;//若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行解决,保持为0}delay(10);//此延时不能少,保证读时序的长度60us。}return(dat);}voidWrite_One_Byte(uchardat){uchari=0;for(i=8;i>0;i--){DQ=0;//拉低总线_nop_();//至少维持了1us,表达写时序(涉及写0时序或写1时序)开始DQ=dat&0x01;//从字节的最低位开始传输//指令dat的最低位赋予给总线,必须在拉低总线后的15us内,//由于15us后DS18B20会对总线采样。delay(10);//必须让写时序连续至少60usDQ=1;//写完后,必须释放总线,dat>>=1;delay(1);}}uintGet_Tmp()//获取温度getthetemperature{Init_Ds18b20();//初始化Write_One_Byte(0xcc);//忽略ROM指令Write_One_Byte(0x44);//温度转换指令Init_Ds18b20();//初始化Write_One_Byte(0xcc);//忽略ROM指令Write_One_Byte(0xbe);//读暂存器指令a=Read_One_Byte();//读取到的第一个字节为温度LSBb=Read_One_Byte();//读取到的第一个字节为温度MSBtemp=b;//先把高八位有效数据赋于temptemp<<=8;//把以上8位数据从temp低八位移到高八位temp=temp|a;//两字节合成一个整型变量tt=temp*0.0625;//得到真实十进制温度值//由于DS18B20可以精确到0.0625度//所以读回数据的最低位代表的是0.0625度temp=tt*100+0.05;//放大十倍//这样做的目的将小数点后第一位也转换为可显示数字//同时进行一个四舍五入操作。returntemp;}/****************数码码动态显示函数**************/voidDisplay(uinttemp)//显示程序{A2=temp/1000;dula=1;P0=table[A2];//显示百位dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay

温馨提示

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

评论

0/150

提交评论