单片机课程设计 数字温度计课程设计

合集下载

基于51单片机数字温度计课程设计

基于51单片机数字温度计课程设计

单片机原理及应用课程设计题目基于单片机地数字温度计《单片机原理及应用课程设计》任务书2.对课程设计成果地要求〔包括图表(或实物)等硬件要求〕:①设计电路,安装调试或仿真,分析实验结果;②并写出设计说明书,语言流畅简洁,文字不得少于3500字;③使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件地选择要有计算依据. 3.主要参考文献:[1]《单片机基础实用教程》.尹念东.中国地质大学出版社. 2005[2]《数字电路与数字电子技术》. 岳怡. 西北工业大学出版社. 2004[3]《单片级高级语言C51应用程序设计》. 徐爱钧.电子工业出版社. 20014.课程设计工作进度计划:序号起迄日期工作内容方案设计1 12.15-12.16电路设计2 12.17-12.18软件设计3 12.19-12.21软件联调4 12.22-12.23系统仿真5 12.24-12.25完成报告6 12.26-12.28主指导教师日期: 2013年 12月 28日目录1.绪论 (1)2.设计目地 (1)3.设计正文 (1)4.系统各模块介绍 (2)4.1 AT89C52芯片介绍 (2)4.2温度检测电路设计 (6)4.3显示电路 (8)5.系统软件设计 (9)5.1主程序流程图 (9)5.2 温度检测数据读取图 (10)6.编程与仿真 (11)6.1 Keil软件 (11)6.2 仿真软件Proteus (11)6.3仿真界面 (11)7.结论 (12)参考文献 (13)附录 (14)1.绪论随着时代地发展,控制智能化,仪器小型化,功耗微量化得到广泛关注.单片机控制系统无疑在这些忙面起到了举足轻重地作用.单片机地应用系统设计业已成为新地技术热点,其中数字温度计就是一个典型地例子.随着人们生活水平地提高,人们对各种测量器具地智能化、多功能化提出了更高地要求,而电子技术地飞速发展使得单片机在各种测量产品领域中地应用越来越广泛.把以单片机为核心,开发出来地各种测量及控制系统作为测量产品地主要部分,使各种测量产品更具智能化、拥有更多功能、便于人们操作和使用,更具时代感,这是测量产品地发展方向和趋势所在.这就要求我们地生产具有自动控制系统,自动控制主要是由计算机地离线控制和在线控制来实现地,离线应用包括利用计算机实现对控制系统总体地分析、设计、仿真及建模等工作;在线应用就是以计算机代替常规地模拟或数字控制电路使控制系统“软化”,使计算机位于其中,并成为控制系统、测试系统及信号处理系统地一个组成部分,这类控制由于计算机要身处其中,因此对计算机有体积小、功耗低、价格低廉以及控制功能强有很高地要求,为满足这些要求,应当使用单片机.单片机在电子产品中应用地广泛,在很多地电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本设计提供了一种低成本地利用单片机多余I/O口实现地温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型地单片机.2.设计目地温度作为一个重要地物理量,是工业生产过程中最普遍、最重要地工艺参数之一,所以温度测量技术和测量仪器地研究是一个重要地课题.随着时代地进步和发展,单片机技术已经伸入到各个领域,基于单片机数字温度计与传统地温度计相比,具有读数方便,测温范围广,其输出温度采用数字显示.本次设计目是利用51单片机及温度传感器设计一个温度采集系统,通过学过地单片机和数字电路及面向对象编程等课程地知识设计.要求地功能是能通过温度传感器采集地数据在液晶屏显示,采集地温度达一定地精度.3.设计正文系统地硬件电路包括微控制器部分(主机),温度检测,显示三个主要部分.温度检测部分采用DS18B20这个芯片大大简化了温度检测模块地设计,它无需A/D转换,可直接将测得地温度值以二进制形式输出.单片机主要控制LCD显示器显示正确地温度值,LCD 显示器实现显示功能.系统结构框图和硬件原理图分别如图2.1所示.图2.1 基准系统结构框图DS18B20是美国达拉斯半导体公司生产地新型温度检测器件,它是单片结构,无需外加A/D即可输出数字量,通讯采用单线制,同时该通讯线还可兼作电源线,即具有寄生电源模式.它具有体积小、精度易保证、无需标定等特点,特别适合与单片机合用构成智能温度检测及控制系统.4.系统各模块介绍4.1 A T89C52芯片介绍本设计以AT89C52单片机系统为核心.A T89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6 向量2 级中断结构,全双工串行口,片内晶振及时钟电路.另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式.AT89C52地引脚图如图4.1所示.图4.1 AT89C52芯片引脚图0口:P0口是一个8位漏极开路地双向 I/O 口.作为输出口,每位能驱动8个TTL 逻辑电平.对P0端口写“1”时,引脚用作高阻抗输入.当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用.在这种模式下,P0具有内部上拉电阻.在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节.程序校时,需要外部上拉电阻.P1口:P1口是一个具有内部上拉电阻地8位双向I/O 口,p1输出缓冲器能驱动4个TTL逻辑电平.对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低地引脚由于内部电阻地原因,将输出电流(IIL).P2口:P2口是一个具有内部上拉电阻地8位双向I/O 口,P2输出缓冲器能驱动4个TTL逻辑电平.对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低地引脚由于内部电阻地原因,将输出电流(IIL)在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址.P3口:P3口是一个具有内部上拉电阻地8位双向I/O 口,p2输出缓冲器能驱动4个TT逻辑电平.对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为输入使用时,被外部拉低地引脚由于内部电阻地原因,将输出电流(IIL).P3口亦作为AT89C52特殊功能(第二功能)使用AT89C52地P3口地第二功能表如表4.2所示.表4.2 A T89C52地P3口地第二功能表RST: 复位输入.晶振工作时,RST 脚持续2个机器周期高电平将使单片机复位.看门狗计时完成后,RST脚输出96个晶振周期地高电平.特殊寄存器AUXR(地址8EH)上地DISRTO位可以使此功能无效.DISRTO默认状态下,复位高电平有效.ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址地输出脉冲.在flash编程时,此引脚(PROG)也用作编程输入脉冲.在一般情况下,ALE 以晶振六分之一地固定频率输出脉冲,可用来作为外部定时器或时钟使用.然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过.PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号.当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活.EA/VPP:访问外部程序存储器控制信号.为使能从0000H 到FFFFH地外部程序存储器读取指令,EA 必须接GND.为了执行内部程序指令,EA 应该接VCC.在flash编程期间,EA 也接收12V编程电源( VPP).XTAL1:振荡器反相放大器和内部时钟发生电路地输入端.XTAL2:振荡器反相放大器地输出端.(2)晶振电路晶振电路是单片机地最小系统地组成部分.典型地晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯地场合)/12MHz(产生精确地uS级时歇,方便定时操作).特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM地0000H 开始执行;当接低电平时,复位后直接从外部ROM地0000H开始执行.(3)复位电路复位电路也是单片机地最小系统地组成部分.当单片机系统在运行中,受到环境干扰出现程序执行错乱地时候,按下复位按钮内部地程序自动从头开始执行.复位电路地原理是单片机RST引脚接收到2us以上地电平信号,只要保证电容地充放电时间大于2US,即可实现复位,所以电路中地电容值是可以改变地.按键按下系统复位,是电容处于一个短路电路中,释放了所有地电能,电阻两端地电压增加引起地.单片机最小系统如图4.3所示.图4.3 单片机最小系统图4.2温度检测电路设计DS18B20是美国DALLAS半导体公司最新推出地一种改进型智能温度传感器,与传统地热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单地编程实现9~12位地数字值读数方式.DS18B20地性能特点如下:(1)独特地单线接口仅需一个端口引脚进行通讯(2)简单地多点分布应用(3)无需外部器件(4)可通过数据线供电(5)零待机功耗(6)测温范围-55~+125℃,以0.5℃递增.华氏器件-67~+2570F,以0.90F 递增(7)温度以9 位数字量读出(8)温度数字量转换时间200ms(典型值)(9)用户可定义地非易失性温度报警设置(10)报警搜索命令识别并标志超过程序限定温度(温度报警条件)地器件.DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发地温度报警触发器TH和TL、配置寄存器.D电源下,也可以向器件提供电源;GND为地信号;VDD为可选择地VDD引脚.当工作于寄生电源时,次引脚必须接地.测温电路:如图4.4DS18B20测温电路图4.4 DS18B20测温电路DS18B20地测温原理如图4.5所示,图中低温度系数晶振地振荡频率受温度地影响很小用于产生固定频率地脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生地信号作为减法计数器2地脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生地时钟脉冲后进行计数,进而完成温度测量.计数门地开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应地基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应地一个基数值.减法计数器1对低温度系数晶振产生地脉冲信号进行减法计数,当减法计数器1地预置值减到0时温度寄存器地值将加1,减法计数器 1地预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生地脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值地累加,此时温度寄存器中地数值即为所测温图5.3.3中地斜率累加器用于补偿和修正测温过程中地非线性其输出用,于修正减法计数器地预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20地测温原理.另外,由于DS18B20单线通信功能是分时完成地,有严格地时隙概念,因此读写时序很重要.系统对DS18B20地各种操作必须按协议进行.操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据.在正常测温情况下,DS1820地测温分辨力为0.5℃.图4.5测温原理4.3显示电路1602LCD液晶屏为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字.液晶1、2端为电源;15、16为背光电源;为防止直接加5V而烧坏背光灯,在15脚串联一个1K电阻晶3端为液晶对比度调节端,通过一个10K地电位器来调节液晶显示对比度.用于限流.液液晶4端为向液晶控制器写数据/写命令选择端,接单片机P1.0端口.液晶5端为读/写选择端,因为我们不需要从液晶中读取数据,只向其写入命令和数据,因此此端始终选择为写状态,即低电平接地.液晶6端为使能信号,是操作必须地信号,接单片机地P1.1口.1602LCD液晶屏显示电路如图4.6所示:图4.6 显示电路5.系统软件设计5.1主程序流程图主程序流程图如图5.1图5.1 主程序流程图5.2 温度检测数据读取图温度检测数据读取图如图5.2 图5.2 温度程序读取图6.编程与仿真6.1 Keil软件Keil C51是美国Keil software 公司出品地51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显地优势,因而易学易用.Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大地仿真调试器等在内地完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起.运行Keil需要win98、NT、win2000、winXP、win7等操作系统.2009年2月发布地Keil uVision4,Keil uVision4引入灵活地窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上地表面对窗口位置地完全控制地任何地方,新地用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁、高效地环境来开发应用程序.6.2 仿真软件ProteusProteus软件是Labcenter electronics公司出版地EDA工具软件(该软件中国总代理为广州风标电子技术有限公司).它不仅具有其它EDA工具软件地仿真功能,还能仿真单片机及外围器件.它是目前最好地仿真单片机及外围器件地工具.虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教案地教师、致力于单片机开发应用地科技工作者地青睐.Proteus是世界上著名地EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品地完整设计.是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一地设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型.在编译方面,它也支持IAR、Keil和MPLAB等多种编译器.6.3仿真界面仿真如图所示:图6.1为温度检测部分;图6.2为显示部分.图6.1 温度检测部分图6.2 显示部分由图6.1和图6.2可以看出检测温度与显示温度一致.电路仿真成功.7.结论本次课设对我来说是一次难得地经历,首先是第一次接触了仿真软件Protel,在使用时经历了很多次失败,因为这款软件与以前使用地各种软件有很多不同,使用时不停出错,接线时由于元件放置不合理而接地杂乱无章;输入源程序时还较为顺利,显示结果比较满意.其次是程序设计,我们在参考别人成功先例地基础上根据自己设计地需要编制程序,我地收获是,编程一定要细心,针对每一个细节,稍有疏忽,程序就不能正常工作.我前期花了一些时间专门学习DS18B20地工作原理地时序图.在这次地实践与学习中,尽管期间困难重重,但我还是从中学习了不少新地知识与技能和解决困难地方法,也终于体验到了经历困难到最终获得成功地那种无以言表地喜悦之情总之,本次课设是我收获最多地一次.参考文献[1]温度传感器和一线总线协议.林继鹏.传感器技术.2002[2]《单总线数字温度传感器地自动识别技术》 .罗文广.电子产品世界.2002[3]《单片机基础实用教程》.尹念东.中国地质大学出版社. 2005[4]《数字电路与数字电子技术》. 岳怡. 西北工业大学出版社. 2004[5]《单片级高级语言C51应用程序设计》. 徐爱钧.电子工业出版社. 2001附录源程序#include<reg52.h> //头文件#define uchar unsigned char#define uint unsigned intsbit rs=P2^0。

