当前位置:首页 » 课程大全 » 51单片机温度传感器课程设计

51单片机温度传感器课程设计

发布时间: 2021-02-25 13:11:16

A. 用AT89C51单片机和温度传感器DS18B20S设计数字式温度计

江苏省联合职业技术学院常州旅游商贸分院
专科毕业论文

基于单片机及DS18B20温度传感器的数字温度计设计

姓 名:(××××××××3号黑体)
学 号:(××××××××3号黑体)
班 级:(联院班级号×××3号黑体)
专 业:(××××××××3号黑体)
指导教师:(××××××××3号黑体)
系 部:创意信息系××××3号黑体)

二〇二0年××月××日

摘 要
本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS公司的DS18B20。本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。
单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。本设计的显示模块是用四位一体的数码管动态扫描显示实现的。在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。

关键词:单片机、数字温度计、DS18B20、AT89S52

目 录

1 引言 1
2 系统总体方案及硬件设计 2
2.1 系统总体方案 2
2.1.1系统总体设计框图 2
2.1.2各模块简介 2
2.2 系统硬件设计 6
2.2.1 单片机电路设计 6
2.2.2 DS18B20温度传感器电路设计 6
2.2.3 显示电路设计 7
2.2.4 按键电路设计 7
2.2.5 报警电路设计 8
3 软件设计 9
3.1 DS18B20程序设计 9
3.1.1 DS18B20传感器操作流程 9
3.1.2 DS18B20传感器的指令表 9
3.1.3 DS18B20传感器的初始化时序 10
3.1.4 DS18B20传感器的读写时序 10
3.1.5 DS18B20获取温度程序流程图 11
3.2 显示程序设计 13
3.3 按键程序设计 13
4实物制作及调试 14
5电子综合设计体会 15
参考文献 16

1 引言
本系统所设计的数字温度计采用的是DS18B20数字温度传感器测温,DS18B20直接输出的就是数字信号,与传统的温度计相比,具有读数方便,测温范围广,测温准确,上下限报警功能。其输出温度采用LED数码管显示,主要用于对测温比较准确的场所。
该设计控制器使用的是51单片机AT89S52,AT89S52单片机在工控、测量、仪器仪表中应用还是比较广泛的。测温传感器使用的是DS18B20,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。显示是用4位共阴极LED数码管实现温度显示,LED数码管的优点是显示数字比较大,查看方便。蜂鸣器用来实现当测量温度超过设定的上下限时的报警功能。

2 系统总体方案及硬件设计
2.1 系统总体方案
2.1.1系统总体设计框图
由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。
温度计电路设计总体设计框图如图2-1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。

图2-1 温度计电路总体设计框图
2.1.2各模块简介
1.控制模块
AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程的Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.显示模块
显示电路采用4位共阴LED数码管,从P0口输出段码,P2口的高四位为位选端。用动态扫描的方式进行显示,这样能有效节省I/O口。
3.温度传感器模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5v;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其其封装形式如图2-2所示。

图2-2 DS18B20的封装形式
DS18B20的64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。高速暂存RAM的结构为8字节的存储器,结构如图2-3所示。

图2-3 DS18B20的高速暂存RAM的结构
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,该字节各位的定义如表2-1所示。
表2-1:配置寄存器
D7 D6 D5 D4 D3 D2 D1 D0

TM

R1

R0

1

1

1

1

1

配置寄存器的低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,“R1R0”为“00”是9位,“01”是10位,“10”是11位,“11”是12位。当DS18B20分辨率越高时,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表2-2是一部分温度值对应的二进制温度数据。
表2-2 DS18B20输出的温度值

温度值

二进制输出

十六进制输出

+125℃

0000 0111 1101 0000

07D0h

+85℃

0000 0101 0101 0000

0550h

+25.0625℃

0000 0001 1001 0001

0191h

+10.125℃

0000 0000 1010 0010

00A2h

+0.5℃

0000 0000 0000 1000

0008h

0℃

0000 0000 0000 0000

0000h

-0.5℃

1111 1111 1111 1000

FFF8h

-10.125℃

1111 1111 0101 1110

FF5Eh

-25.0625℃

1111 1110 0110 1111

FF6Fh

-55℃

