《毕业设计基于C51单片机DS18B20温度计的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计基于C51单片机DS18B20温度计的设计与实现.doc(29页珍藏版)》请在三一办公上搜索。
1、前 言单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样性,各种适用于不同场合的智能温度控制器应运而生。电子温度计的出现,给人类的生活带来了很多方便,使人类不管是在生活还是在工业方面都有了很多便利之处。但是电子温度计主要应用还是在生产过程、实验室及研究所。电子温度计本身可由电源提供电压,用温度传感器检测温度,因此电子温度计属温度系统。控制理论从经典理论、现代理论已经发展到更先进的控制理论,控制系统也由简单的控制系统、大系统发展到今天的复杂系统。本文讨论的电子温度计温度控制系统AT89C2051单片机提取DS18B20转化
2、成温度变化通过单片机内部A/D转化电路转化成数值并由数显电路显示出来。在我们日常生活及各种生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。其缺点如下:1 硬件电路复杂;2 软件调试复杂;3 制作成本高。 而传统的温度计也有反应速度慢、读数麻烦、测量精度不高、误差大等缺点而下面利用集成温度传感器DS18B20设计并制作了一款基于AT89C51的4位数码管显示的数字温度计,其电路简单,软硬件结构模块化,易于实现。其中温度传感器DS18B20,它集温度测量、AD转换于一体,其测量范围宽(-55125
3、),DS18B20是一款具有单总线结构的器件。 由DS18B20组建的温度测量单元体积小,便于携带、安装。同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级AD转换,控制简单。第一章 总体设计方案1.1 系统的设计原则 一般系统的设计原则包含安全性(稳定抗干扰性),操作的便利性(人性化),实时性,通用性和经济性。(1)安全可靠 首先要选用高性能的AT89C51单片机,保证在恶劣的工业环境下能正常运行。其次是设计可靠的控制方案,并具有各种安全保护措施,如报警、事故预测、事故处理和不间断电源等。(2)操作维护方便操作方便表现在操作简单、直观形象和便于掌握且不强求操作工要掌握计算机知
4、识才能操作。(3)实时性强选用高性能的AT89C51单片机的实时性,表现在内部和外部事件能及时地响应,并做出相应的处理。(4)通用性好 系统设计时应考虑能适应不同的设备和各种不同设备和各种不同控制对象,并采用积木式结构,按照控制要求灵活构成系统。主要表现在两个方面:一是硬件板设计采用标准总线结构(如PC总线),配置各种通用的模板,以便扩充功能时,只需增加功能模板就能实现;二是软件功能模块或控制算法采用标准模块结构,用户使用时不需要二次开发,只需各种功能模块,灵活地进行控制系统组态。(5)经济效益高 1.2 系统的设计步骤(1)系统总体方案设计、(2)方案论证评审 硬件和软件的分别细化设计 硬件
5、和软件的分别调试 系统的组装 (3)离线仿真和调试阶段 1.3 系体的总体方案设计和框图设计(1)系统的主要功能、技术指标、原理性方框及文字说明。(2)系统的硬件结构几配置,主要软件的功能、结构几框图。(3)保证性能指标要求的技术措施。(4)抗干扰性和可靠性设计。 (5)工艺要求温度数码管显示。调节温度的超调量小于30%。 实现温度闭环控制,控制温度误差范围0.1。温度范围:-50 125。供电电压:交流5。 方案一:方案一:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以使用热敏电阻之类的器件利用其感温效应,感温电路比较麻烦,进行A/D转换,才可以
6、满足设计要求。方案二:由于本设计是测温电路,首先要选用高性能的AT89C51单片机,保证在恶劣的工业环境下能正常运行。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。测温传感器使用二极管结电压变化的数值来转化成温度的变化,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。考虑到方案中制作数字温度计,在单片机电路设计中,大多都是使
7、用传感器,这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。主 控 制 器LED显示单片机复位 报警点按键调整温 度 传 感 器时钟振荡图1.1 总体设计方框图第二章 硬件设计2.1主要器件说明2.1.1 主控制器 单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。如图
8、2.1所示。图 2.1 (1)主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 (2)管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FI
9、ASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储
10、器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P
11、3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将
12、跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用
13、于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.1.2 显示器显示电路采用3位共阳LED数码管,利用动态扫描方式,从P0口输出段码,P2口的P2.5、P2.6、P2.7输出位码。(1)LED数码有共阳和共阴两种,把这些LED发光二极管的正极接到一块(一般是拼成一个8字加一个小数点)而作为一个引脚,为共阳管。如下图2.2、2.3所示: 图2.2 图2.32.1.3 温度传感器DS18B20温度传感器是采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片,经焊接,外加不锈钢保护管封装而成,具有耐磨耐碰
14、,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。::技术性能描述* 独特的单线接口方式,DS1820在与微处理器连接时仅需要一条口线即可实现微处理器与DS1820的双向通讯,在使用中不需要任何外围元件。* 测温范围 55125,固有测温分辨率0.5。 -* 支持多点组网功能,多个DS1820可以并联在唯一的三线上,实现多点测温。* 工作电源: 35V/DC* 测量结果以9位数字量方式串行传送。* 不锈钢保护管直径 6 * 适用于1/2”, 3/4”, 1”, DN40DN250各种介质工业管道和狭小空间设
15、备测温:应用范围* 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域* 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。* 汽车空调、冰箱、冷柜、以及中低温干燥箱等。* 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制.DS18B20的性能特点如下:*独特的单线接口仅需要一个端口引脚进行通信;*多个DS18B20可以并联在惟一的三线上,实现多点组网功能;*无须外部器件;*可通过数据线供电,电压范围为3.05.5V;*零待机功耗;*温度以9或12位数字;*用户可定义报警设置;*报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;*负电压
16、特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; I/OC64位ROM单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddDS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图2.4所示。 图2.4 DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图2.5所示: 图2.5 DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的
17、存储器,结构如图2.6所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图2.7所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。由表2.1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权
18、衡考虑。表2.1 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/MS00993.750110187.510113751112750高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当
19、符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重
20、要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。分别说明如下:(1)初始化 单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。(2) ROM操作命令 总线主机检测到DS18B20的存在 便可以发出ROM操作命令之一 这些命令表2.2:表2.2 ROM操作命令指 令代 码Read ROM(读ROM)33HMatch ROM(匹配ROM)55HSkip ROM(跳过ROMCCHSearch ROM(搜索ROM)F0
21、HAlarm search(告警搜索)ECH (3) 存储器操作 命令如表2.3: 表2.3 存储器操作命令指令代码Write Scratchpad(写暂存存储器)4EHRead Scratchpad(读暂存存储器)BEHCopy Scratchpad(复制暂存存储器)48HConvert Temperature(温度变换)44HRecall EPROM(重新调出)B8HRead Power supply(读电源)B4H(4)时序 主机使用时间隙(time slots)来读写DS18B20的数据位和写命令字的位初始化 图2.7 初始化时序时序见图2.7,主机总线to时刻发送一复位脉冲(最短为4
22、80us的低电平信号),接着在tl时刻释放总线并进入接收状态。DS18B20在检测到总线的上升沿之后等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平 持续60-240 us)。如图中虚线所示:写时间隙 图2.8.1 写0时序 图2.8.2 写1时序当主机总线t o时刻从高拉至低电平时,就产生写时间隙见图2.8.1和图2.8.2。从to时刻开始15us之内应将所需写的位送到总线上,DSl820在t o后15-60us间对总线采样。若低电平,写入的位是0。见图2.5.1。若高电平写入的位是1见图2.5.2。连续写2位间的间隙应大于1us。读时间隙 见图2.9,主机总线to时刻从
23、高拉至低电平时,总线只须保持低电平l us。之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t 2时刻前有效,t 2距to为15us。也就是说t 2时刻前主机必须完成读位,并在t o后的60us一120us内释放总线,读位子程序(读得的位到C中)。图2.9 读时序DSl820多路测量简介 初始化跳过ROM变换温度等待1S初始化设置1820个数匹配ROM读存储器存放在缓冲区指针增1初始化b-1=0?否是图2.10 DSl820原理框图每一片DSl820在其ROM中都存有其唯一的48位序列号,出厂前已写入片内ROM 中,主机在进入操作程序前必须逐一接入DS18B20用读ROM(33H)
24、命令将该DS18B20的序列号读出并登录。当主机需要对众多在线DS18B20的某一个进行操作时,首先要发出匹配ROM命令(55H),紧接着主机提供64位序列(包括该DS18B20的48位序列号)。之后的操作就是针对该DS18B20的。而所谓跳过ROM命令即:MOV A,#0CCH。图2.10中先有跳过ROM,即是启动所有DS18B20进行温度变换,之后通过匹配ROM 再逐一地读回每个DS18B20的温度数据。在DS18B20组成的测温系统中,主机在发出跳过ROM命令之后,再发出统一的温度转换启动码44H,就可以实现所有DS18B20的统一转换,再经过1s后,就可以用很少的时间去逐一读取。这种方
25、式使其T值往往小于传统方式。(由于采取公用的放大电路和A/D转换器只能逐一转换)。显然通道数越多,这种省时效应就越明显。DS1820使用中注意事项 DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS182
26、0数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 (3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 (4)在DS18
27、20测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。2.1.4 稳压电源78057805管脚图如图2.11所示:图2.112.2各部分电路说明2.2.1单片机控制部分在本设计中,采用了AT89C51单片机作为本电路的核心电路的设计。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPERO
28、MFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。(1)振荡器特性:XTAL1和
29、XTAL2的反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(2)单片机芯片的擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。AT89C51的稳态逻辑可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但
30、RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。(3)单片机的时钟电路 图2.12片内振荡电路的时钟电路AT89C1单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C51的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用
31、的是在 XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2.13电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择30PF左右。(4)单片机的复位电路图2.13 AT89C51的复位电路本设计中AT89C51是采用上电自动复位和按键复位两种方式。最简单的复位电路如图2.13所示。上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。其中R1和R2分别选择200和1K的电阻,电容器一般选择22F。(5)AT89C51的最小应用系统AT89C51是片内有程序存储器的单片
32、机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2.14所示。这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的IO线。 图2.14 AT89C51单片机构成的最小系2.2.2传感器数据采集电路传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。DS18B20可以采用两种方式供电,一种是采用电源供电方式,如图2.15所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图2.15所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对
33、总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.0口。图2.15 电源供电方式2.2.3 显示电路显示电路是采用P0口输出段码至LED,P2口控制位选通的动态扫描显示方式,三只数码管用NPN型三极管驱动,这种显示方式的最大优点是显示清晰,软件设计简单。如图2.16所示:图2.16 显示电路2.3主板电路图2.17 主板电路系统整体硬件电路包括传感
34、器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路,电源电路等。如图2.17所示图2.17中有四个独立式按键可以分别调整温度计的上下限报警设置,可以任意调整报警上下限。图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音。LED数码管将当前被测温度值显示,从而测出被测的温度值。图2.17中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。第三章 软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 NYNY按键子程序初始化得出温度总子程序报警子程序
35、调显示子程序S1键按下否?开始 温度比较子程序 是否超出上下限返 回图3.1 主程序流程3.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。3.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNYY图3.2 读出温度子程序流程3.3温度转换命令子程序
36、 温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图,如图3.3所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图3.3 温度转换流程图3.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4所示。开始N温度零下?Y温度值取补码置“-”标志置“+”标志计算小数位温度BCD值 .计算整数位温度BCD值 结束图3.4 计算温度流程图 3.5 温度数据显示子程序显示数据子程序主要是对显示缓冲器中的显示数据进
37、行刷新操作,查表送段码至LED,开位码显示,采用动态扫描方式。第四章 实物制作与调试说明4.1原材料的选择与采购本次设计在原材料的选择与采购上做到了设计最优化,即用最小的开支,获得性价比较高的元器件和材料。设计中,印刷电路板采用单面板,给人看起来没有太复杂的感觉。选元器件时,尽量选择能使电路简化的器件。例如,为了不增大电路板的体积及减小功耗,本设计采用ATMEL公司的89S51单片机,体积小,工作电压低。4.2印刷电路板的设计与制作 电路板的设计与制作是整个电路制作过程中比较重要的一步,如果电路板做不好,再好的电路设计也不行。下面就对简单电路板的设计及制作过程做一个简单的介绍。 1、利用Pro
38、tel 99SE画原理图。在画原理图的时候为了电路板比较好看,要注意布局,同时还得注意元件封装,命名等。画好原理图后要对其进行电气检测,检查原理图是否有错,同时还要创建网络表为下一步的工作做好准备。2、PCB版图的设计。在对PCB图设计时首先要添加封装库,这样原理图中给予的封装才能有效,然后调入网络表看原理图的封装,命名等是否有错,如果没错便可进行下一步操作。对其进行布线,首先先对布线规则作一些必要的设置,如焊盘的大小,导线的粗细等。做好这些设置后便可进行自动布线,自动布线后如果布线不是很理想还可用手动布线进行手动修改,这样PCB图就画好了。3、电路板的制作。把设计布局好的PCB图打印出来之后
39、,然后进行压板、腐蚀、钻孔。注意,腐蚀之前要检查是否有断线及焊盘的脱落等。4、元件的焊接。元件焊接的时候要先查看跳线,首先焊接所有的跳线,其次再焊接分离元件,最后焊接集成块和外接的引线。当然为了美观在布线中最好不要出现跳线。5、整体检查。查看是否有断线和虚焊等。6、烧录程序4.3 单片机测试判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V,19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为
40、零,可以用导线短时间和5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。4.4 硬件及软件调试硬件调试,第一步是目测,在印好电路板之后,先检查印制线是否有断线、是否有毛刺、是否与其它线或焊盘粘连、焊盘是否有脱落、过孔是否有未金属化现象。而在目测的过程中,我们发现有一条印制线断开,因此我们用焊锡使这条断线连在一起。第二步是用万用表测量。在目测完之后,利用万用表来测量连线和接点,检查它们的通断状态是否和设计一样。再检查各种电源线和地线是否有短路现象,在检查的过程中,发现不管是连线还是接点都符合设计规定,电源和地线也没有短路现象。第三步是加电检查。给印制板加电时,我们检
41、查到的器件的电源端符合要求的电压值+5V,同时接地端的电压为0。第四步是联机检查。利用系统和单片机开发系统用仿真电缆连接起来,发现联机检查完后以上是连接都正确、畅通、可靠。软件调试,第一步是在具有汇编软件的主机上和用户系统连接起来,进行调试准备。第二步是单步运行。第三步是系统连调,即进行软件和硬件联合调试。经调试,软件运行良好。4.5整机的调试与测试首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果。证明显示电路正常。按下复位按键,LED无显示,松开,显示正常,证明复位电路正常。然后测试得到温度程序,将初始化程序,DS18B20正常工作
42、的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题在于DS18B20初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前温度。证明温度传感器DS18B20工作正常,各部分子程序运行正常。最后是按键子程序及报警子程序的调试,将按键子程序及报警子程序及上述程序正确编排后,写入单片机中,上电后,各个部分工作正常,在测得当前温度超出设定温度上下限后,蜂鸣器发出报警声,调试基本成功。但后来发现,按键要在按下1S后才反应,再次研读程序发现原因在于按键程序采用扫
43、描方式,程序每执行一遍才扫描按键一次。进而到考虑采用中断方式解决此问题,但因为DS18B20正常工作有严格的时序限制,否则不能正常工作,而中断则在很大可能上会影响到DS18B20正常工作。在尝试并采用中断方式却失败后,决定仍采用扫描方式。后来仔细排查发现按键反应迟缓是由于显示程序占用时间过长造成的,修改显示程序并且在主程序和按键子程序中增加调用显示程序的次数,问题得以解决。至此,此次设计的调试部分完成。设计的所有功能全部得以实现。第五章 使用说明书 本电路额定工作直流电压为+5V,有极性判别保护功能,采用7805集成稳压芯片以保证电路的供电稳定,用户输入电源在7-25V均可正常工作。电路中有五
44、个按键,从左到右依次为S1、S2、S3、S4、RESET,介绍如下:S1为温度上下限设置状态的退出或确定按键S2为设置温度上下限的+键,每按下一次上下限值加一S3为设置温度上下限的-键,每按下一次上下限值减一S4为设置温度上下限设置状态进入按键,第一次按下进入低限设置,按下S4后,再次按下S1进入高限设置。RESET为复位按键使用方法及报警电路说明:接通电源,红色指示灯亮,表明电源正常。此时数码管应显示初值025,由于显示时间稍短,一闪即过。接下来显示当前温度,若不显示则说明硬件有问题,此时蜂鸣器将报警,绿色指示灯也会点亮。硬件正常,LED就会显示当前温度。若此时检测到当前环境温度不在原来设定的上下限范围之内,蜂鸣器也将报警同是绿灯点亮。直到采取措施改变环境温度在上下限范围内或调整温度上下限。第六章 参考文献1陈权昌,李兴富单片机原理与应用华南理工大学出版社,2007年2陈明.protel 99se原理图与pcb设计教程.北京:机械工业出版社,20063阎石.数字电子技术基础(第四版). 北京:高等教育出版社,19974王恩荣.MCS-51单片机应用技术.北