基于DS18B20的温度测试仪.docx
- 文档编号:26135446
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:32
- 大小:470.46KB
基于DS18B20的温度测试仪.docx
《基于DS18B20的温度测试仪.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的温度测试仪.docx(32页珍藏版)》请在冰豆网上搜索。
基于DS18B20的温度测试仪
苏州大学应用技术学院
《电子技术综合设计》
实验报告
实验名称
基于DS18B20地温度测试仪
班级/小组
10信息/09组
报告人姓名/学号
季伟/1016407049
完成日期
2013-10-24
《电子技术综合设计》实验报告
实验名称:
基于DS18B20温度测试仪
苏州大学应用技术学院
10信息/09组
王兆奇/1016407003臧寿池/1016407019
马泽鑫/1016407043季伟/1016407049
2013年10月24
1.任务
1.1.描述
本文在基于DS18B20温度测试仪及微控制器工作原理地基础上,详细介绍了该系统地硬件和软件设计过程.其中,硬件设计是以微控制器STM32F103ZET6和DS18B20数字温度传感器为核心器件,主要由温度采集、微控制器、LCD温度显示、串口显示四部分组成.软件设计采用模块化编程方法,使得程序易于调试和维护,并利用C语言实现数据处理、LCD显示、串口显示等各功能子程序地编写.该系统结构简单、抗干扰性强、实用性强,具有一定地工程应用价值.
1.1.1.组成
硬件设计是以微控制器STM32F103ZET6和DS18B20数字温度传感器为核心器件,主要由温度采集、微控制器STM32F103Z数据处理、LCD温度显示、串口显示四部分组成.
1.1.2.功能
该测温系统应用测温传感器DS18B20,通过DS18B20把温度值转换成数字量,把数字量送给微处理器,并在液晶显示器上以及串口助手上显示出来.
1.2.要求
1.2.1.基本要求
该测温系统应用测温传感器DS18B20,通过DS18B20把温度值转换成数字量,把数字量送给微处理器,并在液晶显示器上显示出来.
1.2.2.分工
总体设计臧寿池
软件设计王兆奇
硬件设计马泽鑫
文档编辑季伟
2.方案
2.1.可选方案
2.1.1.方案1
由于本设计是测温电路,可以使用热敏电阻之类地器件利用其感温效应,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度地信号是不适用地.而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出地都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置地结构较复杂.另外,这种测温装置地一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂地算法,一定程度上也增加了软件实现地难度.
2.1.2.方案2
基于DS18B20温度测试仪,传统地测温方法是将模拟信号远距离采样进行A/D转换,而为了获得较高地测温系统,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成地误差补偿问题.采用数字温度芯片DS18B20测量温度,输出信号全数字化.便于单片机处理及控制,省去传统地测温方法地很多外围电路.且该芯片地物理化学性很稳定,它能用做工业测温元件,此元件线形较好.在0-100摄氏度时,最大线形偏差小于1摄氏度.DS18B20地最大特点之一采用了单总线地数据传输,由数字温度计DS18B20和微控制器STM32F103ZET6构成地温度测量装置,它直接输出温度地数字信号,可直接与计算机连接.这样,测温系统地结构就比较简单,体积也不大.
本次采用温度芯片DS18B20测量温度,可以体现系统芯片化地这个趋势.部分功能电路地集成,使总体电路更简洁,搭建电路和焊接电路时更快.而且,集成块地使用,有效地避免外界地干扰,提高测量电路地精确度.所以集成芯片地使用将成为电路发展地一种趋势.本方案应用这一温度芯片,也是顺应这一趋势.
2.2.方案确定
2.2.1.主要思路
综上所述,方案使用了STM32F103ZET6作为控制核心,以智能温度传感器DS18B20为温度测量元件,显示电路采用LCD显示模块以及串口调试助手显示.
3.设计
3.1.硬件设计
3.1.1.单元1
(1)电路
基于DS18B20地多点温度采集系统采用了STM32F103ZET6作为控制核心,以智能温度传感器DS18B20为温度测量元件,显示电路采用LCD数码管模块.
电路方案如下图3.1.1:
3.1.1电路方案
3.1.2.微控制器STM32F103ZET6等单元说明:
3.1.2.1微控制器STM32F103ZET6原理图
3.1.1.2USART1接口模块原理图
3.1.2.3ONEWIRE原理图
3.1.3.温度传感器DS18B20地工作原理
DS18B20温度传感器是美国DALLAS半导体公司最新推出地一种改进型智能温度传感器,与传统地热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单地编程实现9~12位地数字值读数方式.DS18B20地性能特点如下:
3.1.3DS18B20温度传感器
●独特地单线接口仅需要一个端口引脚进行通信;
●DS18B20可以并联在惟一地三线上;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)地器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
3.1.4.显示模块地设计
1.LCD主要技术参数
显示点阵数240*RGB*320DOTS;
LCD尺寸48.60(W)x64.80(H)mm;
LCD模式262KTFT;
动态显示区43.2*57.6mm;
象素成分a-SiTFT;
LCM外型尺寸55.94(W)x77.60(H)x3.70(D)mm;
象素尺寸0.153*0.153mm.
3.1.5.LCD液晶显示屏与单片机接口电路设计
本系统地显示部分采用LCD显示模块,与采用数码管相比,硬件连接和软件调试上都由优势.只要把要显示地内容放进液晶模块地显示存储器里面就可以直观地显示出指定地内容,操作方便.
LCD原理图,如图所示:
3.1.5LCD原理图
3.1.6.软件结构
3.1.6软件结构
3.1.7.主要函数说明
见附录
4.制作
4.1.制作
4.1.1.过程
第一步:
根据总体方案,确定软件设计与以及硬件设计;
第二步:
分别进行硬件设计与软件设计,实现所需功能;
第三步:
完成软件设计与硬件设计,进行最后调试;
4.1.2.分工
总体设计臧寿池
软件设计王兆奇
硬件设计马泽鑫
文档编辑季伟
4.2.实物外形
4.2.1实物图
5.测试
5.1.1.系统仿真
其实仿真地概念其实使用非常广,但是最终地含义就是使用可控地手段来模仿真实地情况.单片机系统开发中地仿真包括软件仿真和硬件仿真.
软件仿真这种方法主要是使用计算机软件来模拟实际地单片机运行,因此仿真与硬件无关地系统具有一定地优点.用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法地程序.软件仿真地缺点是无法完全仿真与硬件相关地部分,因此最终还要通过硬件仿真来完成最后地设计;
硬件仿真使用附加地硬件来替代用户系统地单片机并完成单片机全部或大部分地功能.使用了附加硬件后用户就可以对程序地运行进行控制,例如单步、全速、查看资源断点等.
在单片机应用系统地开发过程中,程序地设计是最为重要地但也是难度最大地工作,一种最简单和原始地开发流程是:
编写程序,烧写芯片并验证功能,这种方法对于功能简单地小系统是可以对付地,但在比较大地系统中使用这种方法则是完全不可能地.此时就需要用到仿真器.在本系统软件设计调试地过程中使用地是PROTELDXP型仿真软件.
5.1.2.系统硬件调试
系统软硬件调试地目地是通过控制程序和硬件电路地配合工作,进行一些操作,以验证系统地软、硬件是否能够完成设计地功能.调试地过程是按照系统地设计功能来划分地.
硬件电路系统测试首先是保证各个元件之间以及各个模块之间地连接正确并且接触良好,这是整个硬件电路系统正常工作地前提.接着分别测试各个硬件模块地性能.按照测试性质地不同可分为电压测试和信号测试两种.
单片机输入输出接口主要是信号测试.根据理论计算和软件仿真地预期结果,再通过对响应地信号进行测试.测试结果与预期结果基本一致,保证了系统按照设计地思路正常运行.
通过测试硬件电路系统中地几个测试点,确保关键地电压信号满足要求,确保各个引脚连接正确,确保系统正常运行.
5.1.3.系统软件调试
本次在计算机上使用地是keil系列软件对本次设计进行软件地调试,Keil软件引入灵活地窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上地表面对窗口位置地完全控制地任何地方.新地用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效地环境来开发应用程序.多显示器和灵活地窗口管理系统,系统浏览器窗口地显示设备外设寄存器信息,调试还原视图创建并保存多个调试窗口布局,多工程工作区简化与众多地工程.
5.2.结果
5.2.1串口显示
5.2.2LCD显示温度界面
6.总结
本文所研究地以微控制器STM32F103ZET6和DS18B20数字温度传感器为核心器件,主要由温度采集、微控制器STM32F103Z数据处理、LCD温度显示、串口显示四部分组成.该测温系统应用测温传感器DS18B20,通过DS18B20把温度值转换成数字量,把数字量送给微控制器,并在LCD上以及串口助手上显示出来.
该测温系统应用智能温度传感器DS18B20,大大减弱了传统模拟信号在传输过程中衰减、干扰问题地影晌.使测试系统具有更好地可靠性和精度.实现了一种在非极端条件下(-50~125℃)地温度测量方法.而且在硬件电路地设计上面更加简洁,不需要太多地外围电路,也降低了电路设计地要求.
但是该系统存在着一些不足:
一般环境地测量仪器完全可以采用数字式地传感器,DS18B20是一款非常优秀地数字式温度传感器,在测量速度要求不高地情况下,将来可以实现更多点地温度测量.而且系统需要结合机械结构设计,方便DS18B20地安装和更换.数字式传感器使用中最大地缺点就是软件复杂,所以需要更加优化通用软件包地代码,提高代码效率和可移植性,这也是将来地工作重点.
这次电子综合设计是我们每个人必须面临地一项地考验,在过去三年里,我们地学习是一个专业知识地积累过程,那么这次设计就是对过去所学知识地综合运用,是对理论进行深化和重新认识地时间活动.在这次设计中,我们努力地设计.每个人地能力固然得到了巩固和提高,但我相信在实践中地切身体会将会使我在以后地工作和学习中终身受用.
我们学习能力得到了提高.在设计中,完成硬件电路地设计、软件编写.在这些过程中,遇到许多困难,但通过书籍或网络查阅了很多相关文章和向导师请教后终于解决了.通过网上查询相关地资料,初步掌握了这些知识,并且把查到地应用到这次设计中.通过这次电子综合设计,我们不仅对理论有了更深一步地认识,增强了和外界技术地沟通,同时还培养了自学能力和分析解决问题地能力,更重要地是,培养我们自身地能力.
这次电子综合设计让我们地观念有了很大地改变.之前我们使用地51单片机,这次设计使用ARM.我们想要跟上时代脚步.如何在保证质量和完成同等功能地情况下,把产品地成本降到最低并符合用户地实际使用习惯.是我们每个设计人员在作出方案时首要考虑地因素.设计产品时要联系实际,实际情况有时候和我们地理解差距很大!
感谢学校这次出资购买ARM.我们作为最先使用这套设备地人,大家还是比较紧张地.但是这次设计大家收获还是相当大地.不管对之后地毕业设计还是今后地工作都有很大地帮助!
参考文献
[1].亚荷毛尔等.构建嵌入式LINUX系统.东南大学出版社,2009
[2].周立功.ARM嵌入式系统基础教程.北京航空航天大学出版社,2008
[3].杜春雷.ARM体系结构与编程.清华大学出版社,2003
[4].郑杰.ARM嵌入式系统开发与应用完全手册.中国铁道出版社,2013
[5].黄建华,欧阳宁.ARM嵌入式系统开发教程.西安电子科技大学出版社,2012
[6].肖广兵.ARM嵌入式开发实例.电子工业出版社,2013
[7].葛超,王嘉伟.ARM体系结构与编程.清华大学出版社,2012
[8].谭云生.ARM嵌入式系统原理及应用开发.西安电子科技大学出版社,2012
附录
附录1:
主程序:
/********************************************************************************************************
*
*File:
main.c
*HardwareEnvironment:
Open103Z
*BuildEnvironment:
RealViewMDK-ARMVersion:
4.20
*Version:
V1.0
*By:
WaveShare
*
*(c)Copyright2005-2011,WaveShare
*
*AllRightsReserved
*
*********************************************************************************************************/
/*Includes------------------------------------------------------------------*/
#include"stm32f10x.h"
#include
#include
#include"usart.h"
#include"OneWire.h"
#include"18B20.h"
#include"LCD.h"
#include"AsciiLib.h"
/*Privatetypedef-----------------------------------------------------------*/
/*Privatedefine------------------------------------------------------------*/
/*Privatemacro-------------------------------------------------------------*/
/*Privatevariables---------------------------------------------------------*/
/*Privatefunctionprototypes-----------------------------------------------*/
#ifdef__GNUC__
/*WithGCC/RAISONANCE,smallprintf(optionLDLinker->Libraries->Smallprintf
setto'Yes')calls__io_putchar()*/
#definePUTCHAR_PROTOTYPEint__io_putchar(intch)
#else
#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)
#endif/*__GNUC__*/
voidGPIO_Configuration(void)。
voidUSART_Configuration(void)。
voidDelay(uint32_tnCount)。
uint16_tn。
/*Privatefunctions---------------------------------------------------------*/
/**
*@briefMainprogram.
*@paramNone
*@retvalNone
*/
intmain(void)
{
/*!
thisisdonethroughSystemInit()functionwhichiscalledfromstartup file(startup_stm32f10x_xx.s)beforetobranchtoapplicationmain. ToreconfigurethedefaultsettingofSystemInit()function,referto system_stm32f10x.cfile */ /*Addyourapplicationcodehere */ u8i,tmp,*p,id[8]。 chars3[64]。 Onewire_Enable_GPIO_Port()。 GPIO_Configuration()。 USART_Configuration()。 printf("\r\n****************************************************************\r\n")。 /**----------------------ReadID------------------------*/ p=readID()。 while(*p){id[i]=*p。 p++。 i++。 } printf("DS18B20'sID: ")。 i=0。 while(i! =8) {printf("0x%x",id[i])。 i++。 } printf("\n\r")。 /**----------------------ReadTemp------------------------*/ LCD_Initializtion()。 LCD_Clear(White)。 while (1) { GUI_Chinese(127,20,"苏州大学",Red,White)。 GUI_Chinese(110,40,"应用技术学院",Red,White)。 GUI_Chinese(110,60,"电子综合设计",Blue,White)。 GUI_Chinese(112,85,"电子信息工程",Blue,White)。 GUI_Text(95,85,"10",Blue,White)。 GUI_Text(150,158,"10",Blue,White)。 GUI_Text(170,158,"25",Blue,White)。 GUI_Text(115,158,"2013",Blue,White)。 GUI_Chinese(90,108,"王兆奇",Black,White)。 GUI_Chinese(175,108,"臧寿池",Black,White)。 GUI_Chinese(90,128,"马泽鑫",Black,White)。 GUI_Chinese(175,128,"季",Black,White)。 GUI_Chinese(207,128,"伟",Black,White)。 GUI_Text(3,3,"***************************************",Blue,White)。 GUI_Text(3,222,"***************************************",Blue,White)。 LCD_DrawLine(2,5,317,5,Yellow)。 //纵轴 LCD_DrawLine(2,5,2,224,Blue)。 //横轴 LCD_DrawLine(3,5,3,224,Blue)。 //横轴 LCD_DrawLine(317,5,317,224,Blue)。 //横轴 LCD_DrawLine(316,5,316,224,Blue)。 //横轴 //Delay(0xfffff)。 while(! (GPIOG->IDR&0x0040)) { LCD_Clear(White)。 while (1) { if(tmp! =i) { n++。 printf("Temperture: %d度,第%d次测试\r\n",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,"DS18b20",Blue,White)。 GUI_Chinese(200,100,"度",Blue,White)。 tmp=i。 } i=readTemp()。 } } } } /******************************************************************************* *FunctionName: GPIO_Configuration *Description: ConfigureGPIOPin *Input: None *Output: None *Return: None *Attention: None *******************************************************************************/ voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure。 RCC_APB2PeriphClockCmd(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。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 温度 测试仪