1111 1100 1001 0000

FC90h

DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
4.调节模块介绍
调节模块是由四个按键接地后直接接单片机的I/O口完成的。当按键没有按下时单片机管脚相当于悬空,默认下为高电平,当按键按下时相当于把单片机的管脚直接接地,此时为低电平。程序设计为低电平触发。
5.报警模块介绍
报警模块是由一个PNP型的三极管9012驱动的5V蜂鸣器,和一个加一限流电阻的发光二极管组成的。报警时蜂鸣器间歇性报警,发光二极管闪烁。

2.2 系统硬件设计
2.2.1 单片机电路设计

图2-4 单片机最小系统原理图
单片机最小系统是由晶振电路,上电复位、按键复位电路,ISP下载接口和电源指示灯组成。原理图如图2-4所示。
2.2.2 DS18B20温度传感器电路设计
DS18B20温度传感器是单总线器件与单片机的接口电路采用电源供电方。
电源供电方式如图2-7,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。

图2-7 DS18B20电源供电方式
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。
2.2.3 显示电路设计
显示电路是由四位一体的共阴数码管进行显示的,数码管由三极管9013驱动。
四位一体的共阴数码管的管脚分布图如图2-5所示。

图2-5 四位一体的共阴数码管管脚分布图
显示电路的总体设计如图2-6所示。

图2-6 显示电路
2.2.4 按键电路设计
按键电路是用来实现调节设定报警温度的上下限和查看上下报警温度的功能。电路原理图如图2-10所示。

图2-10 按键电路原理图

2.2.5 报警电路设计
报警电路是在测量温度大于上限或小于下限时提供报警功能的电路。该电路是由一个蜂鸣器和一个红色的发光二极管组成,具体的电路如图2-9所示。

图2-9 报警电路原理图

3 软件设计
3.1 DS18B20程序设计
3.1.1 DS18B20传感器操作流程
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
• 每一次读写之前都要对DS18B20进行复位操作
• 复位成功后发送一条ROM指令
• 最后发送RAM指令
这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500μs,然后释放,当DS18B20收到信号后等待16~60μs左右,后发出60~240μs的存在低脉冲,主CPU收到此信号表示复位成功。
DS18B20的操作流程如图3-1所示。

如图3-1 DS18B20的操作流程
3.1.2 DS18B20传感器的指令表
DS18B20传感器的操作指令如表3-1所示。传感器复位后向传感器写相应的命令才能实现相应的功能。
表3-1 DS18B20的指令表

指 令

指令代码

功 能

读ROM

0x33

读DS1820温度传感器ROM中的编码(即64位地址)

符合 ROM

0x55

发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。

搜索 ROM

0xF0

用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。

跳过 ROM

0xCC

忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。

告警搜索命令

0xEC

执行后只有温度超过设定值上限或下限的片子才做出响应。

温度变换

0x44

启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。

读暂存器

0xBE

读内部RAM中9字节的内容

写暂存器

0x4E

发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

0x48

将RAM中第3 、4字节的内容复制到EEPROM中。

重调 EEPROM

0xB8

将EEPROM中内容恢复到RAM中的第3 、4字节。

读供电方式

0xB4

读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。

3.1.3 DS18B20传感器的初始化时序
DS18B20传感器为单总线结构器件,在读写操作之前,传感器芯片应先进性复位操作也就是初始化操作。
DS18B20的初始化时序如图3-2所示。首先控制器拉高数据总线,接着控制器给数据总线一低电平,延时480μs,控制器拉高数据总线,等待传感器给数据线一个60-240μs的低电平,接着上拉电阻将数据线拉高,这样才初始化完成。

