《基于AT89C51单片机的测温系统设计》6800字_第1页
《基于AT89C51单片机的测温系统设计》6800字_第2页
《基于AT89C51单片机的测温系统设计》6800字_第3页
《基于AT89C51单片机的测温系统设计》6800字_第4页
《基于AT89C51单片机的测温系统设计》6800字_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

基于AT89C51单片机的测温系统设计摘要在科技技术飞速进步发展并广泛得到应用的今天,单片机技术的普及让它已经渗入到我们的日常生活、工作、实验科研等各个重要的领域之中,可以说是已经成为一项近乎成熟的科学技术。在人类的日常生活中,有着一种非常常见的并且十分重要的物理量,它就是温度。甚至在工业生产和科学实验中,它是一个不可忽视的参数,一个起到决定性作用的物理量。本文主要介绍并设计一款基于AT89C51单片机及DS18B20温度传感器的可数字显示温度测温系统,并且可以通过手动设定温度值实现实时报警,是一款使用起来十分方便,并且具有测温进度高、量程范围宽、体积小、功耗低等诸多优点的温度计,具有广泛的应用前景。关键词:单片机;温度检测;AT89C51;DS18B20目录TOC\o"1-3"\h\u14352摘要 38050Abstract 489731绪论 7287171.1课题背景 7126491.2课题研究的目的和意义 888471.3设计的主要任务 8257202系统方案 97322.1设计方案概述 9201672.2设计方案框架图 9152213器件功能简介 10294543.1AT89C51单片机功能简介 10180583.1.1AT89C51简介 10173283.1.2引脚分布及功能说明 11292123.2DS18B20数字温度传感器的功能简介 1238883.2.1DS18B20的简介 12125763.2.2DS18B20的内部与外部结构 12187484系统硬件电路仿真设计方案 1427684.1温度传感器电路设计 14238824.2显示电路设计 14167464.3按键电路设计 15242764.4报警电路设计 15214774.5单片机电路设计 16196375软件编程设计 17231495.1主程序设计 1721065.2DS18B20程序设计 19316545.3显示程序 20260765.4按键报警程序 22268756软件仿真结果 24114656.1软件介绍 246546.1.2keil软件 24173106.2Proteus仿真结果 241924结论 271绪论温度是一种物理量,通常我们使用它来表征物体及环境冷热程度,是一种非常常见的物理量,然而这种看似很普通的物理量在工业生产和科学实验中起着决定性的作用。在现代科技技术飞速发展并且不断进步的今天,我们对于物理信息数据的采集、传输、和处理有着无比巨大的需求。本文主要介绍了一款以AT89C51单片机为基础的可数字显示的温度测量仪器,并具备温度报警功能和实现按键设置温度报警范围功能。而在本次设计产品中将会使用DS18B20温度传感器作为检测元件,通过数码管进行实时温度显示记录并进行自动报警。1.1课题背景时代是不断向前发展的,随着各行各业的日益壮大,单片机技术作为工业生产、日常生活、科学研究中的重要应用技术得到了迅速的发展,并且单片机是一种有着体积小、集成度高、功能强等诸多特点的微型计算机,让诸多行业的产品走向了智能化、小型化的道路,民众的需求带来了行业的发展,行业的发展必定会带来技术的迅速发展和革新,单片机技术在这样的大环境下得到了广泛的开拓和学习。人类为了表达自己所感受到的物体的冷热程度而发明了“温度”这一词语,理论上只要是人能看得见摸得着的物体都具有着一定的温度,它每时每刻都会出现在我们的周围给我们带来对物体的不一样的体会。温度作为物体的物理属性是时刻在影响着我们的,在日常生活中,周围气体温度过高或过低会使我们的身体感到不适;在工业生产中,过高或过低的气温都会给工人带来风险;在科学实验中,因为温度的变化给研究带来的影响是巨大的。在以前,温度的测量一般使用温度计来进行,测量精度受环境影响比较大,读数比较麻烦,但是在现代科技技术水平的推动下,由单片机和温度传感器组装成的一种简单的测温系统,再通过数码管显示的一系列数字化温度检测仪器顺应时代的响应被设计发明出来,大幅度地改变了以往传统温度计读数困难、环境影响大的众多缺点。由于近两年各个国家受到新冠肺炎病毒疫情的影响,数字温度计是有着非常大的市场需求的,这些需求在医院的主要体现为室内温度测量控制方面,病人身体温度测量方面,医院内药物储存的合理温度控制方面,医学研究中高温低温病毒细菌活性的影响方面等,在普通家庭等公众场合的主要体现为体温测量和室温控制方面了,而这些低成本、高实用性、多功能、的书准确且容易的数字温度计便具有了强大的竞争力。1.2课题研究的目的和意义本文主要介绍了51系列单片机在采集数据、检测环境温度方面中的应用。本课题研究的目的在于充分认识AT89C51单片机的引脚功能和特性,学习温度传感器DS18B20的结构、功能、工作原理。巩固并加深平时对单片机的应用知识,利用现有的知识对设计产品加以功能拓展,并解决问过程中出现的问题。培养良好的动手操作能力,通过参考文献,教科书等资料实现系统的编程、运行、仿真,完成课题的研究,提升自己单片机与传感器方面的知识水平能力。1.3设计的主要任务本论文主要设计研究的任务是制作一款基于51系列单片机的数字温度测量系统,并通过编程实现温度数据采集、显示、限定温度报警等功能。而本设计主要采用的传感器型号为DS18B20,利用4位数码管进行温度的读取。主要任务为:(1).测试温度量程的基本范围。(2).Led液晶显示。(3).可设定的温度报警度数。(4).蜂鸣器报警提示(5).观察并记录实验设计过程(6).通过研究设计过程得到结论并记录2系统方案2.1设计方案概述本设计介绍的数字温度计系统计采用了数字温度传感器DS18B20模块,和传统的水银等温度计相比较,它具有读数方便,测温范围广,测温准确等诸多优点,并设计使用了自由设置特定值进行报警的功能。其输出温度采用LED数码管显示,主要用于对温度测量精度需求比较准确的各种场所。而本设计的主控制器使用的是51单片机AT89C51,AT89C51单片机在工业控制、测量、仪器仪表中应用范围十分广泛。测温传感器使用的是DS18B20,温度传感器DS18B20是一种高精度数字式温度传感器。在电路系统中它可以直接输出数字信号,省去了繁琐的转换步骤。并且由于它的各项优秀特点,使得温度测量电路变得简单、精准。对于温度数据的显示,则是使用4位共阴极LED数码管实现,LED数码管有着显示数字清晰查看方便的优点。报警系统将采用蜂鸣器,以便于实现测量温度超过设定的值时的报警功能。2.2设计方案框架图温度计电路设计总体设计框图如图2-1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示则采用4位LED数码管,报警采用蜂鸣器报警,按键实现设定报警温度。图2-1温度计电路总体设计框图3器件功能简介3.1AT89C51单片机功能简介3.1.1AT89C51简介AT89C51单片机是由美国公司ATMEL公司生产的低功耗、高性能的8位CMOS微型计算机,简称单片机。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。在单芯片上,拥有灵巧的8位CPU和在系统可编程的Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89C51的特性:(1)4K字节可编程Flash存储器(2)可与MCD-51兼容(3)1000次可擦/写寿命(4)数据可保留时间:10年(5)全静态工作范围:0Hz-24MHz(6)128x8字节内部RAM

