《基于单片机的电子温度计论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子温度计论文.doc(35页珍藏版)》请在课桌文档上搜索。
1、目录第一章绪论21.1 国外现状21.2 研究意义31.3 本文容3第二章系统框图及创新点介绍42.1 系统框图42.2 创新点介绍4第三章系统硬件设计43.1 CPU介绍43.1.1 CPU介绍43.1.2主要功能特性53.1.3AT89C52各引脚功能及管脚电压53.1.4自动重装载向上或向下计数器方式83.1.5波特率发生器83.1.6可编程时钟输出93.1.7中断103.1.8时钟振荡器103.1.9空闲节电模式113.1.10掉电模式113.1.11程序存储器的加密113.1.12Flash存储器的编程113.2 传感器介绍123.2.1温度传感器的历史及简介123.2.2 DS18
2、B20性能特点与部结构123.2.3 DS18B20工作时序173.2.4 DS18B20的操作协议193.2.5 DS18B20序列号编码213.2.6 DS18B20的测温原理223.2.7 DS18B20的测温流程233.2.8 DS18B20数据校验与纠错233.2.9 DS18B20在测温系统中的应用253.2.10测温系统的硬件工作原理253.2.11 注意事项263.3 键盘电路介绍263.3.1键盘接口技术263.3.2独立式键盘接口273.4 显示电路介绍273.4.1字符型液晶显示器RT1602C273.4.2 RT1602C 与单片机接口及程序28第四章系统软件设计284
3、.1 软件设计流程图284.2 键盘程序设计284.3 显示程序设计35第五章系统测试395.1 软硬件测试结果39第六章结论39第一章 绪论1.1 国外现状温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误就可能引起生产安全、产品质量、产品产量等一系列问题。因此对温度的检测的意义就越来越大。温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用自动温度控制系统可以对生
4、产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。温度采集控制系统是在嵌入式系统设计的基础上发展起来的。嵌入式系统虽然起源于微型计算机时代,但是微型计算机的体积、价位、可靠性,都无法满足广大对象对嵌入式系统的要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。单片机诞生于二十世纪七十年代末,经历了SCM、MCU和SOC三大阶段。在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和
5、食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。同时温度也是生活中最常见的一个物理量,也是人们很关心的一个物理量,它与我们的生活息息相关,有着十分重要的意义,在工业生产中,温度过高或过低会直接影响到产品的质量、对机械设备和控制系统中的各种元器件造成一定的损坏,严重的会影响到生产安全。在日常生活中,温度过高或过低同样会造成一些不良影响。在
6、实际生产、生活等各个领域中,温度是环境因素的不可或缺的一部分,对温度及时精确的控制和检测显得尤为重要。比如,农业上土壤各个层面上的温度将会影响植物的生长;在医院的监护中也用到温度的测量。在工业中,料桶里外上限温度要求不一,以及热处理中工件各个部位的温度对工件形成后的性能至关重要等等。现代电子工业的飞速发展对自动测试的要求越来越高。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向
7、发展。1.2 研究意义采用单片机对温度进行控制,不仅具有控制方便和组态简单的优点,而且可以提高被控温度的技术指标。针对以上情况,在控制成本的前提下,通过本设计设计一款能够实时检测控制温度,又具有对系统设定不同的报警温度的温度控制报警系统功能。此系统能够满足现代生产生活的需要,效率高,具有较强的稳定性和灵活性。因此,在生产和生活中要对温度进行严格的控制,使温度在规定的围变化。通过本系统提高学生对于温度控制的认识。在学习实践中提高对理论的认知能力和动手解决实际问题的能力,达到教学实践相结合的目的。1.3研究容本项目采用STC89C52单片机作为核心控制芯片,采用DS18B20作为温度传感器,将采集
8、到的温度数据显示在1602液晶上,同时可以将温度数据上传到PC机显示。本文容分为以下几个部分。第一章 绪论。第二章 系统框图及创新点介绍。第三章 系统硬件设计。第四章 系统软件设计。第五章 系统测试。第六章 结论。第二章 系统框图及创新点介绍2.1 系统框图单片机按键输入电路显示电路测温传感器DS18B20时钟电路复位电路报警电路PC第三章 系统硬件设计3.1 CPU介绍3.1.1 CPU简介STC89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 STC89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash只读程序存储器和256 byt
9、es的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 STC89C52有40个引脚,32个外部双向输入/输出I/O端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 STC89C52有PDIP、PQFP/TQFP及PLCC
10、等三种封装形式,以适应不同产品的需求。 3.1.2主要功能特性 兼容MCS51指令系统 8k可反复擦写1000次Flash ROM 32个双向I/O口 256x8bit部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共8个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 3.1.3 STC89C52各引脚功能及管脚电压概述:STC89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51核,在部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能
11、包括对会聚主IC 部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL119 脚和XTAL218 脚为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd9 脚为复位输入端口,外接电阻电容组成的复位电路。VCC40 脚和VSS20 脚为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口3239 脚被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N
12、1的SDAS18脚和SCLS19脚端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 3.2 传感器介绍3.2.1温度传感器的历史及简介温度的测量是从金属的热胀冷缩开始。水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型
13、、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数的变化的原理。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。3.2.2 DS18B20性能特点与部结构DS18B20是美国DALLAS公司生产的单总线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易于与未处理器接口等优点,适合于各种温度测控系统。该器件将半导体温敏器件、A/D转化器、存储器等做在一个很小的集成电路芯片上,传感器直接输出的就是温度信号数字值。信号传输采用两芯或三芯电缆构成的单总线结构。一条单总线上可以挂接若干个数字温度传感器,每个传感器有一个唯一的地址码。微控制器通过对器件的寻址,就可以读取
14、某个传感器的温度值,从而简化了信号采集系统的电路结构。 DS18B20的性能特点如下:1 独特的单线接口仅需要一个端口引脚进行通信;2 多个DS18B20可以并联在惟一的三线上,实现多点组网功能;3 无须外部器件;4 可通过数据线供电,电压围为3.05.5V;5 零待机功耗;6 温度以3位数字显示;7 用户可定义报警设置;8 报警搜索命令识别并标志超过程序限定温度温度报警条件的器件;9 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 DS18B20的外形及管脚排列如下图2: 图3.7 DS18B20封装 DS18B20部结构主要由六分组成:1 64位光刻ROM。开始8位是
15、产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因10。64位闪速ROM的结构如下:8b检验CRC48b序列号8b工厂代码10H MSB LSB MSB LSB MSB LSB图3.8 DS18B20部结构2 非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值。3高速暂存存储,可以设置DS18B20温度转换的精度。DS18B20温度传感器的部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。高速暂存RAM的结构为8字节的存储器,结构如图2.1所示。头2个字节包含测得的温度
16、信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。它的部存储器结构和字节定义如图2.2所示。低5位一直为,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式, Byte0温度测量值LSB50HByte1温度测量值MSB50HE2PROMByte2TH高温寄存器-TH高温寄存器Byte3TL低温寄存器-TL 低温寄存器Byte4配位寄存器-配位寄存器Byte5预留FFHByte6预留0CHByte7预留IOHByte8循环冗余码校验CRC
17、图2.3 DS18B20部存储器结构DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,如图2.3。TM R1R0 1 1 1 1 1图2.4 DS18B20字节定义由表2.1可见,分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单
18、片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2.2是一部分温度值对应的二进制温度数据6。表2.1 DS18B20温度转换时间表:R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750表2.2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H
19、+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H4 CRC的产生在64 b ROM的最高有效字节中存储有循环冗余校验码CRC。主机根据ROM的前56位来计算CRC值,并和存入DS1
20、8B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20发复位脉冲发ROM功能命令发存储器操作命令处理数据。5寄生电源寄生电源有二极管VD1、VD2、寄生电容C和电源检测电路组成,如图所示。电源检测电路用于判定供电方式。DS18B20有两种供电方式:3.05.5V的电源供电方式和寄生电源供电方式直接从数据线获取电源。若采用外部电源给器件供电,外部电源接VCC引脚通过VD2向器件供电,如图所示。寄生电源供电时,VCC端接地,器
21、件从单线总线上获取电源,如图所示。在I/O线呈低电平时,改由电容C上的典雅继续向器件供电。该寄生电源的优点:第一,检测远程温度时无需本地电源;第二、缺少正常电源时也能读ROM。外部电源供电寄生电源供电6温度报警信号DS18B20完成温度转化后,就把测的的温度值与Th、Tl做比较,若TTh或TTl,则将器件的报警标志位,将对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。一旦某温度点越限,主机利用报警搜索命令,即可识别正在报警的器件,并读出其序号,而不必考虑非报警器件。3.2.3 DS18B20工作时序根据DS18B20的通讯协议,主机控制DS18B20完
22、成温度转换必须经过三个步骤:1. 每一次读写之前都必须要对DS18B20进行复位;2. 复位成功后发送一条ROM指令;3. 最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1560微秒左右后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。其工作时序包括初始化时序、写时序和读时序,具体工作方法如图2.5,2.6,2.7所示。 初始化时图2.5 初始化时序总线上的所有传输过程都是以初始化开始的,主机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。主机输出低电平,保持低电平时间至
23、少480us,以产生复位脉冲。接着主机释放总线,4.7K上拉电阻将总线拉高,延时1560us,并进入接受模式,以产生低电平应答脉冲,若为低电平,再延时480us12。 写时序图2.6 写时序写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,都是以总线拉低开始。写1时序,主机输出低电平,延时2us,然后释放总线,延时60us。写0时序,主机输出低电平,延时60us,然后释放总线,延时2us8。 读时序 图2.7 读时序总线器件仅在主机发出读时序是,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所
24、有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之采样总线状态。主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us4。3.2.4 DS18B20的操作协议DS18B20单线通信功能是分时完成的。单线信号包括复位脉冲,响应脉冲,写0,写1,读1。它们有严格的时隙概念。系统对DS18B20的操作以ROM命令5个和存储器命令6形式表现,各种指令功能如表2-3,2-4所示。表2-3 DS18B20 ROM命令指令约定代码功能读R
25、OM33H读DS18B20中的编码既读64位地址符 合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相应的DS18B20,使之做出响应,为下一步对该DS18B20的读写做准备。搜 索ROM0F0H用于确定挂在同一总线上DS18B20的个数和识别64位ROM地址,为操作各个器件做好准备。跳 过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度转换命令,适用于单片工作。告警搜索命令0ECH执行后,只有温度超过设定上限或是下限的片子做出响应。表2-4 DS18B20 RAM命令指令约定代码功能温度变换44H启动DS18B20进行温度转换,结果存入部RAM。读暂存
26、器0BEH读部RAM中的容。写暂存器4EH发出向部RAM的第3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存 器48H将RAM中的第3、4字容复制到EEPROM中。重调EEPRAM0B8H将EEPROM中容恢复到RAM中的第3、4字节。读供电方 式0B4H读DS18B20的供电模式,寄生供电是DS18B20发送0,外接电源供电DS18B20发送1。对DS18B20操作协议是:初始化DS18B20发复位脉冲发ROM功能命令处理数据发存储命令处理数据。初始化:主机发一位复位脉冲对短为480us的低电平,接着主机释放总线进入接收状态,DS18B20在检测到I/O引脚上的
27、上升沿之后,等待1560us然后发出存在脉冲60240us的低电平。写时间片:将数据线从高电平拉至低电平,产生起始信号。在15us之将所需写的位送到数据线上,在15us到60us之间对数据线进行采样,如果采样为高电平,就写1,如果是低电平,写0就发生。在开始另一个写周期前必须有1us以上的高电平恢复期。读时间片:主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15us完成读位。每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期。用户对于DS18B20的访问有三个步骤:.初始化用户通过信号线,向DS18B2
28、0发送一个满足特定时序的负脉冲,信号线上所有DS18B20芯片都被复位。准备接受用户的序列号命令。.序列号访问命令接下来,用户通过信号线,发送一个特定的64位序列号编码。这时,信号线上所有相连DS18B20都进行编码匹配,只有编码一致的DS18B20才被激活,可以接受下面的存访问命令。.存访问命令在用户发送序列号访问命令选定DS18B20芯片后,被选中的芯片便可以接受存访问命令。读取温度数据,设定温度报警限。二进制数据与温度的对应关系见表2-5。表2-5 二进制数据与温度的对应关系温度温度数据输出二进制温度数据输出16进制+1250000 0111 1101 000007D0h+850000
29、0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000A2h+0.50000 0000 0000 10000008h00000 0000 0000 0000000h-0.51111 1111 1111 1000 FFF8h-10.1251111 1111 0101 1110FF5Eh-25.06251111 1110 0110 1111 FF6Fh-551111 1100 1001 0000FC90h3.2.5 DS18B20的测温原理每一片DSl8B20在其ROM中都存有其唯一的48位序列
30、号,在出厂前已写入片ROM 中。主机在进入操作程序前必须用读ROM命令将该DSl8B20的序列号读出。程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。DS18B20的测温原理如图2.8所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量
31、前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.8中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的
32、测温原理。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20发复位脉冲发ROM功能命令发存储器操作命令处理数据。减法计数器斜坡累加器减到0减法计数器预 置低温度系数振 荡 器高温度系数振 荡 器计数比较器预 置温度寄存器减到0图2.8 测温原理部装置3.2.7 DS18B20的测温流程初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器转换成显示码数码管显示图2.9 DS18B20测温流程3.2.8 DS18B20数据校验与纠错在进行多点测温时,敏感元件与数
33、据采集系统一般有一定的距离,不可避免的要遇到电磁干扰。信号衰减问题,使数据发生错误。如果在数据的传输过程中系统具有一定的容错能力,在纠错围,就可以对错误的数据进行纠正,提高抗干扰能力和加大传输距离,当错误超出纠错围时,也可以识别出错误的数据进行从新采集,从而提高了采集数据的可信度。DS18B20在设计时已经为用户提高了用于检验遇救错的循环冗余校验码cyclic redundancy code crc。下边将就用软件对DS18B20中数据的校验与纠错进行详细的讨论,并给出了用查表法进行校验及纠错的算法以及实现这一算法的过程。字节数据存储结构如表2-10所示。图2-10 9字节数据存储结构图CRC
34、保留保留保留配置寄存器低温限值TL高温限值TL温度高字节温度低字节由温度存储器的低字节、高字节,低温报警器TL,高字节报警触发器TH,配置寄存器,和CRC字节组成了DS18B20的数据存储器,共九个字节,结构如图2-9。其中温度存储器的低位字节、高位字节是以符号扩展,0表示正数,1表示负数值,其余位正整数部分。例如16进制温度值018CH对应的二进制数为01100,温度值是24.75;FF5EH对应的二进制为11110,温度值-10.125。图中的CRC是通过CRC发生器产生的。CRC发生器产生的逻辑电路是由移位寄存器或异或门组成,也称除法逻辑电路。CRC发生器的逻辑电路对应的表达式是X8+X
35、5+X4+1对应的二进制数为100110001,也称生成多项式,记位gx。实际应用中就是通过这种除法逻辑电路对一组数据进行校验和纠错。如果速度允许,也常使用生成多项式gx通过软件方法进行校验与纠错。2 CRC校验的算法与编码的算法是相同的,校验时要将CRC作为数据一同进行计算。下边对其进行讨论并给出查表算法。直接算法:用于生成多项式直接进行校验的方法是将低字节位放在前左。然后用gx去做异或除法。得到的余数若为0,则表示数据正确,余数不为0,则表示数据有错,通过余数便可知道结果是否正确。DS18B20的CRC码是可以纠正一位错误的。改进算法;直接算法由于循环次数较多而且需要的时间很长。改进算法能
36、叫为方便的进行处理,该算法是对数据进行逐步字节处理,处理顺序是由低字节到高字节。这里首先将CRC单元赋0,取一个字节数据做异或并将结果存入暂存单元AY,然后字节数据左环移。如果AY的最低位是一,则CRC只左移。在将AY的最低移入CRC的最高位。做完一个字节之后,将CRC的结果与下一个字节做同样处理直至最后一个字节处理完。3纠错:如果结果不为0,则意味着数据错误。DS18B20的编码是可以纠正一位错误的,当错误多余一个就是要重新采集数据,本文给出一种利用查表进行纠错的方法。该方法是首先计算出一位错误代码的样图,如表2-7所示。表2-7 一位错误代码的样图下标D7D6D5D4D3D2D1D0017
37、32181091869316281164114673168844221134672151199239251241155122613234117182911612201105542032332481246231131205521722411256281471436984914874371587917174715519323611859145196814070351571949718894然后根据查表得到这个余数在图中的位置这里设为N,N的值从0到71,通过N的值就可以计算出错误在数据中的值,计算的方法是,将N被8除,商的整数部分位错误字节的位置,用7减去余数则得到错误位在该字节中的位号,只需对错
38、误位取反即可纠正错误。总结:由于使用了校验与纠错方法,增加了数据的传输距离与可信度。在没有使用校验与纠错方式时,线路大于20米,显示的温度常出现大幅度的跳动。在使用了校验与纠错方法后,线路在50米时仍然十分稳定。3.2.9 DS18B20在测温系统中的应用DS18B20与单片机的接口极其简单,只需将DS18B20的信号线与单片机的一位双向端口相连即可。一般测温电缆采用屏蔽4芯双绞线,其中一对接地线与信号线,另一对Vdd和地线,屏蔽层在源端单点接地。3.2.10测温系统的硬件工作原理对DS18B20初始化后,主机发出SKIP ROM命令,此命令执行后的存储器操作命令将对所在线的DS18B20,在
39、发出温度转换启动码44H,等待750ms后,先发出匹配ROM命令55H,紧接着主机提供一片DS18B20的64位序列号,读取其温度存储器值,存入数据缓存。3.2.11 注意事项DS18B20具有测温系统简单,测温精度高,连接方便,站用口线少等优点,但是在实际使用中也应注意以下几方面的问题:1DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。2在实际使用时发现,应使电源保持在5V左右。若电源电压过低,会使所测得的温度与实际温度出现偏高现象,经过实验发现,一般在5V左右。3初始化时,当主机受到DS18B20回应的低电
40、平信号后等到单总线恢复高电平后,主机才能接着对DS18B20进行操作。4当主机发温度转换命令使DS18B20进行温度转换时,数据线要保持高电平的时间为750ms。5当主机发数值拷贝命令使DS18B20将温度寄存器的数值拷贝到EERAM中时,数据线保持高电平时间至少为10ms。6当不进行复位时,数据线保持为低电平时间不超过60us,否则将产生复位读操作。7要严格的按照时隙图对DS18B20进行复位和读写操作。8单总线上所挂的DS18B20超过8个时,要注意微处理器的总线驱动问题。159在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某
41、个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时要注意。 测温电缆线在这里采用屏蔽4双绞线,其中一对线接地线与信号线,另一组接Vcc和地线,屏蔽层在源端点单点接地。3.3 键盘电路介绍3.3.1键盘接口技术单片机使用的键盘一般分为两种:独立式键盘与矩阵式键盘。独立式键盘实际上就是一组相互独立的按键,这些按键可直接与单片机的I/O 口连接,即每个按键独占一条口线,接口简单,在按键数目不多的场合使用方便。矩阵式键盘也叫行列式键盘,因为按键的个数较多,所以按键组成行列式的矩阵。键盘在应用的时候包括两项工作:一个
42、是按键的识别,即在键盘中找出被按下的是哪一个键,一般使用接口电路来实现;另一个是按键功能的实现,要通过键盘服务程序来完成。接口电路可以采用如下4 种方式:使用单片机本身的并行口;使用单片机本身的串行口;使用通用接口芯片如8255;使用专用接口芯片如HD7279,8279,ZLG7289 等。键盘处理的过程如下:1、键盘扫描,用查询或中断方式判断是否有按键被按下。2、去抖动,用硬件或软件方法去除按键抖动。3、键码的识别,用来区分不同的按键。4、根据键码编制程序来处理该按键操作。所谓去抖动是指消除按键闭合或断开时引起的瞬间电压抖动,这样才能保证键扫描的正确性。常用的去抖动方法为软件方法,其方法为判
43、别到有键按下后,软件延时一段时间一般为10ms 左右后,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键被按下,否则把按键当作抖动处理。3.3.2独立式键盘接口在单片机的运行过程中,键盘的扫描和处理有两种方式:查询方式和中断方式。查询方式是当CPU 空闲时就执行键盘扫描程序,这种方式浪费CPU 时间,在CPU 处理任务较重的场合容易产生延迟;中断方式是每当有按键闭合就向CPU 发出中断申请,中断响应后执行键盘扫描程序,这种方式响应速度快,CPU 利用率高。1、查询方式示例图7-8 为一种典型的独立式键盘接口电路,可以看出,各按键接到了单片机的P1 口,且无键按下时P1.0-P1.3
44、为高电平,当某个键被按下时,与该键相连的口线被拉成低电平,利用某个口线电平的变化即可判断出哪个键被按下了。图7-8 查询方式键盘接口3.4 显示电路介绍3.4.1字符型液晶显示器RT1602C字符型液晶显示器是一种用57 点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1 行16 个字、2 行16 个字、2 行20 个字等,最常用的为2 行16 个字,即我们马上要学习的RT1602C 液晶模块。RT1602C 液晶模块带标准字库,部的字符发生存储器已经存储了192 个57 点阵字符,32 个510 点阵字符。另外还有字符生成RAM 512 字节,供用户自定义字符。这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。每一个字符都有一个固定的代码,比如大写的英文字母A的代码是01000001B41H,也就是其ASCII 码,显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母A。3.4.2 RT1602C 与单片机接口及程序图14-3 1602 与单片机接口第四章 系统软件设计4.1 软件设计流程图显示读取时间初始化执行按键程序读取温度判断开始N4.2 键盘程序设计u