基于单片机的数字温度计的设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术。
本文将介绍一种基于单片机控制的数字温度计,就是用单片机实现温度测量,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。
本次采用DS18B20数字温度传感器来实现基于AT89S52单片机的数字温度计的设计,这种设计需要用到A/D转换电路,感温电路比较麻烦。
其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器采用单片机8051,温度传感器采用DS18B20,以边沿D触发器7474、移位寄存器74LS164和共阴极LED数码管为主体设计了一款简易数字式温度计实现温度显示。
关键词:数字温度计;单片机;传感器;DS18B20;目录第一章绪论 (1)第二章数字温度计的总体设计2.1总体设计方案 22.2 重要性能指标 (2)2.3 系统主要模块方案论证与比较 (2)2.3.1控制模块的选用 (2)2.4 设计要求和实现的功能 (3)3.1 主要芯片介绍 (4)3.1.1 AT89S52的介绍 (4)3.2 温度检测模块 (7)3.2.1 DS18B20的简介 (7)3.2.2 DS18B20的引脚功能 (9)3.2.3 DS18B20的两个表格 (10)3.2.4 DS18B20的测温原理 (11)3.2.5 DS18B20的时序设置 (12)3.2.6 DS18B20硬件电路设计 (13)4.1 系统主程序 (15)4.3 计算温度子程序流程图 (16)4.4 显示数据子程序 (17)4.5 系统初始化程序 (17)4.6 温度转换段码子程序 (18)5.1 Proteus软件介绍 (20)5.1.2 工作界面 (21)5.2 仿真结果图 (22)参考文献 (26)第一章绪论单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两个分支。
通用计算机系统主要用于海量高速数值运算,不必兼顾控制功能,其数据总线的宽度不断更新,从8位、16位迅速过渡到32位、64位,并且不断提高运算速度和完善通用操作系统,以突出其高速海量数值运算的能力,在数据处理、模拟仿真、人工智能、图像处理、多媒体、网络通信中得到了广泛应用;单片机作为最典型的嵌入式系统,由于其微小的体积和极低的成本,广泛应用于家用电器、机器人、仪器仪表、工业控制单元、办公自动化设备以及通信产品中,成为现代电子系统中最重要的智能化工具。
因此,单片机的出现大大促进了现代计算机技术的飞速发展,成为近代计算机技术发展史上一个重要里程碑。
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,单片机已经在测控领域中获得了广泛的应用。
本次设计的数字温度计与传统的温度计相比,具有读数方便,价格低廉,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用3位共阴极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。
第二章数字温度计的总体设计2.1总体设计方案本设计是测温电路,使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来温度是非电量模拟信号,数字显示温度就必须将这一非电量信号转换成电量(电压或电流),然后将模拟电信号经A/D 转换器转换成数字信号,最后经译码显示器显示温度值。
由论述可知,所设计的这种温度计的功能是传统的物理温度计无法完成的。
在分析之后决定采用单片机8051为核心,加上AD590测温电路、ADC模数转换电路、4位温度数据显示电路以及外围电源、时钟电路等组成。
2.2 重要性能指标本电路旨在将AD590(0℃时为273.2uA)因温度变化,导致电流变化(1uA / ℃),经OPA转换为电压变化输入ADC0804,输入电压Vin(0-5V之间)经AD转换后,其值由8751处理,最后显示在D4,D3,D2,D1共4各七段显示器。
该温度计所显示测量范围0℃-100℃。
2.3 系统主要模块方案论证与比较2.3.1控制模块的选用方案一:采用ATMEL公司的AT89C51单片机作为控制器。
单片机运算能力强,软件编程灵活,自由度大。
AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
方案二:采用FPGA(现场可编辑门列阵)作为系统主控制器。
FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。
FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。
方案比较,以上两种方案中,方案一的四个端口只需要两个就能满足设计需要,资源比较适中。
而方案二将使FPGA的高速处理能力得不到充分发挥,故选择方案一。
2.3.2温度测量模块选用方案一:测温电路可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度值显示出来,但这种设计需要用到A/D转换电路,感温电路比较复杂、成本高。
方案二:进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
方案比较,从以上两种方案,很容易看出,方案一中感温电路比较麻烦,而方案二中电路比较简单,软件设计也比较简单,故采用方案二。
2.4 设计要求和实现的功能1.用温度传感器测试温度,用6位LED数码管显示温度;2.测试温度的范围为-55~99℃,温度误差为±1℃;3.能进行仿真第三章硬件电路设计3.1 主要芯片介绍3.1.1 AT89S52的介绍选用的AT89S52与同系列的AT89C51在功能上有明显的提高,最突出是的可以实现在线的编程。
用于实现系统的总的控制。
其主要功能列举如下:(1)为一般控制应用的 8 位单片机(2)晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)(3)内部程式存储器(ROM)为 4KB(4)内部数据存储器(RAM)为 128B(5)外部程序存储器可扩充至 64KB(6)外部数据存储器可扩充至 64KB(7)32 条双向输入输出线,且每条均单独做 I/O 的控制(8)5 个中断向量源(9)2 组独立的 16 位定时器(10)1 个全双工串行通信端口(12)8751 及 8752 单芯片具有数据保密的功能(13)单芯片提供位逻辑运算指令3.1.2 AT89S52各引脚功能介绍VCC:ATAT89S52 电源正端输入,接+5V。
VSS:电源地端。
XTAL1:单芯片系统时钟的反向放大器输入端XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两个引脚与地之间加入一个 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM 中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用 8751 内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。
ATAT89S51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为ATAT89S51是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
ATAT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路电极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当作I/O用时可以推动8个LS的TTL 负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一个锁存器将端口0送出的地址锁住成为A0~A7,再配合端口2所送出的A8~A15合成一组完整的16位地址总线,而定位地址到64K的外部存储器空间。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL 负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当作一般I/O端口使用外,若是在ATAT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当作I/O来使用了。