八路温度采集显示系统设计

更新时间:2023-03-08 06:02:09 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

在实际生产和生活等各个领域中,温度是环境因素不可或缺的一部分,对温度进行及时精确的控制和检测显得尤为重要。

本次设计在控制成本的前提下,设计了一款高精度、可同时检测八路温度并由液晶显示器对各路温度值进行显示的温度检测显示系统。该系统以AT89C51为控制核心,采用可编程单总线数字式温度传感器DS18B20进行温度采集,八路温度值由LM041L液晶显示器显示。系统正常运行时,其测温范围为-55℃~+125℃,该系统在现代电子工业飞速发展的时期有良好的应用前景。

关键词:AT89C51;多路;温度检测;显示

Abstract

Temperature is an essential of environmental factors in our actual production,living and many other fields. It?s particularly important to control and detect the temperature promptly and exactly.

It has designed a high precision temperature testing system in the base of lost control, which can inspect eight route temperature at one time and show each route of temperature by LCD. AT89C51is adopted as control core in this system. Its sensors for temperature is single bus digital DS18B20, sending temperature to LM041L LCD to display. When it operates normally, it?s temperature ranges from -55℃ to +125℃, the system has a good application prospect in the morden period when electronics industry developing rapidly.

Keywords:AT89C51;Many routes;Temperature Detection;Display

目 录

摘要 ........................................................................................................................................................ 1 Abstract ............................................................................................................................................... 2 目录 ......................................................................................................................................................... I 1 绪论 ................................................................................................................................................... 1 1.1 课题的来源 ............................................................................................................................... 1 1.2 课题的目的 ............................................................................................................................... 1 1.3 课题的意义 ............................................................................................................................... 1 2 八路温度采集显示系统总体方案设计 ......................................................................... 3 2.1 确定设计流程图 .................................................................................................................... 3 2.2 八路温度采集显示系统方案论证 ............................................................................... 3 2.3 确定总体设计方案 ............................................................................................................... 7 3 八路温度采集显示系统硬件设计 ................................................................................... 8 3.1 AT89C51单片机的特点及引脚说明 ........................................................................ 8 3.2 温度采集模块硬件设计 .................................................................................................. 11 3.3 显示模块硬件设计 ............................................................................................................. 15 3.4 报警模块硬件设计 .............................................................................................................. 17 3.5 串行口上位机通信模块设计 ........................................................................................ 18 3.6 片外程序存储器的扩展 .................................................................................................. 21 4 八路温度采集显示系统软件设计 ................................................................................. 26 4.1 温度采集模块软件设计 .................................................................................... 27 4.2 单片机处理模块软件设计 ............................................................................................. 32 4.3 显示模块软件设计 ............................................................................................................. 34 4.4 报警模块软件设计 ............................................................................................................. 36 4.5 串行口上位机通信模块软件设计 ............................................................................. 38 5 八路温度采集显示系统仿真调试及结果 ................................................................. 39 5.1 Proteus与Keil μ Vision联合仿真 .......................................................................... 39 5.2 Proteus与Keil联合仿真结果 .................................................................................... 41 结论 ...................................................................................................................................................... 44 参考文献 ........................................................................................................................................... 45 附录1 系统仿真所用元器件清单 ..................................................................................... 48 附录2 系统仿真C语言程序清单 .................................................................................... 49 附录3 系统仿真电路原理图 ................................................................................................ 58 致谢 ...................................................................................................................................................... 59

八路温度采集与显示系统设计

1 绪论

1.1 课题的来源

在实际生产、生活等各个领域中,温度是环境因素的不可或缺的一部分,对温度进行及时精确的控制和检测显得尤为重要。比如消防电气的非破坏性温度检测,电力、电讯设备的过热故障预知检测,空调系统的温度检测,在医院的监护中也用到温度的测量,化工、机械等设备温度过热检测,土壤各个层面上的温度将会影响植物的生长,以及热处理中工件各个部位的温度对工件形成后的性能至关重要等等。总之,现代电子工业的飞速发展对温度检测的智能化精确度要求越来越高。

1.2 课题的目的

通过本次设计,我们对大学四年所学课程将做出一个总结,对各门课程均将有更深入的了解,更加熟练的掌握设计方案的提出,设计流程的规划以及各器件的硬件连和软件编程,并且能够更加熟练的操作Proteus仿真软件,真正培养出科学的思维方式和灵活解决问题的能力,为以后实际工作奠定良好的基础。

在本次设计结束后,我们将得到一款能够同时检测显示八路温度的多点智能测温系统,当某一路或某几路温度值超过设定的上限值或者下限值时,报警电路中的蜂鸣器鸣响且提示闪亮,使操作者能够及时发现问题并控制温度回到额定温度范围内。该系统运行稳定,操作简便,应用灵活,能够在当代农业、工业、医疗以及日常生活中得到良好的应用。

1.3 课题的意义

温度控制系统在国内各行各业的应用虽然已经十分广泛,但从生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比有着较大差距。目前,我国在这方面总体技术水平处于20世纪80年代中后期水平,成熟产品主要以“点位”控制及常规的PID控制器为主。它只能适应一般温度系统控制,难于控制滞后、复杂、时变温度系统控制。而适应于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并在仪表控制参数的自整定方面,国外已有较多的成熟产品。但由于国外技术保密及我国开发工作的滞后,还没有开发出性能可靠的自整定软件。控制参数大多靠人工经验及现场调试确定。

国外温度控制系统发展迅速,并在智能化、自适应、参数自整定等方面取得成果。

1

八路温度采集与显示系统设计

日本、美国、德国、瑞典等技术领先,都生产出了一批商品化的、性能优异的温度控制器及仪器仪表,并在各行业广泛应用。它们主要具有如下的特点:一是适应于大惯性、大滞后等复杂温度控制系统的控制;二是能够适应于受控系统数学模型难以建立的温度控制系统的控制;三是能够适应于受控系统过程复杂、参数时变的温度控制系统的控制;四是温度控制系统普遍采用自适应控制、自校正控制、模糊控制、人工智能等理论及计算机技术,运用先进的算法,适应的范围广泛;五是温控器普遍具有参数自整定功能。借助计算机软件技术,温控器具有对控制对象控制参数及特性进行自动整定的功能。有的还具有自学习功能,能够根据历史经验及控制对象的变化情况,自动调整相关控制参数,以保证控制效果的最优化;六是具有控制精度高、抗干扰力强、鲁棒性好的特点。

目前,国内外温度控制系统及仪表正朝着高精度、智能化、小型化等方面快速发展。本课题设计的系统符合当代科学发展的趋势,能够满足现代生产生活的需要,其测温效率高,具有较强的稳定性和灵活性。方便快捷的实现了多路温度采集并显示,该系统用液晶显示器节省了空间且显示效果好,报警电路同时包含了蜂鸣器和提示灯,能更好的引起操作者的警觉,在实际生产中能够降低由于温度超过额定范围引发的事故,有良好的实用性,在国内外都具备良好的应用前景。

2

八路温度采集与显示系统设计

