温度测量实训报告

单片机测温实训报告

(AT89C51)

姓名:陈杉

学号:1514100412

班级:计控1004

 

    

目录

              

一.    引言... 3

二.  总体设计方案... 3

三.    硬件设计... 3

3.1硬件电路设计方案. 3

3.2硬件框图. 3

3.3芯片介绍. 3

3.4硬件电路图. 4

3.4.1电路原理图. 5

3.4.2原理图说明. 5

四.      软件设计... 6

4.1主流程图. 6

4.2仿真与测试. 6

五.    总结... 6

一:引言

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。

二:总体设计方案

一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

二:用温度传感器测试温度。在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

经过讨论,我们决定采用方案二,电路比较简单,软件设计也比较简单。

三、硬件电路设计

3.1、硬件电路设计方案

硬件电路的单片机芯片采用AT89C51芯片,进行数据处理。数据采集部分的传感器采用DS18B20芯片数字温度传感器。用四位七段LED数码显示器显示测量的温度值。

3.2硬件框图:

3.3芯片介绍

1、AT89C51芯片

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。

2、 DS18B20芯片

(1) DS18B20简介

DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20可以实现9~12位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。

(2) DS18B20的引脚功能

DS18B20的引脚(图7-10),其功能如表7-8所示。

    

(3) DS18B20的主要特点

v  采用单线技术,与单片机通信只需一个引脚;

v  通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;

v  实际应用中不需要外部任何器件即可实现测温;

v  可通过数据线供电,电压的范围在3~5.5V;

v  不需要备份电源;

v  测量范围为-55~+125℃,在-10~+85℃范围内误差为0.5℃;

v  数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现9~12位的温度读数;

v  将12位的温度值转换为数字量所需时间不超过750ms;

v  用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。

3.4硬件电路图

3.4.1电路原理图:

Proteus仿真结果显示:

3.4.1原理图说明:

设计中,使用AT89C51的P1.0管脚接收由温度传感器送出的数字温度信号;管脚P0.0~P0.7用于输出温度各位上的数字,连接LED数码管,作为显示内容;P2.0~P2.2管脚作为LED数码管轮流显示的控制信号的输出端;P3.0作为温度越界判据的信号输出的端。单片机的外围设备包括:时钟振荡器、DS18B20数字温度传感器、温度显示设备和高温制冷电机等。用DS18820测量温度,在其内部就能进行A/D转换,输出数字量与单片机直接通讯,无需外加A/D转换器,转换速度快,降低了成本,而且简化了电路,提高了系统的集成度,使其满足了最简的要求。这个温度传感器稍加改良,配合半导体制冷器还能实现高精度的温度控制功能。

四、系统软件设计

主要利用keil和protues软件来实现软硬件的结合。系统程序主要包括主程序,温度的相关子程序,数字的子程序等。

4.1主流程图

 

4.2仿真与测试

1、软件调试,在Keil软件上输入程序,进行编译、连接protues。

2、在protues上实现仿真,修正改正,在仿真知道正确。

五、总结与体会

在为期两周的电子制作实训中,利用Keil软件的仿真与调试,我设计了一个温度测量系统。

实训齐老师不仅给我们详细讲解了芯片的功能和工作原理,而且给了一份参考程序,因为我们感觉很难。在机房进行实验时,我一次次的编写失败,一次次的达不到预想中的结果,我心灰意冷,当我想放弃的时候,齐老师给了信心,他耐心的教导,最终使我成功完成了设计。

我深深地体会到,完成一件作品是多么的不易,隐藏在失败后的成功是多么的甘甜。这次的电子制作让我对单片机的理论有了更加深入的了解。通过这次实践,我更深的了解到理论与实际的差距,感到在今后的学习工作中我们应该更加注重实际,切勿成为只会纸上谈兵的赵括。

 

第二篇:实时温度测量实训报告

实时温度测量实训报告

               姓名:***

               学号:*****

               班级:******

                   浙江●绍兴

                   201012