图3-2 DS18B20初始化时序
3.1.4 DS18B20传感器的读写时序
1.写时序
DS18B20传感器的读写操作是在传感器初始化后进行的。每次操作只能读写一位。
当主机把数据线从高电平拉至低电平,产生写时序。有两种类型的写时序:写“0”时序,写“1”时序。所有的时序必须有最短60μs的持续期,在各个写周期之间必须有最短1μs的恢复期。
在数据总线由高电平变为低电平之后,DS18B20在15μs至60μs的时间间隙对总线采样,如果为“1”则向DS18B20写“1”, 如果为“0”则向DS18B20写“0”。如图3-2的上半部分。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,然后被释放,使数据线在写时序开始之后15μs内拉至高电平。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,且至少保持低电平60μs。
2.读时序
在数据总线由高电平变为低电平之后,数据线至少应保持低电平1μs,来自DS18B20的输出的数据在下降沿15μs后有效,所以在数据线保持低电平1μs之后,主机将数据线拉高,等待来自DS18B20的数据变化,在下降沿15μs之后便可开始读取DS18B20的输出数据。整个读时序必须有最短60μs的持续期。如图3-2的下半部分。读时序结束后数据线由上拉电阻拉至高电平。

图3-3 DS18B20传感器的读写时序
3.1.5 DS18B20获取温度程序流程图
DS18B20的读字节,写字节,获取温度的程序流程图如图3-3所示。

图3-4 DS18B20程序流程图
3.2 显示程序设计
显示电路是由四位一体的数码管来实现的。由于单片机的I/O口有限,所以数码管采用动态扫描的方式来进行显示。程序流程图如图3-4所示。

图3-5 显示程序流程图
3.3 按键程序设计
按键是用来设定上下限报警温度的。具体的程序流程图如图3-5所示。

图3-6 按键程序流程图

4实物制作及调试
制作好的实物如图4-1所示。

图4-1 数字温度计实物正面图
在做实物时出现了不少问题。比如本来是采用NPN型9013驱动蜂鸣器,但是在实际调试中蜂鸣器驱动不了,经多次试验,在三极管的基极电阻与单片机的接口处接一个1、2kΩ的上拉电阻就能驱动了。但考虑到单片机的I/O口默认状态时为高电平,这样一上电蜂鸣器就会响,所以将NPN型9013换成了PNP型的9012三极管,效果还不错。

5电子综合设计体会
经过将近一个月的设计、焊接、编程、调试,我们终于完成了数字温度计的设计,基本能够达到设计要求,而且还设计了一些其他功能,比可以开启或消除按键音功能,开机动画功能,查看报警上下限温度功能。
此次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到实践中去。在大学课堂的学习只是给我们灌输专业知识,而我们应把所学的知识应用到我们现实的生活中去。这次的设计不仅使我们将课堂上学到的理论知识与实际应用结合了起来,而且使我们对电子电路、电子元器件、印制电路板等方面的知识有了更进一步的认识,同时在软件编程、焊板调试、相关调试仪器的使用等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。此次单片机设计也为我们以后进行更复杂的单片机系统设计提供了宝贵的经验。
在本次设计的过程中,我们遇到不少的问题,刚开始焊好的板子下不进去程序,经过一再仔细的检查,才发现是在下载口处出了问题,由于焊盘口比较小,排针插不进去,最后使了很大力气才插进去,插进去后才发现坏了,结果在去排针的时候把焊盘给去下来了,最后只能在旁边将下载口引了出来。还有就是文章中提到的蜂鸣器驱动问题等等。经过此次的硬件制作与调试,锻炼了我们的动手实践能了。本次设计的另一个重点就是软件程序的设计,其中需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论,有些东西是很难理解的,更谈不上掌握。
通过此次的综合设计,我们初步掌握了单片机系统设计的基本原理。充分认识到理论学习与实践相结合的重要性,对于书本上的很多知识,不但要学会,更重要的是会运用到实践中去。在以后的学习中,我们会更加注重实践方面的锻炼,多提高自己的动手实践能力。