单片机课程设计—四位数字温度计的设计

单片机课程设计—四位数字温度计的设计

第1章概述随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

第2章系统总体方案设计一.数字温度计设计方案论证方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

二.方案二的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机STC89C52,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。

图1总体设计方框图第3章数字温度传感器——DS18B201.DS18B20温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

DS18B20的性能特点如下:●独特的单线接口仅需要一个端口引脚进行通信;●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;●无须外部器件;●可通过数据线供电,电压范围为3.0~5.5V;●零待机功耗;●温度以9或12位数字;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。

基于单片机的数字温度计的课程设计

基于单片机的数字温度计的课程设计

基于单片机的数字温度计的课程设计随着科技发展,单片机技术受到了广泛的应用,并得到了广泛的重视。

本设计以现有单片机ADUC7024系统为基础,设计和实现了一款基于单片机的数字温度计,旨在解决过热或者过冷的问题,通过温度检测器在给定的温度范围内确定温度,并控制过热和过冷的情况。

(一)设计的概述本设计的主要内容是分析ADUC7024硬件,对硬件进行器件选型,完成系统模块的设计,以及ADUC7024以现有程序设计语言完成控制程序设计,最后采用ADUC7024作为控制器,与温度检测器、LED等模块进行硬件联通,完成一个简单的温度检测控制系统。

