1、定时数据自动记录系统设计 摘要定时数据自动记录系统,是现在自动记录系统的重要组成部分。温度定时采集记录是现代记录技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起着关键的作用。因此,能够确保快速、准确地测量温度的技术及装置普遍受到各国的重视。近年来,利用数字式温度传感器以实现温度信息的记录已成为一种发展趋势。随着科学技术的发展,人们对温度采集的记录的准确度和灵敏度要求越来越高,并且对温度测量系统的智能化有一定的要求,譬如在温度达到允许的最高限时实现报警。研制更灵敏、更可靠、更精确的温度采集记录系统越来越有必要。本课题即以上述任务为出发点,拟设计一种智能温度采集记录系统。DS18B2
2、0为主要元器件,该器件能对温度信号进行AD变换,直接形成数字式温度数据输出。DS18B20的测温范围为:-55+125,其分辨率可达0.0625。通过单片机技术可将DS18B20的温度数据记录起来并读取出来。这作品与目前市售的温度测试记录仪相比具有体积小、精度高、测量范围宽、记录数据量大、使用方便且成本低等优点。关键词:DS18B20、单片机、LED Timed automatic data recording system designScheduled for automatic data recording system is an important part of the autom
3、atic recording system.Temperature measurement of modern detection technology is an important part in ensuring product quality, energy conservation and production safety, and so plays a key role. Therefore to ensure fast, accurate temperature measurement devices and technologies widely national atten
4、tion. In recent years, the use of digital temperature sensors to achieve the temperature information testing temperature detection technology has become a trend. With the development of science and technology, people on the temperature detection accuracy and sensitivity increasingly demanding high a
5、nd the temperature measurement systems have a certain intelligence requirements, such as the temperature reached the maximum when the realization of the police. The development of more sensitive and more reliable, more accurate temperature detection system increasingly necessary. That is subject to
6、the above tasks as the starting point, to design a smart temperature detection system. The DS18 B20 is main dollar spare part, that spare part can carry on A/D transformation to the temperature signal, becoming a numerical type temperature data to outputted directly, the DS18 B20s measuring scope is
7、:-55 125 , its resolution can reach to 0.0625 .Pass a single slice machine technique can the DS18 B20 of the temperature data read, This work sells currently with city of temperature test record the instrument compare to have a physical volume small, the accuracy is high, the diagraph scope breadth,
8、 record data have great capacity, usage convenience and the cost low etc. advantage.KEYWORDS: The DS18 B20, single slice machine, the LEDII定时数据自动记录系统设计目 录1 绪论12 系统的总体设计概述12.1作品产生背景12.2系统总体设计23硬件电路设计23.1 单片机AT89S52简介23.1.1主要特性23.1.2管脚说明33.1.3芯片可擦除性63.2电源电路63.3 复位电路63.4晶振电路73.5 LED显示电路73.6 AT89S52温度采集
9、电路83.6.1 DS18B20电路接法83.6.2 DS18B20性能特点93.6.3 DS18B20的使用注意事项104 软件设计105 调试过程185.1硬件调试185.2软件调试195.3调试总结20结束语21致 谢21参考文献23附录24附录A毕业设计原理图24附录B 设计源程序25定时数据自动记录系统设计1 绪论 温度采集自动记录在生活领域、医疗领域、科学研究、生产实践中均有着广泛应用,如测量病人体温、分析气温变化、控制某生产加工车间的温度等。所以温度的采集自动记录仪便成为现代生产、生活中不可缺少的设备之一。 目前市场上已有的温度采集自动记录仪为需经常换纸的跟纸式记录仪和采用热敏电
10、阻传感器的普通温度仪,如常州热工仪表厂生产的XRZ-Cu50和 XRZ-Cu100采用的就是采用热电阻传感器,XRZ-Cu50的温度测量范围为:0150,XRZCu100的测量范围为十0100,这种温度记录仪精确度为1,价格为200元左右,体积约为200mm*200mm*180mm,只能显示即时温度,不可存储温度数据,体积较大;与欧陆公司合资的常州宏基仪器仪表厂生产的纸记录式温度计,该温度记录议采用在纸上绘制曲线的方法来记录温度数据,虽能把温度记录下来,但需要人工定时更换记录纸张,且价格较高,在30004000元之间。市场上也有部分无纸记录仪,采用液晶显示屏作为数据输出,但存在测试精度低、不便
11、于存放大量温度数据、成本高的缺点。随着人们对产品质量要求的不断提高,生产加工设备机械化水平的不断完善,传统的温度测试仪在现代化生产中已不能满足要求了。针对以上情况我们设计开发了一种融数字温度传感器、单片机于一体的掌上型温度采集、记录仪,从而达到体积小、重量轻、测试精度高、成本低、便于随身携带、随时可进行温度数据分析的掌上型温度采集记录仪。2 系统的总体设计概述2.1作品产生背景 由于温度采集自动记录在生活领域、医疗领域、科学研究、生产实践中均有着广泛应用,如测量病人体温、分析气温变化、控制某生产加工车间的温度等。目前市场上已有的温度采集自动记录仪为需经常换纸的跟纸式记录仪和采用热敏电阻传感器的
12、普通温度仪,价格高、体积较大,而且精度低,也有部分无纸记录仪,采用液晶显示屏作为数据输出,但存在测试精度低、不便于存放大量温度数据、成本高的缺点,我们设计开发了一种融数字温度传感器、单片机于一体的掌上型温度采集自动记录仪,从而达到体积小、重量轻、测试精度高、存储容量大、成本低、便于随身携带、随时可进行温度数据分析的掌上型温度采集记录仪,具有较好的推广应用价值。 本作品是利用智能数字温度传感器DS18B20进行温度采集,DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进产品。DS18B20采集到的温度数据按采样间隔存起来,在按键按下以后,通过LED显示温度数据。2.2
13、系统总体设计 该作品具有极高的可靠性和稳定性,可工作于任何环境底下。电路原理图分为两部分:温度数据采集部分,温度显示驱动部分。 (一)温度数据采集部分 DS18B20是智能型的数字温度传感器,通信方式为串行通信方式。其数据线与单片机的P1.1相连接。 (二)温度显示驱动部分 显示驱动方式按常规设计实施,选用高亮度发光LED器件显示。图2-1 硬件原理图3硬件电路设计3.1 单片机AT89S52简介3.1.1主要特性 在本设计中,是以AT89S52单片机为核心的。AT89S52单片机是由ATMEL公司推出的AT89系列的单片机。AT89C2051是一种带2K字节闪烁可编程可擦除片机。单片机的可擦
14、除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,AT89S52是它的一种精简版本。1引脚排练如图所示。它的性能与主要特点如下:(1) 与MCS-51微控制器产品系列兼容。(2) 片内有8K字节在系统可编程Flash存储器。(3) 存储器可循环写入/擦除1000次。图3-1 AT89S52引脚排列图(4) 宽工作电压范围:VCC可为2.7V-6V。(5) 1288位内部RAM。 (6) 32条可编程I/O线。(7)
15、 三个16位定时器/计数器。(8) 中断结构具有6个中断源(9) 可编程全双工UART串行通道。(10) 空闲状态维持低功耗和掉电状态保存存储内容。3.1.2管脚说明主要引脚的具体描述如下;Vcc: 电源。提供掉线、空闲、正常+5V工作电压。Vss(GND): 接地。P0口: P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时
16、,需要外部上拉电阻。P1口: P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。具有第二功能。P2口: P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2
17、端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3口: P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部
18、上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。P3口的第二功能如表3-1所示。表3-1口 线第二功能信 号 名 称 P3.0 RXD串行输入口 P3.1 TXD串行输出口 P3.2 /INT0 外部中断0 P3.3 /INT1 外部中断1 P3.4 T0 定时器/计数器0 P3.5 T1 顶时器/计数器1 P3.6 /WR外部数据存储器写选通 P3.7 /RD 外部数据存储器读选通RST: 复位输入。当
19、振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应
20、设置ALE禁止位无效。PSEN: 程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP: 外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电
21、压Vpp。XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。XTAL2: 振荡器反相放大器的输出端。3.1.3芯片可擦除性AT89S52单片机还具有芯片擦除性,整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。2此外,AT89S52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其
22、他芯片功能,直到下一个硬件复位为止。33.2电源电路电源由外接USB接口提供+5V的稳定电压,使整个系统稳定工作,性能也较好。3.3 复位电路单片机复位时RESET需要保持96个晶振周期的高电平(即需8个机器周期)。复位以后P0P3口输出高电平,堆栈指针SP指向07H,其他特殊功能寄存器和程序计数器PC清零。只要RESET保持高电平,AT89S52就会循环复位。RESET当由高电平变为低电平后,单片机从程序存储器0地址开始执行程序。但单片机复位不影响内部RAM的状态,包括工作寄存器R0R7。4常见的复位电路有:上电复位电路和上电按钮复位电路,在本设计中均采用上电复位电路,如图3-2所示。图3-
23、2复位电路图3.4晶振电路所谓的晶振电路即指单片机的时钟电路。该电路通常有内部时钟电路和外部时钟电路。一般选用前者。单片机芯片内部有一个反相放大器构成的振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,把XTAL1和XTAL2与外部石英晶体及两个电容连接起来可构成一个石英晶体振荡器如图3-3所示。时钟发生器是一个2分频电路。它把晶体振荡器的频率2分频后供给片内其他电路。一般电容C1和C2起到稳定振荡频率、快速起振的作用。5图3-3晶振电路图3.5 LED显示电路本次设计中采用了LED显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时,相应的一个点或者一个笔画发
24、光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时,通过I/O口送出七段码 表3-2 段码表显示字形0 1 2 3 4 5 6 7 8 9 共 阴 3FH 06H 5BH4FH66H6DH7DH07H 7FH 6FH LED显示模块原理图图3-4 LED显示原理图3.6 AT89S52温度采集电路3.6.1 DS18B20电路接法根据定义,单线总线只有一根线,这意味着总线上的每一个器件只能分时驱动单线总线,并要求每个器件必须具有漏极开路输出或三态输出的特性。DS18B20的单线接口 I/O端就属于漏极开路输出。TX、RX分别表示发送与接受。在单线总线上
25、必须接上拉电阻,其电阻阻值为 5k(标称值可取5.1k或4.7K)。当单线总线上挂有多个从属器件时,亦称之为多点总线。7 单线总线在空闲状态下呈高电平。操作单线总线时,必须从空闲状态开始。单线总线加低电平的时间超过480 us时,总线上所有的器件均复位。6 在主CPU发出复位脉冲之后,从属器件就发出应答脉冲(PRESENCE PULSE),来通知主CPU它已做好了接受数据和命令的准备工作。图3-5单线总线接法电路图3.6.2 DS18B20性能特点DS18B20在继承DS1820全部优点的基础上,主要做了如下改进:(1)供电电压范围扩大为3.0 5.5V。当UDD3.05.5V时,在-10+8
26、5范围内,可确保测量误差不超过0.5,在-55+125范围内,测量误差也不超过半。在DS1820中当电源电压跌落过多时,测量准确度要下降。(2)温度分辨力可编程。DS1820的数字温度输出只用9位二进制表示,分辨力固定为0.5。欲提高分辨力,只能靠软件计算来实现。而DS18B20的数字温度输出可进行912位的编程。在便笺式RAM的第五个字节是CONFIG寄存器,其格式如下:MS B代表最高有效位,LSB代表最低有效位。格式中的第04位在写操作时不予考虑,读出时总是“1”;第7位在写操作时不考虑,读出时为“0”。R0、R1是在可编程温度分辨力位。通过对这两位进行不同的编程,可设定不同的温度分辨力
27、及最大转换时间,设定的分辨力愈高,所需要的温度-数据转换时间就愈长。因此,在实际应用中需要在分辨力与转换时间二者之间权衡考虑。在芯片出厂是R1和R0 均被置为“1”,既工作在12位模式下。DS 18B20分另工作在9位、10位、11位和12位模式下,所对应的分辨力依此为0.5、0.25、0.125、0.0625。当 DS18B20接受到温度转换命令后,开始启动转换,转换完成后的温度就以16位带符号扩展的二进制补码形式,存储在便笺RAM的第0,第1字节。在执行读便笺RAM命令后,可将这两个字节的温度值通过单线总线传送给主CPU,高位字节的符号代表温度值为正还是为负。显然,DS18B20与DS18
28、20的温度字节定义不一致,当DS18B20的工作模式依此选择11位、10位和9位时,末尾为零的低位数就分别对应于一位、二位和三位。举例说明,当工作模式选择10位时,最低两位(即2-4位和2-3位)均为0,总有效位就变成10位。其中,数字位占9位,符号位也占一位。(3)DS1820进行9位温度转换所需时间的典型值为200ms,而DS18B20进行9位的温度转换仅需93.75ms。由此可见,DS18B20的转换速率也比DS1820有很大的提高。(4)内部存储器映射关系发生了变化。其中,第6字节的计数器余数值和第7字节中每度计数值,仅在DS1820进行高分辨力测温时才使用。DS18B20的内部存储器
29、的映射关系如图 4-5-2所示,用 DS18B20测量温度时,因为通过编程的方法即可将DS18B20设定在高分辨力模式下,所以不再需要这两个值。但根据实际需要,在便笺式RAM和EERAM中加入 CONFIG字节。(5)具有电源反接保护电路。当电源电压的极性接反时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作。(6)DS18B20的引脚功能和内部框图与DS1820完全相同,但其体积比DS1820减小了一半。开始启动转换,转换完成后的温度就以16位带符号扩展的二进制补码形式,存储在便笺RAM的第0,第1字节。在执行读便笺RAM命令后,可将这两个字节的温度值通过单线总线传送给主CPU
30、,高位字节的符号代表温度值为正还是为负。显然,DS18B20与DS1820的温度字节定义不一致,当DS18B20的工作模式依此选择11位、10位和9位时,末尾为零的低位数就分别对应于一位、二位和三位。举例说明,当工作模式选择10位时,最低两位(即2-4位和2-3位)均为0,总有效位就变成10位。其中,数字位占9位,符号位也占一位。3.6.3 DS18B20的使用注意事项使用 DS18B20时应注意以下事项:(1)由于DS18B20的测温分辨力提高到12位,因此它对时序及电特性参数要求较高,需严格按照DS18B20的时序要求进行操作。(2)DS18B20作三线制应用时,应将UDD、I/O、GND
31、端焊接牢固;作两线制应用时,应将UDD与GND连在一起焊牢。若UDD端漏焊或者虚焊,传感器就只能输出+85.0 的温度数据。(3)测温电缆线可采用带屏蔽层的4芯双绞线,其中两根线分别接信号线与地线,另两根线依此接UDD和地线,屏蔽层在源端单点接地。4 软件设计软件设计部分按功能主要分三大部分,具体如下所述:(一)主监控程序 单片机的主监控程序为:当监测到相应信号时作相应温度的存储、转换,并负责温度的显示。是否有键按下DS18B20转化数据格式保存暂时保存温度数据采集温度数据显示温度数据程序初始化开始NY主程序流程图返回开始重置TL0初始值5ms计数值加1是否1s计数值清0,秒加1是否1min分
32、加1,秒清0是否五分钟分秒时变量全部清0NNNYYY读数据存储数据 定时器流程图主程序及DS18B20的初始化程序如下:MAIN:MOV SP,#60H CLR A MOV R1,#20H MOV R0,#10HCLEAR:MOV R1,A INC R1 DJNZ R0,CLEAR MOV FLAG,#8START:LCALL RESET JNB FLAG1,STARTRESET: SETB DATA_LINE NOP CLR data_line MOV R0,#6BH ;主机发出延时复位低脉冲 MOV R1,#04HTSR1: DJNZ R0,$ MOV R0,#6BH DJNZ R1,TS
33、R1 SETB data_line ;然后拉高数据线 NOP NOP NOP MOV R0,#32HTSR2: JNB data_line,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 JMP TSR4 ; 延时TSR3: SETB flag1 ; 置标志位,表示DS1820存在 JMP TSR5TSR4: CLR flag1 ; 清标志位,表示DS1820不存在 JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DATA_LINE RET(二)温度信息的采集通过DS18B20单线总线的所有执行处理
34、都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和随后由从机发出的存在脉冲:1、复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在1560uS后回发一个芯片的存在脉冲。 2、存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。3、控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,
35、每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。8各自功能如下: Read ROM(读ROM)33H (方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令。Match ROM(指定匹配芯片)55H 这个指令后面紧跟着由控制器发出了64位序列号,当总线 上有多只DS18B20时,只有与控制发出的序列号相同的芯片才能做出反应,其它芯片将等待下一次复位。这条指令适合单芯片和多芯片挂接。 Skip ROM(跳跃ROM指令)CCH 这条指令使芯片不对RO
36、M编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 Search ROM(搜索芯片)F0H 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。 Alarm Search(报警芯片搜索)ECH 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度值达不到报警条件为止。 4、控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条
37、,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。 Write Scratchpad (向RAM中写数据)4EH:这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。写入过程中可以用复位信号中止写入。 Read Scratchpad (从RAM中读数据)BEH:此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 C
38、opy Scratchpad (将RAM数据复制到EEPROM中)48H:此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。 Convert T(温度转换)44H:收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立
39、刻超用强上拉并至少保持500MS,来维持芯片工作。 Recall EEPROM(将EEPROM中的报警值复制到RAM)B8H:此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。 Read Power Supply(工作方式切换)B4H:此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。 5、执行或数据读写:一个存储器操作指令结束后
40、则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。DS18B20需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1 、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据。DS18B20的复位时序 图4-2 DS18B20的复位时序图DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20
41、把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。 图4-3 DS18B20的读时序图 DS18B20的写时序:对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 图4-4 DS18B20的写时序图DS18B20初始化程序上一部分已提到,其采集程序详见附录(三)温度数据的LED显示在检查到按键按下后,驱动LED将
42、存储的温度数据依次显示数码管显示子程序DISPLAY:MOV A, 29HMOV B,#10DIV ABMOV B_BIT, A ;MOV A_BIT, B ;MOV DPTR,#TABLE ;MOV R5, #4DP1:MOV R1, #250 ;LOOP1:MOV A, A_BIT ;MOVC A, A+DPTR ;MOV P0, ACLR P2.0 ;ACALL DELAYSETB P2.0MOV A, B_BITMOVC A, A+DPTRMOV P0, ACLR P2.1ACALL DELAY ;SETB P2.1DJNZ R1, LOOP1 DJNZ R5, DP1RET5 调试过
43、程5.1硬件调试硬件是整个作品的基础,所有的工作必须依赖硬件电路的正常运行,在整个设计过程中,硬件的设计调试是一种重要的环节。对于硬件电路的调试我们主要由下面几个过程:1、晶振及复位电路 晶振是单片机工作的必要部分,要使整个器件正常工作,晶振电路必须正确。,将晶振频率设计为110592MHZ,另处还有30PF的电容两只。复位电路是由一只8.2K的电阻和 10F电容组成的简单型复位电路。2、数码显示电路 该作品能够随时显示温度数据,所在必须要有能正常工作的显示电路。显示电路是由LED数码管、驱动电路、拉高电阻组成。 显示部分为4位动态显示,数码管为共阴极4位数码管,共有12个管脚,其中8位用作字
44、节码数据位,另外4位用作位选信号,也就是4位数码管的4个共阴极。由于数据管的工作电流较大,单片机不能直接进行驱动,所以使用到7407进行同向驱动,7407是一片6路同向驱动集成电路。我们只用到其中的4路。另外,要数码管能正常工作,还需要在阳极接入上拉电阻。整个数码显示是整个设计工作的开始,也是必备的工作。 在数码码管硬件完成的情况下,利用 LAC51软件下载了一段简单的显示子程序。发现整个显示部分工作均正常,没有错误;如果无法显示,则需查找端口,驱动部分。3、DS18B20的硬件接线DS18B20是精密的、内部带有处理件的小型温度传感器。5.2软件调试1、主程序调试当接通电源开始工作后,单片机
45、中的程序开始运行,将对DS18B20进行初始化,以便单片机芯片和DS18B20达成通信协议。完成初始化后,采集温度数据,并将这些数据暂时保存在单片机中,按照要求应采集8个数据才能求一次平均值,在很短的时间内将按键按下,如果LED上显示温度数据,则说明程序编写有错误,需查找出来并修改,然后再次调试;无数据显示时,等待较长时间,再次按下按键,如果数据显示,观察显示数据的数据格式是否正确,如果不正确,则可能是温度转换部分的程序出错,检查此部分程序并修改,此也可能是因为求平均值部分设置不正确,总之一步步检查,直到检查出错误;如若较长时间按下按键仍无数据显示,可能是采集部分出错,也可能是求得的温度平均值没有保存或保存错误,综合原因耐心细致的调试,直到在规定的时间外按下按键温度数据依次显示。整个过程操作完成后,断开电源,然后再次接通电源,整个部件依然能稳定的工作,则设计才成功。 2、数码显示程序调试为了能读出存储的温度数据,电路中采用了数码管来显示温度,在单片机中显示程序就是一个重要组成部分。由于采用动态方式显示,整体的硬件结构变得简单,但显示程序变得复杂。在调试的过程中,主要考虑共阴极显示时要注意的一些