温度检测设计论文

上传人:206****923 文档编号:43218455 上传时间:2018-06-04 格式:DOCX 页数:28 大小:922.87KB
返回 下载 相关 举报
温度检测设计论文_第1页
第1页 / 共28页
温度检测设计论文_第2页
第2页 / 共28页
温度检测设计论文_第3页
第3页 / 共28页
温度检测设计论文_第4页
第4页 / 共28页
温度检测设计论文_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《温度检测设计论文》由会员分享,可在线阅读,更多相关《温度检测设计论文(28页珍藏版)》请在金锄头文库上搜索。

1、温度检测设计论文温度检测设计论文小组成员及任务分配:小组成员及任务分配:郝郝 鹏鹏 14036690771403669077(编写论文)(编写论文)卓应广卓应广 14036690171403669017(编程)(编程)贾渊杰贾渊杰 14036690801403669080(查找资料(查找资料, ,整理论文)整理论文)民生学院测控技术与仪器民生学院测控技术与仪器 第一章:前言第一章:前言温度检测系统可以通过 DS18B20 温度传感器对温度进行检测,并通过数码 管显示,同时利用 I/O 口与单片机连接,实现温度采集,数据处理,数据调整, 温度显示等功能。该系统的需求分析如下需求分析名称温度检测显

2、示控制器目的对室内外温度进行检测并显示输入室内外温度输出八段共阳极数码管功能(1)接受来自温度传感器 DS18B20 信号,进行 A/D 转换、滤波、放大并送 入单片机(2)对温度信号进行分析、运算和处理(3)将处理得到的结果通过八段共阳极数码管显示性能测温范围-55+125,在-10+85范围内精确度为+-5 第二章:总体设计第二章:总体设计DS18B20DS18B20 的测温原理的测温原理用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内 对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对 应于-55的一个值。如果计数器在门周期结束前达到 0,则温度寄存器(

3、同样 被预置到-55)的值增加,表明所测量的温度大于-55。同时,计数器被复 位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感 温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束, 将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时 获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的值来 实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器得 值和每一度的计数值。温度测量电路的方框图如图总体方案设计总体方案设计温度检测电路控制器采用 IAP15F2K61S2(作 89C52 用)新片,温 度传感器采用 DS1

4、8B20,用三位 LED 共阳极数码管通过锁存器以串行输 入并行输出形式连接单片机实现温度显示功能硬件及软件设计的考虑硬件及软件设计的考虑由于单片机串口有限,因此通过锁存器实现串行输入并行输出节省串口,程序编写时应先调用 led 数码管所连接的寄存器,进而调用数码管。 第三章:硬件电路设计:第三章:硬件电路设计:最小系统电路最小系统电路IAP15F2K61S2LED 数码管显示DS18B20温度传感器时钟振荡锁存器IAP15F2K61S2 属于 IAP15 系类型号单片机,该系列单片机有 3 个 16 位可重转 载普通定时器/计数器分别是定时器/计数器 0,定时器/计数器 1 和定时器/计 数

5、器 0,掉电唤醒专用定时器;5 个外部中断 INT0/INT1/Error!Error!/Error!Error!/Error!Error!;一组高速异步串行口;一组高速同步串行通 信端口 SPI;个数据指针 DPTR;外部数据总线等功能。上图为单片机内部结构图单片机电源电路单片机电源电路上图为单片机电源电路LEDLED 八段共阳极数码管显示电路八段共阳极数码管显示电路为八段共阳极数码管节省串口通过锁存器实现串行输入,并行输出。同时为了 灵活使用,与其他开发板不同八个数码管阳极没有接电源 VCC 而是通过锁存器 连接单片机,单片机输出高电平实现八个数码管的共阳极连接。在使用时,应 先通过 P2

6、 口选择模块连接的锁存器,在通过 P0 口输出数据来控制数码管。DS18B20DS18B20 数字温度传感器电路数字温度传感器电路DS18B20 具有独特的单线接口仅需一个端口引脚与单片机 P1.4 进行通讯。该数 字温度传感器无需另外接电源,可通过数据线供电供电范围 3.0V5.5V。18B20 传感器测温范围在-55 度到 125 度,并在-10 度到 85 度范围内精准度在+-5 度图 1 是表示 DS18B20 的方框图。64 位只读存储器储存器件的唯一片序列号。 高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输 出的数据。除此之外,高速暂存器提供一个直接的温度报警

7、值寄存器(TH 和 TL),和一个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为 9,10,11 或 12 位。TH,TL 和配置寄存器是非易失性的可擦除程序寄存器 (EEPROM),所以存储的数据在器件掉电时不会消失。DS18B20 通过达拉斯公司独有的单总线协议依靠一个单线端口通讯。当全部器 件经由一个 3 态端口或者漏极开路端口(DQ 引脚在 DS18B20 上的情况下)与总 线连接的时候,控制线需要连接一个弱上拉电阻。在这个总线系统中,微控制 器(主器件)依靠每个器件独有的 64 位片序列号辨认总线上的器件和记录总线 上的器件地址。由于每个装置有一个独特的片序列码,总线可以连