参考文献
[1] 谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7 .
[2] 余发山,王福忠.单片机原理与应用技术.徐州:中国矿业大学出版社,2008.6 .
[3] 求是科技.单片机典型模块设计实例导航.北京:人民邮电出版社,2005.5 .
[4] 求是科技.8051系列单片机C程序设计完全手册.北京:人民邮电出版社,2006.4 .
[5] 于永,戴佳,刘波.51单片机C语言常用模块与综合系统设计实例精讲(第2版).北京:电子工业出版社,2008.10 .
[6]刘腾远.基于单片机的温度控制系统设计[J].科技经济导刊,2018(01):77-78.
[7]苏康友.基于51单片机的无线温度控制系统设计[J].电子技术与软件工程,2017(10):250-251.
[8]刘丰年.基于AT89C51的简易智能化加湿器设计[J].三门峡职业技术学院学报,2016,15(04):139-142.
[9]杨伟才.基于DS18B20的多点温度测量系统研究[J].山东工业技术,2016(24):266.
[10]严敏.基于单片机的智能温控系统的设计与实现[J].无锡职业技术学院学报,2016,15(03):61-64.
[11]吴嘉颖. 基于单片机的地铁低压设备触点温度监测系统的设计与实现[D].西南交通大学,2017.
[12]孙晓倩.基于51单片机的温度监测报警系统设计研究[J].赤峰学院学报(自然科学版),2015,31(24):24-26.
[13]仲霞.基于DS18B20的多点温度测量系统探讨[J].山东工业技术,2015(22):156.
[14]吕晓磊.基于单片机智能控温的仿真与设计[J].安徽电子信息职业技术学院学报,2015,14(03):34-37.
[15]贺争汉.基于51单片机的温度控制系统[J].黑龙江科技信息,2015(16):145.
[16]谭虹.智能型滑雪保温鞋温控系统的设计与实现[J].体育世界(学术版),2014(11):19-20.
[17]王云飞.DS18B20温度传感器的应用设计[J].电子世界,2014(12):355.
[18]刘金魁.基于DS18B20的数字测温系统[J].焦作大学学报,2014,28(02):99-100.
[19]杨丹丹,杨风,马慧卿.基于单片机的温度采集系统设计[J].山西电子技术,2014(03):19-21.
[20]曹美霞.单片机与数字温度传感器DS18B20的接口设计[J].电子制作,2014(11):9-10.

B. 基于51单片机的温度计设计问题!温度传感器的选择

既然是体温计,个头不能太大吧
我建议用ds18b20个头小啊
还有你还要显示的啊,不能测出的体温,天知地知,你不知我不知啊

一般用DS18B20毕竟人家是数字式的

交流

C. 基于STC90C51单片机温度控制器课程设计的设计目的是什么

其目的是学习单片机基本原理和结构,温度传感器与单片机通信协议,数码管显示或液晶显示和程序编写(C或汇编)等相关知识

D. 高分求单片机温度采集系统的课程设计

DS18B20数字温度计使用

1.DS18B20基本知识

DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

1、DS18B20产品的特点

(1)、只要求一个端口即可实现通信。

(2)、在DS18B20中的每个器件上都有独一无二的序列号。

(3)、实际应用中不需要外部任何元器件即可实现测温。

(4)、测量温度范围在-55。C到+125。C之间。

(5)、数字温度计的分辨率用户可以从9位到12位选择。

(6)、内部有温度上、下限告警设置。

2、DS18B20的引脚介绍

TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。

(底视图)图1

表1 DS18B20详细引脚功能描述 序号
名称
引脚功能描述

1
GND
地信号

2
DQ
数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。

3
VDD
可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。

3. DS18B20的使用方法

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

DS18B20的复位时序

DS18B20的读时序

对于DS18B20的读时序分为读0时序和读1时序两个过程。

对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。

DS18B20的写时序

对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。

对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。

4. 实验任务

用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+100度之间,用8位数码管显示出来。

5. 电路原理图

6. 系统板上硬件连线

(1). 把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。

(2). 把“单片机系统”区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。

(3). 把DS18B20芯片插入“四路单总线”区域中的任一个插座中,注意电源与地信号不要接反。

(4). 把“四路单总线”区域中的对应的DQ端子连接到“单片机系统”区域中的P3.7/RD端子上。

7. C语言源程序
#i nclude <AT89X52.H>
#i nclude <INTRINS.h>

unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00,0x40};
unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,
25,28,31,34,38,41,44,48,
50,53,56,59,63,66,69,72,
75,78,81,84,88,91,94,97};
unsigned char displaycount;
unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};
unsigned char timecount;
unsigned char readdata[8];
sbit DQ=P3^7;
bit sflag;

bit resetpulse(void)
{
unsigned char i;

DQ=0;
for(i=255;i>0;i--);
DQ=1;
for(i=60;i>0;i--);
return(DQ);
for(i=200;i>0;i--);
}

