基于DS18B20的温度测试仪.doc

上传人:文库蛋蛋多 文档编号:4136657 上传时间:2023-04-07 格式:DOC 页数:24 大小:2.20MB
返回 下载 相关 举报
基于DS18B20的温度测试仪.doc_第1页
第1页 / 共24页
基于DS18B20的温度测试仪.doc_第2页
第2页 / 共24页
基于DS18B20的温度测试仪.doc_第3页
第3页 / 共24页
基于DS18B20的温度测试仪.doc_第4页
第4页 / 共24页
基于DS18B20的温度测试仪.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《基于DS18B20的温度测试仪.doc》由会员分享,可在线阅读,更多相关《基于DS18B20的温度测试仪.doc(24页珍藏版)》请在三一办公上搜索。

1、苏州大学 应用技术学院电子技术综合设计实验报告实验名称基于DS18B20的温度测试仪班级/小组10信息/09组报告人姓名/学号季伟/1016407049完成日期2013-10-24电子技术综合设计实验报告实验名称:基于DS18B20温度测试仪苏州大学 应用技术学院10信息/09组王兆奇/1016407003 臧寿池/1016407019马泽鑫/1016407043 季 伟/10164070492013年10月24目 录1. 任务41.1. 描述41.1.1. 组成41.1.2. 功能41.2. 要求41.2.1. 基本要求41.2.2. 分工42. 方案42.1. 可选方案42.1.1. 方案

2、142.1.2. 方案252.2. 方案确定52.2.1. 主要思路53. 设计53.1. 硬件设计53.1.1. 单元153.1.2. 微控制器STM32F103ZET6等单元说明:63.1.3. 温度传感器DS18B20的工作原理73.1.4. 显示模块的设计83.1.5. LCD液晶显示屏与单片机接口电路设计83.1.6. 软件结构93.1.7. 主要函数说明104. 制作104.1. 制作104.1.1. 过程104.1.2. 分工104.2. 实物外形105. 测试115.1.1. 系统仿真115.1.2. 系统硬件调试115.1.3. 系统软件调试115.2. 结果116. 总结1

3、3参考文献13附录14附录1:14主程序:14子程序:181. 任务1.1. 描述本文在基于DS18B20温度测试仪及微控制器工作原理的基础上,详细介绍了该系统的硬件和软件设计过程。其中,硬件设计是以微控制器STM32F103ZET6和DS18B20数字温度传感器为核心器件,主要由温度采集、微控制器、LCD温度显示、串口显示四部分组成。软件设计采用模块化编程方法,使得程序易于调试和维护,并利用C语言实现数据处理、LCD显示、串口显示等各功能子程序的编写。该系统结构简单、抗干扰性强、实用性强,具有一定的工程应用价值。1.1.1. 组成硬件设计是以微控制器STM32F103ZET6和DS18B20

4、数字温度传感器为核心器件,主要由温度采集、微控制器STM32F103Z数据处理、LCD温度显示、串口显示四部分组成。1.1.2. 功能该测温系统应用测温传感器DS18B20,通过DS18B20把温度值转换成数字量,把数字量送给微处理器,并在液晶显示器上以及串口助手上显示出来。1.2. 要求1.2.1. 基本要求该测温系统应用测温传感器DS18B20,通过DS18B20把温度值转换成数字量,把数字量送给微处理器,并在液晶显示器上显示出来。1.2.2. 分工 总体设计 臧寿池 软件设计 王兆奇 硬件设计 马泽鑫 文档编辑 季 伟2. 方案2.1. 可选方案2.1.1. 方案1由于本设计是测温电路,

5、可以使用热敏电阻之类的器件利用其感温效应,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等。但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂。另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量。即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。2.1.2. 方案2基于DS18B20温度测试仪,传统的测温方法是将模拟信号远距离采样进行A/D转换,而为了获得较高的测温系统,就必须采用措施解决由长线

6、传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0-100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器STM32F103ZET6构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。本次采用温度芯片DS18B20测量温度,可以体现系统芯片化的这个趋势。部分功能电路的集成,

7、使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。本方案应用这一温度芯片,也是顺应这一趋势。2.2. 方案确定2.2.1. 主要思路综上所述,方案使用了STM32F103ZET6作为控制核心,以智能温度传感器DS18B20为温度测量元件,显示电路采用LCD显示模块以及串口调试助手显示。3. 设计3.1. 硬件设计3.1.1. 单元1(1) 电路 基于DS18B20的多点温度采集系统采用了STM32F103ZET6作为控制核心,以智能温度传感器DS18B20为温度测量元件,显示电路采用LCD数码

8、管模块。电路方案如下图3.1.1:3.1.1电路方案3.1.2. 微控制器STM32F103ZET6等单元说明:3.1.2.1微控制器STM32F103ZET6原理图3.1.1.2 USART1接口模块原理图3.1.2.3 ONEWIRE原理图3.1.3. 温度传感器DS18B20的工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:3.1.3 DS18B20温度传感器独特的单线接口仅需要一个端口引脚进行通