(7)32个8位可编程I/O线(8)两个16位定时器计/数器(9)5个中断源(10)可编程串行UART通道(11)低功耗闲置和掉电模式3.1.2引脚分布及功能说明AT89C51的引脚排列方式如图3-1所示。图3-1AT89C51引脚排列图AT89C51单片机一共有40个引脚,图中隐藏了VCC(电源)引脚和GND(接地)。引脚P0口为一个8位漏级开路双向I/O口。当P0口的引脚第一次写1时,P0口被定义为高阻输入,同时,P0口也是地址/数据总线复用口。P1、P2、P3口都是内部提供上拉电阻的8位双向I/O口,当这三个引脚写入1时,管脚内部上拉,电阻拉高,并都可作为输入。工作电压为4.0-5.5V。同时,P3口也可以作为特殊功能口使用例如:P3.0:RXD(串行输入口);P3.1:TXD(串行输出口);P3.2:(外中断0);P3.3:(外中断1);P3.4:T0(定时/计数器0);P3.5:T1(定时/计数器1);P3.6:(外部数据存储器写选通);P3.7:(外部数据存储器读选通);RST:复位端。时钟电路正常工作时,当该端信号连续两个机器周期信号以上置为1,则主控芯片进行复位操作。3.2DS18B20数字温度传感器的功能简介3.2.1DS18B20的简介DS18B20温度传感器是美国半导体公司DALLAS推出的一款改良型智能温度传感器,它对比传统热敏电阻有着可直接读出被测物体温度的优点,并可根据用户要求通过简单编程实现9至12位的读数方式。DS18B20具有以下几点特性:(1)它拥有独特的单线接口,在与单片机连接时仅仅需要一个端口引脚进行通信操作(2)测温范围广(3)支持多点组网功能(4)温度测量结果以9~12位二进制数字表示(5)工作电源电压范围为3.0~5.5V,并且可通过数据线通电工作(6)适用于各种狭小的空间3.2.2DS18B20的内部与外部结构DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其其封装形式如图3-2所示。图2-2DS18B20的封装形式DS18B20的内部结构一共有四个部分,为64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL及配置寄存器,TH与TL的拷贝是容易丢失的,每次上电复位时刷新。并且在DS18B20温度传感器的内部存储器中,有着一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。且高速暂存RAM的结构为8字节的存储器,结构如图3-3所示。、图2-3DS18B20的高速暂存RAM的结构当DS18B20接收到温度转换命令后,温度便被A/D转换,转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器,接着单片机可以通过单线接口直接读出该数据,并且单片机在读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,这时需要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表2-2是部分温度值对应的二进制温度数据。表2-2DS18B20输出的温度值温度值二进制输出十六进制输出+125℃000001111101000007D0h+85℃00000101010100000550h+25.0625℃00000001100100010191h+10.125℃000000001010001000A2h+0.5℃00000000000010000008h0℃00000000000000000000h-0.5℃1111111111111000FFF8h-10.125℃1111111101011110FF5Eh-25.0625℃1111111001101111FF6Fh-55℃1111110010010000FC90h当DS18B20完成温度转换后,就会将测试得到的温度值与RAM中的TH、TL字节内容做比较,当T<TL或者T>TH时,则为报警标志位置,并对主机发出报警命令使主机做出响应。4系统硬件电路仿真设计方案4.1温度传感器电路设计DS18B20温度传感器是单总线器件与单片机的接口电路,采用电源供电方式。电源供电方式如图4-1所示,此时DS18B20的引脚1接地,引脚2为信号线接通芯片,引脚3与电源连接。图4-1DS18B20电源供电方式4.2显示电路设计显示电路是由四位的共阴数码管进行显示读数的,设计图如图4-2所示。图4-2显示电路设计图4.3按键电路设计按键电路的设计采用四个按键k1、k2、k3以及一个消音用按键来实现调节设定报警温度的上下限,并且可查看上下限报警温度的功能。电路设计图如图4-3所示。图4-3按键电路设计图4.4报警电路设计报警电路是用于测量温度大于上限或小于下限时提供报警功能的电路。该电路是由蜂鸣器和红色的发光二极管组成,电路如图4-4所示。图2-9报警电路设计图4.5单片机电路设计单片机电路是由晶振电路,上电复位、按键复位电路组成。设计图如图4-5所示。图4-5单片机系统设计图5软件编程设计本章节描述了温度测量仪器的软件编程和功能实现5.1主程序设计系统接上电源以后单片机程序开始初始化,之后进入循环,读取温度报警的量程,主控芯片给DS18B20信号,开始读取温度并判断温度是否在设定范围内,是的话将输入的温度值经过转换后转换为数字值,转换结束后将其存入到主控芯片的内存中。经过数据处理调用显示函数将其显示在显示器上。同时循环这个过程;如果输入温度值不在温度设定范围内,大于或小于设定温度值时报警,蜂鸣器响应。系统主流程图如图5-1所示。图5-1主程序流程图主程序代码**************************/#include<AT89C51.h> #include<intrins.h> #defineuintunsignedint #defineucharunsignedchar ucharmax=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bits=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bits1=0; //s1标志位用于上下限查看时的显示voiddisplay1(uintz); #include"ds18b20.h" #include"keyscan.h" #include"display.h" /*************主函数************/voidmain(){beer=1; //关闭蜂鸣器 led=1; //关闭LED灯 timer1_init(0); //初始化定时器1(未启动定时器1) get_temperature(1); //首次启动DS18B20获取温度 while(1) { keyscan(); //按键扫描函数 get_temperature(0); //获取温度函数 keyscan(); //按键扫描函数 display(temp,temp_d*0.625);//显示函数 alarm(); //报警函数 keyscan(); //按键扫描函数 }}5.2DS18B20程序设计DS18B20获取电源后进行初始化,收到温度数值转化命令后,对温度进行读取,而后对将温度数据进行处理,将温度值转化为数字值并显示。最后对已储存的数值进行判断,判断其是否处于设定的温度值之间,如超出最高值或低于温度最低值范围便报警处理。如图5-2所示。图5-2DS18B20程序流程图详细DS18B20程序代码见附录。5.3显示程序显示电路是由四位一体的共阴极数码管来实现的。由于单片机的I/O口有限,所以将采用动态扫描数码管的方式来进行显示。程序流程图如图5-3所示。图5-3显示程序流程图显示程序代码/***********显示程序主函数*************/voiddisplay(uchart,uchart_d) //用于实测温度、上限温度的显示{uchari;for(i=0;i<4;i++) //依次从左至右选通数码管显示,实现动态显示{ switch(i) { case0: //选通第一个数码管 if(a==0){selsct_1(f,t);}//若a=0则在第一个数码管上显示测量温度的百位或‘-’ if(a==1) { P0=temperature3[3];//若a=1则在第一个数码管上显示‘H’ } if(a==2) { P0=temperature3[4];//若a=2则在第一个数码管上显示‘L’ } wei2=0; //关第二个数码管 wei3=0; //关第三个数码管 wei4=0; //关第四个数码管 wei1=1; //开第一个数码管 break; case1: //选通第二个数码管 if(a==0){selsct_2(f,t);}//若a=0则在第二个数码管上显示测量温度的十位或‘-’ if(a==1) //若a=1则在第二个数码管上显示上限报警温度的百位或‘-’ { if(s==0)selsct_1(f_max,max);//若s=0则显示第二个数码管,否则不显示 elseP0=temperature3[0]; //通过s标志位的变化实现调节上下限报警温度时数码管的闪烁 if(s1==1)selsct_1(f_max,max);//若s1=1则显示第二个数码管(s1标志位用于上下限查看时的显示) } if(a==2) //若a=2则在第二个数码管上显示下限报警温度的百位或‘-’ { if(s==0)selsct_1(f_min,min); elseP0=temperature3[0]; if(s1==1)selsct_1(f_min,min); } wei1=0;wei3=0;wei4=0;wei2=1;break; case2: //选通第三个数码管 if(a==0){P0=temperature2[t%10];}//若a=0则在第三个数码管上显示测量温度的个位 if(a==1) //若a=1则在第三个数码管上显示上限报警温度的十位或‘-’ { if(s==0)selsct_2(f_max,max);//若s=0则显示第三个数码管,否则不显示 elseP0=temperature3[0]; if(s1==1)selsct_2(f_max,max);//若s1=1则显示第三个数码管 } if(a==2) //若a=2则在第三个数码管上显示下限报警温度的十位或‘-’ { if(s==0)selsct_2(f_min,min); elseP0=temperature3[0]; if(s1==1)selsct_2(f_min,min); } wei1=0;wei2=0;wei4=0; wei3=1; break; case3: //选通第四个数码管 if(a==0){P0=temperature1[t_d];}//若a=0则在第四个数码管上显示测量温度的小数位 if(a==1) //若a=1则在第四个数码管上显示上限报警温度的个位 { if(s==0)P0=temperature1[max%10];//若s=0则显示第四个数码管,否则不显示 elseP0=temperature3[0]; if(s1==1)P0=temperature1[max%10];//若s1=1则显示第四个数码管 } if(a==2) //若a=2则在第四个数码管上显示下限报警温度的个位 { if(s==0)P0=temperature1[min%10]; elseP0=temperature3[0]; if(s1==1)P0=temperature1[min%10]; } wei1=0;wei2=0; wei3=0;wei4=1;break; } display_delay(3); //每个数码管显示3ms左右 }}5.4按键报警程序按键报警程序的设定以三个按键k1,k2,k3实现上下限报警温度。按下k1进入上下限调节模式,再次按下k2进入下限调节模式。在正常模式下,首次按下k2进入查看上限温度模式,显示1s左右自动退出;首次按下k3进入查看下限温度模式,显示1s左右自动退出;首次按下K4消除按键音,再次按下启动按键音。在调具体流程图如5-4所示。图5-4按键程序流程图按键程序源代码见附录6软件仿真结果本章节主要介绍了对于已经写好的代码进行软件整体编译,并且对编译完成的代码实现软件仿真。6.1软件介绍本设计中索引用到的两种软件工具为仿真软件Proteus软件以及软件编写程序Keil软件,本章将对两个在研究设计中最广泛使用的软件进行简单的介绍。6.1.1Proteus软件Proteus软件是由英国公司LabCenterElectronics公司出版的一款使用范围最广的仿真工具软件之一。它具有强大的EDA仿真功能,并可以对单片机及其外围的器件进行仿真。同时它在编译方面支持IAR、Keil和MATLAB等多种编译器,软件仿真测试效果几乎和实物产品测试效果相同,是一款功能强大的仿真软件。6.1.2keil软件

温馨提示

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

评论

0/150

提交评论