已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
定时数据自动记录系统设计定时数据自动记录系统设计毕业论文目 录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温度采集电路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 绪论 温度采集自动记录在生活领域、医疗领域、科学研究、生产实践中均有着广泛应用,如测量病人体温、分析气温变化、控制某生产加工车间的温度等。所以温度的采集自动记录仪便成为现代生产、生活中不可缺少的设备之一。 目前市场上已有的温度采集自动记录仪为需经常换纸的跟纸式记录仪和采用热敏电阻传感器的普通温度仪,如常州热工仪表厂生产的XRZ-Cu50和 XRZ-Cu100采用的就是采用热电阻传感器,XRZ-Cu50的温度测量范围为:0150,XRZCu100的测量范围为十0100,这种温度记录仪精确度为1,价格为200元左右,体积约为200mm*200mm*180mm,只能显示即时温度,不可存储温度数据,体积较大;与欧陆公司合资的常州宏基仪器仪表厂生产的纸记录式温度计,该温度记录议采用在纸上绘制曲线的方法来记录温度数据,虽能把温度记录下来,但需要人工定时更换记录纸张,且价格较高,在30004000元之间。市场上也有部分无纸记录仪,采用液晶显示屏作为数据输出,但存在测试精度低、不便于存放大量温度数据、成本高的缺点。随着人们对产品质量要求的不断提高,生产加工设备机械化水平的不断完善,传统的温度测试仪在现代化生产中已不能满足要求了。针对以上情况我们设计开发了一种融数字温度传感器、单片机于一体的掌上型温度采集、记录仪,从而达到体积小、重量轻、测试精度高、成本低、便于随身携带、随时可进行温度数据分析的掌上型温度采集记录仪。2 系统的总体设计概述2.1作品产生背景 由于温度采集自动记录在生活领域、医疗领域、科学研究、生产实践中均有着广泛应用,如测量病人体温、分析气温变化、控制某生产加工车间的温度等。目前市场上已有的温度采集自动记录仪为需经常换纸的跟纸式记录仪和采用热敏电阻传感器的普通温度仪,价格高、体积较大,而且精度低,也有部分无纸记录仪,采用液晶显示屏作为数据输出,但存在测试精度低、不便于存放大量温度数据、成本高的缺点,我们设计开发了一种融数字温度传感器、单片机于一体的掌上型温度采集自动记录仪,从而达到体积小、重量轻、测试精度高、存储容量大、成本低、便于随身携带、随时可进行温度数据分析的掌上型温度采集记录仪,具有较好的推广应用价值。 本作品是利用智能数字温度传感器DS18B20进行温度采集,DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进产品。DS18B20采集到的温度数据按采样间隔存起来,在按键按下以后,通过LED显示温度数据。2.2系统总体设计 该作品具有极高的可靠性和稳定性,可工作于任何环境底下。电路原理图分为两部分:温度数据采集部分,温度显示驱动部分。 (一)温度数据采集部分 DS18B20是智能型的数字温度传感器,通信方式为串行通信方式。其数据线与单片机的P1.1相连接。 (二)温度显示驱动部分 显示驱动方式按常规设计实施,选用高亮度发光LED器件显示。图2-1 硬件原理图3硬件电路设计3.1 单片机AT89S52简介3.1.1主要特性 在本设计中,是以AT89S52单片机为核心的。AT89S52单片机是由ATMEL公司推出的AT89系列的单片机。AT89C2051是一种带2K字节闪烁可编程可擦除片机。单片机的可擦除只读存储器可以反复擦除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) 三个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口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。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 端口写“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”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(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: 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN: 程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP: 外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。XTAL2: 振荡器反相放大器的输出端。3.1.3芯片可擦除性AT89S52单片机还具有芯片擦除性,整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。2此外,AT89S52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。33.2电源电路电源由外接USB接口提供+5V的稳定电压,使整个系统稳定工作,性能也较好。3.3 复位电路单片机复位时RESET需要保持96个晶振周期的高电平(即需8个机器周期)。复位以后P0P3口输出高电平,堆栈指针SP指向07H,其他特殊功能寄存器和程序计数器PC清零。只要RESET保持高电平,AT89S52就会循环复位。RESET当由高电平变为低电平后,单片机从程序存储器0地址开始执行程序。但单片机复位不影响内部RAM的状态,包括工作寄存器R0R7。4常见的复位电路有:上电复位电路和上电按钮复位电路,在本设计中均采用上电复位电路,如图3-2所示。图3-2复位电路图3.4晶振电路所谓的晶振电路即指单片机的时钟电路。该电路通常有内部时钟电路和外部时钟电路。一般选用前者。单片机芯片内部有一个反相放大器构成的振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,把XTAL1和XTAL2与外部石英晶体及两个电容连接起来可构成一个石英晶体振荡器如图3-3所示。时钟发生器是一个2分频电路。它把晶体振荡器的频率2分频后供给片内其他电路。一般电容C1和C2起到稳定振荡频率、快速起振的作用。5图3-3晶振电路图3.5 LED显示电路本次设计中采用了LED显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时,相应的一个点或者一个笔画发光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时,通过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分别表示发送与接受。在单线总线上必须接上拉电阻,其电阻阻值为 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+85范围内,可确保测量误差不超过0.5,在-55+125范围内,测量误差也不超过半。在DS1820中当电源电压跌落过多时,测量准确度要下降。(2)温度分辨力可编程。DS1820的数字温度输出只用9位二进制表示,分辨力固定为0.5。欲提高分辨力,只能靠软件计算来实现。而DS18B20的数字温度输出可进行912位的编程。在便笺式RAM的第五个字节是CONFIG寄存器,其格式如下:MS B代表最高有效位,LSB代表最低有效位。格式中的第04位在写操作时不予考虑,读出时总是“1”;第7位在写操作时不考虑,读出时为“0”。R0、R1是在可编程温度分辨力位。通过对这两位进行不同的编程,可设定不同的温度分辨力及最大转换时间,设定的分辨力愈高,所需要的温度-数据转换时间就愈长。因此,在实际应用中需要在分辨力与转换时间二者之间权衡考虑。在芯片出厂是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与DS1820的温度字节定义不一致,当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的内部存储器的映射关系如图 4-5-2所示,用 DS18B20测量温度时,因为通过编程的方法即可将DS18B20设定在高分辨力模式下,所以不再需要这两个值。但根据实际需要,在便笺式RAM和EERAM中加入 CONFIG字节。(5)具有电源反接保护电路。当电源电压的极性接反时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作。(6)DS18B20的引脚功能和内部框图与DS1820完全相同,但其体积比DS1820减小了一半。开始启动转换,转换完成后的温度就以16位带符号扩展的二进制补码形式,存储在便笺RAM的第0,第1字节。在执行读便笺RAM命令后,可将这两个字节的温度值通过单线总线传送给主CPU,高位字节的符号代表温度值为正还是为负。显然,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端焊接牢固;作两线制应用时,应将UDD与GND连在一起焊牢。若UDD端漏焊或者虚焊,传感器就只能输出+85.0 的温度数据。(3)测温电缆线可采用带屏蔽层的4芯双绞线,其中两根线分别接信号线与地线,另两根线依此接UDD和地线,屏蔽层在源端单点接地。4 软件设计软件设计部分按功能主要分三大部分,具体如下所述:(一)主监控程序 单片机的主监控程序为:当监测到相应信号时作相应温度的存储、转换,并负责温度的显示。是否有键按下DS18B20转化数据格式保存暂时保存温度数据采集温度数据显示温度数据程序初始化开始NY主程序流程图返回开始重置TL0初始值5ms计数值加1是否1s计数值清0,秒加1是否1min分加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,TSR1 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单线总线的所有执行处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和随后由从机发出的存在脉冲:1、复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在1560uS后回发一个芯片的存在脉冲。 2、存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。3、控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。8各自功能如下: Read ROM(读ROM)33H (方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。只有当总线上只存在一个DS18B20的时候才可以使用此指令。Match ROM(指定匹配芯片)55H 这个指令后面紧跟着由控制器发出了64位序列号,当总线 上有多只DS18B20时,只有与控制发出的序列号相同的芯片才能做出反应,其它芯片将等待下一次复位。这条指令适合单芯片和多芯片挂接。 Skip ROM(跳跃ROM指令)CCH 这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。 Search ROM(搜索芯片)F0H 在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。 Alarm Search(报警芯片搜索)ECH 在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度值达不到报警条件为止。 4、控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写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数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。 Copy Scratchpad (将RAM数据复制到EEPROM中)48H:此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。 Convert T(温度转换)44H:收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。 Recall EEPROM(将EEPROM中的报警值复制到RAM)B8H:此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。另外,此指令将在芯片上电复位时将被自动执行。这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。 Read Power Supply(工作方式切换)B4H:此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。 5、执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。DS18B20需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写1 、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据。DS18B20的复位时序 图4-2 DS18B20的复位时序图DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20把数据传输到单总线上。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将存储的温度数据依次显示数码管显示子程序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 调试过程5.1硬件调试硬件是整个作品的基础,所有的工作必须依赖硬件电路的正常运行,在整个设计过程中,硬件的设计调试是一种重要的环节。对于硬件电路的调试我们主要由下面几个过程:1、晶振及复位电路 晶振是单片机工作的必要部分,要使整个器件正常工作,晶振电路必须正确。,将晶振频率设计为110592MHZ,另处还有30PF的电容两只。复位电路是由一只8.2K的电阻和 10F电容组成的简单型复位电路。2、数码显示电路 该作品能够随时显示温度数据,所在必须要有能正常工作的显示电路。显示电路是由LED数码管、驱动电路、拉高电阻组成。 显示部分为4位动态显示,数码管为共阴极4位数码管,共有12个管脚,其中8位用作字节码数据位,另外4位用作位选信号,也就是4位数码管的4个共阴极。由于数据管的工作电流较大,单片机不能直接进行驱动,所以使用到7407进行同向驱动,7407是一片6路同向驱动集成电路。我们只用到其中的4路。另外,要数码管能正常工作,还需要在阳极接入上拉电阻。整个数码显示是整个设计工作的开始,也是必备的工作。 在数码码管硬件完成的情况下,利用 LAC51软件下载了一段简单的显示子程序。发现整个显示部分工作均正常,没有错误;如果无法显示,则需查找端口,驱动部分。3、DS18B20的硬件接线DS18B20是精密的、内部带有处理件的小型温度传感器。5.2软件调试1、主程序调试当接通电源开始工作后,单片机中的程序开始运行,将对DS18B20进行初始化,以便单片机芯片和DS18B20达成通信协议。完成初始化后,采集温度数据,并将这些数据暂时保存在单片机中,按照要求应采集8个数据才能求一次平均值,在很短的时间内将按键按下,如果LED上显示温度数据,则说明程序编写有错误,需查找出来并修改,然后再次调试;无数据显示时,等待较长时间,再次按下按键,如果数据显示,观察显示数据的数据格式是否正确,如果不正确,则可能是温度转换部分的程序出错,检查此部分程序并修改,此也可能是因为求平均值部分设置不正确,总之一步步检查,直到检查出错误;如若较长时间按下按键仍无数据显示,可能是采集部分出错,也可能是求得的温度平均值没有保存或保存错误,综合原因耐心细致的调试,直到在规定的时间外按下按键温度数据依次显示。整个过程操作完成后,断开电源,然后再次接通电源,整个部件依然能稳定的工作,则设计才成功。 2、数码显示程序调试为了能读出存储的温度数据,电路中采用了数码管来显示温度,在单片机中显示程序就是一个重要组成部分。由于采用动态方式显示,整体的硬件结构变得简单,但显示程序变得复杂。在调试的过程中,主要考虑共阴极显示时要注意的一些特点。在相应的内存单元中放1、2、3字形码,运行显示程序后,数码管能正常显示“12.3”则说明显示程序一切正常。如果无法显示,则需查找温度显示部分的子程序及此部分的程序是否与主程序连接恰当。3、读 DS18B20程序调试读DS18B20程序是一个关键,必须按照DS18B20的时序要求,严格对应起来。在该总部分程序调试时,是将读出的温度补码数据读入到相应内存单元中。由于温度是一个变化量,在不同时刻有不同的读出值,以确定读出的正确性,我们采用与普通温度计对比的方法进行调试。发现读出的数据值与普通温度计值相近,以确定读DS18B20温度数据的正确性。如果读出的数据值不正确,则检查DS18B20的初始化程序的真确性及其他相关方面。5.3调试总结在调试中发现软件中存在的问题,及时解决问题,确保系统能正常工作并达到设计要求。通过反复的调试与实验,可以证明该系统能够较好地完成设计所需的基本要求。即能够方便准确的对被测对象进行温度测量。同时在完成设计要求的前提下,充分考虑到了外观,成本等问题,在性能和价格之间作了比较好的平衡。虽然整体性能良好,但尚存在些许不足,系统稳定性不够,需要增强自己的焊接水平以便以后避免出现类似问题。结束语 这次毕业设计,我通过基于单片机AT89S52的设计和应用,对单片机工作原理,功能有了深刻的了解,并对单片机汇编程序的应用有了新的、更进一步的认识。从时钟和倒计时程序的编写到元器件和芯片的选择购买,以及电路实物的焊接检测,在指导老师的帮助下所有的工作都是我独立完成的,通过这次设计,我的单片机基础知识有了很大的提高。单片机系统设计结束之后,首先应该仔细的检查一下电路板:第一,首先要检查元器件的型号是否与设计要求相符,然后参照电路原理图,看电路连接是否正确,最后检查元器件是否连接到正确的单片机引脚;第二,检查焊点,要仔细检查是否存在漏焊和错焊现象;对于距离很近的相邻焊点,要检查是否出现短接,这些都需要使用万用表进行测量。在调试过程可能要重复多次。另外,在烧写程序的时候,一定要注意程序中的端口地址一定要和设计的系统中的端口一致,否则会导致系统不能正常工作。本次设计中的难点和不足之处:本设计的难点主要有以下两点:一:如何正确使显示数码管在时钟和倒计时之间正确的轮流显示。二: 当倒计时秒变为0时,就不能直接使秒值减一,这样会导致显示不正常,这就要求我们通过程序正确的处理倒计时的走时显示。通过硬软件的调试后结论如下:系统电路设计部分没有出现大的错误,软件部分也基本达到了设计的要求,只是在时钟的调整过程中,数码管的显示会出现小的闪动,除此之外,软硬件都达到了系统的要求。 致 谢首先,感谢我的指导老师尤连荣老师。在整个毕业设计期间,他都给予我很大的帮助。单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任务。在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。另外,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。在此也了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的铺垫!指导老师尤连荣学严谨,学识渊博,平易近人,论文期间指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。在论文准备的每个环节,也对我悉心指导和帮助,借此机会向导师表示衷心的感谢!参考文献1 张义和.例说51单片机c语言版.人民邮电出版社. 2 张辉,陈粤初.单片机开发与典型应用设计. 合肥:中国科学技术大学出版社,1997.3 陈忠平 单片机基础与最小系统实践.北京航空航天大学出版社. 4 李广弟. 单片机原理及应用M 北京航空航天大学出版社,2004年.5 阮忠,林金宝,陈强综合电子电路应用指南 M北京:机械工业出版社,2004年6 江国强现代数字逻辑电路M北京:电子工业出版社,2002.7 谢自美.电子线路设计.实验.测试(第二版). 武汉:华中科技大学出版社,2000.8 曹巧媛单片机原理及应用 M北京:电子工业出版社, 1997年附录附录A毕业设计原理图附录B 设计源程序A_BIT EQU 20H ;存放个位数变量B_BIT EQU 21H ;存放十位数变量MIN EQU 35H ;存放分钟变量SEC EQU 36H ;存放秒数变量DEDA EQU 37H ;5ms计时变量FLAG EQU 38H ;DS18B20是否存在标志TIME0 EQU 39H ;存放按键次数变量TIME1 EQU 3AH ;存放温度存储变量K1 EQU P1.0DQ EQU P3.3 ;DQ引脚由p3.3控制ORG 00H ;主程序入口地址JMP MAIN ORG 0BH ;中断入口地址JMP TO_SRV-主程序-MAIN: ;MOV TIME0, #0 ;初始化MOV TIME1, #0MOV R0, #30H ;指向温度数据存储初始地址ACALL INIT ;中断初始化ACALL INIT_TIME ;设置定时器LOOP: ;无穷循环ACALL RE_TEMP ;调用读取温度子程序ACALL TURN ; 数据转化子程序ACALL DISPLAY ;调用显示子程序JNB K1, M1 ;按键是否按下,如果按下转入存储温度读取子程序JMP LOOP M1: ;按键按下处理子程序 MOV 29H, R0 ;按键按下后把采集的温度送入29hACALL DISPLAY;显示这个温度INC TIME0MOV A, TIME0CJNE A, #5, M2;按键是否按下五次MOV R0, #30H ;按下五次后从新设置温度采集存储地址MOV TIME0, #0M2:JMP LOOP ;计时单元清零INIT:MOV DEDA, #0MOV SEC, #0MOV MIN, #0RET;使用定时器T0模式0计时INIT_TIME: ;初始化定时器,使用定时器T0模式1计时MOV TMOD, #00000000B ;设置定时器T0模式工作模式0MOV IE, #10000010B ;启用定时器T0中断优先MOV TL0, #(8192-5000)MOD 32 ;加载初始化数据MOV TH0, #(8192-5000)/32 SETB TR0 ;启用定时器RET;中断服务子程序TO_SRV: PUSH ACC MOV TL0,#(8192-4900)MOD 32 ;重新加载定时初值MOV TH0,#(8192-4900)/32 INC DEDA MOV A,DEDACJNE A,#200,TT1 ;是否1秒到了MOV DEDA,#0 ;计数值清零INC SEC MOV A,SEC CJNE A,#60,TT1 ;是否一分钟到了INC MIN MOV SEC,#0 MOV A,MINCJNE A,#5,TT1 ;是否五分钟到了MOV R0, 29H ;温度采集一次INC R0INC TIME1 ;采集次数加1MOV A, TIME1CJNE A, #5, TT1;是否采集次数到五次MOV SEC, #0 ;各个指针初始化MOV MIN, #0MOV TIME1, #0MOV R0, #30HTT1: POP ACC ;A值由堆栈取出RETI;初始化及读取温度值子程序RE_TEMP:SETB DQ ACALL RES
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山东潍坊滨海港口发展集团有限公司招聘7人笔试历年常考点试题专练附带答案详解试卷3套
- 消防安全检查与反馈系统方案
- 高铁站冷链物流设施项目建设工程方案
- 2025上海地铁青年就业见习人员招聘笔试历年常考点试题专练附带答案详解试卷3套
- 蚕丝蛋白改性面料生产线项目经济效益和社会效益分析报告
- 凤阳县公务员考试考场试题及答案
- 2025年及未来5年市场数据中国烧烤炉行业市场调查研究及投资战略数据分析研究报告
- 德宏公务员考试词语试题及答案
- 智能诊疗设备引进与运用方案
- 参加公务员考试请假条试题及答案
- 成都七中万达学校高一上化学半期考试试卷
- 2025医疗机构志愿者服务体系管理与社会责任履行报告
- IPC7711C7721C-2017(CN)电子组件的返工修改和维修(完整版)
- 学堂在线 护理研究方法 期末考试答案
- 2023北京市第一次高中学业水平合格性考试数学试卷真题(含答案详解)
- DB32-T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- 医院入职登记表
- 水泥厂除尘设计
- 数学-高中数学127个快速解题公式
- Q∕SY 1673-2014 油气管道滑坡灾害监测规范
- 英国FBA超重标签
评论
0/150
提交评论