简易数字式温度计的设计
毕业设计(论文)-基于at89c51单片机的简易数字温度计的设计[管理资料]
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
A
与MCS-51兼容;
4K字节可编程闪烁存储器;
寿命:1000写/擦循环;
数据保留时间:10年;
全静态工作:0Hz-24MHz;
三级程序存储器锁定;
128×8位内部RAM;
32可编程I/O线;
两个16位定时器/计数器;
5个中断源。
A
其引脚排列如图3-1所示:
各引脚功能简单介绍如下:
VCC:供电电压。
[Key words]digital thermometer; DS18B20; AT89C51;alarm.
现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
基于单片机的简易数字温度计的设计
基于单片机的简易数字温度计的设计张逊摘要本文介绍了一种基于单片机的简易数字温度计的设计。
该设计主要由三个模块组成:温度采集模块,数据处理模块及显示模块。
温度采集主要由温度传感器DS18B20来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片STC89C52RC来完成,其负责把DS18B20传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着芯片DS18B20相互通讯。
该系统的数字温度计电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。
此数字温度计可以测量得温度范围—55~+125℃并通过一个四位一体的7段数码管显示出来。
关键词单片机;数字温度计;温度传感器;STC89C52RC;DS18B20Based on single chip simple digitalthermometer designZhangXunAbstract This paper introduces a kind of based on single chip simple digital thermometer design. This design mainly consists of three modules: temperature acquisition module, data processing module and display module. Temperature acquisition is mainly composed of temperature sensor DS18B20 to complete, it is responsible for the collection of the analog conversion to the corresponding digital quantity in the transfer to the data processing module. Data processing by the chip STC89C52RC to complete, which is responsible for the DS18B20 transfer to the digital quantity in the course of data processing, produce the corresponding display code to display module display; In addition, it also control the chip DS18B20 mutual communication.The system of the digital thermometer circuit is simple, the element used less, low cost, and high measuring accuracy and reliability. The digital thermometer can measure temperature range - 55 ~ + 125 ℃and through a quaternity seven period of digital tube display.Keywords Single-chip microcontroller; Digital thermometer; Temperature sensor;AT89C51; DS18b20目录1 引言 (1)2 设计总体方案 (2)2.1设计要求 (3)2.2 设计思路 (4)2.3 设计方案 (5)3 硬件电路设计 (6)3.1 温度采集模块 (3)3.2 单片机系统 (9)3.3 复位电路和时钟电路 (16)3.4 数码管显示系统设计 (18)3.5 总体电路设计 (21)4 程序设计 (14)4.1 程序设计总方案 (23)4.2 系统子程序设计 (23)5面包电路的搭建 (25)5.1 硬件的调试 (25)5.2 显示结果分析 (18)6实物的制作 (19)结论 (37)参考文献 (38)附录程序代码 (22)致谢 (39)1 引言在环境的舒适度测量中,温度、湿度和空气质量是最基本的三个被测量,其中温度的测量最为经常。
数字简易温度计设计
目录引言 ------------------------------------------------------------------------------------ 1 设计目的-------------------------------------------------------------------------- 1 设计背景-------------------------------------------------------------------------- 1 1设计方案----------------------------------------------------------------------------- 21.1度计软件设计流程图 -------------------------------------------------------- 21.2元器件的选取:-------------------------------------------------------------- 21.3系统仿真图------------------------------------------------------------------- 2 2设计框图----------------------------------------------------------------------------- 32.1硬件电路框图:-------------------------------------------------------------- 32.2硬件电路概述:-------------------------------------------------------------- 32.3显示电路---------------------------------------------------------------------- 32.4温度传感器DS18B20 -------------------------------------------------------- 4 3软件设计----------------------------------------------------------------------------- 83.1主程序 ------------------------------------------------------------------------ 83.2读出温度子程序-------------------------------------------------------------- 93.3计算温度子程序 ------------------------------------------------------------ 103.4显示数据刷新子程序------------------------------------------------------- 103.51602的液晶显示程序设计 ------------------------------------------------- 103.6P ROTEUS程序设计 ---------------------------------------------------------- 11 4总结与体会 ------------------------------------------------------------------------- 12 参考文献------------------------------------------------------------------------------ 13 附录1 --------------------------------------------------------------------------------- 14 附录2 --------------------------------------------------------------------------------- 15 附录3 --------------------------------------------------------------------------------- 16引言设计目的本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进行一一介绍,该系统可以方便的是实现温度采集和显示。
简易数字温度计设计
课程设计任务书2015—2016学年第二学期专业:学号姓名:课程设计名称:电子技术课程设计设计题目:简易数字温度计的设计完成期限:自2016年6月13日至2016年6月26日共2周一、设计依据本课题要求利用电子技术相关知识设计出一个能够实现±0.1℃精度的数字温度计。
电路由温度采集电路、数字频率计电路和LED显示电路构成。
通过本课题练习,学生的综合知识应用能力、设计能力将有较大提高,对今后从事电子产品的研制、生产、经营维修等打下基础。
二、主要内容及要求主要内容:1、给出详细的总体设计方案;2、完成各部分具体功能电路设计,主要包括基于热敏电阻的温度信号采集电路、555振荡电路、频率计电路、LED显示电路设计;3、给出正确的电路图,仿真、调试验证各部分设计的正确性;4、整理设计成果,完成课程设计说明书的撰写。
要求所设计数字温度计的输出温度的范围-20~+45℃、误差范围±0.1℃,具体温度显示采用数码管实现。
三、途径和方法利用模拟电子技术和数字电子技术的相关知识设计一个数控温度计,可以先查阅相关资料(网上查找或参考相关书籍手册),明确课题的方向和目的,然后学习完成课题所需的理论知识,了解温度信号采集电路、555振荡电路、频率计电路、LED显示电路设计的工作原理;在理解的基础上确定设计电路方案,完成电路设计,画出原理图及PCB印制版图,通过仿真分析验证设计的正确性,最后提交课程设计说明书一份。
四、时间安排课题讲解:2小时阅读资料:10小时撰写设计说明书:12小时修订设计说明书:6小时五、主要参考资料[1]孙丽霞.数字电子技术[M].北京:高等教育出版社,2006:174-196.[2]杨素行.模拟电子技术基础简明教程[M].北京:高等教育出版社,2007:40-92.[3]高吉祥.全国大学生电子设计竞赛培训系列教程-基本技能训练与单元电路设计[M].北京:电子工业出版社,2007:24-57.[4]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2005.1:43-66.[5]彭介华.电子技术课程设计指导[M].北京:高等教育出版社,2002.12:37-228.[6]陈永甫.新编555集成电路应用800例[M].北京:电子工业出版,2000:80-130.[7]萧宝瑾.protel99SE操作指导与电路设计实例(第一版)[M].太原:太原理工大学,2004:198-230.[8]张义申,陆坤.电子设计技术[M].西安:电子科技大学出版,1996:48-62.指导教师(签字):教研室主任(签字):批准日期:年月日简易数字温度计的设计摘要温度在现实生活中起着相当重要的作用,在电子科技越来越发达的当今时代,工业生产中对温度的测量又有了更精确的要求。
简易数字温度计的方案设计书
目录引言 (3)1功能要求 (4)2系统方案论证与比较 (4)2.1数字温度计设计方案论证 (4)2.1.1方案一 (4)2.1.2方案二 (6)2.2方案二的总体设计框图 (7)3系统主要元器件的选择及介绍 (8)3.1 单片机的选用及功能介绍 (8)3.1.1单片机简介 (8)3.1.2单片机的产生与发展 (9)3.1.3单片机的应用 (10)3.1.4MCS-51单片机引脚及功能介绍 (11)3.2 温度传感器的选择 (13)3.2.1DS18B20 简单介绍 (14)3.2.2DS18B20 的性能特点和使用中的注意事项 (14)3.2.3DS18B20的引脚及内部结构 (16)3.2.4 DS18B20 的工作原理 (25)3.2.5DS18B20的单线协议和命令 (26)3.2.6温度数据的计算处理方法 (29)4系统硬件电路的设计 (32)4.1主板电路 (32)4.2显示电路 (32)4.3DS18B20温度传感器与单片机的接口电路 (33)5系统软件算法分析 (34)5.1主程序 (34)5.2读出温度子程序 (35)5.3温度转换命令子程序 (36)5.4计算温度子程序 (37)5.5显示数据刷新子程序 (38)6调试及性能分析 (39)结论 (40)致谢 (41)参考文献 (42)附录 (43)附录一原理图 (44)附录二控制源程序清单 (48)基于单片机的数字温度计的设计指导教师:宗文军2006级机电专业学号 20060279 姓名胡雄飞摘要随着时代的进步和发展,人类不断的需求,科技不断的进步。
温度计所给人类带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高。
由于老式温度计的精确度低,测量范围小,无法满足现代化生活:工业、教案、科研、旅游等等各个领域的需求。
随着集成电路技术的发展,单片微型计算机的功能也不断增强,由于单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,它属于多功能温度计。
数字温度计设计课程设计范本
数字温度计设计课程设计范本
设计题目:数字温度计设计
设计目的:通过设计数字温度计,学习数字电路设计基础知识,掌握数字温度计的设计方法和实现过程。
设计要求:
1.温度测量范围:-40℃ ~ 120℃;
2.温度分辨率:0.1℃;
3.显示方式:7段LED数码管显示,至少显示4位数字,其中小
数点占据一位;
4.温度传感器:使用DS18B20数字温度传感器;
5.显示方式:采用共阴极数码管,使用74HC595锁存器进行驱动,
使用AT89C51单片机进行控制;
6.设计过程:包括硬件设计和软件设计两个部分,其中硬件设计
包括电路原理图设计和PCB板设计,软件设计包括单片机程序
设计和烧录。
设计步骤:
1.硬件设计
1)根据DS18B20数字温度传感器的特性,设计传感器电路,包括电源电路和传感器接口电路。
2)根据温度范围和分辨率要求,设计ADC电路,将传感器输出的模拟信号转换为数字信号。
3)设计数码管驱动电路,使用74HC595锁存器进行驱动。
4)设计单片机接口电路,将数字信号传输到单片机,实现温度数据的处理和显示。
5)根据硬件设计结果,绘制电路原理图和PCB板图。
2.软件设计
1)根据硬件设计结果,编写单片机程序,实现温度数据的读取、处理和显示。
2)使用Keil C51软件进行编程和调试。
3)将程序烧录到单片机中。
4)进行系统测试和调试,确保数字温度计的正常工作。
设计结果:
1.电路原理图和PCB板图。
2.单片机程序。
3.数字温度计实物。
简易数字温度计的设计
简易数字温度计的设计摘要温度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。
数字温度计采用进口高精度、低温漂、超低功耗集成电路和液晶显示器,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。
是传统温度计的理想替代产品,数字温度计采用进口芯片组装精度高、高稳定性,误差小,内电源、微功耗、不锈钢外壳,防护坚固,美观精致。
数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,半导体,热敏电阻等),将温度的变化转换成电信号的变化。
本设计主要使用温度采集电路,数字频率计电路和LED显示电路构成,从而实现温度的检测和显示。
关键词:74LS161N,NE555,计数器,译码器((关键词在摘要中找3~5个目录1绪论 (1)1.1 课题描述 (1)1.2 基本工作原理 (1)2 相关芯片及硬件电路设计 (2)2.1 555定时器 (2)2.2热敏电阻 (3)2.3 74LS161N芯片 (3)2.4主要电路的电路图及原理 (4)2.4.1 单稳态振荡电路 (4)2.4.2温度转换为频率电路 (5)2.4.3译码显示电路 (7)2.5总体电路图 (8)总结 (10)致谢 (11)参考文献 (12)1 绪论1.1 课题描述随着人们生活水平的不断提高和电子技术的发展,人们的生活都向着数字化,智能化发展。
,当今社会温度检测系统被广泛的社会生产,生活的各个领域。
在工业,环境监测,医疗,家庭等多方面都有应用。
因此要求也越来越高,数字温度计就是一个简单的例子。
随着温度检测理论与技术的不断更新,温度传感器的种类也越来越多,每种传感器根据其自身特性,都有它自己的应用领域。
本设计所介绍的数字温度计与传统的温度计相比,其输出的温度由数字显示,具有读数方便,测温范围广,测温准确,使用范围广,主要用于测温比较准确的场所,或科研实验室使用,可广泛用于需要温度控制的地方。
简易数字温度计的设计
下面是我本次课程设计的内容,报告还没有写,暂时上传仿真和程序啦!!简易数字温度计的设计利用数字温度传感器与单片机结合来测量温度。
利用数字温度传感器测量温度信号,计算后在LED数码管上显示相应的温度值。
要求数字温度计所测量的温度采用数字显示,控制器采用单片机,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示。
图一仿真时,数码管会出现闪烁,修改程序没有作用。
猜测是软件问题,换用图二数码管,正常程序仿真通过,下面是程序:#include "reg52.h"#define uint unsigned int#define uchar unsigned charuchar code tab[]={0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84,0xff};//0-9,正值uchar Tem[3]={0}; //存储温度uchar tempL,tempH;uchar Neg; //负值标志sbit DQ = P2^3; //DS18B20数据口unsigned int temp;void Delay_50ms(unsigned int t);void Delay(uint t);void Reset(void);void WriteByte(uchar dat);uint ReadByte(void);uint ReadTemp(void);void Display(void);/********************************************************************延时50ms,精确***********************************************************************/void Delay_50ms(unsigned int t){unsigned int j;for(;t>0;t--)for(j=6245;j>0;j--){;}}/********************************************************************延时函数约位10us***********************************************************************/void Delay(unsigned int i){while(i--);}/********************************************************************定时器初始化***********************************************************************/void timer_init(void){TMOD = 0x01; //定时器0工作在模式1,16Bit定时器模式TH0 = (65536-50000) / 256;TL0 = (65536-50000) % 256;TR0 =1; //开定时器ET0 =1;//开启定时器和中断}/********************************DS18B20复位函数********************************/void Reset(void){DQ=1; //DQ先置高Delay(4); //延时sec=0.00047400DQ=0; //发送复位脉冲 sec=0.00052600Delay(60); //精确延时大于480us sec=0.00052700DQ=1; //拉高数据线 sec=0.00108300Delay(30); //等待(15~60us)这里是等待DS18B20做出回应,如果回应DQ将变低,//MCU是在DQ拉高后开始监视DQ的值的。
简易数字式温度计的设计初稿
摘要随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该高精度数字式温度计采用了由DALLAS公司生产的单线数字温度传感器DS18B20,它具有独特的单线总线接口方式。
本毕业论文详细的介绍了单线数字温度传感器DS18B20的测量原理、特性以及在温度测量中的硬件和软件设计,该温度计具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。
关键词:DS18B20 温度传感器STC89C51目录第一章绪论 (3)1.1 课题背景及研究意义 (3)1.2 国内外的现状 (3)1.3 设计的目的 (4)1.4 设计实现的目标 (4)1.5 数字温度计简介 (4)第一章绪论1.1 课题背景及研究意义随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。
传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
温度是工业对象中的一个重要的被控参数。
然而所采用的测温元件和测量方法也不相同;产品的工艺不同,控制温度的精度也不相同。
本系统所使用的加热器件是电炉丝,功率为三千瓦,要求温度在400~1000℃。
静态控制精度为2.43℃。
本设计使用单片机作为核心进行控制。
单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途。
简易数字温度计课程设计课程设计草稿图
读暂存器
0BEH
读暂存器 9 个字节内容
写暂存器
4EH
将数据写入暂存器的 TH、TL 字节
复制暂存器
48H
把暂存器的 TH、TL 字节写到 EEPROM 中
重调 EEPROM 0B8H 把 EEPROM 中的 TH、TL 字节写到暂存器 TH、TL 字节
读供电方式 0B4H 启动 DS18B20 发送电源供电方式的信号给主 CPU,寄
温度值超出 报警温度
N
Y
N 报警标志
为0
Y 报警
不报警
调用显示子 程序
初始化18B20 N
是否检测到18B20 Y
发跳过读ROM码命令
发转换温度命令
调用显示子程序为温度转换延 时
再次初始化 18B20
发跳过读 ROM 码命令
发读温度命令,将读到的 温度值移入温度暂存器
结束
真诚为您提供优质参考资料,若有不当之处,请指正。
开始
高温调整是否按 下 温度调整状态标志位置1
低温调整是否按 下
温度调整状态标志位置1
加一键是否按下 高温报警温度暂存单元加一
调用显示子程序
加一键是否按下 低温报警温度暂存单元加一
调用显示子程序
减一键是否按下 低温报警温度暂存单元加一
调用显示子程序
减一键是否按下 低温报警温度暂存单元加一
调用显示子程序
指令
约定代码
功能
读 ROM
33H
读 DS18B20 中的编码
符合 ROM 55H 发出此命令后,接着发出 64 位 ROM 编码,访问单线总线
上与该编辑相对应的 DS18B20 使之做出响应,为下一步
对该 DS18B20 的读写作准备
数字温度计设计毕业设计(两篇)2024
数字温度计设计毕业设计(二)引言概述数字温度计是一种用于测量温度的电子设备,它通过传感器将温度转换为数字信号,然后显示在数字屏幕上。
本文将针对数字温度计的设计进行详细讨论,包括硬件设计和软件设计两个主要方面。
硬件设计部分将包括传感器选择、信号调理电路设计和数字显示设计;软件设计部分将包括嵌入式程序设计和用户界面设计。
通过本文的详细介绍,读者将能够了解到数字温度计的设计原理、设计流程和关键技术。
正文内容1. 传感器选择1.1 温度传感器类型1.2 温度传感器比较与选择1.3 温度传感器参数测试与校准2. 信号调理电路设计2.1 信号条件2.2 放大和滤波电路设计2.3 ADC(模数转换器)选型和使用3. 数字显示设计3.1 显示芯片选型和使用3.2 显示屏尺寸和分辨率选择3.3 显示内容设计和显示方式选择4. 嵌入式程序设计4.1 控制器选型和使用4.2 温度数据采集与处理4.3 温度数据存储和传输5. 用户界面设计5.1 按键和控制部分设计5.2 显示界面设计与实现5.3 温度单位与切换设计正文详细阐述1. 传感器选择1.1 温度传感器类型在数字温度计的设计中,可以选择多种温度传感器,包括热电偶、热敏电阻和半导体温度传感器等。
本文将比较各种传感器的特点和适用范围,从而选择最合适的传感器。
1.2 温度传感器比较与选择通过比较热电偶、热敏电阻和半导体温度传感器的精度、响应时间和成本等特点,结合设计需求和成本预算,选择最佳的温度传感器。
1.3 温度传感器参数测试与校准为了确保传感器的准确性,需要对其参数进行测试和校准。
本文将介绍传感器参数测试的方法和仪器,以及校准的步骤和标准。
2. 信号调理电路设计2.1 信号条件传感器输出的信号需要进行电平调整和滤波等处理,以便进一步处理和显示。
本文将介绍信号调理的基本原理和设计方法。
2.2 放大和滤波电路设计为了放大和滤波传感器输出的微弱信号,本文将介绍放大和滤波电路的设计原理和实现方法,包括运放、滤波器和滤波器的选型和参数设置。
简易数字温度计设计
简易数字温度计设计标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]课程设计任务书2015—2016学年第二学期专业:学号姓名:课程设计名称:电子技术课程设计设计题目:简易数字温度计的设计完成期限:自 2016 年 6月 13 日至 2016 年 6 月 26 日共 2 周一、设计依据本课题要求利用电子技术相关知识设计出一个能够实现±℃精度的数字温度计。
电路由温度采集电路、数字频率计电路和LED显示电路构成。
通过本课题练习,学生的综合知识应用能力、设计能力将有较大提高,对今后从事电子产品的研制、生产、经营维修等打下基础。
二、主要内容及要求主要内容:1、给出详细的总体设计方案;2、完成各部分具体功能电路设计,主要包括基于热敏电阻的温度信号采集电路、555振荡电路、频率计电路、LED显示电路设计;3、给出正确的电路图,仿真、调试验证各部分设计的正确性;4、整理设计成果,完成课程设计说明书的撰写。
要求所设计数字温度计的输出温度的范围-20~+45℃、误差范围±℃,具体温度显示采用数码管实现。
三、途径和方法利用模拟电子技术和数字电子技术的相关知识设计一个数控温度计,可以先查阅相关资料(网上查找或参考相关书籍手册),明确课题的方向和目的,然后学习完成课题所需的理论知识,了解温度信号采集电路、555振荡电路、频率计电路、LED显示电路设计的工作原理;在理解的基础上确定设计电路方案,完成电路设计,画出原理图及PCB印制版图,通过仿真分析验证设计的正确性,最后提交课程设计说明书一份。
四、时间安排课题讲解:2小时阅读资料:10小时撰写设计说明书:12小时修订设计说明书:6小时五、主要参考资料[1]孙丽霞.数字电子技术[M] .北京:高等教育出版社,2006:174-196.[2]杨素行.模拟电子技术基础简明教程[M].北京:高等教育出版社,2007:40-92.[3]高吉祥.全国大学生电子设计竞赛培训系列教程-基本技能训练与单元电路设计[M].北京:电子工业出版社,2007:24-57.[4]黄智伟.全国大学生电子设计竞赛训练教程[M] .北京:电子工业出版社, :43-66.[5]彭介华.电子技术课程设计指导[M] .北京:高等教育出版社,:37-228.[6]陈永甫.新编555集成电路应用800例[M].北京:电子工业出版,2000:80-130.[7]萧宝瑾. protel 99 SE操作指导与电路设计实例(第一版)[M]. 太原:太原理工大学,2004:198-230.[8]张义申,陆坤. 电子设计技术[M]. 西安:电子科技大学出版,1996:48-62.指导教师(签字):教研室主任(签字):批准日期:年月日简易数字温度计的设计摘要温度在现实生活中起着相当重要的作用,在电子科技越来越发达的当今时代,工业生产中对温度的测量又有了更精确的要求。
简易数字温度计的设计
赣南师院物理与电子信息学院数字电路课程设计报告书姓名:班级:学号:时间:2011年 6 月10 日数字温度计的设计一、总体方案的选择1.拟定系统方案框图(1)方案一:本方案采用AD590单片集成两段式敢问电流源温度传感器对温度进行采集,采集的电压经过放大电路将信号放大,然后经过3.5位A/D转换器转换成数字信号,在进行模拟/数字信号转换的同时, 还可直接驱动LED显示器,将温度显示出来。
系统方框图如下:图1.1 系统方案框图(2)方案二:使用数字传感器采集温度信号,然后将被测温度变化的电压或电流采集过来放大适当的倍数,进行A/D转换后,将转换后的数字进行编码,然后再经过译码器通过七段数字显示器将被测温度显示出来。
图1.2系统方案框图(3)方案三:使用温度频率转变电路,根据温度与频率的线性关系先将温度转变为频率,将转换的频率输入频率计中,频率计电路中通过放大整形电路、主门电路、计数器、锁存器、七段译码输出,在七段显示器中将频率显示出来,显示的频率即为对应的温度值。
图1.3系统方案框图2. 方案的分析和比较方案一中的模数转换器ICL7107集A/D 转换和译码器于一体,可以直接驱动数码管,不仅省去了译码器的接线,使电路精简了不少,而且成本也不是很高。
ICL7107只需要很少的外部元件就可以精确测量0到200mv 电压,AD590可以将温度线性转换成电压输出。
而方案二经过A/D 转换后,需要先经过编码器再经过译码器才能将数字显示出来。
方案三只经过温度频率转换就可把温度用相应的频率显示出来,成本较低,可操作性较强。
比较上述三个方案,方案三明显优越于前两个方案,它用热敏电阻采集温度信号,用NE555将温度转化为频率输入频率计中,用CD40110驱动数码管直接实现数字信号的显示,实现数字温度计的设计;省去了另加编码器和译码器的设计,所以线路更简单、直观; 即采用方案三。
二、 单元电路的设计通过热敏电阻对温度进行采集,通过温度与频率近乎线性关系,以此来确定输出频率与其对应的温度,不同的温度对应不同的频率值,故我们可以通过频率值的改变来判断温度值,再由数码管表示出来。
简易数字温度计课程设计
唐山学院单片机原理课程设计题目简易数字温度计系 (部) 智能与信息工程学院班级姓名学号指导教师2017 年 1 月 2 日至 1 月 6 日共 1 周2017年1月4日《单片机原理》课程设计任务书课程设计成绩评定表目录1.方案论证 (1)2.硬件设计............................................ 错误!未定义书签。
2.1系统构成 (2)2.2器件选择 (2)2.2.1 AT89C51概述 (2)2.2.2 AT89C51引脚功能 (3)2.2.3复位电路的设计 (4)2.3数字温度传感器 (5)2.3.1 DS1621的技术指标 (5)2.3.2 DS1621的工作原理 (6)2.4 单片机和DS1621接口电路 (6)2.5 七段LED数码显示电路 (7)3.系统软件设计 (9)3.1 编程语言选择 (9)3.2 主程序的设计 (9)3.3 温度采集模块设计 (10)3.4 温度计算模块设计 (10)3.5 串行总线编程 (11)4.软硬件调试结果分析 (12)5.设计总结 (13)6.参考文献 (14)附录A 多点温度采集系统电路原理图 (15)1.方案论证该系统可以使用方案一:热敏电阻;方案二:数字温度芯片DS1621实现。
采用数字温度芯片DS1621 测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS1621 的最大特点之一采用了单总线的数据传输,由数字温度计DS1621和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
数字式温度计设计说明书
学习情境三数字式温度计制作与调试说明书电子1034班组别:第四组组员:XXXXXX2012年3月8日目录一、工作任务.............................................................................................. - 3 -二、总体设计思路...................................................................................... - 3 -2.1整体功能说明 .................................................. - 3 -2.2总体框图 ...................................................... - 3 -三、硬件设计.................................................................................................. - 3 -3.1硬件模块组成 .................................................. - 3 -3.2各模块说明 .................................................... - 3 -1)主控制器......................................................................................................................... - 3 - 2)显示驱动与显示电路........................................................................................................... - 4 - 3)测温模块............................................................................................................................... - 4 - 4)报警电路............................................................................................................................... - 4 - 5)复位电路............................................................................................................................... - 5 -四、软件设计.................................................................................................. - 5 -4.1程序结构 ...................................................... - 5 -4.2各模块说明及流程图 ............................................ - 6 -1)主程序流程图 ......................................................................................................................... - 6 -2)读出温度子程序流程图....................................................................................................... - 6 - 3)显示数据刷新子程序流程图............................................................................................... - 7 - 4)计算温度子程序流程........................................................................................................... - 7 - 5)温度转换命令子程序流程图............................................................................................... - 8 -4.3程序清单 ...................................................... - 8 -五、调试过程................................................................................................ - 13 -5.1调试方法与步骤 ............................................... - 13 -5.2调试结果 ..................................................... - 13 -六、附件........................................................................................................ - 14 -一、工作任务开发完成一个简易的数字式温度计。
高精度简易数字温度计的设计
中图 分 类 号 :TP311 文 献 标 识 码 :A 文 章 编 号 :1009—2552(2010)12—0115—04
高 精 度简 易数 字 温 度计 的设 计
吴 慎将 ,李 党娟 ,刘 瑞
(西 安 工 业 大 学 ,西 安 710032)
摘 要 :为 了满k -r--业 生 产 或 科研 实验 室 等 对 温度 智 能 高精 度 的测 量 要 求 ,设 计 了一 种 基 于 STCIOF04单 片 机 的 温度 测 量 及 显 示 电路 。给 出 了 系统 硬 件 电路 , 对 温 度 的 实 时 探 测 采 用 DS18B20传感芯片作为监测元件 ,对集成温度传感器 DS18B20的原理、主控芯片 STC10F04单片 机功 能和应 用做 了介 绍 ,最后 对 软件 部 分 的设 计 流程 及 实现 方 法进 行 了详 细 的说 明 。该 电路 设 计新 颖 、功 能 强大 、结构 简单 。使 用 4位 LED模 块显 示 ,测量 范 围 一55℃ ~ +125 ̄C,测 量精 度
0 引言
随着科 学 技术 的进 步 ,超大 规 模 集 成 电路 技 术 正在迅猛 发展 … 。 目前 ,我 国单 片机 的 开发 应 用 正 在兴 起 ,在 机 电一体化 、智 能仪表 、工业 控 制 、家用 电 器等方面的应用成果尤 为显著 】。本设计 所采用 的单 片机 为 STC10F04,利 用 C语 言对 其 进 行 编 程 , 实现 对温 度 的准确 测 量 、显 示 功 能 。测 温传 感 器 使 用 DS18B20 J,用 4位共 阳极 LED数码 管 以串 口传 送数 据 ,实 现温度 实时 准确显 示 。
2.1 主程序
系统 工作模 式 为 :各 个 功能 工作 完 全依 靠 单 片 机作 出的逻辑命 令 来 完成 。 因此 ,主程 序 的 主要 功 能是完成 单片 机在 上 电复位 以后 的初 始 化 ,对 单 片
简易数字温度计设计
目录摘要 (1)1系统设计 (1)1.1设计任务 (1)1.2设计要求 (1)2系统方案论证 (1)2.1主控模块的论证与选择 (1)2.2显示模块的论证与选择 (2)2.3按键模块的论证与选择 (2)3系统理论分析与计算 (2)3.1 DS18B20的理论分析与计算 (2)4电路与程序设计 (3)4.1电路的设计 (3)4.2程序的设计 (6)5测试方案与测试数据 (7)5.1测试方案 (7)5.2 测试条件与仪器 (8)5.3 测试结果 (8)6 总结 (8)附录主要源程序 (9)摘要:本系统利用单片机AT89C52采用程序设计方法来测试温度,还可以通过两个按键设置温度报警上限,当测试温度超过设定的温度上限时,蜂鸣器器就会报警且绿灯关闭,红灯点亮;当温度低于上限时蜂鸣器关闭且红灯关闭,绿灯点亮。
并通过液晶屏1602显示其测试温度以及设置的上限温度。
关键词:STC89C52、LCD1602、DS18B20简易数字温度计设计1系统设计1.1设计任务设计一数字温度测量系统,能自动实现实际温度的测量与显示。
1.2设计要求1.2.1基本功能(1)测温范围-30℃~+120℃。
(2)测量误差在±0.5℃之内。
(3)能正常显示测量的温度。
1.2.2扩展功能(1)增加温控功能,并可修改设置温控的上下限。
(2)增加温控报警功能。
2系统方案论证本系统主要由主控模块、显示模块、按键模块、蜂鸣器模块、LED模块、传感器模块组成,下面分别论证这几个模块的选择。
2.1主控模块的论证与选择方案一:AT89C52单片机是一种高性能8位单片微型计算机。
内核本身具有丰富的指令集,足够实现本次作品的全部基本功能和部分拓展功能,相比Atmega16我们对AT89C52更为熟悉,且芯片价格较低,性价比高。
方案二:采用ATmega16芯片作为主控芯片。
由于对芯片的不熟悉,导致如果想要实现温度计全部基本功能和部分拓展功能,较为困难。
数字温度计详细设计
目录摘要 (3)第一章绪论.........................................................................................................................................第二章方案设计与论证. (4)2.1总体设计方案 (4)2.2系统主要模块方案论证与比较 (4)2.2.1控制模块的选用 (4)2.2.2温度测量模块选用 (5)第三章硬件设计 (6)3.1单片机主控模块 (6)3.2温度检测模块 (7)3.2.1DS18B20的引脚功能 (7)3.2.2DS18B20硬件电路设计 (8)3.3锁存模块 (8)3.4 显示模块 (9)3.5 指示灯模块 (9)第4章系统软件设计 (10)4.1系统流程图 (10)4.1.1系统主程序设计 (10)4.1.2读出温度子程序 (11)4.1.3延时子程序 (11)4.1.4 显示数据子程序 (12)4.1.5系统初始化程序 (12)4.1.6 温度转换段码子程序 (13)4.1.7计算温度子程序 (14)第五章系统测试 (16)结论及器件总结 (18)摘要本设计以AT89C51单片机为核心,以温度传感器DS18B20、边沿D触发器7474、移位寄存器74LS164和3位共阴极LED数码管为主体设计了一款简易数字式温度计。
它可以通过控制锁存键来锁存当前温度值,具有读数方便的特点。
系统采用LED数码管作为显示器,软件程序采用均采用C语言编写,便于移植与升级。
报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。
关键词温度计;AT89C51;传感器;DS18B20第一章方案设计与论证2.1总体设计方案根据题目设计要求,本设计控制单元采用单片机AT89C51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分数:单片机技能+电子初级工程师认证培训设计报告题目:简易数字式温度计的设计指导老师:文丽完成时间: 2012-5-15华南理工大学广州学院电子信息工程学院目录1 引言2方案设计3 系统的硬件设计4 proteus 仿真图5 系统的软件设计6 心理体会7 参考文献1 引言在当下,人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。
社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。
2方案设计本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:●利用温度传感器(DS18B20)测量某一环境温度●测量范围为-55℃~+127℃,精度为±0.5℃●如果测量范围超过+127℃或低于-55℃蜂鸣器就会自动进行报警●用液晶显示器LCD进行实际温度值显示采用AT89S52单片机P3.5口控制温度传感器DS18B20的温度测量,以液晶显示器LCD形式输出测量温度。
图2.1原理图3 系统的硬件设计3.1 主控制器AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:3.2 温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:•独特的单线接口仅需一个端口引脚进行通讯•简单的多点分布应用•无需外部器件•可通过数据线供电•零待机功耗•测温范围-55~+125℃,以0.5℃递增。
华氏器件-67~+2570F,以0.90F 递增•温度以9 位数字量读出•温度数字量转换时间200ms(典型值)•用户可定义的非易失性温度报警设置•报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件3.3 温度传感器接口电路4 proteus 仿真图4.1 仿真图利用proteus按电路图排放元器件以及连接线路,用keil C51将写好的C语言进行仿真,获得的仿真图如下所示:图4.1电路仿真图4.2 仿真程序//DS18B20温度检测及其液晶显示#include<reg52.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件#include<stdio.h>#define uint unsigned int //宏定义unsigned int为 uint,为了使程序更简洁与出现少错误。
以下uchar同#define uchar unsigned charuchar code digit[11]={"0123456789-"}; //定义字符数组显示数字unsigned char code Str[]={"MAX:"}; //说明显示的是温度unsigned char code Ostr[]={"MIN:"};uchar code str1[]={"Welcome To Use"}; //开机启动时的说明文字uchar code str2[]={"My Work 2012"}; //开机说明文字uchar code Error[]={" DS18B20 ERROR"}; //说明没有检测到DS18B20uchar code Error1[]={" PLEASE CHECK"}; //说明没有检测到DS18B20uchar code Temp[]={"TEMP:"}; //说明显示的是温度uchar code User[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //温度单位uchar flag,tltemp; //负温度标志和临时暂存变量/******************************************************************************* 以下是对液晶模块的操作程序*******************************************************************************/ sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){uchar i,j;for(i=0;i<4;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delaynms(uint n){uint i;for(i=0;i<n;i++)delay1ms();}/***********************************************************以下是对蜂鸣器的定义和操作************************************************************/sbit beep=P3^6;void delay500us(){uchar i,j;for(i=0;i<2;i++)for(j=0;j<33;j++);}void BEEP( ){uint i;for(i=0;i<1000;i++){beep=0;delay500us();beep=1;delay500us();}beep=1;delaynms(1000);}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
result=1,忙碌;result=0,不忙***************************************************/bit BusyTest(void){bit result;RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; //E=1,才允许读写_nop_(); //空操作_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间result=BF; //将忙碌标志电平赋给resultE=0; //将E恢复低电平return result;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (uchar dictate){while(BusyTest()==1); //如果忙就等待RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0; //E置低电平(根据书上表7.7,写指令时,E为高脉冲, // 就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_(); //空操作两个机器周期,给硬件反应时间P0=dictate; //将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 }/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/void WriteAddress(uchar x){WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"}/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/void WriteData(uchar y){while(BusyTest()==1);RS=1; //RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; //E置低电平(根据书上表7.7,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"P0=y; //将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5); //延时5ms ,给硬件一点反应时间WriteInstruction(0x38);delaynms(5); //延时5ms ,给硬件一点反应时间WriteInstruction(0x38); //连续三次,确保初始化成功delaynms(5); //延时5ms ,给硬件一点反应时间WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁delaynms(5); //延时5ms ,给硬件一点反应时间WriteInstruction(0x06); //显示模式设置:光标右移,字符不移delaynms(5); //延时5ms ,给硬件一点反应时间WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除delaynms(5); //延时5ms ,给硬件一点反应时间}/************************************************************************以下是DS18B20的操作程序************************************************************************/sbit DQ=P3^2;uchar time; //设置全局变量,专门用于严格延时/*****************************************************函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag***************************************************/bit Init_DS18B20(void){bit flag; //储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; //先将数据线拉高for(time=0;time<2;time++) //略微延时约6微秒;DQ = 0; //再将数据线从高拉低,要求保持480~960usfor(time=0;time<200;time++) //略微延时约600微秒; //以向DS18B20发出一持续480~960us的低电平复位脉冲DQ = 1; //释放数据线(将数据线拉高)for(time=0;time<10;time++); //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在)for(time=0;time<200;time++) //延时足够长时间,等待存在脉冲输出完毕;return (flag); //返回检测成功标志}/*****************************************************函数功能:从DS18B20读取一个字节数据出口参数:dat***************************************************/uchar ReadOneChar(void){uchar i=0;uchar dat; //储存读出的一个字节数据for (i=0;i<8;i++){DQ =1; // 先将数据线拉高_nop_(); //等待一个机器周期DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序_nop_(); //等待一个机器周期DQ = 1; //将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备for(time=0;time<2;time++); //延时约6us,使主机在15us内采样dat>>=1;if(DQ==1)dat|=0x80; //如果读到的数据是1,则将1存入datelsedat|=0x00;//如果读到的数据是0,则将0存入dat//将单片机检测到的电平信号DQ存入r[i]for(time=0;time<8;time++); //延时3us,两个读时序之间必须有大于1us的恢复期 }return(dat); //返回读出的十六进制数据}/*****************************************************函数功能:向DS18B20写入一个字节数据入口参数:dat***************************************************/WriteOneChar(uchar dat){uchar i=0;for (i=0; i<8; i++){DQ =1; // 先将数据线拉高_nop_(); //等待一个机器周期DQ=0; //将数据线从高拉低时即启动写时序DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,//并将其送到数据线上等待DS18B20采样for(time=0;time<10;time++);//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样DQ=1; //释放数据线for(time=0;time<1;time++);//延时3us,两个写时序间至少需要1us的恢复期dat>>=1; //将dat中的各二进制位数据右移1位}for(time=0;time<4;time++); //稍作延时,给硬件一点反应时间}/*****************************************************函数功能:做好读温度的准备***************************************************/void ReadyReadTemp(void){Init_DS18B20(); //将DS18B20初始化WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delaynms(200); //转换一次需要延时一段时间Init_DS18B20(); //将DS18B20初始化WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位}/****************************************************************************** 以下是与温度有关的显示设置******************************************************************************/ /*****************************************************函数功能:显示没有检测到DS18B20***************************************************/void display_error(void){uchar i;WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示i = 0; //从第一个字符开始显示while(Error[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Error[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(100); //延时100ms较长时间,以看清关于显示的说明}WriteAddress(0x40); //写显示地址,将在第1行第1列开始显示i = 0; //从第一个字符开始显示while(Error1[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Error1[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(100); //延时100ms较长时间,以看清关于显示的说明}while(1) //进入死循环,等待查明原因;}/*****************************************************函数功能:显示温度符号***************************************************/void display_symbol(void){uchar i;WriteAddress(0x40); //写显示地址,将在第2行第1列开始显示i = 0; //从第一个字符开始显示while(Temp[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Temp[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(50); //延时1ms给硬件一点反应时间}}/*****************************************************函数功能:显示温度的小数点***************************************************/void display_dot(void){WriteAddress(0x49); //写显示地址,将在第2行第10列开始显示WriteData('.'); //将小数点的字符常量写入LCDdelaynms(50); //延时1ms给硬件一点反应时间}/*****************************************************函数功能:显示温度的单位(℃)***************************************************/void display_cent(void){uchar j;WriteInstruction(0x40); //设定CGRAM地址delaynms(5);for(j=0;j<8;j++ ){WriteData(User[j]);//写入自定义图形℃}WriteAddress(0x4b);//设定屏幕上的显示位置delaynms(5);WriteData(0x00); //从CGRAM里取出自定义图形显示}/*****************************************************函数功能:显示温度的整数部分入口参数:x***************************************************/void display_temp1(uchar x){uchar j,k,l; //j,k,l分别储存温度的百位、十位和个位j=x/100; //取百位k=(x%100)/10; //取十位l=x%100%10; //取个位WriteAddress(0x46); //写显示地址,将在第2行第7列开始显示if(flag==1) //负温度时显示“—”{WriteData(digit[10]); //将百位数字的字符常量写入LCD}else{WriteData(digit[j]); //将十位数字的字符常量写入LCD}WriteData(digit[k]); //将十位数字的字符常量写入LCDWriteData(digit[l]); //将个位数字的字符常量写入LCDdelaynms(50); //延时1ms给硬件一点反应时间}/*****************************************************函数功能:显示温度的小数数部分入口参数:x***************************************************/void display_temp2(unsigned char x){WriteAddress(0x4a); //写显示地址,将在第2行第11列开始显示WriteData(digit[x]); //将小数部分的第一位数字字符常量写入LCD delaynms(50); //延时1ms给硬件一点反应时间}/*------------------------------------------------按键扫描函数,返回扫描键值------------------------------------------------*/uchar keyscan(void ){uchar temp;P1=0xff;P1=0xf0;temp=P1;if(temp!=0xf0){delaynms(10);if(temp!=0xf0){P1=0xfe;temp=P1;switch(temp){case(0xee):return 1;break;case(0xde):return 2;break;case(0xbe):return 3;break;case(0x7e):return 5;break;}}}}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(uchar x,uchar y,uchar *s){if (y == 0){WriteInstruction(0x80 + x); //表示第一行}else{WriteInstruction(0xC0 + x); //表示第二行}while (*s){WriteData(*s);s ++;}}/***************************************************** 函数功能:主函数***************************************************/ void main(void){uchar num,tem;char displaytemp[7],displaytem[7];int tempH=50,tempL=1;uchar i,j;uchar TL; //储存暂存器的温度低位uchar TH; //储存暂存器的温度高位uchar TN; //储存温度的整数部分uchar TD; //储存温度的小数部分LcdInitiate(); //将液晶初始化delaynms(5); //延时5ms给硬件一点反应时间WriteAddress(0x02);i=0;while(str1[i]!='\0'){WriteData(str1[i]);i++;delaynms(100);}WriteAddress(0x40);j=0;while(str2[j]!='\0'){WriteData(str2[j]);j++;delaynms(100);}delaynms(3000);WriteInstruction(0x01);delaynms(5);if(Init_DS18B20()==1)display_error();display_symbol(); //显示温度说明display_dot(); //显示温度的小数点display_cent(); //显示温度的单位while(1) //不断检测并显示温度{beep=0;flag=0;ReadyReadTemp(); //读温度准备TL=ReadOneChar(); //先读的是温度值低位TH=ReadOneChar(); //接着读的是温度值高位if((TH&0xf8)!=0x00)//判断高五位得到温度正负标志{flag=1;TL=~TL; //取反TH=~TH; //取反tltemp=TL+1; //低位加1TL=tltemp;if(tltemp>255) TH++; //如果低8位大于255,向高8位进1TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16//这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,}TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16//这样得出的是温度的整数部分,小数部分被丢弃了TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,//这样得到的是温度小数部分的第一位数字(保留1位小数) display_temp1(TN); //显示温度的整数部分display_temp2(TD); //显示温度的小数部分delaynms(10);num=keyscan();switch(num){case 1:if(tempH<127)tempH++;break;case 2:if(tempH>-55)tempH--;break;case 3:if(tempL<127)tempL++;break;case 5:if(tempL>-55)tempL--;break;default:break;}sprintf(displaytemp,"MAX:%3d",tempH);LCD_Write_String(0x00,0,displaytemp);sprintf(displaytem,"MIN:%3d",tempL);LCD_Write_String(0x09,0,displaytem);tem=TN+(TD*0.1);if(tem>tempH){BEEP();}else if(tem<tempL){BEEP( );}}}5 系统的软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序5.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。