void writecommandtods18b20(unsigned char command)
{
unsigned char i;
unsigned char j;

for(i=0;i<8;i++)
{
if((command & 0x01)==0)
{
DQ=0;
for(j=35;j>0;j--);
DQ=1;
}
else
{
DQ=0;
for(j=2;j>0;j--);
DQ=1;
for(j=33;j>0;j--);
}
command=_cror_(command,1);
}
}

unsigned char readdatafromds18b20(void)
{
unsigned char i;
unsigned char j;
unsigned char temp;

temp=0;
for(i=0;i<8;i++)
{
temp=_cror_(temp,1);
DQ=0;
_nop_();
_nop_();
DQ=1;
for(j=10;j>0;j--);
if(DQ==1)
{
temp=temp | 0x80;
}
else
{
temp=temp | 0x00;
}
for(j=200;j>0;j--);
}
return(temp);
}

void main(void)
{
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
ET0=1;
EA=1;

while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0x44);
TR0=1;
while(1)
{
;
}
}

void t0(void) interrupt 1 using 0
{
unsigned char x;
unsigned int result;

TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
if(displaycount==2)
{
P0=displaycode[displaybuf[displaycount]] | 0x80;
}
else
{
P0=displaycode[displaybuf[displaycount]];
}
P2=displaybit[displaycount];
displaycount++;
if(displaycount==8)
{
displaycount=0;
}

timecount++;
if(timecount==150)
{
timecount=0;
while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0xbe);
readdata[0]=readdatafromds18b20();
readdata[1]=readdatafromds18b20();
for(x=0;x<8;x++)
{
displaybuf[x]=16;
}
sflag=0;
if((readdata[1] & 0xf8)!=0x00)
{
sflag=1;
readdata[1]=~readdata[1];
readdata[0]=~readdata[0];
result=readdata[0]+1;
readdata[0]=result;
if(result>255)
{
readdata[1]++;
}
}
readdata[1]=readdata[1]<<4;
readdata[1]=readdata[1] & 0x70;
x=readdata[0];
x=x>>4;
x=x & 0x0f;
readdata[1]=readdata[1] | x;
x=2;
result=readdata[1];
while(result/10)
{
displaybuf[x]=result%10;
result=result/10;
x++;
}
displaybuf[x]=result;
if(sflag==1)
{
displaybuf[x+1]=17;
}
x=readdata[0] & 0x0f;
x=x<<1;
displaybuf[0]=(dotcode[x])%10;
displaybuf[1]=(dotcode[x])/10;
while(resetpulse());
writecommandtods18b20(0xcc);
writecommandtods18b20(0x44);
}
}

关键词:单总线; 数字温度传感器; 多点温度测控

1 前言
随着科学技术的发展,特别是现代仪器的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向[1]。美国Dallas半导体公司推出的数字化温度传感器DS1820采用单总线协议,即与微机接口仅需占用一个I/O端口,无需任何外部元件,直接将温度转化成数字信号,以9位数字码方式串行输出,从而大大简化了传感器与微处理器的接口。
2 工作原理
目前大多数传感器系统都采用放大--传输--数模转换这种处理模式。这种模式一般要占用数条数
据/控制线,限制了单片机功能的扩展。而一线总线技术则很好地解决了这个问题。
一线总线技术就是在一条总线上仅有一个主系统和若干个从系统组成的计算机应用系统。由于总线上的所有器件都通过一条信号线传输信息,总线上的每个器件在不同的时间段驱动总线,这相当于把数据总线、地址总线和控制总线合在了一起。所以整个系统要按单总线协议规定的时序进行工作。为了使其它设备也能使用这条总线,一线总线协议采用了一个三态门,使得每一个设备在不传送数据时空出该数据线给
其它设备。一线总线在外部需要一个上拉电阻器,所以在总线空闲时是高电平。
挂在单总线上的器件称为单总线器件,为了区分总线上的不同器件,生产单总线器件时,厂家都刻录了一个64位的二进制ROM代码作为芯片的唯一序列号。这样通过寻址就可以把每个器件识别出来。64位ROM的结构如下:开始8位是产品类型的编号(DS1820为10H),接着是每个器件的唯一的序号,共
有48位,最后8位是前56位的CRC校验码,这也是多个DS1820可以采用一线进行通信的原因。 3 DS1820介绍
DS1820是美国Dallas半导体公司推出的第一片支持"一线总线"接口的温度传感器。它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供微机处理[2]。
DS1820的工作原理是:DS1820采用3脚PR-35封装或8脚SOIC封装,其中 GND为地;I/O为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平;VDD是外部+5V电源端,不用时应接地;NC为空脚。图1 所示为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL解发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。

