基于C51单片机数字温度计设计制作毕业设计 精品.docx
《基于C51单片机数字温度计设计制作毕业设计 精品.docx》由会员分享,可在线阅读,更多相关《基于C51单片机数字温度计设计制作毕业设计 精品.docx(22页珍藏版)》请在冰豆网上搜索。
基于C51单片机数字温度计设计制作毕业设计精品
摘要
随着时代的进步和发展,单片机技术基本已经普及到我们的生活中,越来越多的工作,科研和各个领域都涉及到单片机的应用,单片机已经成为了一项比较成熟的技术。
在此我将为大家介绍一项基于C51单片机的设计—数字温度计,这种温度计是一种新型产品,它具有多种功能,例如它可以设置上下报警温度,当温度不在设置范围内时,它就会发出报警信号
随着人们生活水平不断的提高,单片机控制无疑是人们追求的目标之一,它给人生活上带来的方便也是不可否认的,其中数字温度计就是一个典型的例子,但人们对它的要求也越来越高,要为现代人生活,工作,科研提供更好更方便的设施就需要从单片机技术入手,一切向着数字化,智能化控制方向发展。
本设计所介绍的数字温度计和传统温度计相比,具有度数方便,测数范围广,测温更准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用等该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,采用3位共阳极LED数码管以串行口传送数据,实现温度显示和准确度要求。
关键词:
数字温度计AT89C51DS18B20报警
Abstract
Withthearrivalofthe"informationage",asameansofobtaininginformationsensortechnologyhadbeensignificantprogress,itsapplicationfield,moreandmorewidely,thedemandishigherandhigher.ThispaperUSESsinglechipcombinedwiththesensortechnologydevelopmentanddesign,thispaperthesensortheoryandsingle-chipmicrocomputerapplicationorganically,anddetaileddescriptionofthetemperaturesensorDS18B20measurementenvironmenttemperature,atthesametime,51SCMinmodernelectronicproductsiswidelyusedanditstechnologyhasverymature,canbereadoutdirectlymeasuredDS18B20temperature,andtheuseofthreewireandsingle-chipmicrocomputerislinkedtogether,reducetheexternalhardwarecircuit,withlowcostandeasytousefeatures.SpecificusingsinglechipcomputerAT89C51asacontroller,andtemperaturesensorDS18B20astemperaturecollector,designakindofdigitalthermometer.Thethermometercanmeasure-55.5-+125℃temperaturebetween.Goodupperbutton,after18B20directlyreadtemperaturebeingmeasured,datatransfer,realtimemonitoringthecurrenttemperatureisbeyondthesetrange,andrealizethealarmfunction.WithatotalofthreeYangdigitaltubetoserialdatatransmission,andrealizethetemperaturedisplay.
KEYWORD:
digitalthermometerDS18B20AT89C51alarm
目录
第一章绪言1
第一节前言1
第二章总体设计方案2
第一节数字温度计方案2
第二节总体设计方案及框图2
第三章系统组成及工作原理4
第一节单片机的选择4
第二节数字温度传感器DS18B206
第三节复位电路的设计8
第四节功能键9
第五节数码管串口显示9
第四章系统软件设计12
第一节软件设计流程12
结论14
参考文献15
附录A源程序16
附录B简易数字温度计原理总图22
第一章绪言
第一节前言
现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
①传统的分立式温度传感器
②模拟集成温度传感器
③智能集成温度传感器。
目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。
社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。
与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。
第二章总体设计方案
第一节数字温度计方案
本实验系统主要由温度采集、按键设置、温度报警、温度显示四部分电路组成。
其中温度采集实现的方法有很多种,以下列出一种在日常生活中和工农业生产中经常用到的实现方案。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度,测温范围-55℃~+125℃,固有测温分辨率0.5℃。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20
控制工作,还可以与PC机通信上传数据。
另外AT89S51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
第二节总体设计方案及框图
该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。
该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
系统总体设计方框图如图2.1所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,利用按键进行温度的上下限范围设置,范围可设置位-99.9~99.9℃数码管以串口传送数据并进行显示,当设置错误时,即上限温度小于下限温度,黄色Led发光进行警告。
按下确定键后,数码管显示当前温度,当温度超出设定范围时,红色Led发光进行报警。
图2.1总体设计方框图
第三章系统组成及工作原理
第一节单片机的选择
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
一、AT89C51主要特性:
与MCS-51兼容;
4K字节可编程闪烁存储器;
寿命:
1000写/擦循环;
数据保留时间:
10年;
全静态工作:
0Hz-24MHz;
三级程序存储器锁定;
128×8位内部RAM;
32可编程I/O线;
两个16位定时器/计数器;
5个中断源。
二、AT89C51引脚功能介绍
其引脚排列如图3.1所示:
各引脚功能简单介绍如下:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
表3-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口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
第二节数字温度传感器DS18B20
一、DS18B20的主要特性
适应电压范围更宽,电压范围为3.0~5.5V,在寄生电源方式下可由数据线供电。
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
二、DS18B20的内部结构
图3-2为DS18B20的内部结构图,表示出了DS1820的主要部件。
DS1820有三个主要数字部件:
1)64位激光ROM,2)温度传感器,3)非易失性温度报警触发器TH和TL。
器件用如下方式从单线通讯线上汲取能量:
在信号线处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。
DS1820也可用外部5V电源供电源供电。
三、DS18B20工作原理
低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
第三节复位电路的设计
单片机的复位电路如图3-3所示。
该复位电路采用手动复位与上电复位相结合的方式。
当按下按键S1时,VCC通过R2电阻给复位输入端口一个高电平,实现复位功能,即手动复位。
上电复位就是VCC通过电阻R2和电容C构成回路,该回路是一个对电容C1充电和放电的电路,所以复位端口得到一个周期性变化的电压值,并且有一定时间的电压值高于CPU复位电压,实现上电复位功能。
图3-3单片机的复位电路
第四节功能键
上电后,进入上限值设置,此时D4灯发光,通过加减、切换位和负号键可以设置温度值,设置好后按确定键进入下限设置,下限设置好之后按下确定键进入温度采集部分,并显示当前温度,此过程中,再次按下确定键可进入设置环境。
功能键部分连接图如图3-4所示:
图3-4功能键部分连接图
第五节数码管串口显示
此次的设计要求数码管采用串口进行数据传输,所以使单片机串口工作在方式0,即8位移位寄存器输入/输出方式,外接移位寄存器74LS164以扩展I/O端口。
方式0的输出是8位串行数据,通过移位寄存器可将8位串行数据变成8位并行数据输出,引脚RXD[P3.0]和TXD[P3.1]分别作74ls164的数据输入端和同步时钟脉冲输入端。
每一个时钟信号的上升沿加到74LS164的CP端时,移位寄存器将串口输出的数据移入一位,8个时钟脉冲过后串口输出的8位二进制数全部移入第一片74LS164,通过Q0-Q7并行输出。
使用这种方法单片机中CPU的开销小。
通过串口外接串并转换器74LS164,扩展并行的I/O口。
需要几个数码管就扩展几个并行接口,74L164的13(Q7)接下一位移位寄存器的数据输入端即可。
管脚数码管直接接在74LS164的输出脚上,单片机通过串口将要显示数据的字形码逐一的串行移出至74LS164的输出脚上数码管就可以显示相应的数字。
对于单片机,当发送完一个字节后,TI会置位,开始发送下一个字节必须将TI清零。
部分程序如下:
/********************************************************************
*名称:
voidDisplay(uchar*T,ucharN)
*功能:
串口发送并显示
*输入:
*T:
所要显示的数据数组;N:
所要显示的数据符号位
*输出:
无
**********************************************************************/
voidDisplay(uchar*T,ucharN)
{
ucharNum;
Num=0;
while(Num<=2)//连续发送3个字节
{
if(N==1)SBUF=tab[T[Num]]&0x7f;//负值显示负号
elseSBUF=tab[T[Num]];
while(!
TI);//没发送完一个字节,则清中断标志
Num++;TI=0;
};
TI=0;//发送完毕,清中断标志
74LS164硬件连接图如图3-5所示:
图3-574LS164硬件连接图
第四章系统软件设计
第一节软件设计流程
程序开始对串口和单片机各个端口等进行设置,之后进入温度上下限设置,并进行判断是否设置正确,若正确则进行温度采集,并进行判断是否超出设置范围,若超出则红色LED发光报警。
具体流程图如图4-1所示:
图4-1软件设计流程图
硬件实物连接图如图5-3所示:
图5-3硬件实物连接图
结论
本次毕业设计基于MCS-51系列的单片机芯片STC89C51来设计一个数字温度计,该设计充分利用了温度传感器DS18B20功能强大的优点,如DS18B20可以直接读出被测温度值,进行转换;而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本与易使用的特点,大大减少了硬件电路,也使得该数字温度计具有结构简单、成本低廉、精确度较高、反应速度较快、数字化显示和不易损坏等特点,而且性能稳定,适用范围广,因此特别适用于对测温要求比较准确的场所。
参考文献
[1]李建忠•单片机原理及应用•第二版•[M]•西安:
西安电子科技大学出版社,2008.5。
[2]何立民•单片机应用技术大全•[M]•北京:
北京航空航天大学出版社,1994。
[3]袁希光•传感器技术手册•[M]•北京:
国防工业出版社,1986。
[4]冯英•传感器电路原理与制作•[M]•成都:
成都科技大学出版社,1997。
[5]张有德,赵志英.《单片微型机原理、应用于实验》.复旦大学出版社,2000.4。
[6]赵新民,王祁.智能仪器设计基础.哈尔滨:
哈尔滨工业大学出版社,1999。
[7]黄亮•基于AT89C2051串口的LED数码管显示电路•[J]•《电子制作》,2006,第08期。
[8]truelmz,DS18B20工作原理
[9]yh3099,DS18B20,
附录A源程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#include"18B20.h"
#include"1602.h"
unsignedcharcodedigit[10]={"0123456789"};//定义字符数组显示数字
unsignedcharcodeStr[]={"TestbyDS18B20"};//说明显示的是温度
unsignedcharcodeError[]={"Error!
Check!
"};//说明没有检测到DS18B20
unsignedcharcodeTemp[]={"Temp:
"};//说明显示的是温度
unsignedcharcodeCent[]={"Cent"};//温度单位
uchartime;
/********函数功能:
显示没有检测到DS18B20******/
voiddisplay_error(void)
{
uchari;
WriteAddress(0x00);//显示的数据是在第一行第一列
i=0;
while(Error[i]!
='\0')
{
lcd_wdat(Error[i]);
i++;
delay_ms(100);
}while
(1);
}
/*****************************************************
函数功能:
显示说明信息
**********************************************/
voiddisplay_explain(void)
{
uchari;
WriteAddress(0x00);//显示的数据是在第一行第一列
i=0;
while(Str[i]!
='\0')
{
lc