毕业设计数字温度测量仪设计.docx
《毕业设计数字温度测量仪设计.docx》由会员分享,可在线阅读,更多相关《毕业设计数字温度测量仪设计.docx(34页珍藏版)》请在冰豆网上搜索。
![毕业设计数字温度测量仪设计.docx](https://file1.bdocx.com/fileroot1/2023-2/8/c31396c6-b5cb-406b-b16b-99ff67695679/c31396c6-b5cb-406b-b16b-99ff676956791.gif)
毕业设计数字温度测量仪设计
毕业论文(设计)
题目数字温度测量仪设计
系部
专业年级
学生姓名
学号
指导教师
基于STC89C52的数字温度检测系统的设计
专业
学生:
指导教师:
【摘要】随着社会的不断发展工农业的不断进步,温度检测系统被广泛的应用于各种场合。
在一些温度控制系统中往往采用的是热敏电阻或热敏三极管并配上相应的A/D电路来实现温度的采样[1],最终送入处理器中,来实现温度检测的目的。
由于传统的方案设计复杂,热敏电阻的耦合非线性,A/D的位数,外界干扰等原因,造成采集精度不高,容易造成严重的后果[2]。
本设计采用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和A/D转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,性能稳定,本毕业设计介绍了智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器为测温设备和STC89C52单片机为控制器构成的温度测量装置的工作原理及程序设计作详细的介绍,并采用VisualBasic设计了可实时显示温度曲线的上位机。
实现了测量温度范围-55℃~+125℃,固有测温分辨率0.5℃,并含有上位机动态显示温度曲线的智能温度检测系统。
该系统在稳定性与性能上优于传统温度检测系统适用于人民的日常生活和工农业生产用于温度监测和测量。
【关键词】:
数字温度检测STC89C52DS18B20上位机VisualBasic
目录
绪论3
1系统分析5
1.1需求分析5
1.2性能需求5
1.3开发环境5
1.3.1硬件设备5
1.3.2软件环境5
2系统设计6
2.1系统结构设计6
2.2系统设硬件设计10
2.2.1主要器件介绍10
2.3硬件电路设计13
2.3.1单片机最小系统设计13
2.3.2数码管显示电路设计14
2.3.3DS18B20电路设计[15]16
2.3.4稳压电路17
2.4PCB板的制作[16]17
2.5硬件设计总结与测试:
19
2.6.基于VisualBasic6.0串行通信控件MSComm[17]的上位机制作20
2.6.1MSComm控件处理通信的方式20
2.6.2MSComm控件的常用属性21
2.6.3MSComm控件的使用22
2.7软件设计24
3.设计总结29
参考文献30
附录31
附录1:
源代码31
致谢38
绪论
随着单片机应用技术的普及,越来越多的自动化系统在我们生活中得到应用。
嵌入式[3]工程师可以根据用户的不同需求,来选取不同的外部设备和不同性能的单片机来完成系统得设计。
一个嵌入有单片机的系统其能完成一些自动化,智能化的采集处理与控制。
其中外设的选取时嵌入式系统设计了一个重要组成,一个好的嵌入式系统应该做好在外部传感器选择的时候注意几个因素[4]。
第一,注意传感器的参数。
第二,注意传感器的稳定程度。
第三,在同等条件,要注意传感器的成本问题。
做到以上几点,设计出来的嵌入式设备才是最具有竞争力的产品。
本系统在选择传感器的时候做了多方面的比较,从实现的难度,传感器的精度,以及传感器的稳定程度。
最终确立选用18B20数字传感器作为系统温度采集的传感器。
在处理核心上的选择同样的是十分重要的,本系统结合系统本身的需求,在满足系统功能的情况下选择了价格相对便宜,性能又很稳定,同时也是设计者熟悉的一款基于51内核的,STC89C52单片机。
实践证明,该单片机选择是正确的。
整理系统设计时,按照软件工程[5]设计的思想,经历需求分析,概要设计,详细设计,最终实现几个阶段。
在详细的计划下,按质按量的完成了系统的所有功能,同时完成了论文的撰写。
1系统分析
1.1需求分析
该系统的用户假定为工业中设备环境的温度检测,需要实时的显示当前的温度。
如何能做到实时的检测呢?
根据工业现场的环境,不可能在每一个设备上挂一个温度计,然后又由人来实时记录这些数据,必然需要一个数字化的,电子化的温度检测系统的存在。
首先要适应工业温度的变化范围[6],不能使用非工业的器件材料。
也就是说,其温度变化范围一定要较宽。
其次,在工业环境中常常是比较危险了,人不适合于近距离的接触设备,容易导致危险。
故其显示一定不能为暗的,小的字符显示。
然后,工业温度变化常常需要记录下变化的过程,即需要记录温度变化的曲线,也就是设计的温度检测系统,一定要能描绘出系统的曲线。
经分析,可大致的了解到,该系统需求的功能大概有三条:
1.实时的宽范围的温度检测。
2.能清楚的显示与读出数据。
3.能实时的描绘出温度变化的曲线。
1.2性能需求
该系统在性能功能上应达到如下需求:
使用简单,能被工厂中的工人迅速的学会如何使用。
设备小巧,能安放于任何想安放的地方。
在温度的精度上,要满足精度0.5摄氏度,能耐得住工厂的湿热环境。
1.3开发环境
1.3.1硬件设备
开发平台要求[7]:
具有Pentium4处理器以上且满足以下要求的计算机:
最低512MB内存,最小2.1GB硬盘。
单片机开发板下载套件一套,另电子元器件若干。
1.3.2软件环境
操作系统:
WindowsNT/2000/XP或更高版本
开发软件:
KeilUV2及以上版本,VisualBasic6.0
烧写软件:
STC_ISP_V479
2系统设计
2.1系统结构设计
为满足系统的三个需求:
1.实时的宽范围的温度检测。
2.能清楚的显示与读出数据。
3.能实时的描绘出温度变化的曲线。
系统应该设计必须含有几个模块:
a.温度采集模块。
b.显示模块。
c.串口通信接口。
d.核心系统模块。
温度采集的模块目前较为流行的有以下三种方案[8]:
本电路是温度计的设计,在测温电路中利用热敏电阻器件的感温效应,将随被测温变化的电压或电流采集过来,进行A/D转换后,用单片机进行数据处理,经显示电路就可以显示出来。
下图2.1为基于NTC的温度采集电路设计。
图2.1基于NTC的温度采集电路
NTC电路模块电路分析可知,Vo3相对于地的电压即为NTC两端的电压,输出能够表示温度传感器的电压值。
另外,对于运放A3,由于n、p两输入端的输入电阻相差较大,对于电路的放大作用会产生很大误差,为了平衡两输入端电阻,此处加一个平衡电阻Rb。
方案二:
基于单片机的温度传感器设计的数字温度计已经很成熟,各种精度很高的温度计不断推出。
数字温度检测要求检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。
所以精度已经成为数字温度检测的一项重要的性能参数。
因此追求高精度是数字温度检测的一个目标。
不仅如此,检测还涉及国计民生各个部门,可以说在所以科学技术领域无时不在进行检测。
科学技术的发展和检测技术的发展是密切相关的。
现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。
同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。
目前市场上出现了很多传感器,很多精度高的传感器已经出现,而且精度越来越高。
图2.2为数字温度计的电路图。
图2.2数字温度计的电路图
18B20将会更精确、更简单,更人性化,更满足系统设计的需求。
为此本次设计方案二。
显示模块的选择方案有如下几种[9]:
方案一:
使用液晶屏显示时间。
液晶显示屏(LCD1602)具有轻薄短小、如下图2.3所示。
低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。
但由于只需要显示时间和转向、相数这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。
在使用时,不能有静电干扰,否则易烧坏液晶显示芯片,不易维护。
图2.31602液晶电路图
方案二:
在使用传统的数码管显示,如下图2.4所示,如下图所示。
数码管具有:
高亮度,低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度高,称量快,精确可靠,操作简单。
数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。
图2.4常见数码管接线图
根据以上需求分析,需要高亮度的显示效果,故采用方案二。
核心系统模块
根据所学知识,熟悉程度来讲,首选应当是51单片机,然而常用的51单片机有两款:
AT89S52和STC89C52。
以下是对这两款单片机对比[10]:
程序存储空间
数据存储空间
EEPROM存储空间
下载方式
价格
STC89C52
8K
512
8K
串口
4.4元
STC89C52
8K
256
无
ISP
5.5元
从对比可以看出无论从性能还是价格上,STC89C52都占有一定的优势。
故在核心模块上选择STC89C52作为核心系统模块。
综上原因分析,最终确定系统结构如下:
图2.4温度检测系统系统结构图
2.2系统设硬件设计
2.2.1主要器件介绍
STC89C52[11]:
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
STC单片机引脚说明[12]:
图2.5STC89S52管脚图
(1)VCC:
电源电压
(2)GND:
接地
(3)RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(4)/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(5)XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
(6)XTAL2:
来自反向振荡器的输出。
(7)P0口:
P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(8)P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能吸收或输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
(9)P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可吸收或输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(10)P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可吸收或输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表2.1所示:
表2.1P3特殊功能口
管脚
备选功能
P3.0RXD
串行输入口
P3.1TXD
串行输出口
P3.2/INT0
外部中断0
P3.3/INT1
外部中断1
P3.4T0
记时器0外部输入
P3.5T1
记时器1外部输入
P3.6/WR
外部数据存储器写选通
P3.7/RD
外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
(11)ALE//PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
(12)/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
本次设计中使用的引脚为RXD,TXD,P2,P3口。
DS18B20[13]
图2.6DS18B20
DSl820数字温度计是美国Dallas公司生产的数字温度计,它提供9位(二进制)温度读数,指示器件的温度。
信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线。
DSl820的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl820在出厂时已经给定了唯一的序号,因此任意多DSl820可以存放在同一条单线总线上。
这允许在许多不同的地方放置温度敏感器件。
DSl820的测量范围从-55到+125,增量值为0.5,可在ls(典型值)内把温度变换成数字。
每一个DSl820包括一个唯一的64位长的序号,该序号值存放在DSl820内部的ROM(只读存贮器)中。
开始8位是产品类型编码(DSl820编码均为10H)。
接着的48位是每个器件唯一的序号,最后8位是前面56位的CRC(循环冗余校验)码。
右图2.6为DS18B20的实物图。
2.3硬件电路设计
2.3.1单片机最小系统设计
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在设计中,主要考虑到对密码的修改与储存的功能,片上Flash允许程序存储器在系统可编程,在单芯片上,拥有灵巧的8位CPU,使得STC89C52为本设计的嵌入式控制应用系统提供高灵活、超有效的解决方案,同时STC89C52具有32个可编程线I/O口,为更好的连接与控制其它元件提供了方便。
选择STC89C52单片机主要考虑到他的内部有一个反向放大器构成的振荡电路,XTAL1为振荡电路的输入端,XTAL2为振荡电路的输出端,在XTAL1、XTAL2的引脚上处接两只22pF的电容和一只12MHZ的晶体,组成并联谐振回路,为单片机提供需要的时钟振荡信号,以增强设计的工作的稳定性。
在此,在接入一个复位电路采用开关复位方式,复位电路工作后使特殊功能寄存器初始化。
当单片机工作处于死机状态时可以直接按下K1键,使单片机进入初始化状态,从而让单片机系统又能继续恢复正常的工作状态,如图2.7所示。
图2.7最小系统图
在考虑到实际的需求情况,节约空间,在设计本系统的时候未加上相应的复位电路,而且为了方便通信的需求在选择晶振的时候选择的是11.0592M的晶振,因为此中工作条件下产生9600bps的波特率是误差最小的。
2.3.2数码管显示电路设计
1).数码管简介[14]
数码管是一种半导体发光器件,其基本单元是发光二极管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元;按能显示多少个“8”可分为1位、2位、4位等等数码管。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管:
(1).共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为电平”0”时,相应字段就点亮。
当某一字段的阴极为电平”1”时,相应字段就不亮。
如下图所示:
图2.8共阳数码管连接原理图
(2).共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为电平”1”时,相应字段就点亮。
当某一字段的阳极为”0”电平时,相应字段就不亮。
如下图所示
图2.9共阴数码管连接原理图
2).数码管与单片机的接口电路
为了提高数码管的显示亮度,在本系统的设计中没有采用直接将数码管的引脚接在单片机上,而是采用了74HC573作为借口电路,其输出能力相对于单片机要强很多,数码管的亮度达到一个满意的效果,因为考虑到系统传感器精度的和采集范围问题,故此处只用了四位数码管。
下面是数码管与单片机接口电路如图2.10所示:
图2.10四段数码管电路图
2.3.3DS18B20电路设计[15]
为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。
因为DS18B20的工作电流高达1.5Ma,4.7k得上拉电阻将使得DQ线没有足够的驱动能力。
如果有多个DS18B20挂接,而且同时变换时,这一问题将变得更为突出。
解决的方法是在发生温度变换时,再DQ线上提供强得上拉,比如用MOSFET管把DQ线直接拉到电源。
当使用寄生电源方式时,VDD引脚必须连接到地。
DS18B20得另一种供电方式是将VDD引脚接外部电源。
这种方法的优点是在DQ线上不要求强的上拉。
总线上的主机的温度变换期间不需要以知识DQ线保持高电平,这就允许在变换时间内其它数据在单线上传颂。
而且,在单线上可以放置多个DS18B20。
如果他们都使用外部电源,那么通过发起“跳过ROM”命令,接着执行“温度变换”命令就可以同时完成各自的温度变换。
采用外部电源这种方式时,GND引脚不可悬空。
本例只使用了一片DS18B20,但由于不存在远程温度测量的考虑,所以为了简单起见,仍然采用外部供电的方式,如图2.11。
图2.1118B20电路图
2.3.4稳压电路
由于系统的外加电源不一定是系统所要求的而5V电压,故需要对输入的电压进行稳压处理才行。
稳压芯片采用最常用的78xx系列的7805稳压芯片进行稳压。
由于稳压芯片的波形有波动,为了系统运行的稳定性,要对稳压之前和之后的电压进行滤波,增加电压波形的平滑,是系统运行更加稳定。
稳压电路如图2.12所示:
图2.12稳压电路
2.4PCB板的制作[16]
在制作PCB板的过程中,由于设计以及成本的限制,故采用的是热转印法来制作的PCB板,制作的详细步骤如下所示。
第一步:
电路设计。
在Altium软件中正确的画出各模块的原理图,并且对对该原理图进行电气规则检查,生成相应的网络表和元件清单,随后再利用网络表生成PCB图。
第二步:
设计布线规则。
在这个步骤中只要是对线宽,线距以及焊盘的详细参数的设置,是作出的PCB板能够符合现实元器件封装大小。
图2.13PCB制作效果图
第三步:
交付生产。
第四步:
焊接。
PCB制作完成。
图2.14PCB焊接效果图
2.5硬件设计总结与测试:
以上就是本次系统设计硬件设计的方案,在设计本系统中,查阅了很多相关资料,明白了常用温度的检测方法,在对比性能与难易程度之间选择了使用较为方便,功能又满足要求的DS18B20数字温度传感器,参考DS18B20的官方文档,学会了如何设计DS18B20的硬件电路。
在制作PCB板的时候,实践了从原理图到PCB板制作的整个过程,明白了PCB板的设计流程与一些注意事项。
并成功设计了可以使用的PCB电路板。
测试时,采用了是外部温度计与数字温度计同时测温,然后对比的形式,在实际设计过程中发现DS18B20的采集温度速度快较快,但是温度的精度需要用软件来调节。
有一定的误差,但是经过多次的测试矫正之后测试的温度基本能满足要求。
【测试表格你随便弄一个就行了,就是对普通温度计与DS18B20测出来温度的值的对比,和时间就行】
2.6.基于VisualBasic6.0串行通信控件MSComm[17]的上位机制作
VisualBasic是一种可视化的编程语言,利用可视化技术进行编程,可使应用程序的开发简单、快捷,可编写出界面友好、功能强大的应用程序。
MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的ActiveX控件,目的是为了简化Windows下串行通信编程,它既可以用来提供简单的串口端口通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。
MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VisualBasic、VisualC++、Delphi等语言中均可以使用。
图2.15设计环境
2.6.1MSComm控件处理通信的方式
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
它提供下列两种处理通信的方式。
1、事件驱动方式
事件驱动通信是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时程序得到通知,例如,在串口接收缓冲区中有一个字符到达或一个变化发生时,程序都可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,OnComm事件还可以检查和处理通信错误。
在程序设计中,可以在OnComm事件处理函数中加入自己的处理代码,一旦事件发生即可自动执行该段程序。
这种方法的优点是程序响应及时,可靠性高。
2、查询方式
在程序的每个关键功能完成之后,可以通过检查CommEvent属性的值来查询事件和错误。
适用于自保持的应用程序较小的编程。
查询方式的编程可用计时器或Do…Loop程序实现。
其实,查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
2.6.2MSComm控件的常用属性
对控件编程首先需要了解它的属性和事件。
下面介绍MSComm控件的一些主要属性,如表2.2所示。
表2.2MSComm控件的主要属性
属性
描述
Commport
设置并返回通信串口号
Settings
以字符串的形式设置并返回串口波特率、奇偶校验、数据位、停止位。
格式为:
MSComm1.Settings=”BBBB,P,D,S”
Portopen
设置并返回串口状态,也可以打开和关闭串口
Input
从接收缓冲区中读取数据并清空缓冲区
Inputlen
设置并返回一次从接收缓冲区中读取字节数
InBufferSize
设置并返回接收缓冲区的大小,缺省值为1024字节