基于ds18b20的多点测温_第1页
基于ds18b20的多点测温_第2页
基于ds18b20的多点测温_第3页
基于ds18b20的多点测温_第4页
基于ds18b20的多点测温_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于DS18B20的单总线多点测温系统、摘要:本文主要介绍了一个基于DS18B20单片机的测温系统,详细描述了传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量

2、,有广泛的应用前景。随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时作出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要关键词:DS18B20,AT89c51,多点测温一、 任务分工:表11 任务分工表二、 功能描述:1. 使用前程序读取序列号,一次性写入代码中。此系统写入了三个传感器的序列号。2. 上电,显示“welcome”开机画面。3. 按键1功能选择键,可以选择显示相

3、应的节点,显示所有节点温度,显示平均温度。4. 按键2确认键,按键1选择相应的界面后,按确认键,同时对传感器进行数据采集,并显示温度。三、 方案选择:一) 总线方案:方案一:单端口单总线的多点测温典型应用如图所示,所有DS18B20并联后其数据线连接到处理器的一个端口线上,显著特点是只占用单片机的一个端口。每个DS18B20内部均有一个唯一的64位序列号,在工作之前先将主系统与DS18B20逐个连接,分别读出序列号并存储在单片机中,根据序列号就可以对同一总线上多个DS18B20进行识别控制,分别读取其温度。图31 DS18B20单总线连接图其主要设计思想是:当单片机需要对众多DS18B20中某

4、一个进行操作,首先发出匹配命令,接着单片机把存储的64位序列号发送到总线,只有此序列号的DS18B20才接收相应的命令,之后的操作就是针对该DS18B20的。设计优缺点:这种测温连接方法是电路连接简单,硬件开销小。缺点是该方案是由多个DS18B20并联连接在一起的,他们之间会有一定的相互影响。最重要的是,在这种方案中,多个器件串接在总线上,对所有器件的查询操作,需要一个一个分别识别,完成一次查询需要花费大量时间,降低了系统效率,对一些实时性要求较高的设计不大适用。方案二:多端口并行法各个DS18B20数据线分别连接到不同的端口,工作时,单片机同时对各个DS18B20进行统一的并行操作,对所有D

5、S18B20而言,其命令的接收与数据的传送是同步进行的,所花费时间等同于操作单个DS18B20所用时间。图32 DS18B20多端口连接图这种方案最大好处是节省时间,能满足对实时性要求较高的温度测量系统设计需求,同时由于这种方法不涉及序列号问题节省了读取与匹配的操作过程。而其缺点也显而易见,占用的端口数较多,每个测试点需要一个连接线,硬件资源开销大方案二:I²C总线两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。通过串行数据(SDA)线和串行时钟 (S

6、CL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。而DS18B20只有一根数据线,I²C总线需要一根数据线与一根地址线,无法实现。综上所述:为了更好的节省硬件资源,达到多点测控,我们选择方案二。二) 液晶显示方案:方案一:LCD1602图33 LCD引脚图1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行

7、之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。方案二:LCD12864带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。两者各自优点:1602是字符型液晶,显示字母

8、和数字比较方便,控制简单,成本较低。1602采用并口传输,速度比12864串口快。12864 顾名思义像素是128*64,能显示8*4个汉字,因型号不同,有的带汉字库,有的不带,能显示图像效果,功能比1602强大。综上所述:1602是字符型液晶,显示字母和数字比较方便,控制简单,成本较低。1602采用并口传输,速度比12864串口快。四、 硬件设计:一) 系统框图:图41 多点测温系统框图温度传感器DS18B20检测到环境温度进行转换保存高速缓存RAM中,主控器STC89C51在发出命令后在读取数据进行处理,按键扫描再输出数据到LCD1602控制其显示的具体温度值。图42 系统仿真图:二) 各

9、部分硬件介绍:1. STC89C51单片机图43 STC STC89C51单片机引脚图电源引脚Vcc(40脚):典型值5V。Vss(20脚):接低电平。外部晶振X1、X2分别与晶体两端相连接。当采用外部时钟信号时,X2接振荡信号,X1接地。输入输出口引脚:P0口:I/O双向口。作输入口时,应先软件置“ 1”。P1口:I/O双向口。作输入口时,应先软件置“ 1”。P2口:I/O双向口。作输入口时,应先软件置“ 1”。P3口:I/O双向口。作输入口时,应先软件置“ 1”。控制引脚:RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。RST/Vpd(9脚):复

10、位信号输入端(高电平有效)。第二功能:加+5V备用电源,可以实现掉电保护RAM信息不丢失。ALE/-PROG(30脚):地址锁存信号输出端。第二功能:编程脉冲输入。-PSEN(29脚):外部程序存储器读选通信号。-EA/Vpp(31脚):外部程序存储器使能端。第二功能:编程电压输入端(+21V)。2. 温度传感器DS18B20图43 DS18B20引脚图温度传感器电路直接采用DS18B20设计,相比于模拟温度传感器,这种设计方法可以节省电路连接。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根

11、据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:l 1)独特的单线接口仅需一个端口引脚进行通讯l 2)每个器件有唯一的64 位的序列号存储在内部存储器中l 3)简单的多点分布式测温应用l 4)无需外部器件l 5)可通过数据线供电。供电范围为3.0V到5.5Vl 6)测温范围为-55125(67257)l 7)在1085范围内精确度为±0.5l 8)温度计分辨率可以被使用者选择为912位l 9)最多在750ms 内将温度转换为12 位数字l 10)用户可定义的非易失性温度报警设置11)应用包括温度控制、工业系统、消费品、温度计或任何热感测系统64位R

12、OM的位结构如图3所示。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。图44 64位ROM结构图 DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义热图5所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。图46 配置寄存器高速暂存RAM