1、器件选型:本设计采用ADUC7024作为系统的控制器,采取温度传感器采用的是DS18B20温度芯片芯片,显示采用的是LED系列的指示灯,系统开关采用的是两个按键作为上升按钮和下降按钮。

2、硬件模块:本次设计以ADUC7024硬件为主框架,以温度检测器连接ADUC7024控制器,可以实现温度范围内数字检测,LED显示屏以温度为参数,可根据设定的温度范围指示异常温度;系统开关采用按键开关来控制,多出的端口可实现报警功能。

本设计采用ADUC7024系统控制器,设计一款基于单片机的温度检测控制系统的电路,主要包括:外部中断、输入输出口、充电输出和按键检测电路,电路图如下图1所示:1、主程序:本次设计采用C语言编写,主程序负责实现温度检测、控制操作功能。

主程序中采用外部中断和充电输出实现数据的获取和操作的控制,采用按键输入调节温度,并且可以把某一温度范围内的上下限定值写入EEPROM,控制系统会及时获取当前温度,比较当前温度与上下限值,如果出现过热或者过冷,则会发出警报。

2、子程序:本次设计还编写了多个子程序,用于实现数据处理、按键检测等功能,并在主程序中进行调用,使程序更加规范。

最新单片机课程设计-数字温度计控制系统设计

最新单片机课程设计-数字温度计控制系统设计

单片机课程设计-数字温度计控制系统设计一、项目目标1 、1学习和理解DS18B20测量原理2、了解DS18B20 3、的内部结构和特性掌握DS18B20和单片机的接口方法和编程方法2 、项目需求1、掌握数模转换程序2、的设计方法方法3、通过数码管显示采集的温度警报4、将通过上下改变温度发生DS18B20构成一个温度测量系统。

测量温度精度达到0.1度,测量温度范围从-20度到+100度,由8位数码管显示。

并具有上限和下限报警功能三、项目方案采用发光二极管数码管显示,即所有位段线选择并联在一起,并提供8位输入输出端口控制,形成段线选择复用。

每一位的公共阳极或公共阴极分别由相应的输入输出线控制,实现每一位的分时选通。

区段线选择占用8位输入/输出端口,而位线选择占用4位输入/输出端口。

采用扫描显示方式,即在某一时刻,只有某一位的位线选择处于选线状态,而其他位的位线选择处于关断状态,同时在段选择线上输出对应位要显示的字节的段代码。

确定不同发光二极管位显示的时间间隔不能太短,因为发光二极管从导通到发光有一定的延迟,导通时间太短,发光太弱,人眼看不清楚。

然而,它不能太长,因为它受到临界闪烁频率的限制,并且该时间越长,占用的CPU时间越多。

此外,显示位越多,占用的CPU时间就越多。

因此,动态显示本质上是牺牲CPU时间来换取组件的减少。

其优点是成本低,显示清晰,编程简单。

1、电路方案:单片机复位电路报警点按键时钟调整振荡电路液晶显示电路继电器控制电路温度传感器电路2、温度传感器现场温度数据温度传感器单片机温度显示报警灯报警温度传感器原理图首先通过DS18B20温度传感器采集现场温度数据,通过DS18B20自带的模数转换器转换成16位数字代码,然后通过单片机用数码管显示当前温度,并设置当前温度报警超过一定温度。

温度数据被移入显示寄存器十进制数字0?百位数0?十位显示符号100位显示数据未显示(符号未显示)结束N N Y起始温度减?温度值采用补码,并设置“-”标志来计算十进制温度BCD值,以计算整数位温度BCD值,并设置“+”标志。

单片机数字温度计课程设计总结

单片机数字温度计课程设计总结

单片机数字温度计课程设计总结一、引言温度是物体分子热运动的表现,对于很多应用场合来说,准确地测量和监控温度是非常重要的。

在本次课程设计中,我们使用单片机设计了一个数字温度计,能够实时测量环境温度并将其显示在数码管上。

