基于单片机数字温度计设计.docx
- 文档编号:11513533
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:33
- 大小:538.20KB
基于单片机数字温度计设计.docx
《基于单片机数字温度计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机数字温度计设计.docx(33页珍藏版)》请在冰豆网上搜索。
基于单片机数字温度计设计
本科生毕业设计(论文)
题目:
基于单片机的数字温度计的设计
学生姓名:
系别:
机械与电气工程系
专业年级:
指导教师:
2013年6月20日
摘要
本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路进行了介绍,该系统可以方便的实现温度采集和显示,并可以根据需要,任意设定上下限报警温度,它适合我们日常生活和工农业生产中的温度测量,也可以当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。
DS18B20和AT89C51结合实现最简温度检测系统。
本温度计属于多功能温度计,可以设置上下限报警温度,当温度不在设置范围内时,可以报警。
矚慫润厲钐瘗睞枥庑赖。
关键词:
单片机;数字控制;温度计;DS18B20;AT89C51
ABSTRACT
ThispaperintroducesatemperaturemeasurementsystembasedonAT89C51microcontroller,adetaileddescriptionoftheprocessofusingdigitaltemperaturesensorDS18B20temperaturemeasurementsystemdevelopment,focusingonthesensorundertheSCMhardwareconnection,softwareprogrammingandsystemflowofeachmodulewereanalyzedindetailonthepartofthecircuit,thesystemcanrealizetemperatureacquisitionconvenientanddisplay,andcanaccordingtoneed,setthealarmtemperature,itissuitableforourdailylifeandindustrialandagriculturalproductioninthetemperaturemeasurement,itcanalsobeusedasatemperatureprocessingmoduleembeddedinothersystems,asotherauxiliarysystem.DS18B20andAT89C51combinetoachievethemostsimpletemperaturedetectionsystem.Themulti-purposethermometer,youcansetthealarmtemperature,whenthetemperatureisnotinthesetrange,itcanalarm.聞創沟燴鐺險爱氇谴净。
Keywords:
singlechipmicrocomputer;digitalcontrol;thermometer;DS18B20;AT89C51残骛楼諍锩瀨濟溆塹籟。
前言
随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。
传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
温度是工业对象中的一个重要的被控参数。
然而所采用的测温元件和测量方法也不相同;产品的工艺不同,控制温度的精度也不相同。
因此对数据采集的精度和采用的控制方法也不相同。
传统的控制方式以不能满足高精度,高速度的控制要求,如温度控制表温度接触器,其主要缺点是温度波动范围大。
由于他主要通过控制接触器的通断时间比例来达到改变加热功率的目的,受仪表本身误差和交流接触器的寿命限制,通断频率很低。
近几年来快速发展了多种先进的温度控制方式,如:
PID控制,模糊控制,神经网络及遗传算法控制等。
这些控制技术大大的提高了控制精度,不但使控制变得简便,而且使产品的质量更好,降低了产品的成本,提高了生产效率。
謀荞抟箧飆鐸怼类蒋薔。
本设计使用单片机作为核心进行控制。
单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。
厦礴恳蹒骈時盡继價骚。
本课题的研究方法是利用单片机和数字温度传感器DS18B20设计一台数字温度计。
单片机作为主控制器,数字温度传感器DS18B20作为测温元件,传感器DS18B20可以读取被测量温度值,进行转换,从而用4位共阴极LED数码管来显示转换后的温度值。
茕桢广鳓鯡选块网羈泪。
本课题的主要研究内容如下:
1.温度测试基本范围0℃—100℃。
2.精度为0.5℃。
3.LED数码管显示。
4.可以设定温度的上下限报警功能。
5.实现报警提示。
第一章硬件设计
1.1AT89C51芯片功能简介
1.1.1AT89C51芯片简介
AT89C51是一种带4K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电、高性能CMOS8位微处理器。
鹅娅尽損鹌惨歷茏鴛賴。
1.1.2引脚功能
AT89C51芯片的引脚图如图1-1所示:
图1-1AT89C51引脚图
AT89C51的引脚功能如下:
1、主电源引脚(2根)
VCC:
电源输入,接+5V电源
GND:
接地线
2、外接晶振引脚(2根)
XTAL1:
片内振荡电路的输入端
XTAL2:
片内振荡电路的输出端
3、控制引脚(4根)
RST/VPP:
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG:
地址锁存允许信号
PSEN:
外部存储器读选通信号
EA/VPP:
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
籟丛妈羥为贍偾蛏练淨。
4、可编程输入/输出引脚(32根)
AT89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
預頌圣鉉儐歲龈讶骅籴。
PO口:
8位双向I/O口线,名称为P0.0~P0.7
P1口:
8位准双向I/O口线,名称为P1.0~P1.7
P2口:
8位准双向I/O口线,名称为P2.0~P2.7
P3口:
8位准双向I/O口线,名称为P3.0~P3.7
1.2数字温度传感器模块
1.2.1DS18B20性能
1、独特的单线接口仅需一个端口引脚进行通信
2、简单的多点分布应用
3、无需外部器件
4、可通过数据线供电
5、零待机功耗
6、测温范围-55~+125℃,以0.5℃递增
7、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃渗釤呛俨匀谔鱉调硯錦。
8、温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字
9、应用包括温度控制、工业系统、消费品、温度计和任何热感测系统
10、负压特性:
电源极性接反时,传感器不会因发热而烧毁,但不能正常工作
1.2.2DS18B20引脚说明
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚有三个,DQ为数据输入/输出引脚,当被用在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的电源引脚,当工作于寄生电源时,此引脚必须接地;当VDD端口接电源时是使用外部电源。
铙誅卧泻噦圣骋贶頂廡。
1.2.3DS18B20测温原理
DS18B20的测温原理如图1-2所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
擁締凤袜备訊顎轮烂蔷。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
贓熱俣阃歲匱阊邺镓騷。
T2
坛摶乡囂忏蒌鍥铃氈淚。
图1-2DS18B20测温原理图
1.2.4DS18B20的工作时序
DS18B20的工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括初始化时序、写时序和读时序,如图1-3(a)(b)(c)所示。
蜡變黲癟報伥铉锚鈰赘。
主机控制DS18B20完成任何操作之前必须先初始化,即主机发一复位脉冲(最短为480us的低电平),接着主机释放总线进入接收状态,DS18B20在检测到I/O引脚上的上升沿之后,等待15-60us然后发出存在脉冲(60-240us的低电平)。
買鲷鴯譖昙膚遙闫撷凄。
写时间片:
将数据从高电平拉至低电平,产生写起始信号。
在15us之内将所需写的位送到数据线上,在15us到60us之间对数据线进行采样,如果采样为高电平,就写1,如果为低电平,就写0。
在开始另一个写周期前必须有1us以上的高电平恢复期。
綾镝鯛駕櫬鹕踪韦辚糴。
DS18B20等待DS18B20Tx产生
15us—16us脉冲60--240
主机复位脉冲
VCC480us 1-WireBus GND 图1-3(a)初始化时序 主机写“0”时隙主机写“1”时隙 VCC60us 1-WireBus GNDDS18B20采样>1usDS18B20采样 15usMINTYPMAXMINTYPMAX 15us30us15us15us30us 图1-3(b)写时序 VCC主机读“0”时隙主机读“1”时隙锹籁饗迳琐筆襖鸥娅薔。 1-WireBus GND主机采样1us 15us15us30us主机采样 15us 图1-3(c)读时序 读时间片: 主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。 主机在读时间片下降沿之后15us内完成读位。 每个读周期最短的持续期为60us,各个读周期之间也必须有1us以上的高电平恢复期。 構氽頑黉碩饨荠龈话骛。 1.3测温电路设计 数字温度传感器DS18B20的测温电路如图1-4所示: 图1-4测温电路 1.4按键模块设计 利用单片机的IO口实现按键的中断输入。 另外需要一个与门实现与中断端口的连接。 按键电路如图1-5所示,期中按键K1为进入/退出设置键;K2为增加键;K3为减少键。 輒峄陽檉簖疖網儂號泶。 图1-5按键模块 1.5报警电路设计 三极管驱动蜂鸣器: 报警电路如图1-6所示,三极管Q5来驱动喇叭LS1。 图1-6报警电路 1.6显示电路设计 采用四位共阴极LED数码管来显示温度,可以直接读取,温度精确到0.1℃。 四位数码管的显示电路如图1-7所示,从左到右依次是百位,十位,个位,十分位。 尧侧閆繭絳闕绚勵蜆贅。 图1-7显示电路 1.7串口电路设计 单片机与上位机(PC机)的接口电路如图1-8所示: 图1-8接口电路 第二章系统软件设计 2.1各模块的程序设计 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序和按键扫描处理子程序等。 识饒鎂錕缢灩筧嚌俨淒。 2.1.1主程序流程图 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测量每1s进行一次。 这样可以在一秒之内测量一次被测温度,其程序流程见图2-1所示。 凍鈹鋨劳臘锴痫婦胫籴。 Y 图2-1主程序流程图 2.1.2读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。 其程序流程图如图2-2所示: 恥諤銪灭萦欢煬鞏鹜錦。 Y 鯊腎鑰诎褳鉀沩懼統庫。 图2-2读出温度子程序流程图 2.1.3温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。 温度转换命令子程序流程图如图2-3所示: 硕癘鄴颃诌攆檸攜驤蔹。 结束 图2-3温度转换命令子程序流程图 2.1.4计算温度子程序 Y 计算温度子程序流程图如图2-4所示。 阌擻輳嬪諫迁择楨秘騖。 图2-4计算温度子程序流程图 2.1.5显示数据刷新子程序 显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位位为1时将符号显示位移入第一位。 程序流程图如图3-5所示。 氬嚕躑竄贸恳彈瀘颔澩。 Y 釷鹆資贏車贖孙滅獅赘。 图2-5显示数据刷新子程序流程图 2.1.6报警子程序 设置报警标志位beep,报警流程图如图2-6所示: 读取测量温度值 温度值 >120或 <20? Beep=0 Beep=1,报警 Y 图2-6报警流程图 2.1.7按键扫描处理子程序 按键采用扫描查询方式,设置标志位,当标志位为1时,显示设置温度,否则显示当前温度。 如图2-7所示 K1键按下 K3键按下? K2键按下? NN 显示标志位为0? 报警温度减1 报警温度加1 YYN怂阐譜鯪迳導嘯畫長凉。 调用显示子程序 Y谚辞調担鈧谄动禪泻類。 图2-7按键扫描子程序流程图 2.2KeilC51编程软件 2.2.1KeilC51简介 KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 用过汇编语言后再使用C来开发,体会更加深刻。 KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。 KeilC51软件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。 Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成: μVisionIDE集成开发环境C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及实时操作系统。 嘰觐詿缧铴嗫偽純铪锩。 2.2.2KeilC51软件应用 应用Keil进行软件仿真开发的主要步骤为: 编写源程序并保存→建立工程并添加源文件→设置工程→编译/汇编、连接→程序调试。 Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。 工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。 首先选择菜单File→New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File→Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project→NewProject,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。 这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。 加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。 紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project→OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。 工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。 成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。 Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。 如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-InlineAssambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。 对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理。 熒绐譏钲鏌觶鷹緇機库。 第三章系统的仿真与总结 3.1Protues仿真 3.1.1Protues简介 Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。 它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。 是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。 在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 该软件的特点是: 1.实现了单片机仿真和SPICE电路仿真相结合,具有模拟电路仿真、数字电路仿真、各种单片机(51系列、AVR、PIG等常用的MCU)及其外围电路(如LCD、RAM、ROM、键盘、LED、A/D、D/A等)组成的系统仿真。 2.提供了多种虚拟仪器。 如示波器、逻辑分析仪、信号发生器等,调试非常方便。 3.提供软件调试功能,同时支持第三方的软件编译和调试环境,如Keil等软件。 4.具有强大的原理图绘制功能。 Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。 因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。 对于这样的仿真实验.从某种意义上讲,是弥补了实验和工程应用有脱节的矛盾和现象。 同时,当硬件调试成功后,利用ProteusARES软件,很容易获得其PCB图,为今后的制造提供了方便。 鶼渍螻偉阅劍鲰腎邏蘞。 3.1.2proteus的工作过程 运行proteus的ISIS程序后,进入该仿真软件的主界面。 在工作前,要设置view菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。 通过工具栏中的p命令,在pickdevices窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source菜单的Definecodegenerationtools菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/removesourcefiles命令下,加入单片机硬件电路的对应程序;通过debug菜单的相应命令仿真程序和电路的运行情况。 Proteus软件提供了30多个元件库,数千种元件。 元件涉及数字和模拟、交流和直流等。 纣忧蔣氳頑莶驅藥悯骛。 3.1.3Protues测温仿真 通过仿真软件验证该原理图的可行性。 采用protues软件对电路仿真,可以得到预期效果。 仿真图如图3-1所示。 温度传感器的仿真效果图如图3-2所示,此图验证了传感器的温度与数码管显示的数字一致。 颖刍莖蛺饽亿顿裊赔泷。 图3-1Protues仿真图 图3-2DS18B20仿真图 当按下K1键一次时,进入温度报警上线调节,此时显示软件设置的温度报警上线,按K2或K3分别对报警温度进行加一或减一。 当再次按下K1键时,进入温度报警下线调节,此时显示软件设置的温度报警下线,按K2或K3分别对报警温度进行加一或减一。 当第三次按下K1键时,退出温度报警线设置。 显示当前温度。 濫驂膽閉驟羥闈詔寢賻。 如图3-3是第一次按下K1键显示的上限温度报警值,此时按K2或K3键分别对上限温度报警值进行加一或减一;图3-4是第二次按下K1键显示的下限温度报警值,此时按K2或K3键分别对下限温度报警值进行加一或减一。 銚銻縵哜鳗鸿锓謎諏涼。 图3-3上限温度报警值 图3-4下限温度报警值 3.1.4性能分析 性能测试可用制作的温度计和已有的成品温度计同时进行测量比较。 由于DS18B20的精度很高,所以误差指标可以限制在±0.1℃以内。 另外,0~100℃的测量范围使得该温度计完全适合一般的应用场合,其低压供电特性可以做成电池供电的手持电子温度计。 挤貼綬电麥结鈺贖哓类。 3.2总结 本次设计主要是通过AT89C51单片机为核心设计的一款数字温度计,该温度计不仅能够实时测量温度值并显示出来,还能够设定温度上下限进行监控,若温度高于设定上限值或低于下限值,则报警电路将进行报警。 赔荊紳谘侖驟辽輩袜錈。 此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度计 设计