2 八路温度采集显示系统总体方案设计

2.1 确定设计流程图

在熟悉课题,明确任务的基础上,查阅相关资料,理清设计思路,综合考虑总的设计时间和各部分设计所需时间,最终决定将本次设计分五大步进行。

(1)熟悉课题,明确任务,查阅相关资料,确定总体设计方案;

(2)根据各部分的功能划分功能模块,确定每一模块的硬件组成,合理选取具有相应功能的器件;

(3)进行硬件设计,把各器件组成相应功能的模块,并把各功能模块进行电气连接,形成总的功能系统;

(4)进行软件设计,编写程序,实现各模块功能,使整个系统能够良好的运行; (5)进行仿真调试,检查各模块功能能否完全实现,综合考虑系统的灵活性、稳定性、误差大小及测温效率调整各器件的各项参数。使系统的处在最佳性能状态。

经分析总结,确定总的设计流程如图2.1所示。

开始总体设计方案功能模块划分系统设计软件设计硬件设计仿真调试 图2.1 设计流程图

2.2 八路温度采集显示系统方案论证

2.2.1 单片机的选取

若采用8031芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加

3

八路温度采集与显示系统设计

了复杂度,且占用空间增大。

但是如果采用AT89C51单片机为控制核心优点凸显,51系列微处理器基于简化的嵌入式控制系统结构,被广泛应用于从军事到自动控制再到PC机上的键盘上的各种应用系统上,仅次于Motorola 68HC11在8位微控制器市场上的销量,很多制造商都可提供51系列单片机,像Intel Philips Siemens等,这些制造商给51系列单片机加入了大量的性能和外部功能,像IC总线接口,模拟量到数字量的转换,看门狗,PWM输出等,不少芯片的工作频率达到40M,工作电压下降到1.5V。基于一个内核的这些功能使得51系列单片机很适合作为厂家产品的基本构架,它能够运行各种程序而且开发者只需要学习这一个平台[1]。

比较这两种方案,综合考虑单片机的各部分资源,因此此次设计选用第二种方案,选用AT89C51单片机为核心处理器。

2

2.2.2 温度传感器的选取

传感器是信号输入通道的第一道环节,也是决定整个测试系统性能的关键环节之一。由于传感技术的发展非常迅速,各种各样的传感器应运而生,所以对传感器的正确选用显得尤为重要。而众多传感器对微机化测控系统有较大的影响。当今应用较多的传感器大致可以分为以下几种[2]:

(1)大信号输出传感器。为了与A/D输入要求相适应,传感器厂家设计制造一些专门与A/D相配套的大号输出传感器。通常是把放大电路与传感器做成一体,使传感器能直接输出0~5V、0~10V或0~2.5V要求的信号电压,把传感器与相应的变送器电路做成一体,构成能输出4~20mA直流标准信号的变送器。对于大电流输出,只要经过简单I/V转换即可变为打信号电压输出。对于大信号电压可以经A/D转换,也可以经V/F转换送入微机,但后者响应速度较慢。

(2)集成传感器。集成传感器是将传感器与信号调理电路做成一体。例如,将应变片、应变电桥、线性化处理、电桥放大等做成一体,构成集成压力传感器。采用集成传感器可以减轻输入通道的信号调理任务,简化通道结构。

(3)光纤传感器。这种传感器其信号拾取、变换、传输都是通过光导纤维实现的,避免了电路系统的电磁干扰。在信号输入通道中采用光纤传感器可以从根本上解决由现场通过传感器引入的干扰。

(4)数字式传感器。数字式传感器一般都采用频率敏感效应器件构成,也可以是由敏感参数RLC构成的振荡器,或模拟电压输入经V/F转换等,因此,数字量传感器一般都是输出频率参量,具有测量精度高、抗干扰能力强,便于远距离传送等优点。

4

八路温度采集与显示系统设计

此外,采用数字量传感器时,传感器输出如果满足TTL电平标准,则可直接接入计算机的I/O口或中断入口。

如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。测量结果的成败,在很大程度上取决于传感器的选用是否合理,因此在设计过程中选取温度传感器要注意一下几点:

(1)根据测量对象与测量环境确定传感器的类型

要进行—项具体的测量工作,首先要考虑采用何种原理的传感器,这需要分析多方面的因素之后才能确定。因为,即使是测量同一物理量,也有多种原理的传感器可供选用,哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小;被测位置对传感器体积的要求;测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,价格能否承受,还是自行研制。

(2)灵敏度的选择

通常,在传感器的线性范围内,希望传感器的灵敏度越高越好。因为只有灵敏度高时,与被测量变化对应的输出信号的值才比较大,有利于信号处理。但要注意的是,传感器的灵敏度高,与被测量无关的外界噪声也容易混入,也会被放大系统放大,影响测量精度。因此,要求传感器本身应具有较高的信噪比,尽量减少从外界引入的串扰信号

(3)频率响应特性

传感器的频率响应特性决定了被测量的频率范围,必须在允许频率范围内保持不失真的测量条件,实际上传感器的响应总有—定延迟,希望延迟时间越短越好。传感器的频率响应高,可测的信号频率范围就宽,而由于受到结构特性的影响,机械系统的惯性较大,因有频率低的传感器可测信号的频率较低。

(4)线性范围

传感器的线形范围是指输出与输入成正比的范围。以理论上讲,在此范围内,灵敏度保持定值。传感器的线性范围越宽,则其量程越大,并且能保证一定的测量精度。在选择传感器时,当传感器的种类确定以后首先要看其量程是否满足要求。但实际上,任何传感器都不能保证绝对的线性,其线性度也是相对的。当所要求测量精度比较低时,在一定的范围内,可将非线性误差较小的传感器近似看作线性的,这会给测量带

5

八路温度采集与显示系统设计

来极大的方便。

(5)稳定性

传感器使用一段时间后,其性能保持不变化的能力称为稳定性。影响传感器长期稳定性的因素除传感器本身结构外,主要是传感器的使用环境。因此,要使传感器具有良好的稳定性,传感器必须要有较强的环境适应能力。在选择传感器之前,应对其使用环境进行调查,并根据具体的使用环境选择合适的传感器,或采取适当的措施,减小环境的影响。

(6)精度

精度是传感器的一个重要的性能指标,它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以,不必选得过高。这样就可以在满足同一测量目的的诸多传感器中选择比较便宜和简单的传感器。

如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。对某些特殊使用场合,无法选到合适的传感器,则需自行设计制造传感器。自制传感器的性能应满足使用要求。

显而易见,数字式温度传感器在本设计中的应用优点突出,综合考虑以上选取注意事项,本设计采用DS18B20单总线数字式温度传感器对温度信号进行采集。

2.2.3 显示器的选取

显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,以便使现场工作人员能够及时掌握生产过程。

