简易数字温度计设计
简易数字温度计的设计
简目录[摘要].................................................................................................................... 错误!未定义书签。
[Abstract]................................................................................................................... 错误!未定义书签。
1.前言 (1)2.总体设计方案 (2)2.1数字温度计方案 (2)2.2总体设计方案及框图 (2)3.系统组成及工作原理 (4)3.1单片机的选择 (4)3.1.1 AT89C51主要特性: (4)3.1.2 AT89C51引脚功能介绍 (4)3.2数字温度传感器DS18B20 (6)3.2.1 DS18B20的主要特性 (6)3.2.2 DS18B20的内部结构 (7)3.2.3 DS18B20工作原理 (7)3.3 复位电路的设计 (8)3.4 功能键 (8)3.5数码管串口显示 (9)4.系统软件设计 (11)4.1软件设计流程 (11)4.2 DS18B20读取数据流程 (12)5.仿真、测试及结果分析 (13)结论 .................................................................................................................... 错误!未定义书签。
致谢 .................................................................................................................... 错误!未定义书签。
数字简易温度计设计
目录引言 ------------------------------------------------------------------------------------ 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.2 温度检测电路
VCC接高电平,DQ端接单片机的 P3.4口,这里利用了P3.4口双向 I/O口作用,单片机从DS18B20 读取温度和报警温度,此时作为 输入口,当设置报警温度时单片 机向DS18B20内部存储器写入数 据,此时作为数据输出端口。DQ 与VCC之间需要一个电阻值约为 5KΩ的上拉电阻。
单
报警设备
片
机
(ADC0809)
1.2 方案二:采用数字温度芯片DS18B20
AT98C51 DS18B20
报警点温度设置
液 晶
感 器
温 度
显
主
示
控
单制 片器 机
报 警 设
备
传
二 系统器件的选择
2.1 单片机的选择
AT89S52为 ATMEL 所生 产的一种低功耗、高性能CMOS8 位微控制器,具有8K在系统可编 程Flsah存储器。
3.3 液晶显示电路
在液晶显示电路的设计中选择具有单 向输出数据功能的P0端口向液晶显示 模块提供数据,P2.5、P2.6、P2.7口 作为控制液晶显示模块的端口,在PO 口上需要外加上拉电阻,才可以使液晶 显示模块正常显示。
3.4 报警电路设计
报警电路中使用P1.4-P1.7作为 控制按键输入端口,P1.0、P1.2 作为报警指示灯端口,P2.3作为 报警蜂鸣器端口,当它们对应的 端口为低电平时就会报警。
主要内容
一:设计方案选择 二:元器件的选择 三:设计过程 四:制作成果
一 设计方案选择
数字温度计的制作方法有很多种,最常见的有两种,一种 是利用热敏电阻测量温度的电路,另一种是利用数字温度 传感器DS18B20测量温度的电路。
1.1 方案一:采用热敏电阻
数字电路温度计设计
数字电路温度计设计全文共四篇示例,供读者参考第一篇示例:数字电路温度计设计数字电路温度计的设计原理主要是利用数字电路的优势,通过传感器将物体的温度信号转换为电信号,再通过数字电路进行处理和显示,从而实现温度的测量和显示。
数字电路温度计的设计原理主要包括传感器、模数转换器、显示器等几个关键部分。
首先是传感器部分,传感器是将温度信号转换为电信号的关键部件。
常用的传感器有热敏电阻、热电偶、半导体传感器等。
传感器的选择直接影响到数字电路温度计的测量精度和灵敏度。
在设计数字电路温度计时,我们需要根据实际需求选择合适的传感器,以确保温度测量的准确性。
最后是显示器部分,显示器是将数字信号转换为可视化信息的关键部件。
在设计数字电路温度计时,我们通常选择LED数码管、液晶显示屏等作为显示器。
显示器的选择不仅要考虑显示效果和美观度,还要考虑功耗、驱动电路等因素。
通过合理选择和设计显示器,我们可以实现数字电路温度计的数据显示和人机交互功能。
数字电路温度计的工作原理主要是通过传感器实时监测物体的温度变化,将温度信号转换为电信号后经过模数转换器转换为数字信号,最终通过显示器显示出温度数值。
在工作过程中,数字电路温度计还可以设置报警功能,当温度超出设定范围时会发出警报,提醒使用者及时处理。
制作数字电路温度计的流程主要包括以下几个步骤:第一步,设计电路原理图。
根据数字电路温度计的设计要求,我们需要设计出完整的电路原理图,包括传感器、模数转换器、显示器等各个部分的连接关系和工作原理。
第三步,焊接电路板。
在选择好电子元器件后,我们需要进行电路板的焊接工作,将各个元器件按照设计原理图连接到电路板上,并进行焊接和固定,以组成完整的数字电路温度计电路。
第四步,进行测试和调试。
在焊接完成后,我们需要进行测试和调试工作,确保数字电路温度计正常工作。
在测试中,我们需要测试传感器的灵敏度、模数转换器的精度和显示器的正确性等。
第五步,封装和外壳设计。
简易数字温度计的方案设计书
目录引言 (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 姓名胡雄飞摘要随着时代的进步和发展,人类不断的需求,科技不断的进步。
温度计所给人类带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高。
由于老式温度计的精确度低,测量范围小,无法满足现代化生活:工业、教案、科研、旅游等等各个领域的需求。
随着集成电路技术的发展,单片微型计算机的功能也不断增强,由于单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,它属于多功能温度计。
基于单片机的简易数字温度计的设计
基于单片机的简易数字温度计的设计张逊摘要本文介绍了一种基于单片机的简易数字温度计的设计。
该设计主要由三个模块组成:温度采集模块,数据处理模块及显示模块。
温度采集主要由温度传感器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.温度测量范围:-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.数字温度计实物。
数字温度计设计方案
数字温度计设计方案数字温度计是一种利用数字显示温度值的仪器,目前已广泛应用于家庭、实验室、医疗等领域。
为了设计一个稳定、可靠的数字温度计,以下是一个初步设计方案。
1. 传感器选择温度传感器是数字温度计的核心部件,常用的有热敏电阻、热电偶、半导体传感器等。
在设计中,我们可以选择适用范围广、精度高的数字温度传感器,如DS18B20。
该传感器具有数字接口、高精度、高稳定性等特点。
2. 微控制器选择微控制器是数字温度计的处理器,负责监测温度传感器的数据,并将其转化为数字信号。
在设计中,我们可以选择具有足够计算能力、低功耗的微控制器,如STM32系列中的STM32F103C8T6。
该微控制器具有高性能、低功耗、丰富的外设等特点,适合用于数字温度计的设计。
3. 电路设计在电路设计中,可以采用数字传感器和微控制器之间的串行通信方式,使用一对引脚(数据引脚和电源引脚)实现数据的传输和供电。
同时,需要添加稳压电路和滤波电路,保证电路的稳定性和抗干扰能力。
4. 数字显示模块选择数字显示模块是数字温度计的输出设备,负责将测得的温度值以数字形式显示出来。
在设计中,可以选择7段LED数码管,该数码管具有明亮的显示效果、低功耗、容易驱动等优点。
5. 电源选择数字温度计需要稳定的电源供电,可选择直流电源供电,电压范围5V。
在设计中,可以添加电源管理电路,包括稳压电路、过压保护、短路保护等,以增加设备的安全性和稳定性。
6. 程序设计程序设计是数字温度计的重要环节,需要编写相应的程序实现温度的测量、显示、存储等功能。
在程序设计中,可以使用C 语言或者嵌入式开发平台进行编程,实现温度测量值的读取、温度值的转换、温度值的显示等功能。
总之,以上是一个基本的数字温度计的初步设计方案,通过选择合适的传感器、微控制器、显示模块,并进行稳压电路和滤波电路的设计,再加上适当的程序编写,可以设计出一个稳定、可靠的数字温度计。
当然,具体的设计方案还需要参照实际需求进行调整和优化。
简易数字温度计的设计
简易数字温度计的设计摘要温度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。
数字温度计采用进口高精度、低温漂、超低功耗集成电路和液晶显示器,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。
是传统温度计的理想替代产品,数字温度计采用进口芯片组装精度高、高稳定性,误差小,内电源、微功耗、不锈钢外壳,防护坚固,美观精致。
数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,半导体,热敏电阻等),将温度的变化转换成电信号的变化。
本设计主要使用温度采集电路,数字频率计电路和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 的读写作准备
数字温度计方案设计
数字温度计设计方案方案设计;设计要求LED数码管能够正常显示测试的温度。
误差;±0.5℃。
范围:-30℃~120℃。
LED数码管直读显示,当温度为“负”,则显示负号。
所用材料温度传感器DS18B20一个,AT89C52一个,四位共阳极数码管1个,电阻电容及导线若干。
方案确定;方案一:采用热敏电阻,可满足40 摄氏度至90 摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测小于1 摄氏度的信号是不适用的。
方案二:采用温度传感器DS18B20。
DS18B20可以满足从-55摄氏度到+125摄氏度测量范围,且DS18B20测量精度高,增值量为0.5摄氏度,在一秒内把温度转化成数字,测得的温度值的存储在两个八位的RAM中,单片机直接从中读出数据转换成十进制就是温度,使用方便。
基于DS18b20的以上优点,我们决定选取DS18b20来测量温度。
测量原理图如下;工作原理:利用单片机STC89C52单片机作为本系统的中控模块。
单片机可把由DS18B20读来的数据利用软件来进行处理,从而把数据传输到LED数码管显示模块中,实现温度的显示。
单片机模型图如下;温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,精度;±0.5℃。
可编程为9位~12位A/D转换精度,分辨率9~12Bbit测温分辨率达到0.0625℃,工作电源。
3~5v; 采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路.DS18B20传感器模型图如下。
LEDL温度传感器DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
2.3.1 DS18B20的性能特点如下:●独特的单线接口仅需要一个端口引脚进行通信;●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;●无须外部器件;●可通过数据线供电,电压范围为3.0~5.5V;●零待机功耗;●温度以9或12位数字;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;(1)主机拉低单总线至少480us产生复位脉冲;(2)主机释放单总线,进入接收模式,释放时产生上升沿;(3)单总线器件检测到上升沿,延时15-60us;(4)单总线器件通过拉低总线60-240us来产生应答脉冲;(5)主机接受应答信号,对从机ROM进行命令和功能命令操作;所有读写时序至少60us,两个独立的时序间至少1us回复时间。
数字温度计设计毕业设计(两篇)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 放大和滤波电路设计为了放大和滤波传感器输出的微弱信号,本文将介绍放大和滤波电路的设计原理和实现方法,包括运放、滤波器和滤波器的选型和参数设置。
简易数字温度计的设计
赣南师院物理与电子信息学院数字电路课程设计报告书姓名:班级:学号:时间: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驱动数码管直接实现数字信号的显示,实现数字温度计的设计;省去了另加编码器和译码器的设计,所以线路更简单、直观; 即采用方案三。
二、 单元电路的设计通过热敏电阻对温度进行采集,通过温度与频率近乎线性关系,以此来确定输出频率与其对应的温度,不同的温度对应不同的频率值,故我们可以通过频率值的改变来判断温度值,再由数码管表示出来。
简易数字温度计设计
目录摘要 (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.学会使用模拟传感器完成温度测量;4.能够使用电路和编程工具实现数字温度计。
设计步骤步骤一:理解数字温度计的原理在本步骤中,学生将学习数字温度计的基本原理和工作机制。
他们需要学习关于传感器、模拟信号和数字信号的知识。
可以使用实验示意图、图表和实际温度计来帮助学生理解。
步骤二:选择传感器和电路元件在本步骤中,学生将学习如何选择合适的传感器和电路元件来实现数字温度计。
他们需要学习传感器的种类和特性,并选择合适的传感器来测量温度。
此外,学生还需要选择合适的电路元件来转换模拟信号为数字信号。
步骤三:搭建电路在本步骤中,学生将使用所选的传感器和电路元件来搭建数字温度计的电路。
他们需要按照电路图纸的指导,正确地连接电路,并确认电路的正常工作。
步骤四:测试和校准在本步骤中,学生将测试他们搭建的数字温度计的性能和准确性。
他们可以使用已知温度源来测试数字温度计的响应和精度,并根据需要调整传感器和电路的参数。
步骤五:实现数字温度显示在本步骤中,学生将使用数字信号转换器和显示设备来实现数字温度的显示。
他们需要学习如何将数字信号转换为合适的格式,并将其显示在合适的设备上。
步骤六:编写文档和报告在本步骤中,学生需要撰写关于数字温度计设计的文档和实验报告。
他们需要描述设计的原理、电路图纸、实验步骤和测试结果,并对设计中遇到的问题和解决方法进行讨论。
实验工具和材料•Arduino Uno开发板•温度传感器•电阻、电容和电路连接线•电脑和编程软件•调试工具:万用表、示波器等总结通过本课程设计,学生将能够理解数字温度计的工作原理,掌握数字信号的转换方式,并通过实际搭建一个数字温度计的电路来锻炼实践能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (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芯片作为主控芯片。
由于对芯片的不熟悉,导致如果想要实现温度计全部基本功能和部分拓展功能,较为困难。
综上所述,选择方案一。
2.2显示模块的论证与选择方案一:采用LCD1602显示。
LCD1602相对便宜,虽然其本身不能显示中文,但是温度计只需显示数字和一些英文,符合这次设计要求。
方案二:采用LCD12864显示。
LCD12864屏幕显示细腻直观,且可以显示中文,但是相对昂贵。
综上所述,选择方案一。
2.3按键模块的论证与选择方案一:采用4X4矩阵按键。
尽管按键一目了然,但连线复杂,扫描过程烦琐,会耗费大量的系统资源。
方案二:独立按键,我们只使用了两个按键来调节上限,大大节省了系统硬件资源,便于系统扩展。
综上所述,选择方案二。
3系统理论分析与计算3.1 DS18B20的理论分析与计算DS18B20 通过编程,可以实现最高 12 位的温度存储值,在寄存器中,以补码的格式存储,如图1所示。
图1 DS18B20 温度数据格式寄存器一共 2 个字节,LSB 是低字节,MSB 是高字节,其中 MSb 是字节的高位,LSb 是字节的低位。
大家可以看出来,二进制数字,每一位代表的温度的含义,都表示出来了。
其中 S表示的是符号位,低 11 位都是 2 的幂,用来表示最终的温度。
DS18B20 的温度测量范围是从-55 度到+125 度,而温度数据的表现形式,有正负温度,寄存器中每个数字如同卡尺的刻度一样分布,如图 2所示。
图2 DS18B20 温度值二进制数字最低位变化 1,代表温度变化 0.0625 度的映射关系。
当 0 度的时候,那就是0x0000,当温度 125 度的时候,对应十六进制是 0x07D0,当温度是零下 55 度的时候,对应的数字是 0xFC90。
反过来说,当数字是 0x0001 的时候,那温度就是 0.0625 度了。
4电路与程序设计4.1电路的设计4.1.1系统总体框图系统总体框图如图3所示图3 系统总体框图4.1.2控制按键&LED电路按下S1能增加温度报警上限,按下S2能减少温度报警上限。
测试温度低于上限时,绿灯LED1亮。
当温度超过设定的上限时,红灯LED2亮。
图4 控制按键&LED4.1.3蜂鸣器电路当测试温度超过设定温度时,蜂鸣器开启;当测试温度低于设定温度时,蜂鸣器关闭。
蜂鸣器电流相对较大,因此需要用三极管驱动,并且加了一个 1K欧的电阻作为限流电阻。
此外还加了一个 D1二极管,这个二极管叫做续流二极管。
图5 蜂鸣器电路显示电路使用LCD1602,第一行显示”Temperature”第二行显示测试温度和温度上限,两者中间显示一个”>”或”<”。
RP1为上拉排阻。
图6 显示电路4.1.5传感器电路图7 传感器电路图8 整体电路4.1.7电源使用5V直流电源。
4.2程序的设计4.2.1程序功能描述(1)能够测试-30℃~+120℃的温度。
(2)按下S1能增加温度报警上限,按下S2能减少温度报警上限。
(3)测试温度低于上限时,绿灯亮,蜂鸣器关闭。
当温度超过设定的上限时,红灯亮且蜂鸣器响起。
4.2.2程序流程图图9 程序流程图5测试方案与测试数据5.1测试方案5.1.1软件仿真测试用Proteus 7.5软件画出电路图,模拟硬件对程序进行调试。
5.1.2硬件软件联调将编写的单片机C语言程序下载到实际硬件中,进行硬件软件联调。
5.2 测试条件与仪器测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:数字示波器,数字万用表。
5.3 测试结果系统上电运行后,LCD能正常显示测试温度且绿灯点亮,测试温度每秒更新。
按下S1能使报警温度上限 +1,按下S2能使报警温度上限-1。
当测试温度超过上限温度时,绿灯关闭,红灯点亮且蜂鸣器开启;当测试温度低于上限温度时,红灯关闭,绿灯点亮且蜂鸣器关闭。
6 总结本系统以单片机STC89C52芯片为核心部件,利用LCD1602、独立按键、蜂鸣器、DS18B20并配合C语言算法实现了简易数字温度计设计,完成此次设计题目中的全部基本功能和部分拓展功能。
在系统设计过程中,力求硬件线路简单,充分发挥软件编程方便灵活的特点,来满足系统设计要求。
在本次设计的过程中,遇到了许多突发事件和困难,设计制作曾一度止步不前,但通过仔细分析和调整后解决了一个又一个的问题。
在整个过程中我们深刻的体会到团队精神的重要性,并提高了自己解决问题的能力。
附录主要源程序main程序:#include <reg52.h>sbit KEY1 = P1^0; // 上调报警温度sbit KEY2 = P1^1; // 下调报警温度sbit LED1 = P1^2; // 正常时绿灯亮sbit LED2 = P1^3; // 报警时红灯亮sbit BUZZ = P1^6;bit enBuzz = 0; //蜂鸣器使能标志bit flag1s = 0; //1s定时标志unsigned int warnT = 30; //报警温度值unsigned char T0RH = 0; //T0重载值的高字节unsigned char T0RL = 0; //T0重载值的低字节void ConfigTimer0(unsigned int ms);unsigned char IntToString(unsigned char *str, int dat);extern bit Start18B20();extern bit Get18B20Temp(int *temp);extern void InitLcd1602();extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str); extern void LcdWriteCmd(unsigned char cmd);void main(){bit res;bit backup = 1;int temp; //读取到的当前温度值int intT, decT; //温度值的整数和小数部分unsigned char len,len1;unsigned char str[12],str1[12];EA = 1; //开总中断P1 = 0XF3;ConfigTimer0(1); //T0定时1msStart18B20(); //启动DS18B20InitLcd1602(); //初始化液晶while (1){if (flag1s) //每秒更新一次温度{flag1s = 0;res = Get18B20Temp(&temp); //读取当前温度if (res) //读取成功时,刷新当前温度显示{intT = temp >> 4; //分离出温度值整数部分decT = temp & 0xF; //分离出温度值小数部分len = IntToString(str, intT); //整数部分转换为字符串len1 = IntToString(str1, warnT); //报警温度转换为字符串str[len++] = '.'; //添加小数点decT = (decT*10) / 16; //二进制的小数部分转换为1//位十进制位str[len++] = decT + '0'; //十进制小数位再转换为//ASCII字符str[len++] = 0xdf; //添加字符串“℃”str[len++] = 'C';str[len++] = ' ';str[len] = '\0'; //添加字符串结束符str1[len1++] = 0xdf; //添加字符串“℃”str1[len1++] = 'C';str1[len1] = '\0'; //添加字符串结束符if (intT < warnT) //超过报警温度时执行报警{enBuzz = 0; //关闭蜂鸣器LcdWriteCmd(0x01); //清屏LcdShowStr(2, 0, "Temperature"); //显示第一行LcdShowStr(2, 1, str); //显示实时温度LcdShowStr(9, 1, "<");LcdShowStr(11, 1, str1); //显示报警温度}else{enBuzz = 1; //启动蜂鸣器发声LcdWriteCmd(0x01); //清屏LcdShowStr(4, 0, "Warning!"); //显示警告LcdShowStr(0, 1, "Temp:");LcdShowStr(5, 1, str); //显示实时温度LcdShowStr(11, 1, ">");LcdShowStr(12, 1, str1); //显示报警温度}}else //读取失败时,提示错误信息{LcdShowStr(4, 1, "error!");}Start18B20(); //重新启动下一次转换}}}/* 按键动作函数*/void KeyAction (){if (KEY1 == 0){KEY1 = 1;warnT++;}else if (KEY2 == 0){KEY2 = 1;warnT--;}}/* 整型数转换为字符串,str-字符串指针,dat-待转换数,返回值-字符串长度*/ unsigned char IntToString(unsigned char *str, int dat){signed char i = 0;unsigned char len = 0;unsigned char buf[6];if (dat < 0) //如果为负数,首先取绝对值,并在指针上添加负号{dat = -dat;*str++ = '-';len++;}do { //先转换为低位在前的十进制数组buf[i++] = dat % 10;dat /= 10;} while (dat > 0);len += i; //i最后的值就是有效字符的个数while (i-- > 0) //将数组值转换为ASCII码反向拷贝到接收指针上{*str++ = buf[i] + '0';}*str = '\0'; //添加字符串结束符return len; //返回字符串长度}/* 配置并启动T0,ms-T0定时时间*/void ConfigTimer0(unsigned int ms){unsigned long tmp; //临时变量tmp = 11059200 / 12; //定时器计数频率tmp = (tmp * ms) / 1000; //计算所需的计数值tmp = 65536 - tmp; //计算定时器重载值tmp = tmp + 28; //补偿中断响应延时造成的误差T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节T0RL = (unsigned char)tmp;TMOD &= 0xF0; //清零T0的控制位TMOD |= 0x01; //配置T0为模式1TH0 = T0RH; //加载T0重载值TL0 = T0RL;ET0 = 1; //使能T0中断TR0 = 1; //启动T0}/* T0中断服务函数,完成250ms, 1s定时*/void InterruptTimer0() interrupt 1{static unsigned int tmr1s = 0;static unsigned int tmrms = 0;TH0 = T0RH; //重新加载重载值TL0 = T0RL;if (enBuzz) //蜂鸣器发声处理{BUZZ = ~BUZZ; //启动蜂鸣器发声LED1 = 0;LED2 = 1;}else{BUZZ = 1; //关闭蜂鸣器LED1 = 1;LED2 = 0;}tmr1s++;tmrms++;if (tmrms >= 250) //延时250ms{tmrms = 0;KeyAction ();}if (tmr1s >= 1000) //定时1s{tmr1s = 0;flag1s = 1;}}DS18B20程序:#include <reg52.h>#include <intrins.h>sbit IO_18B20 = P3^2; //DS18B20通信引脚/* 软件延时函数,延时时间(t*10)us */ void DelayX10us(unsigned char t){do {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();} while (--t);}bit Get18B20Ack(){bit ack;EA = 0;IO_18B20 = 0;DelayX10us(50);IO_18B20 = 1;DelayX10us(6);ack = IO_18B20;while(!IO_18B20);EA = 1;return ack;}void Write18B20(unsigned char dat) {unsigned char mask;EA = 0;for(mask=0x01; mask!= 0; mask<<=1) {IO_18B20 = 0;_nop_();_nop_();if((mask&dat) == 0)IO_18B20 = 0;elseIO_18B20 = 1;DelayX10us(6);IO_18B20 = 1;}EA = 1;}unsigned char Read18B20(){unsigned char dat;unsigned char mask;EA = 0;for(mask=0x01; mask!=0; mask<<=1){IO_18B20 = 0;_nop_();_nop_();IO_18B20 = 1;_nop_();_nop_();if(!IO_18B20)dat &= ~mask;elsedat |= mask;DelayX10us(6);}EA = 1;return dat;}bit Start18B20(){bit ack;ack = Get18B20Ack();if(ack == 0){Write18B20(0xCC);Write18B20(0x44);}return ~ack;}bit Get18B20Temp(int *temp){bit ack;unsigned char LSB, MSB;ack = Get18B20Ack();if(ack == 0){Write18B20(0xCC);Write18B20(0xBE);LSB = Read18B20();MSB = Read18B20();*temp = ((int)MSB<<8) + LSB;}return ~ack;}LCD1602程序:#include <reg52.h>#define LCD1602_DB P0sbit LCD1602_RS = P2^0;sbit LCD1602_RW = P2^1;sbit LCD1602_E = P2^2;/* 等待液晶准备好*/void LcdWaitReady()unsigned char sta;LCD1602_DB = 0xFF;LCD1602_RS = 0;LCD1602_RW = 1;do {LCD1602_E = 1;sta = LCD1602_DB; //读取状态字LCD1602_E = 0;} while (sta & 0x80); //bit7等于1表示液晶正忙,重复检测直到其等于0为止}/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值*/void LcdWriteCmd(unsigned char cmd){LcdWaitReady();LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_DB = cmd;LCD1602_E = 1;LCD1602_E = 0;}/* 向LCD1602液晶写入一字节数据,dat-待写入数据值*/void LcdWriteDat(unsigned char dat){LcdWaitReady();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_E = 1;LCD1602_E = 0;}/* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标*/ void LcdSetCursor(unsigned char x, unsigned char y){unsigned char addr;if (y == 0) //由输入的屏幕坐标计算显示RAM的地址addr = 0x00 + x; //第一行字符地址从0x00起始elseaddr = 0x40 + x; //第二行字符地址从0x40起始LcdWriteCmd(addr | 0x80); //设置RAM地址}/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针*/ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){LcdSetCursor(x, y); //设置起始地址while (*str != '\0') //连续写入字符串数据,直到检测到结束符{LcdWriteDat(*str++);}}/* 初始化1602液晶*/void InitLcd1602(){LcdWriteCmd(0x38); //16*2显示,5*7点阵,8位数据接口LcdWriteCmd(0x0C); //显示器开,光标关闭LcdWriteCmd(0x06); //文字不动,地址自动+1LcdWriteCmd(0x01); //清屏}。