ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:220.65KB ,
资源ID:17736547      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17736547.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于LCD1602液晶的DS18B20温度传感器的温度采集系统设计.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于LCD1602液晶的DS18B20温度传感器的温度采集系统设计.docx

1、基于LCD1602液晶的DS18B20温度传感器的温度采集系统设计 2012 2013学年 第2学期 单片机原理及应用 课 程 设 计 报 告题 目:基于DS18B20的温度采集系统设计专 业: 自 动 化 班 级: 姓 名: 指导教师: 电气工程学院 2013年6月6日1、任务书课题名称基于DS18B20的温度采集系统设计指导教师(职称) 执行时间2012 2013 学年第 2学期 第 10 周学生姓名学号承担任务设计目的 通过该课程设计进一步熟悉单片机的基本知识与工作原理;1. 熟悉DS18B20温度传感器的内部资源及其使用方法;2. 学会使用Protues仿真软件进行单片机系统设计的方法

2、;3. 学会使用LCD1602对所需要显示的内容进行显示。 设计要求要求:1. 液晶第一行显示“Temperature”;2. 使用DS18B20温度传感器采集当前的温度,并采集的温度值液晶第二行显示。3. 设计温度的上下界限,超过温度上限或下限时,蜂鸣器报警同时一个发光二极管闪烁报警。 摘 要随着信息技术的飞速发展,嵌入式智能电子技术已渗透到社会生产、工业控制以及人们日常生活的各个方面。单片机又称为嵌入式微型控制器,在智能仪表、工业控制、智能终端、通信设备、医疗器械、汽车电器、导航系统和家用电器等很多领域都有着广泛的应用,已成为当今电子信息领域应用最广泛的技术之一。本文主要介绍了一个基于ST

3、C89C52RC单片机的测温系统,详细描述了利用液晶显示器件温度传感器DS18B20开发测温系统的原理,重点对传感器与单片机的硬件连接和软件编程进行了详细分析。主要地介绍了数字温度传感器DS18B20的数据采集过程,进而对各部分硬件电路的工作原理进行了介绍。温度传感器DS18B20与STC89C52RC结合构成了最简温度检测系统,该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。关键词: 单片机STC89C52RC、DS18B20