DS1820 特点如下:硬件接口简单,性能稳定,单线接口,仅需一根口线与MCU连接无需外围元件;由总线提供电源;测温范围为-55~75℃;精度为0.5℃;9位温度读数;A/D变换时间为200ms;用户自设定温度报警上下限,其值是非易失性的;报警搜索命令可识别那片DS1820超温度限。
DS1820的温度测量原理如下[3]:DS1820测量温度时使用特有的温度测量技术,其测量电路框图如图2所示。内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时,振荡器的脉冲无法通过门电路。计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度表示值为9bit,高位为符号位。

4 温度检测系统设计
由于每片DS1820含有唯一的硅串行数,所以在一条总线上可挂接多个DS1820芯片。从DS1820读出的信息或写入DS1820的信息,仅需要一根口线(单线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS1820供电,而无需额外电源。DS1820提供9位温度读数,构成多点温度检测系统而无需任何外围硬件。对DS1820的使用,多采用单片机实现数据采集。处理时,将DS1820信号线与单片机一位口线相连,单片机可挂接多片DS1820,从而实现多点温度检测系统。由于DS1820只有三个引脚,其中两根是电源线VDD和GND,另外两根用作总线DQ(Data In/Out),由于其输出和输入均是数字信号且与TTL电平兼容,因此其可以与微处理器直接进行接口,从而省去了一般传感器所必需的中间转换环节。
本设计中以DS1820为传感器、AT89C52单片机为控制核心组成的多点温度测试系统如图3所示[4]。用6只DS1820同时测控6路温度(视实际需要还可扩展通道数)。89C52单片机P1.1口接单线总线。DS1820采用寄生电源供电方式。为保证在有效的DS1820时钟周期内能提供足够的电流,图3中采用一个MOSFET管和89C52的H.0口来完成对DS1820的总线上拉。键盘扫描和动态扫描的显示共用一片可编程接口芯片8279,显示采用8位共阴极LED数码管,它可用来显示通道数、温度测量值以及TH、TL的值。

程序处理是整个系统的关键,即简洁的硬件结构是靠复杂的软件来支持的。多个器件挂在一条总线上为了识别不同的器件,在程序设计过程中一般有四个步骤:初始化命令;传送ROM命令;传送RAM命令;数据交换命令。
需要注意的是,无论是单点还是多点温度检测,在系统安装及工作之前,应将主机逐个与DS1820挂接,读出其序列号。其工作过程为:主机发出一个脉冲,待 "0"电平大于480μs后,复位DA1820,在DS1820所发响应脉冲由主机接收后,主机再发读ROM命令代码33H,然后发一个脉冲(15μs),并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。另外,由于DS1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对DS1820和各种操作必须按协议进行,即初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。系统对 DS1820操作的总体流程图如图4所示。

在正常测温情况下,DS1820的测温分辨力为0.5℃。采用下述方法可获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25和0.75℃为进位界限的关系.

结束语
对应于传统概念,这一粒三极管一样的传感器相当于传统的温度传感器+ 数字化+ CPU+ 总线协议及接口。一线器件采用单条连线,解决了控制、通信和供电等问题,降低了系统成本,并简化了设计,为未来传感器的发展和应用开辟了新的领域。

http://www.mcublog.com/blog/blog2007/shuizhongzehui/archives/2007/22353.html
http://blog.21ic.com/user1/422/archives/2006/12900.html
有流程图,电路图和资料,不过网络上传不了

E. 基于51单片机及DS18B20温度传感器的数字温度计设计

你好!
1、关于这个数字温度计;
是有实物?发一下原理图
2、还是用仿真模拟出效果?
3、显示器件数码管还是液晶
4、是否带有温度报警功能

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919