基于单片机控制的001数显温度计的设计Word文件下载.docx
《基于单片机控制的001数显温度计的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的001数显温度计的设计Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
很多机械仪器和部件需要在各种极端的环境条件下使用。
例如航空航天、炼钢化工、核电工程等等,很多仪器设备需要在高温、低温、真空的环境下工作。
尤其是高温高压的环境下,测量环境很差,传统的温度测量仪器无法接触高温的表面。
因此一种新的信息获取的方法——传感器技术也应运而生。
传感器(sensor)是一种方便快捷的测量装置,能够把所测量的物理数据转换成一定的有规律的电信号数据。
传感器技术可以实现数据的测量、记录、处理、传输,被广泛的应用于仪器仪表、航天航空、科研环境等方方面面。
而传感器装置以及相关的技术,已然成为了衡量一个国家的科学水平的标杆之一。
1.2国内外研究现状
在生活生产中、科研科考、食品化工等方面,经常用到一个物理量,那就是温度。
它表示了物体或者环境的冷热程度,物理以及化学上的变化过程都与温度息息相关。
许多食品、化工品等产品的生产工程中,温度是否满足要求,影响了生产的效率,甚至影响了产品的质量。
所以如何快速准确的测量温度就显得非常的重要。
近几年来,温度测量的理论实践方面较为成熟,就国内的情况来说与日美德等发达国家相比仍有着不小的差距。
而随着中国的经济科技的快速发展,我国政府对温度测量控制相关科技越来越重视,对相关的企业、研究所进行了整合重组,又建设一批更加先进的研发中心,大大加速了我国仪表仪器工业的发展。
最常用的温度测量方法是直接接触的测量方法,通过直接将测量元件与被测物质接触,获得一个直观的温度数据,这种测量方法有着直接、便捷、成本低、测量结果准确可靠,因而被广泛的用于温度测量中。
而在温度测量方面最重要的就是测量温度的元件。
温度的测量无法通过直接观测得到数据,只能通过物体的某些物理特性随着温度变化而变化来测量。
例如利用物体体积受热膨胀遇冷缩小的性质来测量温度的水银、酒精温度计;
利用物体电阻随温度变化而变化的热电阻、电偶温度计;
以及集成了其他一些功能的温度传感器。
温度传感器的发展经历了分离式温度传感器、模拟电路集成式温度传感器、智能集成式温度传感器三大阶段。
而最新的智能集成式温度传感器于20世纪末期出现,集微电子技术、自动测量技术以及数字信号处理技术于一身,有着使用方便、读数准确、适用范围广的特点。
1.3选题意义
综上所述在日常的生产生活中温度的测量是一个非常重要的工作过程,温度是一个重要的物理参数。
而传统的温度测量的方法工艺不但准确度低、工艺繁琐而且测量反应速度慢。
而随着单片机与传感器的快速的发展,一种采用单片机作为控制器的微机应用技术正在风靡开来,使人们在测量温度方面又有了新的选择。
本毕业论文阐述了一款由单片机控制的数字化电子温度计的硬件构造与软件的相关流程设计。
所设计的这款数字化电子温度计,有着高精度、高灵敏度、测量范围广、易于读数等优点。
第二章单片机温度计设计方案
2.1系统的主要功能
本设计要实现的功能为测量感知温度,将温度数据转换处理成为数字数据显示到显示屏上,直观的得出温度数据,要求精确到0.01℃。
2.2测温系统的选择
2.2.1方案介绍
方案一热敏电阻类元件
本设计的构成元件为热敏电阻、运算放大器、比较器、模拟集成电路以及其他外围的电容电阻。
主要实现的功能是测量温度,直接使用热敏电阻类的元件和模拟电路。
利用了热敏电阻其电压随温度变化而变化的特性,把所测量到的温度信号进行处理,变为电压或电流信号,通过采集电压电流,通过模拟电路进行A/D转化后,将温度数据输出至显示屏上,就可以得到温度数据。
本方案大致流程如下:
热敏电阻温度测量电路运算放大器比较器A/D转换电路显示电路
方案二使用单片机与DS18B20温度传感器
DS18B20温度传感器是一种单片结构的芯片,能够直接测量温度进行处理并输出数字量信号,所以可以不用外加A/D转换电路。
本方案使用DS18B20温度传感器芯片直接测量并处理温度数据,经过单片机处理,发送至LCD显示屏上,显示出温度数据。
本方案大致示意图如下:
DS18B20芯片LCD显示屏AT89S52
A/D转换电路测温系统
时钟电路
电源复位电路
方案三基于FPGA(现场可编程门阵列)与PT100热敏电阻
本方案由I/O模块、控制模块、显示输出模块、通信模块组成。
当PT100热敏电阻受到温度,电压发生变化,产生电压信号,经过A/D转换后,所得到的数字信号组为FPGA的输入;
FPGA中的控制模块根据设定的初值对被控制的对象进行检测控制;
显示模块是数据发送至LCD显示屏,显示出温度数据;
通信模块,可以和上位机中的监控程序实现实时通讯,使用了串口方式与LABVIE软件,本方案电路原理图如下:
控制模块(FPGA)PT100热敏电阻A/D转换电路
上位机TXDRXD串口通信
按键
电源
LCD显示屏时钟
2.2.2方案选择
控制器:
方案二与方案三都使用了单片机系统作为控制。
而单片机是一种新型的微处理器,不仅可以使用编程,通过其中的I/O口进行多种功能的拓展,并且单片机还具有着检测、控制和报警等功能。
而方案一直接将经过A/D转换的信号显示到LCD显示屏上,直接完成了对温度的显示,没用经过处理控制,因此不能选择方案一。
温度传感器:
以上三种方案中,方案一和方案三都使用了热敏电阻作为了温度传感器,其性能决定了整个产品的测温范围,且数据会经过一系列滤波、信号放大、A/D转换等处理,会产生一些误差,且测温系统的抗干扰能力较弱。
而方案二使用了DS18B20温度传感器芯片,其测温范围为-55~+125°
C左右,虽然测量范围较小,但已经满足了本次设计的需求,并且方案二更为简洁,利用了单线程的智能芯片DS18B20能够直接得出数字信号,进行处理转换,就能够达到本设计的需求。
所以最终选择方案二作为本次设计的设计方案。
2.3显示系统的选择
方案一:
采用LED数码管显示
使用6个八段LED数码管。
LED数码管数量较多,因此采用动态显
示的显示方式来显示温度数据。
本方案成本较低,制作过程相对
复杂,显示能力单一,功耗较大。
方案二:
采用LCD液晶显示屏显示
使用了1602LCD液晶显示屏显示,本方案虽然成本比方案以稍高,
但价格仍较为低廉,且显示内容比较丰富。
综上所述,采用1602LCD液晶显示屏显示数据。
2.3系统方案
本设计的电子温度计主要由三个部分组成:
主控制模块(AT89S52单片机)、测温模块(DS18B20温度传感器)、显示模块(LCD显示屏)。
系统结构如下:
电源AT89S52测温模块DS18B20
复位电路显示模块LCD
控制模块
(系统结构图)
第三章硬件组成及电路设计
3.1主控制模块
主控制模块由单片机芯片AT89S52以及复位电路和时钟电路组成。
3.1.1AT89S52芯片介绍
AT89S52单片机芯片,是由美国ATMEL公司(爱特梅尔公司)研制的一款CMOS8位微控制器,具有着低功耗、高性能的特点。
AT89S52芯片能够完美兼容80C51的系统与引脚,利用了爱特梅尔公司的高密度非易失性存储器技术制作而成。
AT89S52芯片里面包含了8K字节的可编程的FLASH存储器空间、256字节的RAM、32位的I/O接口、看门狗定时器、2个数据指针、3个16位定时器(计数器)、1个6向量2级中断结构,全双工串行口、片内的晶振和时钟电路。
与它的前作AT89S51相比,增加了4KB的FLASH的ROM、128B的RAM、一个中断源和一个定时器。
Xta22Xtal1CPU运算器控制器RAMP1口看门狗P0口P2口FLASHROM特殊功能寄存器SFRP3口串行口定时器计数器中断系统ALEPSENEARST8888Vccvss(AT89S52结构图)
在本设计中,AT89S52单片机芯片中的各个功能模块已经基本满足本设计的需求,但仍需外加一个复位电路与时钟电路。
3.1.2复位电路
复位电路由一个可以弹起的按钮以及一个电容组成。
整体电路启动时时,RST端获得高电平,电容充电,当RST端高电平转为低电平时,电容放电,完成复位;
该电路也可以按下按钮,手动进行复位操作。
3.1.3时钟电路
时钟电路为内部连接方式,由一个晶振与两个电容构成。
两个电容的大小为47pF,晶振为12MHz。
该电路运行时能够提供一个12MHz高精度且稳定的方波震荡信号,给单片机中的定时器使用。
3.2测温模块
显示模块主要由DS18B20传感器以及一个阻值为4.7的电阻组成。
DS18B20温度传感器是一种改进型单线数字温度传感器(即“一线器件”),是由美国德州仪器半导体公司(DALLAS)所生产的。
DS18B20温度传感器将温度测量、信号转换、A/D转换整合到一块芯片上,是一种包含微处理器的智能数字传感器。
与一般的测温元件(如热敏电阻、热偶电阻)相比较,DS18B20温度传感器内部能够直接处理温度数据并直接输出温度值的数字信号,而不需用到D/A转换电路,且可以通过编程显示出9-12位数字的数据。
DS18B20温度传感器芯片有数据输入和输出、接地和可选电源电压三个引脚,使用了TO-92封装。
可以使用3.0V至5.5V的电源对其供电。
能够测量-67至+257°
F(-55至+125°
C)范围内的温度数值。
DS18B20温度传感器具有体积小、经济、可以选择较小的封装方式以及更宽的电压适用范围和较高的精度的优点,满足本次设计的要求。
DS18B20温度传感器所测得的温度值数据是以补码的形式存储的,因此由DS18B20输出的温度值是实际温度值的补码,所以要把测得的数据值的转换为原码形式。
DS18B20内部构造
电源检测64位ROM以及一线口存储器与控制逻辑暂存器温度传感器高温触发器TH低温触发器TL配置寄存器DQVDDD8位CRC发生器(DS18B20内部构造图)
因为DS18B20传感器芯片采取了单总线设计方案,因而需要外接一个4.7K-10K的电阻,以保证当总线不工作时,芯片处在高电平状态。
3.3显示模块
在本次设计中,显示模块主要由LCD1602液晶显示模块(1602字符型液晶)以及一个排阻和一个电位器组成。
LCD1602是一种工业点阵式液晶模块,能够显示数字、字母和字符。
LCD1602最多同时能够显示两行,每行16个字符,共32个字符。
LCD1602的工作电压为4.5~5.5V,共有16个引脚。
LCD1602显示模块上的VEE脚能够调整液晶的显示偏压程度(显示对比度),当此端口电压值由0(接地)到正电源电压值时,显示对比度由高到低。
因此在本设计中连接了一个10K电位器。
3.4电路连接图
本设计的电子温度计主要由三个模块组合而成:
主控制模块、测温模块、显示模块。
整体的电路连接图如下:
第四章软件设计方案
本次程序设计使用的软件为KeiluVision4,运行环境为windows10。
4.1程序流程
4.1.1主程序流程图
启动,初始化调用LCD显示模块启动显示读取温度值刷新温度值首次启动?
延时一秒温度数据处理
4.1.2温度读取程序流程图
开始温度读取程序跳过ROM操作命令将DS18B20初始化启动温度读取读取温度寄存器
DS18B20芯片测量并输出温度数据时,共输出16位,前五位为符号位。
当前五位全是“1”时,为负;
当前五位全是“0”时,为正。
部分程序:
WriteOneByte(0xcc);
//跳过ROM操作命令
WriteOneByte(0x44);
//发出命令启动温度转换程序
Init_DS18B20();
//对DS18B20进行初始化操作
WriteOneByte(0xbe);
//读取温度寄存器
Temp_Value[0]=ReadOneByte();
//读取温度数据中的低8位
Temp_Value[1]=ReadOneByte();
//读取温度数据中的高8位
4.1.3温度处理与显示程序流程图
DS18B20输出的温度数据共16位,高5位为符号位,低11位为温度数值。
温度数值计算方式:
将低11位的2进制数值先转换为10进制数值,再将得到的数值乘以0.0625,得到的结果就是所测量的温度值。
获得的温度数据将温度数据转换判断温度值正负将数值拆分为5位等待显示正显示负值标记负依次显示各位数值
温度处理:
temp=Temp_Value[1];
temp<
<
=8;
temp|=Temp_Value[0];
temp=temp-1;
if(temp<
0)//如果温度为负
{
intng=1;
//添加“负值”标记
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
4.2DS18B20相关程序
4.2.1DS18B20初始化(复位)
根据DS18B20芯片的使用规则,当DS18B20进行初始化复位操作之后才能够进行温度转换。
下面是详细步骤:
1.将数据总线DQ置于高电平“1”。
2.延时等待。
3.将数据总线拉低至低电平“0”。
4.延时等待480到960微秒。
5.将数据总线拉高至高电平“1”。
6.延时等待,等待CPU读到信号“0”,(如提前读到信号,仍需延时480微秒)
7.将数据总线拉高至高电平“1”,完成初始化程序。
C语言程序为:
ucharInit_DS18B20()
{
uchari;
DSPORT=0;
//将总线拉低
i=70;
while(i--);
//延时
DSPORT=1;
//将总线拉高
i=0;
while(DSPORT)//等待CPU读取“1”信号
i++;
if(i>
5)//等待>
5MS
return0;
//CPU未读取,初始化失败
}
Delay1ms
(1);
return1;
//CPU读取“1”,初始化成功
4.2.2DS18B20读写操作
DS18B20写操作步骤如下
1.将数据总线DQ置于低电平“0”。
2.延时15微秒。
3.由低位到高位依次发送字节(每次发送一个)。
4.延时45微秒。
6.重复步骤1到5,直到将所有字节全部发送。
7.将数据总线拉高至高电平“1”。
voidDs18b20WriteByte(uchardat)
uinti,j;
for(j=0;
j<
8;
j++)
DSPORT=dat&
0x01;
//然后写入一个数据,从最低位开始
i=6;
//然后拉高总线
dat>
>
=1;
DS18B20读操作步骤如下
2.延时2微秒。
4.延时3微秒。
6.延时5微秒,等待数据稳定。
7.读取数据总线。
8.延时60微秒。
ucharDs18b20ReadByte()
ucharbyte,bi;
for(j=8;
j>
0;
j--)
bi=DSPORT;
//读取数据
byte=(byte>
1)|(bi<
7);
i=4;
//读取完之后等待48us再接着读取下一个数
returnbyte;
4.3LCD1602相关程序
4.3.1LCD1602初始化
voidLcdInit()
LcdWriteCom(0x38);
//开显示
LcdWriteCom(0x0c);
//开显示不显示光标
LcdWriteCom(0x06);
//写一个指针加1
LcdWriteCom(0x01);
//清屏
LcdWriteCom(0x80);
//设置数据指针起点
4.3.2LCD1602写入命令与数据
voidLcdWriteCom(ucharcom)//写入命令
LCD1602_E=0;
//使能
LCD1602_RS=0;
//选择发送命令
LCD1602_RW=0;
//选择写入
LCD1602_DATAPINS=com;
//放入命令
Lcd1602_Delay1ms
(1);
//等待数据稳定
LCD1602_E=1;
//写入时序
Lcd1602_Delay1ms(5);
//保持时间
voidLcdWriteData(uchardat)//写入数据
//使能清零
LCD1602_RS=1;
//选择输入数据
LCD1602_DATAPINS=dat;
//写入数据
五、Proteus软件仿真
5.1Proteus软件介绍
Proteus软件是一款EDA(电子设计自动化)工具软件,英国LabcenterElectronics公司于1989年推出最早版本Proteus软件,已经有近三十年的历史。
Proteus软件为各种型号的单片机系统的开发与研究提供了一个真实方便智能的开发环境。
Proteus软件不仅拥有设计、编辑、模拟电路和数字电路的模拟仿真等这些与其他EDA软件同样的功能外,还能够连同单片机系统以及单片机所扩展的所有外接元件和各种测试仪表仪器等一起进行模拟仿真。
虽然Proteus软件在中国的推广刚刚展开,但是因为其优秀的性能,已经受到了国内广大师生、单片机从业者的好评。
5.2Proteus软件特点
1.Proteus软件结合了高级原理分布图、PCB设计、自动布线、混合模式SPICE模拟仿真等部件,可以对数字电路、模拟电路进行仿真模拟,可以方便的绘制出电路图;
2.Proteus软件能够完美的实现各种主流单片机的模拟仿真,如最常用的8051系列单片机,以及AVR系列、Z80系列、MSP430等等;
3.Proteus软件有着丰富的元件库,里面的元件数量高达几万种。
能够直接模拟仿