4、温度传感器、液晶显示器LCD1602基于DS18B20的温度采集系统设计第1章 绪 论1.1 温度检测系统的介绍温度检测在各领域应用的非常广泛,可以说渗透到了社会的每一个领域。人们的生活与温度检测息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 1.1.1 温度检测系统的组成 温度检测的首要问题是温度传感器的选取。温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器、模拟式集成温度传感器、智能集成温度传感器。目前的智能温度传感器(也称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试

5、技术(ATE)的结晶。它的优点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。目前温度传感器正在朝着基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等高科技的方向迅速发展。我们采用 DS18B20数字温度传感器采集温度信号,使用 MCS-51单片机控制温度传感器,然后将采集到的温度信号在LCD1602液晶显示屏上显示。这种温度检测系统性能较好,并易于实现。 1.1.2 温度检测的实际意义在工业生产和实践研究中,像电力、化工、石油、冶金、航空航天、机械制造

6、、粮食存储、酒类生产等领域,温度常常是表征对象和过程状态的重要参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。由此可见,温度的检测对日常生活很重要。 第二章 温度检测系统方案的选取2.1 温度检测系统方案的选取由于温度检测的方法多种多样,而不同的检测方法适合不同的场所。我们针对温度检测提出了温度采集系统的多种设计方案。由于温度检测系统基本组成为温度检测模块

7、和温度变送传输模块以及温度显示模块。下面对这些不同模块的选取分别进行具体地分析。2.1.1温度检测模块方案一:采用热敏电阻。因热敏电阻是温度敏感元件,使用它来感受温度变化,其电阻值的变化是可以衡量温度大小的。但热敏电阻测温具有精度低,可靠性差,不适用检测变化小的温度信号等特点,所以这种方法不适用于精度要求高的场合。 方案二:采用单总线数字温度传感器DS18B20测量温度。因为它直接输出数字信号,便于单片机进行处理及控制,同时也节省了硬件电路。该芯片的物理化学性质很稳定,元件线形性能好。当温度在0100摄氏度范围内变化时,最大线形偏差小于1摄氏度。方案三:在温度测量系统中,也可采用单片机温度传感

8、器,比如AD590,LM35等。但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使测温系统的硬件结构变的复杂。另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度上也增加了软件实现的难度。 经过讨论分析,为符合课程设计要求,我们选用方案二。 温度检测模块示意图2.1.2温度显示模块 方案一:采用8位段数码管。将单片机得到的数据通过数码管显示出来。该方案简单易行,但所需的元件较多,可读性差,一旦设定后很难再加入其他的功能,而且温度显示格式受限制,耗电量大,不宜用电池给系统供电。 方案二:采用液晶显示器件。液晶显示具有平稳、省电、美观等优点,更容易满足题目要求。

9、而且对后续的工艺兼容性高,只需将修改软件中程序设计即可,可操作性强,也易于读数。LCD1602液晶显示器具有两行十六个字符的显示,能同时显示其它的信息如日期、时间、星期、温度。 通过比较,我们选用方案二。 温度显示模块示意图2.2 温度检测系统结构的设计采用STC89C52RC单片机作为控制核心对温度传感器DS18B20进行控制,由它读取温度信号并进行计算处理后送到液晶显示器LCD1602显示。 按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。温度检测系统总体电路结构框图如下图所示。 温度检测系统电路结构框图第三章 硬件电路的设计3.1 STC89C52RC的介绍

10、STC89C52RC单片机是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机。它的指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。(1).增强型6时钟/机器周期,12时钟/机器周期8051CPU(2).工作电压:5.5V-3.4V(5V单片机)/3.8V-2.0V(3V单片机)(3).工作频率范围:0-40MHz,相当于普通8051的080MHz.实际工作频率可达到48MHz.(4).用户应用程序空间 4K/8K/13K/16K/20K/32K/64K字节(5).片上集成1280字节/512字节RAM(6).

11、通用I/O口(32/36个),复位后为:P1/P2/P3/P4是准双向口,P0口是开漏输出,作为总线扩展使用时,不用加上拉电阻,作为I/O口使用时,需加上拉电阻。(7).ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片(8).EEPROM功能(9).看门狗(10).内部集成MAX810专用复位电路(D版本才有),外部20M以下时,可省外部复位电路3.2 DS18B20的介绍3.2.1 DS18B20的主要特点 温度传感器的种类众多,在高精度、高可靠性的应用场合时DALLAS(达拉斯)公司生产的DS

12、18B20温度传感器比较理想。它体积小,硬件开消低,抗干扰能力强,精度高,附加功能强。与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。它具有独特的单线接口仅需要一个端口引脚进行通信,并可通过数据线供电,电压范围为3.05.5。3.2.2 DS18B20的结构 TO92封装的DS18B20的引脚排列见下图。 图3.2.1 DS18B20实物图及封装 其引脚功能描述见下表。 表3.2.1DS18B20详细引脚功能描述序号名称引脚功能描述1GND接地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件

13、提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 DS18B20的内部结构示意图如下图所示。图3.2.2 DS18B20内部结构64位ROM的结构起始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存器RAM由9个字节的存储器组成。第0-1个字节是温度的显示位;第2和第3个字节是TH和TL,同时第2和第3个字节的数字可以更新;第4

14、个字节是配置寄存器,同时第4个字节的数字也可以更新;第5、6、7三个字节是保留的。第8字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 表3.2.3列出了温度数据在高速暂存器RAM的第0和第1个字节中的存储格式。表3.2.3 温度数据存储格式位7位6位5位4位3位2位1位0232221202-12-22-32-4位15位14位13位12位11位10位9位8SSSSS2625243.2.3 DS18B20的测温原理DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率

15、明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器和温度寄存器中。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.2.3 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。 图3.2.3 DS18B20的接口电路当D

16、S18B20处于写存储器操作和温度A/D转换操作时,总线上必须有上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、写数据、读数据。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

17、(1)DS18B20的初始化时序1) 先将数据线置高电平12) 延时(该时间要求不是很严格,但尽可能短一点)3) 数据线拉到低电平04) 延时750us(该时间范围可以设定为480-960us范围内)5) 数据线拉到高电平16) 延时等待。如果初始化成功则在15-60ms内产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。7) 若CPU读到数据线上的低电平0后,还要进行延时,其延时的时间从发出高电平算起最少480us8) 将数据线再次拉到高电平1后结束(2)DS18B20的写数据 1) 数据线先置低电平02) 延时确定的时间为15us3) 按从低位到高位的顺序发送数据(一次只发

18、送一位)4) 延时时间为45us5) 将数据线拉到高电平16) 重复1-5步骤,直到发送完整个字节7) 最后将数据线拉到(3)DS18B20的读数据1) 将数据线拉高到2) 延时us3) 将数据线拉低到04) 延时6us5) 将数据线拉高到16) 延时4us7) 读数据线的状态得到一个状态位,并进行数据处理8) 重复1-7步骤,直到读取完一个字节3.3 LCD1602的介绍LCD1602液晶显示器也叫1602字符型液晶显示器。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成。每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间

19、也有间隔,起到了字符间距和行间距的作用。 LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。管脚功能 LCD1602引脚图LCD1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。1

20、5脚背光正极,16脚背光负极。 操作控制 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形。这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。指令集1602通过D0D7的8位数据端传输数据和指令。显示模式设置: (初始化)0011 1000 0x38 设置162显

21、示,57点阵,8位数据接口;显示开关及光标设置: (初始化)0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1&光标加1),N=0(读或写一个字符后地址指针减1&光标减1),S=1且N=1(当写一个字符后,整屏显示左移)s=0当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。3.4 硬件设计3.4.1硬件设计目标系统通过温度传感器DS18B20的数据

