课程设计基于51单片机的ds18b20数字温度计的设计_第1页
课程设计基于51单片机的ds18b20数字温度计的设计_第2页
课程设计基于51单片机的ds18b20数字温度计的设计_第3页
课程设计基于51单片机的ds18b20数字温度计的设计_第4页
课程设计基于51单片机的ds18b20数字温度计的设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录第一章 设计目的22第二章 设计要求22第三章 设计内容22第四章 系统设计方案234.1 方案选择234.2系统组成24第五章 系统硬件设计25 5.1 DS18B20介绍255.2 DS18B20初始化265.3部分电路设计26 5.3.1晶振设计26 5.3.2报警电路设计27第六章 原理图、仿真与实物276.1 原理图276.2 仿真图286.3 实物296.4 源程序清单29第七章 总结34第八章 参考文献35第一章 设计目的通过该课程设计使学生进一步了解和加深智能化仪器设计的一般原则;熟练掌握智能化仪器与装置的软、硬件设计方法;掌握仪器的软件调试及软硬件联合统调方法与技能。掌握仪器的接口技术;熟练掌握仪表总线的工作原理、设计步骤、编程及调试;掌握VC或汇编设计软件的编程与调试方法。1、巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。2.、培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。3、通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。第二章 设计要求 1、温度测试基本范围0100。 2、精度误差小于1。 3、LED数码管显示。4、实现报警提示。第三章 设计内容基于DS18B20的温度测量系统数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即A/D转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED显示出来给人观察。这样就完成了数字温度计的基本测温功能,他是基于AT89S51单片机,采用数字温度传感器DS18B20,利用DS18B20不需要A/D转换,课直接进行温度采集显示,报警的数字温度计设计。包括传感器数据采集电路,温度显示电路,报警电路,单片机主板电路等组成。第四章 系统设计方案4.1 方案选择提及到温度的检测,我们首先会考虑传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试也复杂,制作成本高。因此,本数字温度计设计采用智能温度传感器DS18B20作为检测元件,测温范围为-55C至+125C,最大分辨率可达0.0625C。DS18B20可以直接读出被测量的温度值,而采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。按照系统设计功能的要求,确定系统由三个模块组成:主控制器STC89C51,温度传感器DS18B20,驱动显示电路。总体电路框图如下:图4-1 系统总体框图该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S52 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。方案的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单。4.2系统组成本课题以是89C52单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。系统框图如图4-2所示。图4-2 系统基本方框图第五章 系统硬件设计5.1 DS18B20介绍DS18B20引脚如图4-3所示。图4-3 DS18B20引脚图数字温度传感器DS18B20是一种体积小、适用于多种场合、且适用电压更宽、更经济器件。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。TO-92封装的DS18B20的引脚排列见图4-4图4-4 DS18B20的引脚分布图DS18B20详细引脚功能描述: (1)、GND:地信号。(2)、DQ:数据输入/输出引脚。开漏单总线接口引脚。(3)、VDD:可选的VDD引脚。当工作于寄生电源时,此引脚必须接地。 DS18B20测温原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。5.2 DS18B20初始化图 5-2 DS18B20初始化流程图 5.3部分电路图设计 5.3.1 晶振设计80C52单片机内部带有时钟电路,只需在片外通过XTAL1和XTAL2引脚接入定时控制元件(12MHZ晶振和电容)即可构成一个稳定的自激振荡器。XTAL1和XTAL2分别是80C52内部高增益反响放大器的输入端和输出端 时钟频率为 12MHz.此部分为其使能和复位电路,该电路采用上电自动复位方式,通过复位电容C1的充电来实现,接通电源就实现了系统的复位初始化。5.3.2 报警电路设计 单片机一个引脚控制蜂鸣器,当温度超过设定的值时,他就可以报警,下图为PNP型三极管给低电平即可以实现报警。第六章 原理图、仿真与实物6.1 原理图6.2 仿真图图8-1 仿真16.3 实物 如下面包板实物图显示26.38和29.13度176.4 源程序清单:/DS18B20 的读写程序,数据脚P2.5 /温度传感器18B20 汇编程序,采用器件默认的12 位转化/最大转化时间750 微秒,显示温度-55 到+125 度,显示精度/为0.1 度,显示采用4 位LED 共阳显示测温值/P0 口为段码输入,P20P24 为位选/*/#include reg52.h#include intrins.h /_nop_();延时函数用#define dm P0 /段码输出口#define uchar unsigned char#define uint unsigned intsbit DQ=P25; /温度输入口sbit w0=P23; /数码管4sbit w1=P22; /数码管3sbit w2=P21; /数码管2sbit w3=P20; /数码管1sbit beep=P17; /蜂鸣器和指示灯sbit set=P10; /温度设置切换键sbit add=P11; /温度加sbit dec=P12;int temp1=0; /显示当前温度和设置温度的标志位为0 时显示当前温度uint h;uint temp;uchar r;uchar high=40,low=15;uchar sign;uchar q=0;uchar tt=0;uchar scale;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小数断码表uchar code table_dm12=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阴LED 段码表0 1 2 3 4 5 6 7 8 9 不亮 -uchar table_dm1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /个位带小数点的断码表uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00; /显示单元数据,共4 个数据和一个运算暂用/*11us 延时函数*/void delay(uint t)for (;t0;t-);void scan()int j;for(j=0;j0;i-)DQ=1;_nop_();_nop_(); /从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0x01; /最低位移出delay(6); /66 usval=val/2; /右移1 位DQ=1;delay(1);/*DS18B20 读1 字节函数*/从总线上取1 个字节uchar read_byte(void)uchar i;uchar value=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0x80;delay(6); /66 usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位delay(200);write_byte(0xcc); /发命令write_byte(0x44); /发转换命令ow_reset();delay(1);write_byte(0xcc); /发命令write_byte(0xbe);temp_data0=read_byte(); /读温度值的第字节temp_data1=read_byte(); /读温度值的高字节temp=temp_data1;temp6348) / 温度值正负判断tem=65536-tem;n=1; / 负温度求补码,标志位置1display4=tem&0x0f; / 取小数部分的值display0=ditabdisplay4; / 存入小数部分显示值display4=tem4; / 取中间八位,即整数部分的值display3=display4/100; / 取百位数据暂存display1=display4%100; / 取后两位数据暂存display2=display1/10; / 取十位数据暂存display1=display1%10; /个位数据r=display1+display2*10+display3*100;/符号位显示判断/if(!display3)display3=0x0a; /最高位为0 时不显示if(!display2)display2=0x0a; /次高位为0 时不显示if(n)display3=0x0b; /负温度时最高位显示-void BEEP()if(r=high&r129)|r128)horl=256-horl;n=1;display3=horl/100;display3=display3&0x0f;display2=horl%100/10;display1=horl%10;display0=0;if(!display3)display3=0x0a; /最高位为0 时不显示if(!display2)display2=0x0a; /次高位为0 时不显示if(n)display3=0x0b; /负温度时最高位显示-/*按键查询程序*/void keyscan()int temp1; /最高温度和最低温度标志位if(set=0)while(1)delay(500);/消抖if(set=0)temp1+;while(!set)scan();if(temp1=1)xianshi(high);scan();if(add=0)while(!add)scan();high+=1;if(dec=0)while(!dec)scan();high-=1;if(temp1=2)xianshi(low);if(add=0)while(!add)scan();low+=1;if(dec=0)while(!dec)scan();low-=1;scan();if(temp1=3)temp1=0;break;/*主函数*/void main()dm=0x00; /初始化端口w0=0;w1=0;w2=0;w3=0;for(h=0;h4;h+) /开机显示0000displayh=0;ow_reset(); /开机先转换一次write_byte(0xcc); /Skip ROMwrite_byte(0x44); /发转换命令for(h=0;h100;h+) /开机显示0000scan();while(1)if (temp1=0)work_temp(read_temp(); /处理温度数据BEEP();scan(); /显示温度值keyscan();elsekeyscan();第七章 总结在接下来的这四周,我们在孙继卫老师的指导下进行了更有意义的课程设计,题目是基于DS18B20的温度测量系统,这个系统要求能够比较精确的测量除温度,并且在温度超过界限时可以自动报警。这次我和李浩楠同学一组,我们配合得比较默契,很快就完成了原理图的绘制,由于需要特定的软件进行画图,所以花费了一点时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论