本文将对该课程设计进行总结和归纳。

二、设计思路1. 硬件设计:我们使用了传感器、单片机和数码管等硬件元件。

传感器用于感知环境温度,单片机负责数据处理和控制,数码管用于显示温度数值。

2. 软件设计:我们使用C语言编写了相应的程序。

程序的主要逻辑是通过单片机与传感器进行通信,获取温度值并进行转换,然后将转换后的数值通过数码管进行显示。

三、硬件设计1. 传感器选择:在本次设计中,我们选择了NTC热敏电阻作为温度传感器。

它的电阻值随温度的变化而变化,通过测量电阻值的变化即可得到环境温度。

2. 单片机选择:我们选择了常用的STC89C52单片机作为控制核心。

它具有较高的性价比和丰富的资源。

3. 数码管选择:我们选择了常见的共阳极数码管,它能够直观地显示温度数值。

四、软件设计1. 数据采集:首先,我们需要通过AD转换将传感器输出的模拟信号转换为数字信号。

然后,我们将数字信号转换为温度值,根据传感器的特性曲线进行适当的校准。

2. 数据处理:接下来,我们需要对采集到的温度值进行处理,例如进行单位转换或滤波处理,以获得更加准确和稳定的结果。

3. 数据显示:最后,我们将处理后的温度值通过数码管进行显示。

为了方便观察,我们还可以添加一些提示信息,例如温度单位或警告标识。

五、调试和测试在设计完成后,我们需要进行调试和测试,以确保温度计能够正常工作。

首先,我们可以通过改变环境温度来验证温度计的测量准确性。

其次,我们还可以通过与其他温度计进行对比来验证其稳定性和精度。

六、设计优化和改进在实际使用过程中,我们可以根据需求进行进一步的优化和改进。

例如,我们可以添加温度报警功能,当温度超过设定阈值时,温度计能够及时发出警报。

数字温度计的课程设计

数字温度计的课程设计

摘要本设计是单片机控制的数字温度计,随着时代的进步和发展,单片机技术已经普及到我们生活,学校,工作,科研等各个领域,已经成为一种比较成熟,要求越来越高,需求越来越迫切的技术,由于世界经济的快速发展,经济竞争已经成为各国经济实力和综合国力的竞争,所以单片机已成为衡量一个国家科学技术发展水平的重要标志之一。

又因为温度计在实际生产和人们的生活中都有广泛应用,为此我选择了设计一个数字温度计。

本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,基本范围-50℃~110℃,精度误差小于0. 5℃,LED数码直读显示可以设置上下报警温度,当温度不在设置范围内时,可以报警。

本设计以STC89C52单片机为核心,DS18B20数字式温度传感器为温度传感器,74HC573锁存器及数码管构成显示电路。

单片机控制DS18B20进行温度采集,在接收到DS18B20传回数据后进行处理,通过74HC573锁存器及数码管显示实时温度的动态显示。

由于采用的是可编程器件作为控制核心,与传统的温度计相比该温度计具有示数直观,精度可调,功能易扩展等优点。

关键词:数字温度计,单片机,DS18B20目录1 前言 (3)1.1 设计概述 (3)2 总体方案设计 (4)2.1 方案选择 (4)3 单元模块设计 (5)3.1 各单元模块功能介绍及电路设计 (5)3.2 电路参数的计算及元器件的选择 (7)3.3 各单元模块的联接 (9)4 软件设计 (10)4.1 主要软件设计流程 (10)4.2 原理图的绘制与仿真 (10)4.3 单片机程序的调试与编译 (11)5 系统调试 (14)5.1 系统单片机程序的调试 (14)5.2 系统电路的调试 (14)6 系统功能、指标参数 (15)6.1 系统能实现的功能 (15)6.2 系统功能及指标参数分析 (15)7 总结与体会 (16)8 参考文献 (16)附录1:数字温度计的电路原理图附录2:DS18B20测温子程序1前言随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。

基于单片机数字温度计课程设计

基于单片机数字温度计课程设计

基于单片机数字温度计课程设计
基于单片机的数字温度计课程设计是一个非常有趣和实用的项目。

首先,我们需要选择合适的单片机,比如常用的Arduino或者STM32等。

然后,我们需要选择合适的温度传感器,比如LM35或者DS18B20等。

接下来,我们可以按照以下步骤进行课程设计:
1. 硬件设计,首先,我们需要将单片机和温度传感器连接起来,这涉及到电路设计和焊接。

我们需要确保电路连接正确,传感器能
够准确地读取温度,并且单片机能够正确地接收并处理传感器的数据。

2. 软件设计,接下来,我们需要编写单片机的程序,以便能够
读取传感器的数据,并将其转换为数字温度值。

我们可以使用C语
言或者Arduino的编程语言来实现这一步骤。

在程序设计中,需要
考虑到温度的单位转换、数据的精度等问题。

3. 显示设计,我们可以选择合适的显示设备来展示温度数值,
比如数码管、液晶显示屏或者OLED屏幕等。

在设计中,我们需要考
虑到显示的清晰度、易读性以及节能等因素。

4. 功能扩展,除了基本的温度显示功能,我们还可以考虑对数
字温度计进行功能扩展,比如添加报警功能、数据存储功能或者远
程监控功能等,这些功能的添加可以提升数字温度计的实用性和趣
味性。

5. 测试与优化,最后,我们需要对设计的数字温度计进行测试,并不断优化,确保其稳定可靠、准确无误地显示温度。

总的来说,基于单片机的数字温度计课程设计涉及到硬件设计、软件设计、显示设计、功能扩展、测试与优化等多个方面,学生可
以通过这样的课程设计项目,全面提升自己的电子设计和编程能力,同时也能够实现一个实用的数字温度计产品。

单片机课程设计(数字温度计)

单片机课程设计(数字温度计)

单片机课程设计说明书1 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

2 总体设计方案2.1 方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。

选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED 数码管以动态扫描法实现。

检测范围-55摄氏度到125摄氏度。

