实时温度测量实训报告
姓名:***
学号:*****
班级:******
浙江●绍兴
2010年12月
第一章 方案认证及确定
温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。单片机将检测到的温度信息与设定值进行比较,如果检测值高于设定值,则启动制冷系统,降低环境温度;同理,如果检测值低于设定值,则启动加热系统,提高环境温度,达到控制温度的目的。
该单片机温度控制系统是以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芯片,实现信号的稳定传输。
整个设计通过了软件和硬件上的调试、仿真。我想这对于我以后的学习和工作都会有很大的帮助的,。在这次实训中遇到了很多的问题,比如在软件编程和硬件仿真调试时都出现过问题。在实际设计中才发现,书本上的理论知识在实际运用时还是有很大的出入的,所以有些问题必须深入地理解,而且要不断的和实际加以验证。遇到问题一定要靠自己一点一滴去解决,而在解决问题的过程中也是我个人能力的提升的过程。对于单片机设计,硬件设计是比较简单的主要是程序编写方面比较繁琐。而程序设计是一个灵魂所在,需要对单片机的结构和功能很熟悉。可以说单片机的设计是软件和硬件的结合,二者是密不可分的。
设计一个成功的完整电路,必须要有耐心,要有坚持不懈的恒心。很多同学在看到这样一大堆程序清单时就只会抱怨,害怕自己在规定时间内完成不了,索性放弃了编写,等着别的同学编好后能够拷贝给他。总是抱着一种畏难的心理,那只会一事无成,老实说,我一直很鄙视这种人。程序设计和编写是一项很繁琐的工程,在整个电路的设计过程中,花费时间最多的是各个单元电路的连接以及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原因和可行方案,在焊接时要防止虚焊,焊接点要光泽鲜亮。电解电容和二极管要注意正负极区分,以免元器件烧毁损坏。以及开关焊接时要注意引脚问题,输入程序时要细心等,最后在老师的指导下调试整个电路,使整个电路可以稳定的工作。在实训过程中,我深刻地体会到在设计过程中,要反复实践和验证。第一次调试失败,心中的确有点失望,我不怀疑自己的能力,只怪自己不够细心,细节决定成败,我过度地估算了自己的成功期望导致预期结果的差距过大。此时需要自己静下心,仔细查找原因。
总体来说,这次实训让我受益匪浅,在实际设计中体验到了成功实现所需功能的喜悦,也加强了我们的动手操作能力,在枯燥的理论知识中终于感受到实践的兴奋。