工业控制系统中常用的显示器件有CRT、LED、LCD等,CRT不仅可以进行字符显示,而且可以进行画面显示,和计算机配合使用,可十分方便地实现生产过程的管理和监视,但由于CRT体积大,价格昂贵,所以只适用于大型微机控制系统。在中小型的控制过程中,为了使工作人员能够在现场直接看到生产情况和报警信号,经常选用LED和LCD作为显示器件。LED和LCD都具有体积小,功耗低,响应速度快,易于匹配,可靠性高和寿命高等优点。LCD是一种功耗极低的显示元件,在仪表和低功耗应用系统中的使用较多,而LED虽然成本低廉,也用于单片机控制系统中。但是现实数值位数及精度受到LED数量多少的限制,本设计要同时显示八路温度,若用LED显示需求片数太多,不仅总成本没有降低,而且体积增大,观察

6

八路温度采集与显示系统设计

不便。所以,本系统采用LCD液晶显示。

[3]

2.3 确定总体设计方案

通过对设计任务及相关芯片的深入了解,最终决定本设计采用AT89C51单片机作为控制器,选用单总线数字温度传感器DS18B20对温度进行采集,采用16×4字符的LCD显示器一起构成八路温度采集与显示系统,使得系统可以检测-55℃~

+125℃范围内的温度,选择分辨率为12位,使用液晶显示器对八路温度进行循环

显示,考虑到测温精度,设置显示数值精确到0.1℃,并且设置温度上下限,当某一路或几路温度值超过上下限温度时,报警电路中的蜂鸣器鸣响,提示灯亮。根据各模块要实现的功能及其各模块的结构特点,设计其总体结构如图2.2所示。

XTL1XTL2LCD显示AT89C51DS18B20...DS18B20串行端口上位机

图2.2 八路温度采集与显示系统结构图

7

八路温度采集与显示系统设计

3 八路温度采集显示系统硬件设计

3.1 AT89C51单片机的特点及引脚说明

3.1.1 AT89C51单片机的特点

AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片,内