第一章           方案认证及确定

温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。单片机将检测到的温度信息与设定值进行比较,如果检测值高于设定值,则启动制冷系统,降低环境温度;同理,如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。

该单片机温度控制系统是以AT89C51单片机为控制核心,用温度传感器DS18B20进行温度采集。整个系统硬件部分包括温度检测系统、A/D转换、单片机、I/O设备、控制执行系统等。单片机温度控制系统控制框图如下所示:

第二章  硬件设计

2.1原理图

Proteus仿真结果显示:

2.2 原理图说明

设计中,使用AT89C51的P1.0管脚接收由温度传感器送出的数字温度信号;管脚P0.0~P0.7用于输出温度各位上的数字,连接LED数码管,作为显示内容;P2.0~P2.2管脚作为LED数码管轮流显示的控制信号的输出端;P3.0作为温度越界判据的信号输出的端。单片机的外围设备包括:时钟振荡器、DS18B20数字温度传感器、温度显示设备和高温制冷电机等。

用DS18820测量温度,在其内部就能进行A/D转换,输出数字量与单片机直接通讯,无需外加A/D转换器,转换速度快,降低了成本,而且简化了电路,提高了系统的集成度,使其满足了最简的要求。这个温度传感器稍加改良,配合半导体制冷器还能实现高精度的温度控制功能。

2.3 主要元器件介绍

2.3.1数字温度传感器DS18B20主要特性

全数字温度转换及输出。

先进的单总线数据通信。

最高12位分辨率,精度可达土0.5摄氏度。

12位分辨率时的最大工作周期为750毫秒。

可选择寄生工作方式。

检测温度范围为–55°C ~+125°C (–67°F ~+257°F)

内置EEPROM,限温报警功能。

64位光刻ROM,内置产品序列号,方便多机挂接。

多样封装形式,适应不同硬件系统。

2.3.2 DS18B20的封装结构

2.3.3 DS18B20工作原理及应用

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:

ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。

RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。

第三章  软件设计

3.1程序框图

3.2 程序清单

          ORG          0000H

         TEMPER_L    EQU  29H

         TEMPER_H    EQU  28H

         FLAG1        EQU  38H

         A_BIT         EQU  20H

         B_BIT         EQU  21H

         TJ             EQU  70H

         DQ            EQU  P2.7

MAIN1:  LCALL         GET_TEMPER

         MOV           A,29H

         MOV           C,40H

         RRC            A

         MOV            C,41H

         RRC            A

         MOV           C,42H

         RRC           A

         MOV           C,43H

         RRC           A

         MOV           29H,A

         MOV           A,TJ

         CJNE          A,#0,MAIN2

         CLR           P1.7

         MOV           TJ,#1

         AJMP          MAIN3

MAIN2:   CJNE          A,#1,MAIN3

         SETB          P1.7

         MOV           TJ,#0

MAIN3:   LCALL        DISPLAY

         AJMP          MAIN1

INIT_1820: SETB         DQ

         NOP

         CLR           DQ

         MOV          R1, #3

TSR1:     MOV         R0, #107

         DJNZ          R0,$

         DJNZ          R1,TSR1

         SETB          DQ

         NOP

         NOP

         NOP

         MOV          R0,#25H

TSR2:    JNB           DQ,TSR3

         DJNZ          R0,TSR2

         LJMP          TSR4

TSR3:    SETB          FLAG1

         LJMP          TSR5

TSR4:    CLR           FLAG1

         LJMP          TSR7

TSR5:    MOV           R0,#117

TSR6:    DJNZ          R0,TSR6

TSR7:    SETB          DQ

         RET

GET_TEMPER: SETB       DQ

         LCALL         INIT_1820

         JB            FLAG1,TSS2

         RET

