课程设计报告-模板.doc

上传人:飞****2 文档编号:56296184 上传时间:2022-11-01 格式:DOC 页数:13 大小:208.50KB
返回 下载 相关 举报
课程设计报告-模板.doc_第1页
第1页 / 共13页
课程设计报告-模板.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《课程设计报告-模板.doc》由会员分享,可在线阅读,更多相关《课程设计报告-模板.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计 关键词:单片机,数字控制,温度计, DS18B20, 89s522 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,

2、主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89C51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。3内容及要求:3.1 设计内容1)利用数字温度传感器DS18B20设计环境温度检测器;2)利用给定的数据采集板,完成环境温度的数据采集工作;3)完成信号的数字滤波,环境温度显示等程序设计工作。3.2设计要求1)装置的结构和电路原理图。2)调试过程,说明发现的向题及处理过程。3)分析存在的问题。4)收获与改进方案。4总体计设计方案 4.1方案提出考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所

3、以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。4.2总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用4位LED数码管实现温度显示。主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡ISP接口5系统工作基本原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如

4、下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddDS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图2所示64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的

5、序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式

6、,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出

7、该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1 DS18B20温度转换时间表 DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算

8、CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生

9、的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000

10、 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数

11、据6系统整体硬件电路(原理图)主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等,如图所示。5系统软件设计5.1程序设计组成:系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。5.2程序代码:/*程序名称:DS18B20数码管温度显示简要说明:开机时对DS18B20进行检测,如果DS18B20检测不正常则关闭显示; 四位数码管显示温度,若高位为0则隐藏;*/#include #define uint unsigned int#define uchar unsigned char /宏定义sbit DQ = P33;

12、/定义DS18B20端口DQsbit DIN = P07; /小数点uchar presence;uchar code LEDData = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;uchar data temp_data2= 0x00,0x00;uchar data display5 = 0x00,0x00,0x00,0x00,0x00;uchar code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09

13、,0x09;bit flash=0; /显示开关标记/*延时子程序*/void Delay(uint num)while( -num );/*初始化DS18B20*/Init_DS18B20(void) DQ = 1; /DQ复位Delay(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay(90); /精确延时大于480usDQ = 1; /拉高总线Delay(8);presence = DQ; /如果=0则初始化成功 =1则初始化失败Delay(100);DQ = 1; return(presence); /返回信号,0=presence,1= no presence/*读字节

14、子程序*/ReadOneChar(void) /读一个字节uchar i = 0;uchar dat = 0;for (i = 8; i 0; i-) DQ = 0; / 给脉冲信号 dat = 1; DQ = 1; / 给脉冲信号 if(DQ) dat |= 0x80; Delay(4); return (dat);/*写字节子程序*/WriteOneChar(uchar dat) /写一个字节uchar i = 0;for (i = 8; i 0; i-) DQ = 0; DQ = dat&0x01; Delay(5); DQ = 1; dat=1; /*读温度子程序*/Read_Temp

15、erature(void) /读取温度 Init_DS18B20(); if(presence=1) flash=1; else flash=0; WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 temp_data0 = ReadOneChar();/温度低8位 temp_data1 = ReadOneChar();/温度高8位 /*显示子程序*/Disp_Tempera

16、ture() /显示温度 uchar n=0; display4=temp_data0&0x0f; display0=ditabdisplay4; /查表得小数位的值 display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4); display3=display4/100; display1=display4%100; display2=display1/10; display1=display1%10; if(!display3) /高位为0,不显示 display3=0x0a; if(!display2) /次高位为0,不显示 display2=0x0

17、a; P0 =LEDDatadisplay0; /显示小数位P2 = 0xf7;Delay(250);P0 =LEDDatadisplay1; /显示个位DIN = 0; /小数点P2 = 0xfb;Delay(250);P0 =LEDDatadisplay2; /显示十位P2 = 0xfd;Delay(250);P0 =LEDDatadisplay3; /显示百位P2 = 0xfe;Delay(250);P2 = 0xff; /关闭显示/*主函数*/void main(void)while(1) Read_Temperature(); if(flash=0) Disp_Temperature

18、(); else P2 = 0xff ; /DS18B20不正常,关闭显示 /*END*/8系统调试结果 系统显示不正常.9结果分析 可能由于代码段数码管显示程序存在问题导致工作异常10总结 通过本次课设,大致了解了单片机与传感器的基本应用,初步掌握一些专业知识.在设计过程中,通过查阅大量资料达到学习的目的.虽然实验不十分成功,但是我想在以后的学习中会明确学习重点.11参考文献1 杨兴瑶 .实用电子电路500例M .化学工业出版社 ,19962 阎石 .数字电子技术基础 .高等教育出版社 ,19973 庞振泰、王采斐、屈宗明 (译).光电接口器件手册 .清华大学出版社 ,19984 何希才 .常用集成电路简明速查手册 .国防工业出版社 ,2000

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