22、线DQ与主控芯片51单片机的P3.3相连接,DS18B20将采集到的数据送给单片机,经过单片机处理后,显示在8位数据线与单片机P0口的液晶显示器LCD上。串口经过MAX232的电平转换后R1 OUT和T1 IN接到单片机的RXD与TXD来实现与用C语言编辑的计算机软件的界面间的通信。液晶LCD的RS、RW、E分别接到单片机的P2.0P2.2来实现单片机控制液晶的读写命令和数据的显示控制。3.4.2硬件功能模块划分(1)STC89C52RC单片机:实现对整个系统的控制。(2)DS18B20、LCD1602:温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接,DS18B20将

23、采集到的数据送给单片机,经过单片机处理后,显示在8位数据线与单片机P0口的液晶LCD上。3.4.3接口和连接方式(1)液晶LCD1602的数据和指令选择控制端RS接到单片机的P2.0,读写控制接到单片节的P2.1,数据读写控制位E接到单片机的P2.2,8位数据线DB0DB7接到单片机的P0口。(2)4个按键K1K4分别接到单片机的P1.0P1.3。(3)DS18B20的DQ接到单片机的P3.3.3.4.4硬件仿真电路 第四章 软件设计4.1 1602液晶显示处理部分 在本次设计系统中定义了P22口为1602液晶的使能端;P20为数据命令的选择端;P21为读,写选择端。定义了有关的函数;writ

24、e_com()向1602写入命令码函数,write_date()向1602写入数据函数;display()1602显示函数;lcd_init()1602初始化;lcd_display()1602显示初始化。 具体程序如下所示; void lcd_init()/1602初始化 write_com(0x38);/两行显示,5*7点阵 delayms(5);/延时5毫秒 write_com(0x01);/显示清屏 delayms(5); write_com(0x0c);/开显示,不显示光标,光标不闪烁 delayms(5); write_com(0x06);/当读或写一个字符后地址指针加一,且光标加

25、一 delayms(5); void lcd_display()/1602显示初始化lcd_init();/1602初始化 write_com(0x80);/第一行第一个字符开始显示 display(str1);/第一行显示temperature write_com(0xc0);/第二行第一个字符开始显示 display(str2);/显示空白 4.2 18B20函数处理部分在本次设计系统中P33口用来单片机与温度传感器通讯;它用到的相关函数如下;ds_init()18B20初始化 ; ds_write()向18B20中写入数据 ;ds_read()由18B20读取数据 ;ds_temp()从

26、18B20中读取温度值 ;ds_dis()把温度值送入1602中显示。具体程序如下所示;void ds_init()/18B20初始化dq=1; delayus(4);/CPU将总线拉高 dq=0; delayus(480);/CPU将总线拉低延时480微妙 dq=1; delayus(60);/CPU将总线拉高延时60微妙 if(dq=0) delayus(240);/CPU判断是否为低电平,是的话说明温度传感器在线上void ds_write(uchar date1)/向18B20中写入数据注意写入是按从低位到高位的顺序发送数据一次只发送一位。uchar ds_read()/由18B20读

27、取数据,读的时候也是从最低位读uint ds_temp()/从18B20中读取温度值 uchar a,b; ds_init();/初始化温度传感器 ds_write(0xcc);/忽略ROM指令 ds_write(0x44);/开始温度转换 ds_init();/初始化温度传感器 ds_write(0xcc);/忽略ROM指令 ds_write(0xbe);/读取温度值 a=ds_read();/读取低八位 b=ds_read();/读取高八位 tvalue=b;/ tvalue=8;/ tvalue=tvalue|a;/得到16位的温度值 if(tvalue0x0fff)/判断温度大于0 t

28、flag=0; else tvalue=tvalue+1;/如果温度小于0,取反加一 tflag=1;/ tvalue=tvalue*(0.625);/乘以最小分辨率得到温度值 return(tvalue);/ void ds_dis()/把温度值送入1602中显示uchar flagdat; disdata0=tvalue/1000+0x30;/温度百位 disdata1=tvalue%1000/100+0x30;/温度十位 disdata2=tvalue%100/10+0x30;/温度个位 disdata3=tvalue%10+0x30;/小数点后一位 if(tflag=0) flagda

29、t=0x20;/如果温度大于0,不显示 if(tflag=1) flagdat=0x2d;/如果温度小于0显示负号 if(disdata0=0x30) disdata0=0x20;/百位为0不显示 if(disdata1=0x30) disdata1=0x20;/十位为0不显示 write_com(0xc0); write_date(flagdat);/第二行第一个显示温度正负 write_com(0xc1); write_date(disdata0);/第二行第二个显示温度百位 write_com(0xc2); write_date(disdata1);/第二行第三个显示温度十位 write

30、_com(0xc3); write_date(disdata2);/第二行第四个显示温度个位 write_com(0xc4);/ write_date(0x2e);/第二行第五个显示小数点 write_com(0xc5);/ write_date(disdata3);/第二行第六个显示小数点后一位 void main()/主程序lcd_display();/1602显示初始化 while(1)ds_temp();/从18B20中读取温度 ds_dis();/1602显示温度第五章 心得体会作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义而且是十分必要的。在已度过的大学时间里,我们接触的大多数是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2