首页 实验五数字温度传感器实验

实验五数字温度传感器实验

举报
开通vip

实验五数字温度传感器实验注:实验报告应包括:实验目的、实验仪器、实验原理、实验内容、实验步骤、实验数据处理及结果分析等。电子科技大学中山学院学生实验报告学院:机电工程专业:—课程名称:单片机原理与接口技术实验班级:姓名:学号:组别:实验名称:实验五数字温度传感器实验实验时间:、实验目的和任务1、熟悉单总线及DS18B20专感器的特性和工作原理。2、掌握DS18B20测温系统的硬件结构及程序实现方法。、实验原理简介温度传感器有热电阻、热电偶、PN结、数字温度传感器等类型。其中,数字温度传感器采用集成电路技术,将温度传感元件、数字量转换电路、...

实验五数字温度传感器实验
注:实验报告应包括:实验目的、实验仪器、实验原理、实验内容、实验步骤、实验数据处理及结果分析等。电子科技大学中山学院学生实验报告学院:机电工程专业:—课程名称:单片机原理与接口技术实验班级:姓名:学号:组别:实验名称:实验五数字温度传感器实验实验时间:、实验目的和任务1、熟悉单总线及DS18B20专感器的特性和工作原理。2、掌握DS18B20测温系统的硬件结构及程序实现方法。、实验原理简介温度传感器有热电阻、热电偶、PN结、数字温度传感器等类型。其中,数字温度传感器采用集成电路技术,将温度传感元件、数字量转换电路、数据存储器、外部通信接口等部件集成在一块芯片上,可在单片机控制下,通过申行信号线输出数字形式的温度值。DS18B20是DALLAS公司生产的单总线(1-Wire)接口的数字温度传感器,数据传输仅需一根信号线。温度测量范围为-55〜+125C,在-10〜+85C范围内,精度可达i0.5C,有效数据位数可通过程序设置为9〜12位,12位时分辨率可达0.0625C。每个DS18B20具有唯一64位序列码,多个器件可并联在一根数据线上,实现多点测温。图5.1为实验DS18B20测温电路的原理图。DS18B20的数据线DQ外加4.7K上拉电阻并与2位)单片机P3.5相连,8位共阳极LED数码管用于显示DS18B20所测温度(实际只用」.捻1*C--让哂桃幅闺N:心相ai.T14'.占-加㈤刑前R.HPJPNM-U-ptFIMpr叼prplw三rnnrn图5.1DS18B20测温电路原理图、实验内容1、在proteusk建立如图5-1所示的电路原理图。fWAEC0S2、编写程序,利用DS18B20 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 温度,并通过数码管显示。①在Keil中编写源程序。C语言参考程序参考实验报告里实验五第一个程序:/************************************************************************本程序利用DS18B20检测温度,并通过数码管显示。************************************************************************//********************************头文件声明*****************************/#include/*******************************数据类型定义****************************/typedefunsignedcharuchar;typedefcharint8;typedefunsignedintuint16;/*******************************/O口线分配*****************************/#defineSEGCODEPORTP0#defineBITCODEPORTP2sbitCS1=P3A6;//LED使能sbitDQ=P3A5;/***************************常量数组(段码 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf )声明**********************/ucharcodeSegCodeTable[尸{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};/*******************************函数原型声明****************************/voidDS18B20Init();voidWriteOneChar(ucharByte);ucharReadOneChar();voidGetTemperature();voidDispTemperature();voidDelay(intms);voiddelay_18B20(unsignedinti);/*******************************intTemperature=0;/**********************************全局变量声明****************************/主函数*******************************/voidmain(){CS1=0;while⑴{GetTemperature();〃获取当前温度DispTemperature();//显示当前温度}}/****************************DS18B20初始化函数**************************/voidDS18B20Init(){unsignedcharx=0;DQ=1;//DQ复位delay_18B20(8);//稍做延时DQ=0;〃单片机将DQ拉低delay_18B20(80);〃精确延时大于480usDQ=1;〃拉高总线delay_18B20(14);x=DQ;〃稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);}/*************************DS18B20voidWriteOneChar(uchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;//取最低位delay_18B20(5);DQ=1;//上升沿将数据送入dat>>=1;}}/*************************DS18B20字节写操作函数*************************/字节读操作函数*************************/ucharReadOneChar(){ucha门=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;//数据右移一位DQ=1;//给脉冲信号if(DQ)dat|=0x80;//按位或,取最高位delay_18B20(4);}return(dat);〃返回读到的8位数}温度获取函数***************************//********************************voidGetTemperature(){unsignedchara=0;unsignedcharb=0;unsignedchart=0;DS18B20Init();WriteOneChar(0xCC);〃跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay_18B20(100);〃thismessageisweryimportantDS18B20Init();WriteOneChar(0xCC);〃跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar();//读取温度值低位b=ReadOneChar();〃读取温度值高位Temperature=b<<4;//左移四位,扩大16倍,变为一个字节的高四位Temperature+=(a&0xf0)>>4;〃取温度值的低位的高四位,右移四位后与温度的高四位相加得到温度值//Temperature=(b<<8)+a;}/*********************************voidDispTemperature(){〃显示温度值的十位(若为温度显示函数***************************/0则不显示)5位位置SEG_CODE_PORT=SegCodeTable[Temperature/10];BIT_CODE_PORT=0xF6;〃显示在8位数码管的第Delay⑴;BIT_CODE_PORT=0xFF;〃显示温度值的个位(带小数点)SEG_CODE_PORT=SegCodeTable[Temperature%10];6位位置BIT_CODE_PORT=0xF7;〃显示在8位数码管的第Delay(1);BIT_CODE_PORT=0xFF;}/*********************************软件延时函数***************************/41voidDelay(intms){uint16i;do{i=790;while(--i);〃延时1ms(STC12C5A60S2,11.0592MHzc51代码优化级别设为5)}while(--ms);}/***********ds18b20延迟子函数(晶振12MHz)*******/voiddelay_18B20(unsignedinti){while(i--);程序结束****************************/}/***********************************②在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理成HEX文件。将HEX文件导入到proteu颜目单片机模块里,仿真运行,成功运行后再进行以下操作调整数字温度传感器里的温度数字,查看数码管显示是否正确。6’而R,,由t.;4工-■O十**、■二l<3平.i-E:-iWl3、在步骤2的基础上,设置警报数值,超过32C,蜂鸣器报警,并且在点阵管里显示警报图案。将程序写到下方:/************************************************************************本程序利用DS18B20检测温度,并通过数码管显示************************************************************************//********************************头文件声明*****************************/#include/*******************************数据类型定义****************************/typedefunsignedcharuchar;typedefcharint8;typedefunsignedintuint16;/*******************************I/O口线分配*****************************/#defineSEGCODEPORTP0#defineBIT_CODE_PORTP2sbitCS1=P3A6;/微码管使能sbitCS2=P3A7;//led®能sbitBUZZER=P1A0;sbitDQ=P3A5;/***************************常量数组(段他表)声明**********************/ucharcodeSegCodeTable□"{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};ucharcodeledcode□"{0xFF,0xE7,0xE7,0xE7,0xE7,0xFF,0xE7,0xFF};/*******************************函数原型声明****************************/voidDS18B20Init();voidWriteOneChar(ucharByte);ucharReadOneChar();voidGetTemperature();voidDispTemperature();voidDelay(intms);voiddelay_18B20(unsignedinti);ucharwarming();voidbuzzer();voiddispled();/*******************************全局变量声明****************************/intTemperature=0;/**********************************主函数*******************************/voidmain(){while(1){GetTemperature();/欧取当前温度DispTemperature();//显示当前温度buzzer();displed();}}/****************************DS18B20初始化函数**************************/voidDS18B20Init(){unsignedcharx=0;DQ=1;〃DQ复位delay_18B20(8);〃稍做延时DQ=0;//单片机将DQ拉低delay_18B20(80);//精确延时大于480usDQ=1;〃拉高总线delay_18B20(14);x=DQ;〃稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);}字节写操作函数*************************//*************************DS18B20voidWriteOneChar(uchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;//取最低位delay_18B20(5);DQ=1;//上升沿将数据送入dat>>=1;/*************************DS18B20字节读操作函数*************************/ucharReadOneChar(){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;//数据右移一位DQ=1;//给脉冲信号if(DQ)dat|=0x80;//按位或,取最高位delay_18B20(4);}return(dat);//返回读到的8位数}温度获取函数***************************//********************************voidGetTemperature(){unsignedchara=0;unsignedcharb=0;unsignedchart=0;DS18B20Init();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换delay_18B20(100);//thismessageisweryimportantDS18B20Init();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar();/读取温度值低位b=ReadOneChar();/犊取温度值高位Temperature=b<<4;/左移四位,扩大16倍,变为一个字节的高四位Temperature+=(a&0xf0)>>4;//取温度值的低位的高四位,右移四位后与温度的高四位相加得到温度值//Temperature=(b<<8)+a;}温度显示函数***************************//*********************************voidDispTemperature(){//显示温度值的十位(若为0则不显示)CS1=0;SEG_CODE_PORT=SegCodeTable[Temperature/10];BIT_CODE_PORT=0xF6;〃显示在8位数码管的第5位位置Delay(1);BIT_CODE_PORT=0xFF;//显示温度值的个位(带小数点)SEG_CODE_PORT=SegCodeTable[Temperature%10];BIT_CODE_PORT=0xF7;〃显示在8位数码管的第6位位置Delay(1);BIT_CODE_PORT=0xFF;CS1=1;}/*********************************软件延时函数***************************/voidDelay(intms){uint16i;do{i=790;while(--i);}while(--ms);}/***********ds18b20延迟子函数(晶振12MHz)*******/voiddelay_18B20(unsignedinti){while(i--);}/**********************报警函数***************************/ucharwarming(){ucharflag,i=0;//温度控制在1830|Temperature<18)flag=1;elseflag=0;returnflag;}voidbuzzer(){uchari;i=warming();if(i==1)BUZZER=1;elseBUZZER=0;}voiddispled(){ucha门,flag,count=0;flag=warming();CS2=0;while(flag==1){for(i=0;i<8;i++){BIT_CODE_PORT=0xf0+i;SEG_CODE_PORT=ledcode[i];delay_18B20(1);}count++;if(count>100)break;};CS2=1;}产*********************************程序结束****************************/四、实验小结本次实验我们学习到了新元件DS18B20传感器,了解了它的工作特性与原理。通过软硬件的结合,实现温度的获取与显示,在温度报警时由于c语言基础不够扎实,导致温度显示有些闪烁。在今后的学习中我将加强c语言的学习,强化编程逻辑。注:实验报告应包括:实验目的、实验仪器、实验原理、实验内容、实验步骤、实验数据处理及结果分析等。
本文档为【实验五数字温度传感器实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
captmumuma
精通药剂学
格式:doc
大小:359KB
软件:Word
页数:11
分类:
上传时间:2022-01-31
浏览量:0