按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。

数字温度计总体电路结构框图如图1所示。

图1 数字温度计总体电路结构框图AT89C51 主 控 制 器显示电路温度传感器 DS18B20扫描驱动2.2 系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。

图2 数字温度计设计电路原理图2.2.1 主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

单片机课程设计方案—数字温度计

单片机课程设计方案—数字温度计

1 课题任务、功能要求说明及总体方案介绍1.1 课题目的随着社会的发展,温度的测量及控制变得越来越重要。

本文采用单片机STC89S52设计了温度实时测量及控制系统。

单片机STC89S52 能够根据温度传感器DS18B20 所采集的温度在数码管上实时显示,通过控制从而把温度控制在设定的范围之内。

所有温度数据均通过4位数码管LED显示出来。

系统可以根据时钟存储相关的数据。

通过该课程的学习使我们对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。

1.2 功能要求说明设计一个具有特定功能的数字温度计。

该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。

测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。

1.3 设计课题总体方案介绍及工作原理说明1.3.1设计课题总体方案(1>根据设计要求,选择AT89C52单片机为核心器件。

(2>温度检测器件采用DS18B20数字式温度传感器。

与单片机的接口为P3.6引脚。

(3>键盘采用独立式按键,由三个按键组成,分别是:设置键<SET),加一建<+1),确认键<RET)。

(4>SET键<上下限温度设置键):当该键按下时,进入上下限温度设置功能。

通过P0.1引脚接入。

(5>+1键<加一调整键):在输入上下限温度时,该键按下一次,被调整位加一。

通过P0.2引脚接入。

(6>RET键<确认键):当该键按下时,指向下一个要调整的位。

通过P0.3引脚接入。

1.3.2 工作原理说明本课题以是80S52单片机为核心设计的一种数字温度控制系统,利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。

(完整word版)单片机课程设计温度计

(完整word版)单片机课程设计温度计

一、课题名称:基于DS18B20的温度计二.内容摘要随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。

在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。

本课题以AT89C51单片机系统为核心,能对多点的温度进行实时巡检。

DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。

本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。

三:方案设计本系统主要由三个模块组成:控制模块、温度采集模块、显示模块3.1 控制模块本设计采用单片机基于数字温度传感器DS18B20的系统。

单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。

温度传感器DS18B20利用单总线的特点可以方便的实现多点温度的测量,组建传感器网络,且系统的抗干扰性好、设计灵活、方便,而且能在恶劣的环境下进行现场温度检测。

本系统可以应用在大型工业及民用常温多点监测场合。

3.2温度采集模块这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。

DS18B20智能温度温度传感器进行温度采集和转换输出数字型的温度值,然后通过数据引脚传到单片机的P3.7口,单片机接受温度并存储。

DS18B20是美国DALLAS半导体公司最新推出的一种单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,它可将温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理和A/D转换等复杂模/数转换电路。

单片机智能体温计课程设计

单片机智能体温计课程设计

单片机智能体温计课程设计一、引言体温是人体健康状况的重要指标之一,准确、便捷地测量体温对于疾病的诊断和预防具有重要意义。

传统的体温计在使用上存在一些不便,如测量时间长、读数不直观等。

随着单片机技术的发展,智能体温计应运而生。

本课程设计旨在利用单片机技术,设计一款功能实用、操作简便的智能体温计。

二、设计要求1、测量范围:350℃ 420℃,精度为 01℃。

2、测量时间短,能够快速显示测量结果。

3、具备存储功能,能够记录多次测量数据。

4、具有温度报警功能,当测量温度超过设定的阈值时发出警报。

5、采用直观的显示方式,如液晶显示屏(LCD)。

三、硬件设计1、温度传感器选择数字式温度传感器,如 DS18B20。

它具有体积小、精度高、接口简单等优点,能够直接将温度转换为数字信号输出,方便与单片机进行通信。

2、单片机选用常见的 51 系列单片机,如 STC89C52。

它具有丰富的资源和成熟的开发环境,能够满足本设计的需求。

3、显示模块采用 1602 液晶显示屏,能够清晰地显示测量的温度值、时间等信息。

4、报警模块由蜂鸣器和发光二极管组成。

当测量温度超过设定的阈值时,蜂鸣器发声,发光二极管闪烁,提醒用户。

5、存储模块选用 EEPROM 芯片,如 AT24C02,用于存储测量数据。

四、软件设计1、主程序流程系统初始化,包括单片机端口设置、传感器初始化、显示初始化等。

读取温度传感器的数据,并进行数据处理和转换。

将测量的温度值显示在液晶显示屏上。

判断温度是否超过阈值,若超过则触发报警。

将测量数据存储到 EEPROM 中。

2、温度传感器驱动程序按照 DS18B20 的通信协议,发送指令读取温度数据。

对读取的数据进行校验和处理,得到准确的温度值。

3、显示程序编写驱动 1602 液晶显示屏的程序,实现字符和数字的显示。

4、报警程序当温度超过阈值时,控制蜂鸣器发声和发光二极管闪烁。

5、存储程序按照 EEPROM 的读写协议,将测量数据写入存储芯片。

单片机数字温度计课程设计报告

单片机数字温度计课程设计报告

单片机数字温度计课程设计报告1.引言2.课程目标3.教学内容4.教学方法5.教学评价6.结论7.参考文献引言:数字温度计是现代生活中常用的一种温度测量工具。

对于学生来说,了解数字温度计的使用原理和正确使用方法是非常必要的。

因此,本课程设计旨在帮助学生掌握数字温度计的基本知识和技能,提高其实际应用能力。

课程目标:1.了解数字温度计的基本原理和结构。

2.掌握数字温度计的使用方法。

3.能够正确进行数字温度计的校准和维护。

4.能够应用数字温度计进行实际温度测量。

教学内容:1.数字温度计的基本原理和结构。

2.数字温度计的使用方法。

3.数字温度计的校准和维护。

4.数字温度计的实际应用。

教学方法:本课程采用讲授、实验和讨论相结合的教学方法。