TSS2:    MOV           A,#0CCH

         LCALL         WRITE_1820

         MOV           A,#44H

         LCALL         WRITE_1820

         LCALL         DISPLAY

         LCALL         INIT_1820

         MOV           A,#0CCH

         LCALL         WRITE_1820

         MOV           A,#0BEH

         LCALL         WRITE_1820

         LCALL         READ_18200

         RET

WRITE_1820: MOV        R2,#8

         CLR            C

WR1:     CLR           DQ

         MOV           R3,#6

         DJNZ          R3,$

         RRC           A

         MOV           DQ,C

         MOV           R3,#23

         DJNZ          R3,$

         SETB          DQ

         NOP

         DJNZ          R2,WR1

         SETB          DQ

         RET

READ_18200: MOV        R4,#2

         MOV           R1,#29H

RE00:    MOV            R2,#8

RE01:    CLR           C

         SETB          DQ

         NOP

         NOP

         CLR            DQ

         NOP

         NOP

         NOP

         SETB          DQ

         MOV           R3,#9

RE10:    DJNZ          R3,RE10

         MOV           C,DQ

         MOV           R3,#23

RE20:    DJNZ          R3,RE20

         RRC           A

         DJNZ          R2,RE01

         MOV           @R1,A

         DEC           R1

         DJNZ          R4,RE00

         RET

DISPLAY: MOV           A,29H

         MOV           B,#10

         DIV           AB

         MOV           B_BIT,A

         MOV           A_BIT,B

         MOV           DPTR,#NUMTAB

         MOV           R0,#4

DPL1:    MOV           R1,#250

DPLOP:   MOV           A,A_BIT

         MOVC          A,@A+DPTR

         MOV           P0,A

         CLR           P2.1

         ACALL         D1MS

         SETB          P2.1

         MOV           A,B_BIT

         MOVC          A,@A+DPTR

         MOV           P0,A

         CLR           P2.0

         ACALL         D1MS

         SETB          P2.0

         MOV           A,#0CH

         MOVC  A,@A+DPTR

         MOV           P0,A

         CLR           P2.3

         ACALL         D1MS

         SETB          P2.3

         MOV           P0,#80H

         CLR           P2.2

         ACALL         D1MS

         SETB          P2.2

         DJNZ          R1,DPLOP

         DJNZ          R0,DPL1

         RET

D1MS:    MOV         R7,#50

         DJNZ          R7,$

         RET

DELAY10: MOV         R6,#20

D3:      MOV          R5,#255

         DJNZ          R5,$

         DJNZ          R6,D3

         RET

DELAY125:  MOV       R6,#255

D1:      MOV          R5,#255

         DJNZ          R5,$

         DJNZ          R6,D1

         RET

DELAY1S: MOV          R7,#8

D2:      LCALL         DELAY125

         DJNZ          R7,D2

         RET

NUMTAB:  DB          3FH,06H,5BH,4FH

         DB            66H,6DH,7DH,07H

         DB            7FH,6FH,77H,7CH

         DB            39H,5EH,79H,71H

         END

第四章  调试过程

4.1现象描述

制作成功硬件产品后,我们进行硬件仿真调试。接通电源和地线数码管显示00.C,然后数码管在误差内读出当前DS18B20所感应到的温度,我的检测结果是19.C。用手按住DS18B20,数码管显示温度值升高。

4.2和预期目标的差距

我调试了两次,第一次数码管没有显示,调试失败了。我回去认真检查了各种会出现的原因的地方,发现原来我的AT89C51单片机接地线没有接地,导致单片机无法工作。修正回来后终于调试成功了。

4.3可以改进的地方,存在的不足等

    在硬件排版方面,我做的还不够完美,导线接了过多,容易造成一定程度上的短路现象发生。在焊接工艺方面,焊接点不够光泽鲜亮。