9、信;DS18B20可以并联在惟一的三线上;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;3.1.4. 显示模块的设计1. LCD主要技术参数 显示点阵数 240*RGB*320 DOTS; LCD尺寸48.60(W) x 64.80(H) mm ; LCD模式 262K TFT; 动态显示区 43.2*57.6 mm ; 象素成分 a-Si TFT; LCM外型尺寸 55.94(W) x77.60(H)

10、 x 3.70(D) mm; 象素尺寸 0.153*0.153 mm。3.1.5. LCD液晶显示屏与单片机接口电路设计本系统的显示部分采用LCD显示模块,与采用数码管相比,硬件连接和软件调试上都由优势。只要把要显示的内容放进液晶模块的显示存储器里面就可以直观的显示出指定的内容,操作方便。LCD原理图,如图所示:3.1.5 LCD原理图3.1.6. 软件结构3.1.6 软件结构3.1.7. 主要函数说明见附录4. 制作4.1. 制作4.1.1. 过程第一步:根据总体方案,确定软件设计与以及硬件设计;第二步:分别进行硬件设计与软件设计,实现所需功能;第三步:完成软件设计与硬件设计,进行最后调试;

11、4.1.2. 分工总体设计 臧寿池 软件设计 王兆奇硬件设计 马泽鑫 文档编辑 季 伟4.2. 实物外形4.2.1 实物图5. 测试5.1.1. 系统仿真其实仿真的概念其实使用非常广,但是最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或

12、大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、查看资源断点等。在单片机应用系统的开发过程中,程序的设计是最为重要的但也是难度最大的工作,一种最简单和原始的开发流程是:编写程序,烧写芯片并验证功能,这种方法对于功能简单的小系统是可以对付的,但在比较大的系统中使用这种方法则是完全不可能的。此时就需要用到仿真器。在本系统软件设计调试的过程中使用的是PROTEL DXP型仿真软件。5.1.2. 系统硬件调试系统软硬件调试的目的是通过控制程序和硬件电路的配合工作,进行一些操作,以验证系统的软、硬件是否能够完成设计的功能。调试的过程是按照系统的设计功能来划分的。硬件电路系统

13、测试首先是保证各个元件之间以及各个模块之间的连接正确并且接触良好,这是整个硬件电路系统正常工作的前提。接着分别测试各个硬件模块的性能。按照测试性质的不同可分为电压测试和信号测试两种。单片机输入输出接口主要是信号测试。根据理论计算和软件仿真的预期结果,再通过对响应的信号进行测试。测试结果与预期结果基本一致,保证了系统按照设计的思路正常运行。通过测试硬件电路系统中的几个测试点,确保关键的电压信号满足要求,确保各个引脚连接正确,确保系统正常运行。5.1.3. 系统软件调试本次在计算机上使用的是keil 系列软件对本次设计进行软件的调试,Keil软件 引入灵活的窗口管理系统,使开发人员能够使用多台监视

14、器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。多显示器和灵活的窗口管理系统,系统浏览器窗口的显示设备外设寄存器信息,调试还原视图创建并保存多个调试窗口布局,多项目工作区简化与众多的项目。5.2. 结果5.2.1串口显示 5. 2. 2 LCD显示温度界面6. 总结本文所研究的以微控制器STM32F103ZET6和DS18B20数字温度传感器为核心器件,主要由温度采集、微控制器STM32F103Z数据处理、LCD温度显示、串口显示四部分组成。该测温系统应用测温传感器DS18B20,通过DS

15、18B20把温度值转换成数字量,把数字量送给微控制器,并在LCD上以及串口助手上显示出来。该测温系统应用智能温度传感器DS18B20,大大减弱了传统模拟信号在传输过程中衰减、干扰问题的影晌。使测试系统具有更好的可靠性和精度。实现了一 种在非极端条件下(-50125)的温度测量方法。而且在硬件电路的设计上面更加简洁,不需要太多的外围电路,也降低了电路设计的要求。但是该系统存在着一些不足:一般环境的测量仪器完全可以采用数字式的传感器,DS18B20是一款非常优秀的数字式温度传感器,在测量速度要求不高的情况下,将来可以实现更多点的温度测量。而且系统需要结合机械结构设计,方便DS18B20的安装和更换

16、。数字式传感器使用中最大的缺点就是软件复杂,所以需要更加优化通用软件包的代码,提高代码效率和可移植性,这也是将来的工作重点。这次电子综合设计是我们每个人必须面临的一项的考验,在过去三年里,我们的学习是一个专业知识的积累过程,那么这次设计就是对过去所学知识的综合运用,是对理论进行深化和重新认识的时间活动。在这次设计中,我们努力的设计。每个人的能力固然得到了巩固和提高,但我相信在实践中的切身体会将会使我在以后的工作和学习中终身受用。我们学习能力得到了提高。在设计中,完成硬件电路的设计、软件编写。在这些过程中,遇到许多困难,但通过书籍或网络查阅了很多相关文章和向导师请教后终于解决了。通过网上查询相关