8、接的器件数目 事实上是无限的。单总线协议,包括指令的详细解释和“时序”见单总线系统 节。DS18B20 的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于 高电平状态,DQ 与上拉电阻连接通过单总线对器件供电。同时处于高电平状态 的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能 量给器件。这种提供能量的形式被称为“寄生电源”。作为替代选择,DS18B20 同样可以通过 VDD 引脚连接外部电源供电使用时应注意使用时应注意:SKIPSKIP ROMROM CChCCh ( (忽略忽略 ROMROM 指令指令) )这条指令允许总线控制器不用提供 64 位 ROM

9、编码就使用功能指令。当只有一 只从机在总线上时,无论如何,忽略 ROM 指令之后只能跟着发出一条读取暂存器指令BEh。READREAD SCRATCHPADSCRATCHPAD BEhBEh (读暂存器指令)(读暂存器指令)这条命令读取暂存器的内容。读取将从字节 0 开始,一只进行下去,知道第 9 字节(字节 8,CRC)读完,如果不想读完所有字节,控制器可以在任何时间发 出复位命令来中止读取。CONVERTCONVERT T T 44h44h ( (温度转换指令温度转换指令) )这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果 数据以 2 个字节的形式被存储在高速暂存器中

10、,而后 DS18B20 保持等待状态。 在温度转换期间(tconv),必须在 10us(最多),内给单总线一个强上拉,见 DS18B20 供电节。以上是该电路程序设计时所需用到的指令。电路参考来源:蓝桥杯内部学习资料电路参考来源:蓝桥杯内部学习资料 第四章:软件程序设计第四章:软件程序设计温度检测程序初步的主要思路以框图形式表示。如下该温度检测程序主要包括主程序、初始化程序、延时程序、显示程序、温度读 取程序、写字节程子程序序、读字节子程序以及头文件定义位定义以及函数声 明等部分。初始化程序主要包括系统初始化和温度传感器 DS18B20 初始化。程序初始化主 要为关闭蜂鸣器,关闭 LED 灯,

11、选中每个八段数码管并关闭。温度传感器 DS18B20 初始化为将 IO 口拉低再拉高使 DS18B20 准备好操作。void AllInit(void) 程序初始化ds18b20 初始化数据初步处理读取 ds18b20 数据温度显示数据进一步处理得到温度P2=0xA0; P0=0x00; P2=0x80; P0=0xFF; P2=0xC0; P0=0xFF; P2=0xE0; P0=0xFF; void ds18b20_init() DQ=0;Delay500us(); DQ=1;Delay500us();延时程序有 ms 级延时程序和 us 级延时程序,因为延时程序使用较多,因此将 其分位

12、100us 延时、500us 延时和可输入 ms 延时。void Delay100us()unsigned char i, j;_nop_();_nop_();i = 2;j = 15;dowhile (-j);while (-i); void Delay500us()unsigned char i, j;_nop_();_nop_();i = 6;j = 93;dowhile (-j); while (-i);void delayms(int ms) int i,j;for(i=ms;i0;i-)for(j=845;j0;j-);温度读取程序主要为发送温度转换指令,发送读取暂存器指令,调用读

13、字节子程序读取 DS18B20 发送的温度数据,并对数据进行初步转换uchar temget()uchar sum,low,high;ds18b20_init();write(0xCC);write(0x44);Delay500us();ds18b20_init();write(0xCC);write(0xBE);low=read();high=read();sum=high4);return sum;写字节子程序写字节子程序。写字节步骤为先将总线拉低,发送数据,之后再将总线拉 高以准备下次数据传送。注:数据传送时应一位一位传送。void write(uchar dat) uchar i;fo

14、r(i=0;i=1;读字节子程序。读字节步骤主要为线将总线拉低,按位读取数据,将数据 总线拉高。再将所读取的位数据顺序移至高位。uchar read() uchar i,dat;for(i=0;i=1;DQ=1;if(DQ=1)dat=dat|0x80;Delay100us();return dat;显示程序。数码管显示要先调用数码管阳极所在锁存器以选中要一个数码 管,再调用数码管阴极所在锁存器,之后对数据进行传送。注:因为每个数码 管显示的数据不同,因此要对数码管进行逐个显示。void display1(void) P2=0xC0; P0=0x01; P2=0xE0; P0=tabyi;de

15、layms(1);P2=0xC0; P0=0x02; P2=0xE0; P0=taber;delayms(1);P2=0xC0; P0=0x04;P2=0xE0; P0=tabsan;delayms(1);P2=0xC0; P0=0x08;P2=0xE0; P0=tabsi;delayms(1);void display2(void) P2=0xC0; P0=0x10; P2=0xE0; P0=tabwu; delayms(1);P2=0xC0; P0=0x20; P2=0xE0; P0=tabliu;delayms(1);P2=0xC0; P0=0x40; P2=0xE0; P0=tabqi

16、;delayms(1);P2=0xC0; P0=0x80; P2=0xE0; P0=tabba;delayms(1);主程序。主程序功能为,对数码管进行初始化,调用初始化程序对单片机 进行厨师换,串联温度读取程序并对读取的温度进行进一步处理,并调用显示 程序对最后得到的温度进行显示。void main() uchar wendu;AllInit();yi=11;er=11;san=11;si=11;wu=11;liu=0;qi=0;ba=0;while(1) wendu=temget(); liu=wendu/100;qi=wendu%100/10;ba=wendu%10;display1();display2();头文件,位定义以及函数声明部分头文件,位定义以及函数声明部分#define ucha

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号