含4Kbytes的可反复擦写的只读程序存储器(EPROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域,该芯片外形结构及引脚如图3.1所示[4]。 U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 图3.1 AT89C51外形结构及引脚 AT89C51单片机主要性能参数为:

(1)与MCS-51产品指令系统完全兼容;(2)4K字节可重擦写Flash闪速存储器;(3)1000次擦写周期;(4)全静态操作:0Hz—24Hz;(5)三级加密程序存储器;(6)128×8字节内部RAM;(7)32个可编程I/O口线;(8)2个16位定时/计数器;(9)6个中断源;(10)可编程串行UART通道;(11)低功耗空闲和掉电模式[8]。

8

八路温度采集与显示系统设计

AT89C51提供4K字节Flash闪速存储器,128字节内部RAM,32个I/O

口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。

3.1.2 AT89C51单片机引脚功能说明

(1)Vcc:电源电压; (2)GND:地;

(3)P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

(4)P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可做输入口。做输入口输入时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,

P1接收低8位地址。

(5)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可做输入口,做输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输入一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8为地址的外部数据存储器(如执行MOVX@R1指令)时,P2口线上的内容(也即特殊功能寄存器SFR区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接受高位地址和其它控制信号。

(6)P3口:P3口是一个带有内部上拉电阻的8位双向I/O口,P3口的输出

9

八路温度采集与显示系统设计

缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”时,它们被内部上拉电阻拉高并可作为输入端。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3.1所示。

表3.1 P3口第二功能 端口引脚 第二功能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD(串行输入口) TXD(串行输出口) 错误!未找到引用源。(外部中断0) 错误!未找到引用源。(外部中断1) T0(定时/计数器0) T1(定时/计数器1) 错误!未找到引用源。(外部数据存储器写选通) 错误!未找到引用源。(外部数据存储器读选通) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号 (7)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

(8)ALE/错误!未找到引用源。:当访问外部程序存储器或数据存储器时,

ALE(地址锁存允许)输出脉冲可用于锁存地址的低八位字节。即使不访问外部存

储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(错误!未找到引用源。)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止

ALE操作。该位置置位后,只有一条MOVX和MOVC指令ALE才会被激活。

此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效[8]。

(9)错误!未找到引用源。:程序储存允许(错误!未找到引用源。)

输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次错误!未找到引用源。有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的错误!未找到引用源。信号不出现。

(10)EA/VPP:外部访问允许。欲使CPU仅访问外部数据存储器(地址为

10

八路温度采集与显示系统设计

0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1

被编成,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件使用12V编程电压Vpp。

(10)XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 (11)XTAL2:振荡器反相放大器的输出端。

3.2温度采集模块硬件设计

3.2.1 DS18B20传感器的结构

DS18B20温度传感器是美国Dallas半导体公司生产的总线式智能数字温度传

感器。DS18B20可根据实际要求通过简单的编程实现9~12位的分辨率数字值读数方式。其工作电源既可在远端引入,也可采用寄生电源方式产生。多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。现场温度直接以单线的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。

DS18B20引脚排列及定义如图3.2所示[3]。

DALLASDS18B2011:GND22:DQ33:VCC

图3.2 DS18B20的TO-92封装

DS18B20的三个引脚布局合理,结构简单,功能明确。DQ:数据输入输出;VCC:可选的电源电压脚;GND:接地。

DS18B20内部主要由64位ROM、高温传感器、非易失性温度报警触发器TH和TL、高速缓存4个数据部分组成。64位ROM用于存储序列号。开始8位

是产品类型编号。接着是每个器件唯一的序列号,共有6个字节48位,在出厂前已

11

八路温度采集与显示系统设计

写入片内ROM中。最后8位是前面56位的CRC校验码。非易失性温度报警触发器TH和TL,可以由用户通过软件写入报警上下限值。高速缓存由9个字节组成。

DS18B20的内部结构功能框图如图3.3所示[1]。

存储器和控制逻辑I/OVD1ROM与单线接口温度传感器高温触发器THVD2VDD高速暂存寄存器低温触发器TL配置寄存器8位CRC发生器 图3.3 DS18B20内部结构框图

主机在进入操作程序前必须逐一读入DS18B20,用读ROM命令将该

DS18B20序列号读出并登录该主机。需要对众多在线DS18B20的某一个进行操作

时首先要发出匹配ROM命令,紧接着主机提供64位序列(包括该DS18B20的

48位序列号)。

DS18B20的存储器结构如表3.2所示。存储器由一个暂存RAM和一个存储

高低位报警触发值TH和TL的非易失性电可擦除EERAM组成。当在单总线上通信时,暂存器帮助确保数据的完整性。数据先被写入暂存器,这里的数据可被读回。数据经过校验后,用一个拷贝暂存器命令把数据传到非易失性EERAM中。这一个过程确保更改存储器数据时的完整性。

表3.2 存储器结构

温度值低位字节LSB(50H) 温度值高位字节MSB(05H) 保留(FFH) 保留 保留(10H) TH用户字节1 TH用户字节2 配置寄存器 CRC 暂存器的结构为8个字节的存储器。头两个字节包含测得的温度信号。第3和

12

八路温度采集与显示系统设计

第4字节的两个字节没有使用,但是在读回数据时,他们全部为逻辑1。还有一个第

9字节,可以用读暂存器命令读出。这个字节是以上8个字节的CRC码。

暂存器第5个字节是配置寄存器,用于确定温度值转换为数字值的分辨率。该配置寄存器字节各位的定义如表3.3所示。

表3.3 配置寄存器各位的定义

TM R1 R0 1 1 1 1 1 TM是测试模式位。R0、R1决定温度转换的分辨率位数,其定义如表3.4所

示。

表3.4 DS18B20的分辨率

R1 0 0 1 1 R0 0 1 0 1 分辨率 温度最大转换时间 9位 10位 11位 12位 93.75ms 187.5ms 375ms 750ms 3.2.2 DS18B20的特点

(1)1—Wire系统

1—Wire系统也称为单总线系统。单总线系统包括一个总线控制器和一个或多

个从机,DS18B20是从机。关于这种总线分三部分讨论:硬件配置、执行序列和单线信号(信号类型和时序)。

(2)硬件配置

单总线只有一条定义的信号线。重要的是每一个挂在总线上的器件都能在适当的时间驱动它。为此每一个总线上的器件都必须是漏极开路或者三态输出。DS18B20的单总线端口(I/O引脚)是漏极开路式的。一个多点总线由一个单总线或多个挂于其上的从机构成。单总线需要一个约5kΩ的上拉电阻[10]。

单总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的话,总线必须停留在空闲状态。在恢复期间,如果单总线处于非活动(高电平)状态,位与位之间的恢复时间可以无限长。如果单总线停留在低电平超过

480μs,总线上的所有器件都被复位[10]。

(3)执行序列

13

八路温度采集与显示系统设计

通过单线总线端口访问DS18B20的协议如下:

①初始化;②ROM操作指令;③存储器操作指令;④执行/数据。 (4)初始化

通过单线总线的所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟在其后从机发出的存在脉冲。存在脉冲让总线控制器知道DS18B20在总线上且已准备就绪[12]。

(5)I/O信号

DS18B20需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:

复位脉冲、存在脉冲、写0、写1、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。

和DS18B20间的任何通信都需要以初始化序列开始,初始化序列由一个复位脉冲和一个存在脉冲表示。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接受数据(适当的ROM命令和存储器操作命令)。

总线控制器发出(TX)一个复位脉冲(一个最少保持480μs的低电平信号),然后释放总线,进入接收状态(RX)。单总线由5kΩ上拉电阻拉倒高电平。探测到

I/O引脚上的上升沿后,DS18B20等待15~60μs,然后发出存在脉冲(一个60~240μs的低电平信号)。

(6)读/写时间隙

DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。

①写时间隙

当主机把数据线从逻辑高电平拉倒逻辑低电平的时候,写时间隙开始。有两种写时间隙;写1时间隙和写0时间隙。所有写时间隙必须最少持续60μs,包括两个写周期间至少1μs的恢复时间。

I/O线电平变低后,DS18B20在一个15μs到60μs的窗口内对I/O线采样。

如果线上是高电平,就是写1,如果线上是低电平,就是写0。

主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉倒高电平。

主机要生成一个写0时间隙,必须把数据线拉到低电平并保持60μs。R/错误!未找到引用源。

②读时间隙

14

八路温度采集与显示系统设计

当从DS18B20读取数据时,主机生成读时间隙。当主机把数据线从高电平拉到低电平时,写时间隙开始。数据线必须保持至少1μs;从DS18B20输出的数据在读时间隙的下降沿出现后15μs内有效。因此,主机在读时间隙开始后必须停止把I/O脚驱动为低电平15μs,以读取I/O脚状态。在读时间隙的结尾,I/O引脚将被外部上拉电阻拉倒高电平。所有读时间隙必须至少60μs,包括两个读周期间至少1μs的恢复时间。

3.2.3 DS18B20与单片机连接

由于DS18B20是但总线数字式温度传感器,内置了模数转换模块,所以只需按照前面介绍其三个端口各自的功能将其挂在单总线上即可,即VCC端口接电源,

DQ端口接单片机的P3.2端口,作为数据传送端口,并接一个5kΩ的上拉电阻,GND端口则接地,其硬件连接如图3.4所示。

图3.4 DS18B20与单片机硬件连接图

当系统正常运行时,对DS18B20进行初始化后开始采集到温度,采集温度后通过内置的模数转换模块对采集到的模拟量进行模数转换,转换成数字量之后通过

DQ端口将其送到单片机进行处理,处理之后送往显示。

3.3 显示模块硬件设计

3.3.1 LM041L液晶显示器的结构及其特点

标准的LCD字符型显示器模块的接口引脚名称和引脚功能如下[11]:

15

八路温度采集与显示系统设计

(1)GND:供电电源地。

(2)Vcc:供电电源正输入端(+5V)。 (3)Vo:液晶显示器对比对调整。

接正电源时对比度最弱,接地电源时对比度最高;使用时可以通过一个10kΩ的电位器调整对比度。

(4)RS:寄存器选择输入。

RS=0,选择指令寄存器。可以写指令,读忙标志或地址计数器;RS=1,选择

数据寄存器。可以写和读数据。

(5)R/错误!未找到引用源。:读写信号线。

高电平时进行读操作,低电平时进行写操作。当RS和R/错误!未找到引用源。为高电平时可以读忙信号;当RS为高电平R/错误!未找到引用源。为低电平时可以写入数据。

(6)E:命令使能端。

当E端由高电平跳变成低电平时,液晶模块执行命令。 (7)DB0~DB7(或D0~D7):8位双向数据线。 (8)BL1~BL4:背光板工作电压的输入端。

LM041L字符型显示器模块是4行×16个字符LCD显示器。该器件由64个

字符点阵块组成,可以显示ASCII码表中的所有可显示字符。LCD字符型显示器外形和引脚排列、名称如图3.5所示。

5×7点阵32个点阵玻璃板可视窗BL1BL2BL3BL4GNDVccDB0DB1DB2DB3DB4DB5DB6DB7R/WVoRSE

16

八路温度采集与显示系统设计

图3.5 LCD字符型显示器外形和引脚排列、名称

3.3.1 LM041L液晶显示器与单片机连接

通过上一节对LM041L液晶显示器的了解可以知道LM041L的DB0~DB7端口用作双向数据线,单片机的P0口也可作为数据输入输出端口,所以将LM041L的DB0~DB7链接到单片机的P1.0~P1.7,RS、R/错误!未找到引用源。及E端口分别与单片机的P3.5、P3.6及P3.7相连接,用来控制数据的读写及液晶显示器的工作状况。而Vcc和Vo则接电源,GND按照要求接地,LM041L与单片机的硬件连接如图3.6所示。

图3.6 液晶显示器与单片机硬件连接图

3.4 报警模块硬件设计

报警是微机控制系统的一项重要功能,主要用于保证生产过程正常运行和操作者 的生命安全。在生产过程中控制系统随时检测被控对象的一些重要参数,当超出允许范围时,控制系统便会发出声光报警信号,引起操作者注意以便采取相应的措施。智能型的报警系统不仅能够发出声光报警信号,甚至可以实现简单故障的自动处理[17]。

本系统在报警电路中分别安装了红色发光二极管和蜂鸣器,分别设置温度上限为

+90℃,温度下限为-10℃。当系统正常运行时,八路温度都在限定温度范围之内,

17

八路温度采集与显示系统设计

连接发光二极管和蜂鸣器的两端口同时输出低电平,由于在发光二极管和蜂鸣器的另一端都接地,所以发光二极管处于熄灭状态,蜂鸣器不鸣响;当八路温度有一路或几路超过上限或者下限时,连接发光二极管和蜂鸣器的两个端口同时由低电平向高电平跳变,后又由高电平跳到低电平,并循环此动作,来发出一个高地电平循环跳变的脉冲波,使红色发光二极管闪烁并且蜂鸣器发出声音。当控制八路温度都回到限定范围内时,发光二极管熄灭且蜂鸣器停止响声,其硬件连接如图3.7所示。

图3.7 报警电路与单片机硬件连接图

3.5 串行口上位机通信模块设计

串行通信是指通信的发送方和接收方之间数据信息的传输是在单根数据线上, 以每次一个二进制位移动的它的优点是只需一对传输线进行传送信息, 因此其成本低, 适用于远距离通信,它的缺点是传送速度低[19]。

串行通信有异步通信和同步通信两种基本通信方式。同步通信适用于传送速度高的情况, 其硬件复杂而异步通信应用于传送速度在50到19200波特之间,是比较常用的传送方式在异步通信中,数据是一帧一帧传送的,每一串行帧的数据格式由一位起始位,5~8位的数据位,一位奇偶校验位(可省略)和一位停止位四部分组成,在串行通信前,发送方和接收方要约定具体的数据格式和波特率(通信协议)[19]。

18

八路温度采集与显示系统设计

PC机采用可编程串行异步通信控制器8250来实现异步串行通信。通过对8250 的初始化编程,可以控制串行数据传送格式和速度。RS-232C串行接口COM1和

COM2是PC机中的两个标准,51系列单片机片内含有一个全双工的串行接口, 通

过编程也可实现串行通信功能[21]。

3.5.1 RS-232C标准

RS-232C是美国电子工业协会(EIA)正式公布的, 在异步串行通信中应用最

广的标准总线。该标准适用于DCE和DTE间的串行二进制通信, 最高数据传送速率可达19. 2kbps, 最长传送电缆可达15米。RS - 232C标准定义了25根引线,对于一般的双向通信,只需使用串行输入RXD,串行输出TXD 和地线GND。在电气性能方面,RS-232C标准的电平采用负逻辑, 规定+ 5V~+ 15V之间的任意电平为逻辑“0”电平,-5 V~-15V之间的任意电平为逻辑“1”电平, 它要求RS-232C接收器必须能识别低到+3V的信号作为逻辑“0”,识别-3V的信号作为逻辑“1”,即有

2V的噪声容限。RS - 232C是是位串行方式,传输数据的格式如图3.8所示,这是微

机系统中最通用的格式。7位ASCII码数据的连续传送由最低有效数字开始,以奇偶校验位结束(RS-232C标准接口并不限于ASCII数据,还可用5到8个数据加一奇偶校验位的方式)。RS-232C标准接口上的信号线基本上可分为四类:数据信号(4根)、控制信号(12根)、定时信号(3根)和地(2根)[21]。

(1)数据信号,“发送数据TXD”和“接收数据RXD”信号线是一对数据传输线,用于传输串行的位数据信息。对于异步通信,传输的串行位数据信息的单位是字符。发送数据信号由数据终端设备DTE产生,送往数据通信设备DCE。在发送数据信息的间隔期间或无数据信息发送时,数据终端设备DTE保持该信号为“1”。接收数据信号由数据通信设备DCE发出,送往数据终端设备DTE。同样,在接收数据信息的间隔期间或无信息传输时,该信号应为“1”。

ASCⅡ码起始位偶奇校验位停止位

图3.8 串行数据传输格式

19

八路温度采集与显示系统设计

(2)控制信号,数据终端设备DTE发出请求发送RTS信号到数据通信设备,要求数据通信设备发送数据。在双工系统中,该信号的置位条件保持数据通信的设备处于发送方式。在半双工系统中,该信号的置位条件维持数据通信设备处于发送状态,并且禁止接收;该信号复位后,才允许数据通信设备转为接收方式。在数据通信设备复位清除发送信号之前,请求信号不能重新发生。

(3)定时信号,数据终端设备使用发送信号定时信号指示发送数据线上的每个二进位数据的中心位置;而数据通信设备使用接收信号定时信号指示接收数据线上的每个二进位制的中心位置。

(4)地信号,保护地即屏蔽地;信号地是RS-232C所有信号公共参考点的地。在接口电路和计算机接口芯片中大都为TTL或CMOS电平,所以在通信时,必须进行电平转换,以便与RS-232标准的电平匹配。MAX232芯片可以完成电平转换。

3.5.2 通过MAX232芯片与电脑串行口连接

电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠[35]。

MAX232芯片是MAXIM公司生产的低功耗、单电源、双RS232发送/接收器。

适用于各种EIA-232E 和V.28/ V.24的通信接口。

MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源变换RS-232C输出电平所需±10V电压,所以采用此芯片接口的串行通信系统只要单一的+5V电源就可以了。

MAX232外围需要4个电解电容C1、C2、C3、C4,是内部电源转换所需电容,

其取值均为1μF/25V,宜选用钽电容并且应尽量靠近芯片,C5为0.1μF的电容。

T1IN、T2IN、R1OUT、R2OUT接TTL/CMOS电平的引脚,引脚T1OUT、T2OUT、R1IN、R2IN为接RS-232C电平的引脚,因此TTL/ CMOS电平的T1IN、T2IN 引脚应接AT89C51的串行发送引脚TXD;R1OUT、R2OUT 应接MCS-51

的串行接收引脚RXD;与之对应的RS -232C电平的T1OUT、T2OUT应接PC机的接收端RD;R1IN、R2IN应接PC机的发送端TD[35]。

为提高本系统的可操作性和控制的灵活性和实时性,需要进行上位机通信,即通过串行口将数据送到PC机进行显示,同时PC也可以将数据和指令等传送到单片机,

20

八路温度采集与显示系统设计

使单片机对温度进行处理。在单片机与上位机进行通信时,根据上文介绍,决定采用

MAX232对数据进行转换,其硬件连接如图3.9所示。

图3.9 单片机通过MAX232与PC机串行口连接图

3.6 片外程序存储器的扩展

通常情况下,采用AT89C51的最小应用系统最能发挥单片机体积小、成本低的优点。但在许多情况下,构成一个工业测控系统时,考虑到传感器接口、伺服控制接口以及人机对话接口等的需要,最小应用系统常常不能满足要求,因此系统扩展是单片机应用系统硬件设计中最常遇到的问题[24]。

系统扩展是指单片机内部的各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统要求。AT89C51单片机有很强的外部扩展能力,外围扩展电路芯片大多是一些常规芯片,扩展电路及扩展方法较为典型规范。用户很容易通过标准扩展电路来构成较大规模的应用系统[37]。

AT89C51单片机的系统扩展有程序存储器(ROM)扩展、数据存储器(RAM)

扩展、I/O口扩展、中断系统扩展以及其他特殊功能扩展。

本系统采用单总线数字式温度传感器对温度进行采集,为了增大系统的测温范围,能方便的扩展成对更多地点进行温度采集,本系统要增加一片8K×8位的片外

21

八路温度采集与显示系统设计

程序存储器,增加了片外程序存储器后,通过增加相应的硬件及软件设计,系统便可以具有更强大的功能,如时间显示等,大大增强的系统的扩充能力。

3.6.1 片外存储器(RAM)扩展简述

对于单片机系统扩展的方法有并行扩展法和串行扩展法两种。并行扩展法是指利用单片机的三组总线(AB、DB、CB)进行的系统扩展;串行扩展法是指利用SPI三线总线和I2C双总线的串行系统扩展[1]。

由于集成度和结构的发展,原来只能使用并行扩展法的场合现在可以使用串行扩展法。串行扩展法具有显著的优点。一般来说,串行接口的器件体积小,因此,它所占用电路板的空间,仅为并行接口器件的10%,明显地减少了电路板空间和成本。串行接口器件与单片机接口时需用的I/O口线很少(仅需3~4根),不仅减少了控制器的资源开销,而且极大地简化了连接,从而提高了可靠性。但一般串行接口器件速度较慢。在需用高速应用的场合,还是并行扩展法占主导地位。本系统在综合考虑两种扩展方法的优点及缺点的同时,分析系统各模块所需的引脚,最终决定采取并行扩展法[1]。

(1)单片机的片外总线结构

单片机都是通过芯片的引脚进行系统扩展的。为满足系统扩展要求,AT89C51单片机芯片引脚可以构成图3.10所示的三总线结构,即地址总线(AB)、数据总线(DB)和控制总线(CB)。所有的外部芯片都是通过这三组总线进行扩展[37]。

P2.7A15~P2.0地址锁存器~A8A7A0D7ABAT89C51P0.7~~~P0.0DBD0ALEPSENEACBP3.6P3.7WRRD

22

八路温度采集与显示系统设计

图3.10 AT89C51单片机的三总线引脚结构

①地址总线(AB)

地址总线由P0口提供低8位A0~A7,P2口提供高8位A8~A15。 由于P0口还要用作数据总线口,只能分时用作地址线,故P0口输出的低8位地址数据必须用锁存器锁存。锁存器的锁存控制信号为引脚ALE输出的控制信号。在ALE的下降沿将P0口输出的地址数据锁存。

P2口具有输出锁存功能,故不需外加锁存器。P0、P2口在系统扩展中用作地

址线后便不能作为一般I/O口使用。地址总线宽度为16位,故可寻址范围为

216=64KB。

②数据总线(DB)

数据总线由P0口提供,其宽度为8位。

P0口为三态双向口,是应用系统中使用最频繁的通道。所有单片机与外部交换

的数据、指令、信息,除少数可直接通过P1口外,全部通过P0口传送。

数据总线要连到多个连接的外围芯片上,而在同一时间里,只能够有一个是有效的数据传送通道。哪个芯片的数据通道有效,由地址线控制各个芯片的片选线来选择。

③控制总线(CB)

控制总线包括片外系统扩展用控制线和片外信号对单片机的控制线。

系统扩展用控制线有ALE、错误!未找到引用源。、错误!未找到引用源。、错误!未找到引用源。和错误!未找到引用源。。

(2)单片机的系统并行扩展能力

由于地址总线宽度为16位,在片外可扩展的存储器最大容量为64KB,地址为

0000H~FFFFH。片外数据存储器与程序存储器的操作使用不同的指令和控制信

号,允许二者地址重复,故片外可扩展的数据存储器与程序存储器分别为64KB。

片外数据存储器与片内数据存储器的操作指令不同(片外RAM只能用MOVX指令),二者地址允许重复,亦即外部扩展数据存储器地址可从0000H开始。

为了配置外围设备而需要扩展的I/O口,可与片外数据存储器统一编制,不再另外提供地址线。

因此,在应用系统要大量配置外围设备以及扩展较多I/O口时,要占去大量的

RAM地址。

3.6.2 扩展片外程序存储器的总线功能和操作时序

23

八路温度采集与显示系统设计

错误!未找到引用源。是片外、片内程序存储器选择信号,为输入引脚,低电平有效。当错误!未找到引用源。=0时,单片机从片外取指;当错误!未找到

引用源。=1时,从片内取指,正常运行时,该引脚不能浮空。根据错误!未找到

引用源。连接电平的不同,单片机有两种取指过程:

(1)当错误!未找到引用源。=1时,AT89C51单片机所有片内程序存储器有效。

当程序计数器PC运行于片内程序存储器的寻址范围内(对AT89C51为

0000H~0FFFFH)时,P0口、P2口及错误!未找到引用源。线没有信号输出;

当程序计数器PC的值超出上述范围时,才有信号输出。

[39]

(2)当错误!未找到引用源。=0时,AT89C51单片机所有片内程序存储器无效,只能访问片外程序存储器。伴随着单片机复位,P0口、P2口及错误!未找到引用源。线均有信号输出。

AT89C51单片机访问片外程序存储器时,使用如下信号: P0口:输出程序存储器的低8位地址和8位数据。

ALE线:输出线,在ALE的下降沿时,P0上出现稳定的程序存储器的低8

位地址输出,因而可用ALE信号锁存这低8位地址。

P2口:在整个取指周期中,输出稳定的程序存储器的高8位地址。由于P2口

本身已具有锁存功能,因而无需再加锁存器。

错误!未找到引用源。线:输出线,低电平有效。在ALE的下降沿之后,错误!未找到引用源。由高变为低,此时片外程序存储器的内容(指令字)送到P0口(数据总线),然后在错误!未找到引用源。的上升沿将指令字送入指令寄存器。因此,错误!未找到引用源。信号作为片外程序存储器的读选通信号。

单片机片外程序存储器读取指操作的时序,如图3.11所示。

24

八路温度采集与显示系统设计

S1XTAL1ALES2S3S4S5S6S1S2S3S4S5S6PSENP2PCHPCLPCLP0PCL指令PCL指令PCL指令PCL图3.11 区指操作时序(无片外存储器时)

3.6.3 扩展片外程序存储器的硬件电路

根据图3.11所示的取指操作时序,本系统采用的芯片为8K×8位的2764,其容量足够以后扩展功能时用。作为低8位地址锁存用的地址锁存器,从时序上看,应该是在ALE的下降沿或者在低电平时锁存P0口来的地址,本系统采用8D锁存器74HC373。AT89C51单片机的扩展片外程序存储器的硬件电路如图3.12所示[1]。

U10P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7347813141718111D0D1D2D3D4D5D6D7OELE74HC373Q0Q1Q2Q3Q4Q5Q6Q7256912151619QA0QA1QA2QA3QA4QA5QA6QA7U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.718XTAL2ALE9RSTU11QA010QA19QA28QA37QA46QA55QA64QA732524212322022271A0A1A2A3A4A5A6A7A8A9A10A11A12CEOEPGMVPP2764D0D1D2D3D4D5D6D71112131516171819P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7ALE293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 图3.12 扩展片外程序存储器的硬件

25

八路温度采集与显示系统设计

4 八路温度采集显示系统软件设计

本系统在Keil中用C语言进行编程,来控制单片机对数据进行处理,控制液晶显用四行来显示八路温度,每一行显示两路,显示温度值精确到小数点后一位,并用程序将数据传送到上位机,当温度值超限时,控制单片机报警端口的高低电平变换,其总的程序流程图如图4.1所示。

26

八路温度采集与显示系统设计

开始定义各端口功能及全局变量初始化LM041L跳过对ROM编码的搜索向上位机发送作者信息初始化DS18B20启动温度转换匹配64位ROM地址读出温度值液晶显示器匹配八路温度值向上位机发送八路温度值温度值是否超限?NY报警灯闪亮蜂鸣器鸣响温度值是否超限?YN返回

图4.1 总的系统程序流程图

4.1 温度采集模块软件设计

4.1.1 DS18B20ROM操作指令

一旦总线控制器探测到一个存在的脉冲,它就可以发出5个ROM命令中的任一个。所有ROM操作指令都是8位长度。ROM的操作命令如表4.1所示[2]。

27

八路温度采集与显示系统设计

表4.1 ROM的操作命令

指 令 功 能 代 码 说 明 对总线上的DS18B20进行搜索 读系列编码、序列号和CRC校验码 后续64为ROM序列对总线上DS18B20寻址 跳过对ROM编码的搜索 搜索有报警的DS18B20 Search ROM Read ROM Match ROM Skip ROM Alarm Search 0F0H 33H 55H CCH ECH (1)Search ROM(F0H)

当一个系统初始化时,总线控制器可能并不知道总线上挂接有几多少个器件,也不知道其64位ROM编码。总线控制器利用Search ROM命令识别总线上所有从器件的64位编码。

(2)Read ROM(33H)

允许总线控制器用该命令来读取DS18B20的8位序列编码、唯一的序列号和8位CRC校验码。该命令适用于总线上只存在一个DS18B20的情况。当总线上挂接有多个从机器件时,那么当所有从机器件都试图同时传送信号时就会发生数据冲突,将会导致主机读取的系列编码和序列号与CRC不匹配[47]。

(3)Match ROM(55H)

发出Match ROM命令后紧跟着64位ROM序列,允许总线控制器在多点总线上定位一只特定的DS18B20。只有内部ROM码与主机发出的64位ROM序列完全匹配的DS18B20才能响应随后的存储器功能命令。而其他与64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。

(4)Skip ROM(CCH)

在单总线系统中,该命令允许总线控制器不用提供64位ROM编码就直接执行存储器功能。从而可以节省时间。如果总线上挂接多个从器件,在Skip ROM命令之后跟着发出一条读命令,由于多个从机器件同时传送信号,总线上会发生数据冲突(漏极开路下拉效果相当于相与)。

(5)Alarm Search(ECH)

这条命令的流程和Alarm Search相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低

28

八路温度采集与显示系统设计

于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。

4.1.2 DS18B20功能命令

DS18B20功能命令概括如表4.2所示[2]。

表4.2 DS18B20功能命令

指 令 功 能 代 码 说 明 启动温度转换 读暂存器的值 写寄存器的值到暂存器 复制寄存器的值到EEPROM中 将EEPROM的值回调到暂存器中 检测供电方式 Convert T Read Scratchpad Write Scratchpad Copy Scratchpad Recall EEPROM Read Power Supply (1)Convert T(44H)

44H BEH 4EH 48H B8H B4H 这条命令启动一次温度转换,无需其他数据。温度转换命令被执行,而后

DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做温度转换的话,DS18B20将在总线上输出0;若温度转换完成,

则输出1。转换后的数据将保存在暂存器的温度寄存器中。

(2)Read Scratchpad(BEH)

这个命令读取暂存器的内容。读取将从第一个字节开始,一直进行下去,直到第

9个(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位

命令来中止读取。

(3)Write Scratchpad(4EH)

这个命令向DS18B20的暂存器进行写操作。包括向TH寄存器、TL寄存器和配置寄存器中写入数据。输出复位命令将中止当前正在进行的写操作。

(4)Copy Scratchpad(48H)

这个命令把暂存器的内容复制到DS18B20的EEPROM存储器里,即把温度报警触发寄存器TH、TL和配置寄存器中的数据存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器复制到

EEPROM,DS18B20就会输出0表示正在进行复制操作;如果复制结束,DS18B20

则输出1。

29

八路温度采集与显示系统设计

(5)Recall EEPROM(B8H)

这条命令把温度报警触发器里的值复制回暂存器。这种复制操作在DS18B20上电时自动执行,这样,器件一上电暂存器里马上就存在生效的数据了。若在这条命令发出之后发出读时间隙,器件就会输出温度转换忙的标志:0为忙,1为完成。

(6)Read Power Supply(B4H)

若把这条命令发给DS18B20后发出读时间隙,器件会返回其电源模式:0为寄生电源,1为外部电源。

4.1.3 DS18B20的程序及其流程图

根据前两节对DS18B20的操作指令和功能指令的介绍,设计程序对DS18B20进行控制,首先要对DS18B20进行初始化,其程序流程图如图4.2所示。

开始由DS18B20发出RESET脉冲N判断DS18B20已 等待480μs以上?YSETB DQ等待15~60μsN判断DQ是否为低电平Y置FLAG标并延时200μs清除FLAG标志初始化结束 图4.2 DS18B20初始化程序流程图

对DS18B20进行初始化之后要进行数据的写入和读出,写入的流程图如图4.3所示,读出的流程图如图4.4所示。

30

八路温度采集与显示系统设计

开始开始DS18B20初始化DS18B20初始化写入CCH,SKIP ROM写入CCH,SKIP ROM写入BEH,发转换命令写入44H,发转换命令SETB DQDQ=0,准备发送延时1μs以上延时15μs写入一位数据DQ=0,准备发送延时1μs以上DQ=1,释放总线延时15-45μs读取一位数据DQ=1,完成1位写入延时15-45μsN8位写完了吗?N8位读完了吗?Y完成Y

完成

图4.3 DS18B20写入的流程图 图4.4 DS18B20读出的流程图

DS18B20初始化及数据的读出和写入程序如下。

bit resetpulse(void) { DQ=0;

delay(40); DQ=1;

delay(4); return(DQ); }

void ds18b20_init(void) {

while(1)

//DS18B20初始化 //延时500us //延时60us

//读取P1.0的状态

31

八路温度采集与显示系统设计

{ if(!resetpulse()) //收到ds18b20的应答信号 { DQ=1; delay(40); //延时240us break; } else resetpulse(); //否则再发复位信号 } }

uchar read_byte(void) //数据读出 {uchar i,m,receive_data; m=1;

receive_data=0; for(i=0;i<8;i++) { if(read_bit()) { receive_data=receive_data+(m<

return(receive_data); }

void write_byte(uchar val) //数据写入 {

uchar i,temp; for(i=0;i<8;i++) { temp=val>>i; temp=temp&0x01; write_bit(temp); delay(5); } }

4.2 单片机处理模块软件设计

编程前,须按表4.3和图4.5所示设置好地址、数据及控制信号,编程单元的地

32

八路温度采集与显示系统设计

址加在P1口和P2口的P2.0~P2.3(11位地址范围为,数据从0000H~0FFFFH)

P0输入,引脚P2.6、P2.7、P3.6、P3.7的电平设置见表4.3,错误!未找到引用

源。为低电平,RST保持高电平,错误!未找到引用源。/错误!未找到引用源。引脚是编程电源的输入端,按要求加上编程电压,ALE/错误!未找到引用源。 引脚输入编程脉冲(负脉冲)。编程时,可采用4—20MHz的时钟振荡器,AT89C51编成方法如下[47]:

(1)在地址线上加上要编程单元的地址; (2)在数据线上要写入数据的字节; (3)激活相应的控制信号;

(4)在高电压编程时,将错误!未找到引用源。/Vpp端加上+12V编程电压;

(5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个

ALE/错误!未找到引用源。编程脉冲。

在本设计中,单片机要对DS18B20传来的数据进行处理并传送到液晶显示器和上位机,并且判断温度是否超限如果超限则控制报警端口的高低电平变换,其程序如下所示。 void main(void) {

uchar temp_data_l,temp_data_h; init_lcd1602(); send_str(str2); //向串行口发送作者信息 send_str(str3); send_str(\

ds18b20_init(); write_byte(0xcc); write_byte(0x44); //启动温度转换 delay(600); match_rom(ds18b20_romX); //匹配第X路 write_byte(0xbe); //读温度 temp_data_l= read_byte(); //温度低8位 temp_data_h = read_byte(); //温度高8位 convert_T(temp_data_h,temp_data_l); first_line[2]=LCD_3; //温度转换后的各位 first_line[3]=LCD_2; //分别存入显示缓存数组中 first_line[4]=LCD_1; first_line[6]=LCD_0;

send_str(X_line); //往串行口发送第三行和第X行温度

33

八路温度采集与显示系统设计

}

send_str(\delay(100);

表4.3 Flash存储器编程真值表

方式 RST 错误!ALE/错误!未找 未找到引用到引源。 用源。/VPP L L L L L L L H H P2.6 P2.7 P3.6 P3.7 写代码数据 读代码数据 H H H H H H H H/12V H H/12V H/12V H/12V H/12V H L L H H H H L H L H H L L L H H H L H L L H H H L L L L Bit-1 写加密位 Bit-2 Bit-3 片擦除 读签名字节 34

八路温度采集与显示系统设计

+5VADDR0000H/OFFFFHA0-A7P1VCCP2.0-P2.3A8-A11P2.6P0P2.7P3.6P3.7XTAL2ALEPGM DATA(USE 10K PULLUPS)AT89C51SEE FLASHPROGRAMMINGMODES TABLEVIHEA3-24 MHzRSTXTAL1GNDPSENVIH

图4.5 校验电路

4.3 显示模块软件设计

4.3.1 LM041L的软件应用

LCD字符型显示器模块有两种寄存器:指令寄存器和数据寄存器。单片机等主

控制系统对LCM(LCD显示器模块)的指令寄存器写操作,可以将“清屏”等控制指令发送给LCM。对指令寄存器读操作,可得到的数据的最高位是LCM的状态(空闲状态或忙状态)标志位,低7位是地址计数器的信息。对LCM的数据存储器写操作,可以修改当前地址中显示字符。读操作可以得到当前显示地址中的现实数据。

LCD字符型显示器模块的详细指令如表4.4所示[3]。

表4.4 LCD字符型显示器模块的指令集

指令功能 R/错误!RS 未DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 找到引35

八路温度采集与显示系统设计

用源。 清屏(并且光标回原点) 0 光标回原点 进入模式设定 显示开关控制 光标或字符移位 功能设定 设置CGRAM地址 设置显示地址 读忙标志和地址计数器 向CGRAM/DDRAM 写数据 从CGRAM/DDRAM 读数据 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 BF 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 DL 0 0 0 1 S/C N 0 0 1 D R/L F 0 1 I/D C X X 1 X S B X X 0 0 0 0 0 0 0 0 1 1 6位CGAM地址码 7位DDRAM地址码 7位当前显示地址码 8位数据 8位数据 表中X:任意二进制数。

I/D:显示地址计数器模式选择。I/D=1,选择加1模式;I/D=0,选择减1模式。 D:显示器开关控制位。D=1,显示器ON;D=0,显示器OFF。 C:光标开关控制位。C=1,光标ON;C=0,光标OFF。

B:光标闪烁开关控制位。B=1,光标闪烁ON;B=0,光标闪烁OFF。

S/C:显示器或光标移位选择。S/C=1,选择显示器移位;S/C=0,选择光标移位。 R/L:移位方向选择。R/L=1,向右移动;R/L=0,向左移动。

DL:传输数据的有效位长度选择。DL=1,有效位为8位;DL=0,有效位为4位。 N:显示器行数选择位。N=1,选择使用4行显示器;N=0,选择使用两行显示器。 F:字符显示块的点阵选择。F=1,选择5×10点阵;F=0,选择5×7点阵。 BF:忙标志位。BF=1,LCM处于忙状态;BF=0,LCM处于空闲状态。 CGRAM:字符发生器RAM。用户自编成的字符或图形存储器。 CDRAM:显示数据RAM。

4.3.2 LM041L的程序流程图及主要程序

液晶显示器在本系统担任显示的任务,本系统采用的LM041L液晶显示器可同时显示八路温度,可直观的看到八路温度实时的温度情况,便于及时控制处理。

LM041L为四行显示,可分别定义每路温度的显示地址,每行显示两路。其程序流

36

八路温度采集与显示系统设计

程图如图4.6所示。

开始LM041L写命令LM041L初始化LM041L测忙N定义LM041L显示位置YLM041L写数据匹配第一、二行温度值匹配第三、四行温度值返回

图4.6 LM041L的程序流程图

LM041L显示程序如下。

void init_lcd1602() //初始化LM041L {

write_command(0x3f); delay(10);

write_command(0x3f); delay(10);

write_command(0x3f); //功能设定(8位,4行,5*7点阵式) delay(10);

write_command(0x0c); //显示器ON,光标OFF,闪烁OFF delay(10);

write_command(0x06); //地址加1 delay(10);

37

本文来源:https://www.bwwdw.com/article/xmh.html

Top