第五章  实训总结

   经过将近一周的努力,基于单片机AT89C51的实时温度测量系统实训顺利结束。我们进行了对DS18B20资料的查阅整理、软件设计,硬件焊接,产品调试等几个流程。基于AT89C51单片机的温度测量系统硬件电路设计方法、工作原理以及程序设计。利用PT100阻值随温度变化的特点,将其和其他三个电阻构成非平衡电桥,因而温度的变化可转化成电桥输出微弱电压信号的变化,电压信号经集成运放电路放大后送到A/D转换器,将模拟信号变换成效字信号,单片机根据输入量和设定量进行运算,将结果送到数码管显示,完成对温度的测量。该系统可实现对温度实时较精确的测量,测量范围为0-200℃。

温度采集显示系统的开发在很大意义上提高了生产生活的需要,便于生产中对温度的控制,有效的提高了生产质量。外围电路比较简单杂,测量精度较高,分辨力高,使用方便。温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起着关键的作用。本次毕业设计正是为了完成温度采集显示而设计的,而且采用了温度传感器,可以说与人们的日常生活是息息相关的,具有很大的现实意义。

AT89C55/51芯片是由ATMEL公司推出的51系列8位单片机,AT89C55片内主要有20KB Flash存储器、256字节片内RAM,4个8位的双向可寻址I/O口,1个全双工UART(通用异步接收发送器)的串行接口、3个16位的定时器/计数器、多个优先级的嵌套中断结构,及一个片内振荡器和时钟电路。系统中主机利用了AT89C55丰富的20KB闪存资源永久保存实时的测量信息、历史的测量数据等关键结果,从机完成数据采集、传送。主机位于监视室,从机位于各粮仓内,主从机之间有一定的距离,信号的传输采用串行异步通信方式,AT89C55/51单片机内部集成的UART模块,适合于同其他计算机系统及单片机外扩的外设芯片进行通信,可实现全双工异步、半双工同步主控和半双工同步从控三种工作方式。本系统中利用其UART模块工作于全双工异步通信方式,其中TX为发送线、RC为接收线,利用RS-422驱动器和接收器,如MC3487和MC3486芯片,实现信号的稳定传输。

整个设计通过了软件和硬件上的调试、仿真。我想这对于我以后的学习和工作都会有很大的帮助的,。在这次实训中遇到了很多的问题,比如在软件编程和硬件仿真调试时都出现过问题。在实际设计中才发现,书本上的理论知识在实际运用时还是有很大的出入的,所以有些问题必须深入地理解,而且要不断的和实际加以验证。遇到问题一定要靠自己一点一滴去解决,而在解决问题的过程中也是我个人能力的提升的过程。对于单片机设计,硬件设计是比较简单的主要是程序编写方面比较繁琐。而程序设计是一个灵魂所在,需要对单片机的结构和功能很熟悉。可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

设计一个成功的完整电路,必须要有耐心,要有坚持不懈的恒心。很多同学在看到这样一大堆程序清单时就只会抱怨,害怕自己在规定时间内完成不了,索性放弃了编写,等着别的同学编好后能够拷贝给他。总是抱着一种畏难的心理,那只会一事无成,老实说,我一直很鄙视这种人。程序设计和编写是一项很繁琐的工程,在整个电路的设计过程中,花费时间最多的是各个单元电路的连接以及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原因和可行方案,在焊接时要防止虚焊,焊接点要光泽鲜亮。电解电容和二极管要注意正负极区分,以免元器件烧毁损坏。以及开关焊接时要注意引脚问题,输入程序时要细心等,最后在老师的指导下调试整个电路,使整个电路可以稳定的工作。在实训过程中,我深刻地体会到在设计过程中,要反复实践和验证。第一次调试失败,心中的确有点失望,我不怀疑自己的能力,只怪自己不够细心,细节决定成败,我过度地估算了自己的成功期望导致预期结果的差距过大。此时需要自己静下心,仔细查找原因。

总体来说,这次实训让我受益匪浅,在实际设计中体验到了成功实现所需功能的喜悦,也加强了我们的动手操作能力,在枯燥的理论知识中终于感受到实践的兴奋。

相关推荐