通过讲解数字温度计的基本原理和结构,让学生了解数字温度计的工作原理;通过实验操作,让学生掌握数字温度计的使用方法和校准方法;通过讨论,让学生了解数字温度计的实际应用场景。

教学评价:本课程的教学评价主要采用考试和实验报告相结合的方式。

考试主要考查学生对数字温度计的理论知识掌握情况;实验报告主要考查学生对数字温度计的实际应用能力和实验操作能力。

结论:通过本课程的研究,学生能够掌握数字温度计的基本知识和技能,提高其实际应用能力,为其未来的研究和工作打下坚实的基础。

参考文献:1.《数字温度计使用手册》2.《数字温度计原理与应用》3.《温度测量技术与应用》1.设计任务1.1 设计目的本设计旨在实现一个温度监测系统,能够实时监测环境温度,并在温度超出预设范围时发出报警信号,同时在液晶显示屏上显示当前温度。

1.2 设计指标本设计的主要指标包括:温度监测精度、报警准确性、系统响应速度、硬件成本、软件复杂度等。

1.3 设计要求本设计要求系统稳定可靠,操作简便,能够满足实际应用需求。

2.设计思路与总体框图本系统采用单片机作为主控芯片,通过温度传感器采集环境温度,并将数据传输到单片机进行处理。

同时,液晶显示屏用于显示当前温度,按键用于对系统进行设置和调整。

基于单片机的数字温度计的设计 课程设计

基于单片机的数字温度计的设计 课程设计

基于单片机的数字温度计的设计课程设计太原理工大学矿业工程学院课程设计报告基于51单片机的数字温度计的设计摘要本设计主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:单片机;数字温度传感器;最简温度检测系统;目录目录1 绪论 (1)1.1选题的目的和意义 (1)1.1.1选题的目的 (1)1.1.2选题的意义 (1)2 数字温度计的设计方案 (2)2.1设计方案的确立及论证 (2)2.2系统器件选择 (2)2.2.1 单片机的选择 (2)2.2.2 温度传感器的选择 (2)3 系统硬件电路的设计 (4)3.1温度检测电路 (4)3.2显示电路........................................... 错误!未定义书签。

4 系统软件的设计 (5)4.1概述 (5)4.1.1 温度数据的计算处理方法 (6)4.2主程序模块 (6)4.3读温度值模块 (7)4.4中断模块 (8)4.5数码管驱动模块...................................... 错误!未定义书签。

5 实验仪器及元件清单 (10)6 心得体会 (10)致谢 (13)参考文献 (13)附录:源程序 (14)1 绪论1.1 选题的目的和意义1.1.1选题的目的利用单片机AT89S51和温度传感器DS18B20设计一个设计温度计,能够测量-55 ~128℃之间的温度值,用液晶屏直接显示,测量精度为1℃。

单片机课程设计报告-数字温度计

单片机课程设计报告-数字温度计

惠州学院HUIZHOU UNIVERSITY单片机课程设计设计题目系别专业班级学号学生姓名指导教师完成时间年月目录一.课题设计任务与要求。

--------------------------------------------------------二.对于课题的总体构想。

--------------------------------------------------------三.DS18B20温度传感器简介。

--------------------------------------------------------四.系统总仿真电路。

--------------------------------------------------------五.总程序。

--------------------------------------------------------六.心得体会。

--------------------------------------------------------七.参考文献。

--------------------------------------------------- 一、设计任务与要求设计任务:利用数字温度传感器DS18B20与单片机结合来测量温度。

设计要求:利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。

其温度测量范围为-55~125℃,精确到0.5℃。

本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。

数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示。

从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。

基于单片机的数字温度计课程设计(硬件)

基于单片机的数字温度计课程设计(硬件)

摘要本设计以STC89S51单片机为核心的温度控制系统的工作原理和设计方法。

温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。

文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。

单片机通过对信号进行相应处理,从而实现温度控制的目的。

文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led控制程序。

关键词:STC89S51;单片机;DS18B20;温度芯片;LED目录引言 (1)1.设计概述 (2)1.1 设计目标和要求 (2)1.2 设计思路 (2)2.系统方案及硬件设计 (3)2.1 设计方案 (3)2.2 方案的硬件总体方框图 (3)2.3 温度传感器DS18B20测温原理 (4)2.4 硬件设计 (9)2.4.1主控制器电路 (9)2.4.2复位电路 (10)2.4.3时钟振荡电路 (10)2.4.4正相驱动电路 (11)2.4.5反相驱动电路 (11)2.4.6显示电路 (12)2.5 软件设计 (12)3.系统原理图 (14)4.proteus软件仿真结果 (15)4.1系统仿真设计 (15)4.2仿真结果分析 (15)5.结论 (16)6.参考文献 (17)引言单片机以其体积小、功能完善、抗干扰能力强、价格低廉等优点而被广泛应用于工业控制、可编程序控制器、通信、家电等领域。

89C51系列单片机经过多年的发展,在性能、指令功能、运算速度、控制能力等方面都有很大的提高,已被越来越多的科学工作者所关注。

目前,大学院校相关电子、机电、自动化、计算机等专业都在开设这门课程。

单片机课程设计是学生加深理论知识理解、提高实际设计能力的重要环节,从设计电路板,到程序编制与调试,最后完成一个单片机系统的设计,可以使学生体验到成功的快乐。

Proteus虚拟单片机仿真软件可以成功地进行绝大部分的单片机硬件仿真,轻松实现程序功能的展示。

数字温度设计--单片机课程设计

数字温度设计--单片机课程设计

软件接口设计
编写相应的驱动程序,实现单片 机对温度传感器的读写操作,包 括初始化、配置参数、读取温度
数据等。
数据处理与显示
将读取的温度数据进行处理,如 滤波、标度变换等,然后将结果 显示在LCD或LED等显示设备上

