基于DS18B20的温度采集显示系统设计.docx
《基于DS18B20的温度采集显示系统设计.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度采集显示系统设计.docx(15页珍藏版)》请在冰豆网上搜索。
![基于DS18B20的温度采集显示系统设计.docx](https://file1.bdocx.com/fileroot1/2023-7/15/19551873-e57a-44f7-ab3e-5edd807d5bfa/19551873-e57a-44f7-ab3e-5edd807d5bfa1.gif)
基于DS18B20的温度采集显示系统设计
任务书
1.题目:
基于DS18B20的温度采集显示系统设计
2、设计要求:
1.学习DS18B20功能与使用方法;
2.每秒采集一次温度并在LED上显示;
3.具有显示最高与最低温度的功能;
4.设计硬件原理图;
5.编写程序。
第一章方案设计
数字温度计的方案设计
2.1控制系统总体介绍
方案一:
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案设计框图如下:
方案二:
考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
2.2框图
温度计电路设计总体设计方框图如图1所示,控制器采用单片机STC89C51,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。
图1 总体设计方框图
2.3工作原理
DS18B20本身就是一种数字温度传感器,只是得到的温度值的位数因分辨率不同而不同且温度转换时的延时时间由2s减为750ms。
它会把温度转换成数字量以后存贮在自身内部,和单片机只需要连接一个IO口,是一种单总线串行接口,然后接下来做的就是通过写控制字给DS18B20把数据读出来,接着调用ZLG7290显示程序在LED数码管上显示出来,在此程序中设置了两个中断,分别来显示一段时间内的最高温度和最低温度,而且设置的有个报警装置,超过设定的温度就会蜂鸣器发出声。
3数字温度计硬件电路设计
3.1芯片介绍
1、AT89C51芯片
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示。
第二章硬件系统设计
CPU选型及相应外部电路设计说明
2、DS18B20芯片
(1)DS18B20简介
DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。
与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。
通过编程,DS18B20可以实现9~12位的温度读数。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。
读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
(2)DS18B20的引脚功能
其功能如表1所示。
表1DS18B20分辩率的定义规定
R1
R0
分辩率/位
温度最大转换时间/ms
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
(3)DS18B20的主要特点
v采用单线技术,与单片机通信只需一个引脚;
v通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;
v实际应用中不需要外部任何器件即可实现测温;
v可通过数据线供电,电压的范围在3~5.5V;
v不需要备份电源;
v测量范围为-55~+125℃,在-10~+85℃范围内误差为0.5℃;
v数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现9~12位的温度读数;
v将12位的温度值转换为数字量所需时间不超过750ms;
v用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率
图2DS18B20内部结构
3、ZLG7290芯片
ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。
除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。
此外,ZLG7290B的电路简单,使用也很方便。
用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。
正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。
微控制器可通过两种方式得到用户的键盘输入信息。
其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。
其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根I/O口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。
ZLG7290能够直接驱动8位共阴式数码管(或64只独立的LED),同时还可以扫描管理多达64只按键。
其中有8只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt键一样。
另外ZLG7290B内部还设置有连击计数器,能够使某键按下后不松手而连续有效。
采用I2C总线方式,与微控制器的接口仅需两根信号线。
可控扫描位数,可控任一数码管闪烁。
3.2电路设计
1、复位电路
单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用电容值为10μ的电解电容。
电路图如下:
图3复位电路图
2、温度采集电路
B4区上面是一片DS18B20单总线数字温度传感器,可在上面进行单总线和温度采集等相关实验,电路图如下图,DQ为控制信号输入端,JP12为电源控制(使用前先短接,做完实验后断开)。
图4单总线数字温度采集电路
3、显示电路
对于数字温度的显示,我们采用周立功的7290,6位LED数码管。
足够显示0~100中各位数,并且还能显示一位小数部分。
图5显示电路
4、报警电路
对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。
我们便能很好的对设备进行处理,就不会应温度的变化而造成不必要的损失。
当温度高于预定设置的温度时,报警时由单片机产生一定频率的脉冲,由P1.2引脚输出,P1.2外接一只NPN的三极管来驱动杨声器发出声音,以便操作员来维护,从而达到报警的目的。
其电路图如下所示。
图6报警电路
5、系统的总电路
系统的总电路图主要是由51单片机,ZLG7290芯片,DS18B20芯片构成。
图7总电路图
3.3电路接线
D1区的LED8接A2区的P1.4引脚
D1区的KEY8接A2区的INT0引脚
D1区的KEY7接A2区的INT1引脚
D3区的GND接地
D3区的DQ接A2区J58的/RD引脚
D4区的BUZZ接J61的P1.2引脚
D7区的SDA接J61的P1.5引脚
D7区的SCL接J61的P1.6引脚
D7区的/RST接J61的P1.1引脚
第三章软件设计
主要讨论设计流程,并给出流程图
1、读DS18B20的子程序
2、读转换温度子程序
Y
发DS18B20复位命令
发跳过ROM命令
发读取温度命令
读取操作,CRC校验
9字节完?
CRC校验正确?
移入温度暂存器
结束
N
N
Y
第四章系统调试
说明调试过程中出现的问题以及如何改进的,
(1)根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功
(2)动态显示方式,在某一瞬时显示一位,依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示
小结
本系统采用采用单片机和数字温度转换器DS18B20来实现,具有主机接口简单,结构灵活,调试方便等特点,实验结果表明这种测温系统转换速度快、精度高。
回顾起此次课程设计,我们感慨颇多,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多东西。
这次实习不仅巩固了以前所学过的知识,而且学到了很多在书本上没有的知识。
通过这次课程设计,我们得到了一些工程项目知识,懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中,我们经常遇到问题,可以说是困难重重,这毕竟第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。
虽然两个周的课程设计过去了,但此次课程设计暴露了我不少问题,虽然在课堂上我学了不少东西,但当付诸于实际时却摸不着头脑,所以我们不但要学习知识,还要
在实践中运用知识,做到游刃有余。
不管是在以后的工作或学习中,我都会全力以赴,积极思考,勇于探索,不断创新。
在设计中遇到了很多编程方面的调试问题还没有解决,例如仍没有设计出报警系统、温度上下限的限制。
我想在以后我会继续查找各方面资料、请教老师、与同学共同探讨,一起来解决这些问题。
同时在以后的日子里我会慢慢改正在这次课程设计中所犯的错误、把学过的知识掌握的更加牢固。
附录1:
原理图
附录2:
源程序
DS18B20初始化程序
INIT_1820:
SETBDQ
NOP
CLRDQ
MOVR0,#80H
TSR1:
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H;96US
TSR2:
DJNZR0,TSR2
JNBDQ,TSR3
LJMPTSR4;延时
TSR3:
SETBFLAG1;置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG1;清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#06BH;200US
TSR6:
DJNZR0,TSR6;延时
TSR7:
SETBDQ
RET
2记录最高最低温度程序
LOOOP1:
JNBFLAG2,LOOOP
CJNEA,TEMPERMAX,LOP3
MOVA,DECIMAL
CJNEA,DECIMALMAX,LOP9
SJMPLOP6
LOP9:
JCLOP6
MOVDECIMALMAX,A
SJMPLOP6
LOP3:
JCLOP4
MOVTEMPERMAX,A
MOVDECIMALMAX,DECIMAL
SJMPLOP6
LOP4:
CJNEA,TEMPERMIN,LOP5
MOVA,DECIMAL
CJNEA,DECIMALMIN,LOP10
SJMPLOP6
LOP5:
JNCLOP6
MOVTEMPERMIN,A
MOVDECIMALMIN,DECIMAL
SJMPLOP6
LOP10:
JNCLOP6
MOVTEMPERMIN,A
SJMPLOP6
LOP6:
JBF0,LOP2
JBFLAG0,LOP8
LOP7:
LCALLBIN_BCD
RET
LOP2:
CLRF0
MOVTEMPER_NUM,TEMPERMAX
MOVDECIMAL,DECIMALMAX
SJMPLOP7
LOP8:
CLRFLAG0
MOVTEMPER_NUM,TEMPERMIN
MOVDECIMAL,DECIMALMIN
SJMPLOP7
LOOOP:
MOVTEMPERMAX,A
MOVTEMPERMIN,A
MOVDECIMALMAX,DECIMAL
MOVDECIMALMIN,DECIMAL
SETBFLAG2
SJMPLOOOP1