最新毕业设计——基于单片机的数字温度计的设计.doc
-
资源ID:48778196
资源大小:462.54KB
全文页数:26页
- 资源格式: DOC
下载积分:9金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
最新毕业设计——基于单片机的数字温度计的设计.doc
基于单片机的数字温度计的设计【摘要】温度是工业生产中常见的和最基本的参数之一,在生产过程中常需对温度进行检测和监控。采用微型机进行温度检测、显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用。许多工业环境对多点温度进行监控,一般需要测量几十个点以上。本设计以STC89C51单片机为核心,采用温度传感器DS18B20,可以很容易的直接读取被测温度值。该系统具有读数方便、测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确,以及需要多点测温的场所。【关键词】:单片机,STC89C51,DS18B20,数字显示,测温ABSTRACTTemperature is common in industrial production and one of the most basic parameters in the production process often required to detect and monitor the temperature.The temperature detected by microcomputer, display, information storage and real-time control, for improving production efficiency and product quality, saving energy has an important role.Many industrial environment for monitoring of multi-point temperature, the general need to measure several dozen points or more.The design uses a temperature sensor DS18B20, can easily be read directly measured temperature, and its built-in A / D, use SCM STC89C51.It has easy reading, accurate, and temperature, the output temperature digital display, mainly used for more accurate temperature measurement and the need for multi-point temperature of the place.【KEY WORD】:SCM,STC89C51,DS18B20,Digital Display,Temperature目 录引言1一、总体结构1(一)设计思想1(二) 总体框架2二、硬件电路的设计2(一)主控制器2(二)测温电路4 1温度传感器DS18B204 2. DS18B20工作原理5 3. DS18B20的性能特点5 4. DS18B20内部结构5 5. DS18B20温度传感器与单片机的接口电路5(三)复位电路6(四)时钟电路7(五)显示电路7三、系统程序的设计9(一)主程序9(二)读出温度子程序10(三)温度转换命令子程序10(四)计算温度子程序10(五)显示数据刷新子程序11四. 总结12五. 附录13(一)原理图13(二)PCB图14(三)程序清单15参考文献24致谢25引言随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研等各个领域。在生产过程中常需对温度进行检测和监控,采用微型机进行温度检测、显示、信息存储及实时控制,对于提高生产效率和产品质量、节约能源等都有重要的作用。考虑到许多工业环境中对多点温度进行监控,一般需要测量几十个点以上。传统温度计功能单一、精度低、不能满足数字化时代的需求。本文将介绍一种基于单片机控制的数字温度计,它具有读数方便,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确,以及需要多点测温的场所。本设计采用温度传感器DS18B20,可以很容易的直接读取被测温度值,其内置了A/D。选用单片机STC89C51,它是一种高性能CMOS 8位微控制器,具有8k在系统可编程Flash存储器。系统整体硬件电路包括测温电路、显示电路、复位电路、时钟电路。本设计介绍了温度计的测量和控制之间的关系:检测是控制的基础和前提,而检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。不仅如此,检测还涉及国计民生各个部门,可以说在所有科学技术领域无时不在进行检测。科学技术的发展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。目前的温度计中传感器是它的重要组成部分,它的精度灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。基于单片机的数字温度计的设计涵盖了电路分析基础、电子测量、模拟电路、数字电路、单片机基础及应用等学科的理论知识和必要的实践操作能力,同时还考察利用Protel等软件对电路的仿真与综合分析的能力。一、总体结构(一)设计思想方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件,利用其感温作用,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将温度显示出来。这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二:该方案选用温度传感器,许多单片机的设计都用到传感器,所以这很容易想到。采用温度传感器DS18B20,这种传感器可以很容易读取被测温度值,进行转换,就可以满足设计要求,而且采用三线制与单片机相连,减少了外部的硬件电路,具有成本低,易使用的特点。从上述两种方案,可以看出方案二的电路比较简单,软件设计也较简单,所以采用方案二。(二)总体框架该系统利用STC89C51芯片控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度,并可以根据需要设置上限报警温度。系统整体硬件电路包括测温电路、显示电路、主控电路,如图1-1所示。显示电路单片机时钟电路测温电路主控电路复位电路 图1-1 总体框架图二、硬件电路的设计(一)主控制器本次设计采用的是单片机STC89C51,如图2-1所示。 图2-1 STC89C51管脚图 芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口。左边那列逆时针数起,依次为1,2,3,4.40,其中芯片的1脚顶上有一个凹点。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。 STC89C51单片机有4组8位可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控制电机、交通灯等,开发产品时就是利用这些可编程引脚来实现所需功能。P0口:8位双向I/O口线,名称为P0.0-P0.7;P1口:8位准双向I/O口线,名称为P1.0-P1.7;P2口:8位准双向I/O口线,名称为P2.0-P2.7;P3口:8位准双向I/O口线,名称为P3.0-P3.7。由于本次设计主要利用了单片机的P1口和P3口,所以对这两个I/O口做详细的介绍。图2-2为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至“1”,此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。 图2-2 P1口结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。作为输入口使用时,有两种情况:首先,读锁存器的内容,进行处理后再写到锁存器中,这种操作即读修改写操作,JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。其二,读P1口线状态时,打开三态门G2,将外部状态读入CPU。P3口的电路如图2-3所示,P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况。P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。P3口的第二功能各管脚定义如下: P3.0:串行输入口(RXD); P3.1:串行输出口(TXD);P3.2:外中断0(INT0);P3.3:外中断1(INT1);P3.4:定时/计数器0的外部输入口(T0);P3.5:定时/计数器1的外部输入口(T1);P3.6:外部数据存储器写选通(WR);P3.7:外部数据存储器读选通(RD)。对于第二功能为输出引脚,当作I/O口使用时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。而当作第二功能口线使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为I/O口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。 图2-3 P3口结构图 (二)测温电路1.温度传感器DS18B20由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。产品的主要技术指标:(1)测量范围:-55+125;(2)测量精度:0.5;(3)反应时间500ms。2.DS18B20工作原理温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节),再通过单片机发出命令送给显示器。它的输出脚I/O直接与单片机相连,并接一个上拉电阻,传感器采用外部电源供电。传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。3.DS18B20的性能特点(1)采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);(2)测温范围为-55+125,测量分辨率为0.0625;(3)内含64位经过激光修正的只读存储器ROM;(4)适配各种单片机或系统机;(5)用户可分别设定各路温度的上、下限;(6)内含寄生电源。4.DS18B20内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列,如图2-4所示。 图2-4 DS18B20引脚分布图5.DS18B20温度传感器与单片机的接口电路 本次数字温度计的设计采用的就是外部电源供电方式,其连接方式如图2-5所示。 在外部电源供电方式下,DS18B20工作电源由VCC引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单。 图2-5 DS18B20与单片机的接口连接图(三)复位电路为确保两点间温度控制系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般电路正常工作需要供电电源为5V±5%,即4.755.25V。复位是单片机的初始化操作,其目的是使CPU及各专用寄存器处于一个确定的初始状态。如:把PC的内容初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位以使其恢复正常工作状态。RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系统设计采用上电复位,如图2-6所示。上电复位是直接将RST端通过电阻接高电平来实现单片机的复位。 图2-6 复位电路连接图(四)时钟电路单片机的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本系统设计采用内部振荡方式,如图2-7所示。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。 图2-7 时钟电路(五)显示电路显示电路采用共阳数码管显示。数码管分为共阳型和共阴型,共阳极型就是发光管的正极都连在一起 ,作为一条引线,负极分开。八段数码发光管就是8个发光二极管组成的,在空间排列成为8字型带个小数点,只要将电压加在阳极和阴极之间相应的笔画就会发光。8个发光二极管的阳极并接在一起,8个阴极分开,因此称为共阳八段数码管。数码管的管脚分配如图2-8所示。图2-8 数码管的管脚分配其中:1-数码管百位;2-数码管十位;3-数码管个位;4-数码管小数位。从STC89C51的P1口输出段码,列扫描用P3.0-P3.3口来实现。数码管的段码与单片机的管脚连接分别为:P1.7 - dp;P1.6 - g;P1.5 - f;P1.4 - e;P1.3 - d;P1.2 - c;P1.1 - b;P1.0 - a;数码管位码与单片机的管脚连接分别为:P3.0 - 数码管小数位P3.1 - 数码管个位P3.2 - 数码管十位P3.3 - 数码管百位驱动用9012三极管,它是一种低频小功率的普通PNP型硅管,TO-92标准封装,这个管子常在收音机以及各种放大电路中看到。 9012参数: 集电极电流Ic:Max-500mA工作温度:-55到+150集电极-基极电压:-40V显示电路图如图2-9所示。 图2-9 显示电路图三、系统程序的设计 (一)主程序主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:1.数码管显示程序:向数码的显示送数,控制系统的显示部分。2.温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。 3.报警子程序:进行温度上下限判断及报警输出。4.中断设定程序:实现设定上下限报警功能。 主程序流程如图3-1所示。 图3-1主程序流程图(二)读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。其流程如图3-2所示。发DS18B20复位命令NCRC校验正确?发跳过ROM命令Y发读取温度命令移入温度暂存器读取操作,CRC校验N9字节完?Y结束 图3-2 读DS18B20流程图(三)温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。其流程如图3-3所示。发DS18B20复位 发跳过ROM命令发温度转换开始命令结束图3-3温度转换命令子程序流程图(四)计算温度子程序计算温度子程序的主要功能是将RAM中读取值进行BCD码的转换运行,并进行温度值正负的判定。其流程如图3-4所示。开始计算小数位温度BCD码N温度零下?计算整数位温度BCD码Y置“+”标志结束温度值取补码置“”标志图3-4计算温度子程序流程(五)显示数据刷新子程序显示数据刷新子程序的主要功能是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。其流程如图3-5所示。温度数据移入显示寄存器 N十位数0?YN百位数0? Y十位数显示符号百位数不显示百位数显示符号(不显示符号)结束图3-5 显示数据刷新子程序流程 总结通过对本课题的研究设计,巩固了我所学习的理论知识,使得我对单片机基础知识及应用有了更深层次的了解。此外,更重要的是,锻炼实践工作能力,提高工程素养,学会将理论与实践相结合,用理论指导实践,通过实践来验证和加深对理论的理解,使得自己在理论和实践上有新的认识和提高,使综合应用能力和分析解决问题的能力得到提高,这些都为以后的学习和工作打下了坚实基础。 附录一:原理图 附录二:PCB图 附录三:程序清单 ;常数定义TIMEL EQU 0E0HTIMEH EQU 0B1H ; 20ms,定时器0时间常数TEMPHEAD EQU 36H ;工作内存定义BITST DATA 20HTIME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H ;引脚定义TEMPDIN BIT P3.4 ;中断向量区 ORG 0000H LJMP START ORG 000BH LJMP TOIT ;系统初始化 ORG 0030H START: MOV SP,#60H CLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#00100001B ;定时器0工作方式(16位) MOV TH0,#TIMEL MOV TL0,#TIMEH ;20ms SJMP INIT ERROR: NOP LJMP START NOP INIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN ;定时器0中断服务程序 TOIT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7, #32H,TOIT1 MOV R7, #00H SETB TIME1SOK ;1s定时标志 TOIT1: POP PSW RETI ;主程序 MAIN: LCALL DISP1 ;调用显示子程序 JNB TIME1SOK,MAIN CLR TIME1SOK ;测温每1s一次 JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次 LCALL READTEMP1 ;读出温度子程序 LCALL CONVTEMP ;温度BCD码计算处理子程序 LCALL DISPBCD ;显示区BCD码 温度值刷新子程序 LCALL DISP1 ;消闪烁,显示一次 MAIN2: LCALL READTEMP ;温度转换开始 SETB TEMPONEOK LJMP MAIN ;子程序区 ;复位DS18B20INITDS1820: SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6,#0A0H ;延时480us DJNZ R6,$ MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H ;延时70us DJNZ R6,$ MOV R6,#3CH LOOP1820: MOV C, TEMPDIN JC INITDS1820OUT DJNZ R6, LOOP1820 MOV R6,#064H ;延时200us DJNZ R6,$ SJMP INITDS1820 RETINITDS1820OUT:SETB TEMPDIN RET ;读DS18B20的程序,从读出DS18B20一字节的数据READDS1820: MOV R7, #08H SETB TEMPDIN NOP NOPREADDS1820LOOP: CLR TEMPDIN NOP NOP NOP SETB TEMPDIN MOV R6,#07H ;延时15us DJNZ R6,$ MOV C, TEMPDIN MOV R6,#3CH ;延时120us DJNZ R6,$ RRC A SETB TEMPDIN DJNZ R7, READDS1820LOOP MOV R6,#3CH ;延时120us DJNZ R6,$ RET ;写DS18B20的程序,从读出DS18B20一字节的数据 WRITEDS1820: MOV R7, #08H SETB TEMPDIN NOP NOP WRITEDS1820LOP: CLR TEMPDIN MOV R6,#07H ;延时15us DJNZ R6,$ RRC A MOV TEMPDIN,C MOV R6,#34H ;延时104us DJNZ R6,$ SETB TEMPDIN DJNZ R7, WRITEDS1820LOP RET;*读温度TEMP* READTEMP:LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV R6,#34H ;延时104us DJNZ R6,$ MOV A,#44H LCALL WRITEDS1820 ;开始转换 MOV R6,#34H ;延时104us DJNZ R6,$ RETREADTEMP1:LCALL INITDS1820 MOV A,#0CCH LCALL WRITEDS1820 ;SKIP ROM MOV R6,#34H ;延时104us DJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820 MOV R0,A INC R0READTEMP21: LCALL CRC8CAL DJNZ R5,READTEMP2 MOV A,B JNZ READTEMPOUT MOV A,TEMPHEAD+0 MOV TEMPL,A MOV A,TEMPHEAD+1 MOV TEMPH,A READTEMPOUT:RET;*处理温度BCD码子程序* CONVTEMP: MOV A,TEMPH ANL A ,#80H JZ TEMPC1 CLR C MOV A,TEMPL CPL A ADD A,#01H MOV TEMPL,A MOV A,TEMPH ;"-" CPL A ADDC A,#00H MOV TEMPH,A ;TEMPHC HI=符号位 MOV TEMPHC,#0BH SJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;"+"TEMPC11:MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH ;乘以0.625 MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR MOV TEMPLC,A ;TEMPLC LOW=小数部分BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H SWAP A MOV TEMPL,A MOV A,TEMPH ANL A,#0FH SWAP A ORL A,TEMPL LCALL HEX2BCD1 MOV TEMPL,A ANL A,#0F0H SWAP A ;TEMPHC LOW=十位 ORL A,TEMPHC MOV TEMPHC,A MOV A,TEMPL ANL A,#0FH SWAP A ; TEMPHC HI=个位 ORL A,TEMPLC MOV TEMPLC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPHC ;TEMPHC HI=百位BCD ANL A,#0FH ORL A,r7 MOV TEMPHC,ATEMPC12:RET;*小数码表* TEMPDOTTAB: DB 00H 01H 01H 02H 03H 03H 04H 05H 05H DB 06H 07H 07H 08H 09H 09H;*显示BCD码子程序*DISPBCD: MOV A,TEMPLC ANL A,#0FH MOV 70H,A MOV A,TEMPLC SWAP A ANL A,#0FH MOV 71H,A MOV A,TEMPHC ANL A,#0FH MOV 72H,A MOV A,TEMPHC SWAP A ANL A,#0FH MOV 73H,A MOV A,TEMPHC ANL A,#0F0H CJNE A,#010H,DISPBCD0 SJMP DISPBCD2DISPBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2