04
数字温度显示电路设计
显示器件选择及驱动方式
01
02
03
LED数码管
通过单片机IO口直接驱动 ,显示亮度高,适用于室 内或室外环境。
案例三
基于单片机的温度巡检仪设计,该巡检仪能够同时对多个 点的温度进行实时监测和数据记录,适用于各种需要多点 温度监测的场合。
谢谢观看
LCD液晶显示屏
需要专用驱动芯片,显示 内容丰富,适用于人机交 互界面设计。
OLED显示屏
自发光,无需背光,显示 效果好,适用于高端产品 或特殊显示需求。
显示电路设计原则与方法
简洁明了
电路设计应简洁明了,减 少不必要的元器件和走线 ,提高系统可靠性。
模块化设计
将显示电路划分为不同的 功能模块,便于设计、调 试和维护。
包括单片机时钟、 IO口、中断等初始 化配置。
数据处理模块
对采集到的数据进 行滤波、标度变换 等处理。
按键处理模块
通过按键输入实现 人机交互,如设置 温度上下限等。
调试过程中常见问题解决方法
程序无法下载
检查硬件连接是否正确,如单片机型号、晶振、电源等是 否匹配;检查下载电路是否正常;尝试重新编译并下载程 序。
单片机概述
定义
单片机是一种集成电路芯片,它将中央处理器(CPU)、存储器、输入输出接 口等计算机主要部件集成在一块芯片上,构成一个完整的微型计算机。
发展历程

单片机数字温度计课程设计报告

单片机数字温度计课程设计报告

目录1.设计任务.................................................... ................ ................ .. (1)1.1 设计目的........................................... .............. (1)1.2 设计指标................................ ...................... . (1)1.3 设计要求................................................ (1)2. 设计思路与总体框图................................................ .. (1)3. 系统硬件电路的设计............................................... (2)3.1主控电路............................................... ... (2)3.2液晶显示电路........................................... (3)3.3按键电路....... .... ................................................... .. (3)3.4报警电路........................ .................. . (4)4.系统仿真设计 (4)4.1仿真原理图............................................... ................ ...... (4)4.2各功能元件的分析 (5)5. 系统软件设计 (10)5.1 主程序 (11)5.2 读出温度子程序 (11)5.3 温度转换命令子程序 (12)5.4 设计温度子程序 (12)5.5 1602的温度显示 (13)6. 总结与体会............................................... ....................................... .... . (13)6 1总结................................................ ............ ....... . (13)6. 2体会................................................ ............ ....... . (14)7. 参考文献................................................ ............ ....... .. (15)8. 附录 (16)1. 设计任务1.1 设计目的1. 了解数数字温度计及工作原理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及系统课程设计专业:电气工程及其自动化班级:电气1101姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014 年 1 月 17 日1设计题目基于单片机的数字温度计设计。

2设计方案2.1设计目的单片机是单片微型计算机的简称,其具有体积小、可靠性高、功能强、灵活方便等优点,故可以广泛应用于各种领域。

其中数字温度计就是一个典型的例子。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等特点,其输出温度采用数字显示,主要用于对测温要求较高的场所,该设计主要使用的元件有单片机AT89C52,测温传感器使用DS18B20和LCD1602液晶显示器。

2.2性能指标(1) 基本范围-50℃-110℃;(2) 精度为0.5℃;(3) 液晶LCD显示;(4) 可以设定温度的上下限以及报警功能。

3数字温度计系统的硬件设计3.1数字温度计硬件框图数字温度计系统硬件框图如图1所示。

图1 系统的硬件框图3.2AT89C52单片机AT89C52单片机引脚配置图,如图2所示。

图2 AT89C52引脚配置图3.3外围电路AT89C52的时序就是CPU在执行指令时所需控制信号的时间顺序。

选择了内部时钟方式,即利用芯片内部的振荡器,然后在引脚XTAL1和XTAL两端跨接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路。

外接晶振时,C1和C2值通常选择为30PF左右。

C1和C2对频率有微调作用。

晶体的频率范围可在1.2~12MHZ之间选择。

AT89C52的复位电路是按键电平复位电路,相当于按复位键后复位端通过电阻与Vcc电源接通。

复位是单片机的初始化操作。

单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。

显示电路采用LCD1602液晶显示器显示。

故障状态指示电路采用发光二级管以及蜂鸣器对运行方式进行指示,可清楚看到系统的故障状态。

测温传感器DS18B20可以直接读出被测温度值,采用三线制和单片机相连,少了外部的硬件电路,具有低成本和易使用的特点。

3.4 总设计图数字温度计系统的硬件总设计图如图3所示。

图3 总设计图4 数字温度计系统的软件设计及系统整体流程整个系统的功能是由硬件电路配合软件来实现的,从软件的功能不同,可以分为两类:主程序和子程序。

主程序是整个软件的核心,专门用来协调各个执行模块和操作者的联系。

子程序是用来完成各种实质性的工作的,如读温度子程序、转换温度子程序、计算温度子程序等。

各执行模块规划好以后,就可以规划监控软件了。

首先要根据系统的总体功能选择一种最合适的主程序结构,然后根据实时性的条件,合理安排监控软件和执行软件之间的调度关系。

4.1总体流程图数字温度计系统总体流程图如图4所示。

图4主流序流程图4.2 子程序流程图数字温度计系统子程序主要包含:读温度子程序、转换温度子程序、计算温度子程序。

(1)读温度子程序流程图读温度子程序流程图如图5所示。

图5 读温度子程序流程图(2)转换温度子程序流程图转换温度子程序流程图如图6所示。

图6 转换温度子程序流程图(3)计算温度子程序流程图计算温度子程序流程图如图7所示。

图7 计算温度子程序流程图5 仿真结果(1) 正常温度显示温度计正常温度显示如图8所示。