13、的第6,7,8字节保存未用,表现为逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB形式表示。 在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到ROM数据是否正确。 DS18B20可以采用两种方式供电,一种是采用电源供电方式

14、,此时DS18B20的脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图8所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。图47 DS18B20采用寄生电源的电路图当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。3. 显示器LCD1602图48 LCD尺寸图LCD1602 采用标准的 16 脚接口,其中: 第 1 脚:VSS 为地电源 第 2 脚:VDD

15、接 5V 正电源 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比 度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:D0D

16、7 为 8 位双向数据线。第 1516 脚:空脚 三) 仿真电路:1) 开机仿真图:图49 开机仿真图2)选择界面仿真图:图410.1 选择界面仿真图2)温度显示界面仿真图:图410.1 温度显示界面仿真图五、 数据处理:一) 程序变量说明:1. 序列号存储数组:SN38将实现读取的序列号保存在此变量中,方便后续程序的读取调用。定义方式为:uchar SN38= 0x28,0x1a,0x10,0xaa,0x05,0x00,0x00,0x71,0x28,0x9a,0x51,0xaa,0x05,0x00,0x00,0xbf,0x28,0xb1,0x4d,0xaa,0x05,0x00,0x00,0x

17、ac,;2. 字符串存取数组:dis、table1、table2、table3、table4、choose1、choose2、choose3、chooseAl、chooseAv、enter将需要显示的字符窜分别保存在响应的数组里,进行模块化封装,方便在主程序与子程序之间调用显示,例如:uchar code dis=" Welcome!"uchar code chooseAv=" DISPLAY AVERAGE"3. 键盘返回值num每个按键对应一个返回值,本系统为了体现简介节约的理念,只设置了两个按键,按键1返回值1,按键2返回值2。返回值储存在num变

18、量中,有利于按键符合功能的实现。4. 功能变量k每一个k值对应一个功能,通过按键来判断k值的不同num值k值功能0欢迎界面116对应节点选择界面5平均温度选择界面2>10读取并转换温度1116对应节点节点温度显示界面15平均温度显示界面二) 程序数据处理:1. 温度数据处理DS18B20初始默认值11位,最后一位 位符号位,正温度为正,负温度为负,精度为0.0625,实际温度:tvaluej=d*0.625(为实际温度的10倍)tvaluej储存j节点的的实际温度d采集的前10位温度符号位判断:tvaluej<0x07ff tflagj=0tvaluej>=0x07ff tf

19、lagj=1tflagj储存j节点的温度符号2. 显示数据处理:disdata0=flagdat显示符号位disdata1=tvalue0%1000/100+0x30显示十位disdata2=tvalue0%100/10+0x30显示个位disdata3=0x2e显示小数点disdata4=tvalue0%10+0x30显示小数一位三) 人机界面设计:初始界面,无任何操作,如图51:图51 欢迎界面功能选择界面(按键1选择),如图52、图53:图52 功能界面,显示所有温度图52 功能界面,显示平均温度温度显示界面(按键2选择),如图54、图55:图54 温度显示界面,显示第二节点温度图55

20、温度显示界面,显示所有节点温度六、 软件设计:1. 语言选择: 程序选择C语言编写,语言的结构性更强,移植性更强。2. 资源配置:端口资源P1LCD数据端P2.0P2.2LCD控制端P2.5DS18B20数据端P3.0功能按键P3.1显示按键3. 程序流程图: A. 主程序:开始LCD初始化显示开机界面按键扫描判断按键返回值num维持K在17的数值循环维持K在1117的数值循环显示相应功能返回num=1num=2 将各部分功能函数封装,写在子程序中,主程序只负责调用,大大减少了主程序的冗杂度,增加代码的可读性。 开始上电,主程序运行,初始化LCD,并且显示开机画面。进入while循环,不断扫描

21、按键,如果按键按下,会返回相应的num值。判断num值,对功能变量k操作,使k的值在15,1115循环显示。再判断相应的k值,显示相应的功能。并且循环扫面。 B. LCD初始化流程图:开始进入模式设置设置八位格式显示两行整体显示,关光标,不显示设定增量放式,输入不移位清屏结束 LCD设置函数,两行显示,输入后光标右移,屏幕不移动,光标不显示。 C. DS18B20数据处理流程图:开始DS18B20初始化读取温度转换温度温度复位发送匹配指令发送序列号读取温度数值温度数值处理值数值储存返回DS18B20数据处理,通过for循环,依次发送一次序列号,匹配对应节点温度传感器,采集数据温度,转换成实际温

22、度值,保存在数组中。不断循环,直至所有序列号发送完毕。4. 主要代码:a) 主程序代码:void main() LCD_init(); LED1=0; Show(); while(1) keyscan();if(num=1) LCD_write_command(0x01);if(k>10) k=k-10; k+;if(k>5) k=1; num=0;if(num=2) LCD_write_command(0x01); if(k<10) k=k+10; if(k>15) k=10; num=0;if(k>0&&k<10) Ent(); if(k

23、=1) ShowC1(); if(k=2) ShowC2(); if(k=3) ShowC3(); if(k=4) ShowAl(); if(k=5) ShowAv(); if(k>10) change_temp(); read_temp();if(k=11) ShowChar1(); display_DS1(); if(k=12) ShowChar2(); display_DS2(); if(k=13) ShowChar3(); display_DS3(); if(k=14) ShowCharAl(); display_DS1(); delay(40); display_DS2(); delay(40); display_DS3(); if(k=15) ShowCharA(); display_DSA(); b)LCD初始化代码:void LCD_init(void)LCD_write_command(0x08);LCD_write_command(0x38);LCD_write_co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论