17、的资料,初步掌握了这些知识,并且把查到的应用到这次设计中。通过这次电子综合设计,我们不仅对理论有了更深一步的认识,增强了和外界技术的沟通,同时还培养了自学能力和分析解决问题的能力,更重要的是,培养我们自身的能力。这次电子综合设计让我们的观念有了很大的改变。之前我们使用的51单片机,这次设计使用ARM。我们想要跟上时代脚步。如何在保证质量和完成同等功能的情况下,把产品的成本降到最低并符合用户的实际使用习惯。是我们每个设计人员在作出方案时首要考虑的因素。设计产品时要联系实际,实际情况有时候和我们的理解差距很大!感谢学校这次出资购买ARM。我们作为最先使用这套设备的人,大家还是比较紧张的。但是这次设

18、计大家收获还是相当大的。不管对之后的毕业设计还是今后的工作都有很大的帮助!参考文献1. 亚荷毛尔等. 构建嵌入式LINUX系统.东南大学出版社,20092. 周立功. ARM嵌入式系统基础教程.北京航空航天大学出版社,20083. 杜春雷.ARM体系结构与编程. 清华大学出版社, 20034. 郑杰. ARM嵌入式系统开发与应用完全手册. 中国铁道出版社, 20135. 黄建华,欧阳宁.ARM嵌入式系统开发教程.西安电子科技大学出版社, 20126. 肖广兵.ARM嵌入式开发实例.电子工业出版社, 2013 7. 葛超,王嘉伟. ARM体系结构与编程.清华大学出版社, 2012 8. 谭云生.

19、ARM嵌入式系统原理及应用开发. 西安电子科技大学出版社,2012附录附录1:主程序:/* File : main.c* Hardware Environment: Open103Z* Build Environment : RealView MDK-ARM Version: 4.20* Version : V1.0* By : WaveShare* (c) Copyright 2005-2011, WaveShare* * All Rights Reserved*/* Includes -*/#include stm32f10x.h#include #include #include usa

20、rt.h#include OneWire.h#include 18B20.h#include LCD.h #include AsciiLib.h/* Private typedef -*/* Private define -*/* Private macro -*/* Private variables -*/* Private function prototypes -*/#ifdef _GNUC_/* With GCC/RAISONANCE, small printf (option LD Linker-Libraries-Small printf set to Yes) calls _i

21、o_putchar() */#define PUTCHAR_PROTOTYPE int _io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* _GNUC_ */void GPIO_Configuration(void);void USART_Configuration(void);void Delay (uint32_t nCount);uint16_t n;/* Private functions -*/* * brief Main program. * param None

22、 * retval None */int main(void) /*!IDR & 0x0040)LCD_Clear(White);while(1)if(tmp != i)n+;printf(Temperture:%d度,第%d次测试rn ,i,n);sprintf(s3,%4d,i);GUI_Text(160,100,s3,Red,White);GUI_Chinese(100,100,当前温度,Blue,White);GUI_Chinese(70,20,基于,Blue,White);GUI_Chinese(160,20,的温度测试仪,Blue,White);GUI_Text(100,20,DS

23、18b20,Blue,White);GUI_Chinese(200,100,度,Blue,White);tmp=i; i = readTemp();/* Function Name : GPIO_Configuration* Description : Configure GPIO Pin* Input : None* Output : None* Return : None* Attention : None*/void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(

24、RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG , ENABLE); /* * LED1 - PF6 , LED2 - PF7 , LED3 - PF8 , LED4 - PF9 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GP

25、IO_Mode_Out_PP; GPIO_Init(GPIOF, &GPIO_InitStructure); /* Key */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.

26、GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOG, &GPIO_InitStructure);/* Function Name : Delay* Description : Delay Time* Input : - nCount: Delay Time* Output : None* Return : None* Attention : None*/v

27、oid Delay (uint32_t nCount) for(; nCount != 0; nCount-);#ifdef USE_FULL_ASSERT/* * brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * param file: pointer to the source file name * param line: assert_param error line source number * ret

28、val None */void assert_failed(uint8_t* file, uint32_t line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file %s on line %drn, file, line) */ /* Infinite loop */ while (1) #endif/* END OF FILE */子程序usart.c:/* File : usart.c* Hardw

29、are Environment: * Build Environment : RealView MDK-ARM Version: 4.20* Version : V1.0* By : * (c) Copyright 2005-2011, WaveShare* * All Rights Reserved*/#include usart.h#ifdef _GNUC_ /* With GCC/RAISONANCE, small printf (option LD Linker-Libraries-Small printf set to Yes) calls _io_putchar() */ #def

30、ine PUTCHAR_PROTOTYPE int _io_putchar(int ch)#else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* _GNUC_ */* Function Name : USART_Configuration* Description : Configure USART1 * Input : None* Output : None* Return : None* Attention : None*/void USART_Configuration(void) GPIO_InitType

31、Def GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE); /* * USART1_TX - PA9 , USART1_RX -PA10 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Spe

32、ed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 115200; USART_I

33、nitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_ClearFlag(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号