p 27p 26p 25p 24p 23p 22p 21p 20p 30D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LD1LED-GREENp 27p 26p 25p 24p 23p 22p 21p 20p 30D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LD1LED-GREEN参考文献1.王思明. 单片机原理及应用系统设计[M]. 北京:科学出版社, 2012.2.李广弟. 单片机基础[M]. 北京:北京航空航天大学出版社, 1994.3.艾德才. pentium/80486实用汇编语言程序设计[M]. 北京:清华大学出版社, 1997.附录源程序//使用1602LCD显示DS18B20转换的温度值#include <reg52.H>#include <intrins.H>#include <math.H>#define uchar unsigned char#define uint unsigned intsbit RS = P3^0; //数据/命令选择端(H/L)sbit LCDEN = P3^2; //使能端sbit deng=P1^6; //超过温度限制指示灯sbit beep=P1^7; //超过温度限制报警器uchar high=30; //最高温度uchar low=10; //最低温度unsigned char r;void delayUs() //短延时{_nop_();}void delayMs(uint a) //长延时{uint i, j;for(i = a; i > 0; i--)for(j = 100; j > 0; j--);}//第一行开始地址为0x80, 第二行开始地址为0xc0;//写命令:RS=0, RW=0;void writeComm(uchar comm){RS = 0;P2 = comm;LCDEN = 1;delayUs();LCDEN = 0;delayMs(1);}//写数据:RS=1, RW=00void writeData(uchar dat){RS = 1;P2 = dat;LCDEN = 1;delayUs();LCDEN = 0;delayMs(1);}//初始化函数//显示模式, 固定指令为00111000=0x38, 16*2显示, 5*7点阵,8位数据接口//显示开/关及光标设置00001100=0x0c//指令1: 00001DCB : D:开显示/关显示(H/L); C:显示光标/不显示(H/L), B:光标闪烁/不闪烁(H/L)//指令2: 000001NS ://N=1, 当读/写一个字符后地址指针加1, 且光标也加1; N=0则相反//S=1, 当写一个字符, 整屏显示左移(N=1)或右移(N=0), 但光标不移动; S=0, 整屏不移动void init(){writeComm(0x38); //显示模式writeComm(0x0c); //开显示, 关光标writeComm(0x06); //写字符后地址加1, 光标加1writeComm(0x01); //清屏}void writeString(uchar * str, uchar length){uchar i;for(i = 0; i < length; i++){writeData(str[i]);}}/*****************************DS18B20*******************************/sbit ds = P3^7;//初始化DS18B20//让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动void dsInit(){//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于为8us unsigned int i;ds = 0;i = 100; //拉低约800us, 符合协议要求的480us以上while(i>0) i--;ds = 1; //产生一个上升沿, 进入等待应答状态i = 4;while(i>0) i--;}void dsWait(){unsigned int i;while(ds);while(~ds); //检测到应答脉冲i = 4;while(i > 0) i--;}//向DS18B20读取一位数据//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,//之后DS18B20则会输出持续一段时间的一位数据bit readBit(){unsigned int i;bit b;ds = 0;i++; //延时约8us, 符合协议要求至少保持1usds = 1;i++; i++; //延时约16us, 符合协议要求的至少延时15us以上b = ds;i = 8;while(i>0) i--; //延时约64us, 符合读时隙不低于60us要求return b;}//读取一字节数据, 通过调用readBit()来实现unsigned char readByte(){unsigned int i;unsigned char j, dat;dat = 0;for(i=0; i<8; i++){j = readBit();//最先读出的是最低位数据dat = (j << 7) | (dat >> 1);}return dat;}//向DS18B20写入一字节数据void writeByte(unsigned char dat){unsigned int i;unsigned char j;bit b;for(j = 0; j < 8; j++){b = dat & 0x01;dat >>= 1;//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1if(b){ds = 0;i++; i++; //拉低约16us, 符号要求15~60us内ds = 1;i = 8; while(i>0) i--; //延时约64us, 符合写时隙不低于60us要求}else //写"0", 将DQ拉低60us~120us{ds = 0;i = 8; while(i>0) i--; //拉低约64us, 符号要求ds = 1;i++; i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了}}}//向DS18B20发送温度转换命令void sendChangeCmd(){dsInit(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化dsWait(); //等待DS18B20应答delayMs(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0x44); //写入温度转换命令字Convert T}//向DS18B20发送读取数据命令void sendReadCmd(){dsInit();dsWait();delayMs(1);writeByte(0xcc); //写入跳过序列号命令字Skip RomwriteByte(0xbe); //写入读取数据令字Read Scratchpad}//获取当前温度值int getTmpValue(){unsigned int tmpvalue;int value; //存放温度数值float t;unsigned char low, high;sendReadCmd();//连续读取两个字节数据low = readByte();high = readByte();//将高低两个字节合成一个整形变量//计算机中对于负数是利用补码来表示的//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的valuetmpvalue = high;tmpvalue <<= 8;tmpvalue |= low;value = tmpvalue;//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度t = value * 0.0625;//将它放大10倍, 使显示时可显示小数点后一位, 并对小数点后第二位进行4舍5入//如t=11.0625, 进行计数后, 得到value = 111, 即11.1 度//如t=-11.0625, 进行计数后, 得到value = -111, 即-11.1 度value = t * 10 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5return value;}//显示温度void display(int v){unsigned char count;unsigned char datas[] = {0, 0, 0, 0};unsigned int tmp = abs(v);datas[0] = tmp / 1000;datas[1] = tmp % 1000 / 100;datas[2] = tmp % 100 / 10;datas[3] = tmp % 10;r= tmp/10;writeComm(0xc0+3);if(v < 0){writeString("- ", 2);}else{writeString("+ ", 2);}if(datas[0] != 0){writeData('0'+datas[0]);}for(count = 1; count != 4; count++){writeData('0'+datas[count]);if(count == 2){writeData('.');}}}/******************************报警*******************************/ void BEEP()//报警{if((r>=high&&r<129)||r<low){beep=!beep;deng=1;}else{beep=1;deng=0;}}/******************************DS18B20*******************************/void main(){uchar table[] = "Now Temperature ";delayMs(1);sendChangeCmd();init();writeComm(0x80);writeString(table, 16);while(1){delayMs(1000); //温度转换时间需要750ms以上writeComm(0xc0);display(getTmpValue());sendChangeCmd();BEEP();}}。

相关文档
最新文档