毕业设计(论文)-基于DS18B20的温度计设计.doc_第1页
毕业设计(论文)-基于DS18B20的温度计设计.doc_第2页
毕业设计(论文)-基于DS18B20的温度计设计.doc_第3页
毕业设计(论文)-基于DS18B20的温度计设计.doc_第4页
毕业设计(论文)-基于DS18B20的温度计设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南师范大学本科毕业论文前 言随着电子技术的发展, 特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么单片机技术的出现则是给现代工业控制测控领域带来了一次新的革命。目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。特别是其中的C51系列的单片机的出现,具有更好的稳定性,更快和更准确的运算精度,推动了工业生产,影响着人们的工作和学习。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会.而今,空调等家用电器随着生产技术的发展和生活水平的提高越来越普及,一个简单,稳定的温度控制系统能更好的适应市场。当人们的生活日趋数字化的时候,多功能的数字温度计可以给我们的生活带来很大的方便。温度测量与控制是工业控制中最常碰到的问题之一,而对于温度的测量可以采用模拟温度传感器加AD的方式获取,也可以通过数字式温度传感器的方式获取。支持“一线总线”接口的温度传感器简化了数字温度计的设计,降低了成本;以美国MAXIM/DALLAS半导体公司的单总线温度传感器DS18B20为核心,以ATMEL公司的AT89S52为控制器设计的DS18B20温度控制器结构简单、测温准确、具有一定控制功能的智能温度控制器。本设计就是一个基于DS18B20的温度控制系统的设计。 第1章 总体设计1.1方案论证1.1.1温度传感器方案一:采用热敏电阻可满足测温要求,但热敏电阻精度低,重复性和可靠性较差,对于精度要求较高的测温不适用,而且采用热敏电阻要求复杂的电路和算法,增加了设计复杂度。方案二:采用专用的集成温度传感器(如AD590、LM35/LM45)和数字化温度传感器(DS18B20、DS1620)测温,数字化温度传感器具有接口简单、直接数字量输出、精确度高等优点。DS18B20是美国DALLAS半导体公司推出的一款智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75750ms内完成912位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根线的读写,温度变换功率来源于数据总线,数据总线本身也可以向所挂接的DS18B20供电,而无须额外电源。它是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,它的测量温度范围为55125,在1085范围内,精度为0.5,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等,DS18B20支持+3+5.5V的电压范围,使系统设计更灵活、更方便、更便宜、体积更小。DS18B20可以程序设定912位的分辨率,精度为0.5,分辨率设定及用户设定的报警温度存储在E2PROM中,掉电后依然保存。因此,本方案选用DS18B20作为温度测量传感器。1.1.2单片机系统目前比较流行51系列单片机和凌阳单片机。凌阳十六位单片机虽然可以更好的完成控制功能,但较51系列单片机价格昂贵,而且编程以及外围功能电路的设计都不及51系列单片机成熟。因此,限于作者手头所有,选用飞利浦公司的AT89S52八位单片机作为温度采集的控制部分。1.1.3电源模块采用普通的直流电源实现电路简单,而且采用集成电源芯片设计的直流电源电压比较稳定,完全满足系统各模块的供电要求,但是普通直流电源体积比较大,变压器的散热对测温精度也有影响,所以,选用锂离子手机充电电池和配套的锂电池充电器作为系统的供电模块。手机用的锂电池标称电压3.7V,限定充电电压4.2V,可以满足AT89S52(工作电压范围5V)和DS18B20等各部分的工作电压需要。1.1.4显示模块由于系统要求实现测量环境温度、测量体温、过界报警设置、温度存储再现等多种功能,要显示的信息不仅仅是温度值,所以采用数码管显示几乎不可能。另外,手机电池电量有限,而数码管耗电较大,不符合设计要求。因此,选用常见的HS1602液晶显示模块显示测温结果。1.1.5确定方案为了不失通用性和智能性,本方案采用AT89S52单片机作为控制器,单总线温度传感器DS18B20进行温度采集。电源部分没有采用普通的直流电源而利用锂离子手机充电电池和配套的锂电池充电器,由于手机电池电量有限,显示模块使用HS1602液晶显示模块而没有使用数码管。1.2总体设计本方案设计的系统由按键控制模块、单片机系统、温度传感器模块、液晶显示模块、存储模块、串口通信模块和电源模块组成,其总体架构如图1.1。单片机系统电源模块温度传感器模块液晶显示模块串口通信模块按键模块存储模块程序控制图1.1 系统总体设计第2章 硬件设计2.1温度传感器模块 2.1.1 DS18B20特点l 独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双线通信。l 在使用中不需要任何外围元件。l 可用数据线供电,电压范围:+3.0 - +5.5 V。l 测温范围:-55 - +125 。固有测温分辨率为0.5 。 l 通过编程可实现9 - 12位的数字读数方式。l 用户可自设定非易失性的报警上下限值。l 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温。l 负压特性,电源极性接反时,温度计不会应发热而烧毁,但不能正常工作。2.1.2 DS18B20原理DS18B20 采用3 脚PR-35 封装或8 脚SOIC 封装,管脚排列如图2.1所示。图中GND 为地,DQ 为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平,Vcc 是外部+5V 电源端,不用时应接地,NC 为空脚。图2.1 DS18B20的外部结构DS18B20内部结构主要包括寄生电源、温度灵敏元件、64 位激光ROM 单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH 和TL 解发器存储与控制逻辑、8 位循环冗余校验码(CRC)发生器等七部分,内部结构如图2.2。图2.2 DS18B20内部结构(1)寄生电源。寄生电源由二极管VD1、VD2 和寄生电容C 组成,电源检测电路用于判定供电方式,寄生电源供电时,VDD 端接地,器件从单线总线上获取电源,在DQ 线呈低电平时,改由C上的电压Vc继续向器件供电。该寄生电源有两个优点:第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。若采用外部电源VDD,则通过VD2 向器件供电。图2.3 64 位ROM 的结构表2.1 DS18B20的ROM指令表指令功能读ROM(33H)当总线上只有一个节点时,读此节点ROM中64位地址匹配ROM(55H)此命令后跟着64位ROM地址,总线上只有64位ROM地址与此值相同的DS18B20才会做出反应,地址不匹配的DS18B20被忽略。该指令是为了选中某个DS18B20,然后为该DS18B20的读写做准备。跳过ROM(0CCH)忽略64位ROM地址,直接向DS18B20发温度变换命令。它只用于总线上只有一个节点的情况。搜ROM(0F0H)用于确定挂接在总线上DS18B20的个数和识别所有64位ROM地址报警搜索(0ECH)此指令与搜索ROM基本相同,差别在于只有温度超过设定值上限或下限的片子才做出响应。(2)64位ROM。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,其作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。这一点很像每一个网卡芯片都有一个各不相同的MAC地址。如图2.3所示,开始8位(28H)是产品类型标号,接着的48位是DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。主机操作ROM 的命令有五种,如表2.1 所示。(3)温度灵敏元件。温度灵敏元件完成对温度的测量,测量后的结果存储在两个8比特的温度寄存器中,这两个温度寄存器的定义如图2.4所示。温度存储器高位的前5位是符号位,但温度大于0时,这5位为0,而当温度小于0时,这5位是1。高位剩下的3位和低位的前4位是温度的整数位,低位的后四位是温度的小数位,当温度大于0时它们以原码的形式存储,而当温度小于0时都以二进制的补码形式存储 。 不难看出,当转换位为12位时,温度的精度为0.0625,当转换位数为11时,温度的精度为0.125,以此类推。(位7)位6位5位4位3位2位1位0LS字节MS字节SSSSS位10位9位8图2.4 DS18B20温度值存储器格式表DS18B20 测量温度时使用特有的温度测量技术。其内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。当计数门打开时,DS18B20 对f0 计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非5线性予以被偿。测量结果存入温度寄存器中。对于温度的计算,以12位转换位数为例,对于正的温度值,只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于零,测到的数值需要取反加1再乘以0.0625即可得到实际温度,从温度值推算到二进制的方法就是相反的过程。其它位数的转换以此类推。表2.2 DS1820 的温度转换值和温度的对照表例如,当转换的最大值07D0H对应的温度是+125,则+25的数字输出为0190H,-55的数字输出为FC90H。由此不难推出DS18B20的温度转换值和温度的对应表,如表2.2所示。(4)DS18B20内部存储器。DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPROM,后者存放高温度和低温度触发器TH、TL和配置寄存器。高速暂存存储器由9个字节组成,其分配如表2.3所示。当温度转换命令发布后经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节中。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。故前两个字节是测得的温度信息,第0个字节的内容是温度的低8位,第1个字节是温度的高8位。第2个和第3个字节是TH、TL的易失性拷贝,即高低温度的报警值,它们是不含小数位的。第4个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新,第5、6、7个字节用于内部计算,第8个字节是冗余检验字节。表2.3 DS18B20高速暂存存储器构成寄存器内容字节地址温度最低数字位(LS字节)0温度最高数字位(MS字节)1高温限制(TH)2低温限制(TL)3配置寄存器4保留5保留6保留7CRC校验值8其中配置寄存器(也即高速暂存RAM的第4个字节)其各位的意义为TM R1 R0 1 1 1 1 1 ,低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不用改动。R1和R0用来设置分辨率,DS18B20出厂时被设置为12位,分辨率设置如表2.4所示。 表2.4 分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms2.1.3 DS18B20 控制流程根据DS18B20的通讯协议,主机控制DS18B20完成一次温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉至少480微秒,然后释放,DS18B20收到信号后等待1560微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。ROM指令和暂存器RAM的指令如表2.1和表2.5所示。表2.5 DS18B20暂存器RAM的指令表指令说明温度转换(44H)启动在线DS18B20做温度A/D转换,结果存入内部RAM中。读数据(0BEH)从高速暂存器读9bits温度值和CRC值写数据(4EH)写上下限温度报警数据和配置数据到内部RAM的2、3、4字节。此指令后跟的就是以上三个数据。复制(48H)将RAM中第2、3、4字节的上下限温度报警数据和配置寄存器内容复制到EEPROM中。读EERAM(0B8H)将EEPROM上下限温度报警数据和配置寄存器内容恢复到RAM中得第2、3、4字节。读电源供电方式(0B4H)了解DS18B20的供电方式主机模式数据(低位在前)说明发送Reset主机发送复位信号接收Presence Pulse主机接收来自DS18B20的应答信号发送CCH跳过ROM指令,主机直接对总线上唯一的DS18B20操作发送3个字节数据报警上下限、配置寄存器的值发送Reset主机发送复位信号接收Presence Pulse主机接收来自DS18B20的应答信号发送CCH跳过ROM指令,主机直接对总线上唯一的DS18B20操作发送48H把报警上下限、配置寄存器的值写入EEPROM发送Reset主机发送复位信号接收Presence Pulse主机接收来自DS18B20的应答信号发送CCH跳过ROM指令,主机直接对总线上唯一的DS18B20操作发送44H主机发送转换命令发送Reset主机发送复位信号接收Presence Pulse主机接收来自DS18B20的应答信号发送CCH跳过ROM指令,主机直接对总线上唯一的DS18B20操作发送BEH主机读取指令接收9个或少于9字节的数据DS18B20发送转换结果等9个字节数据给主机。主机可以在任何时候通过复位信号中断数据通信,只读取关心的数据。表2.6 整个流程的操作指令解释比如进行如下操作:先送报警上下限值,并写入EEPROM,然后让DS18B20做温度转换,最后读取温度值。整个流程的操作解释指令如上表所示。2.1.4 DS18B20电路连接由于DS18B20 工作在单总线方式,其硬件接口非常简单,仅需利用系统的一条I/O线与DS18B20的数据总线相连即可,如图2.5所示。图2.5 DS18B20基本电路连接图DS18B20定期进行温度转换,并把此温度转换数据定期发送给PC机进行处理。2.1.5 DS18B20使用中的注意事项1)由于DS18B20与微处理器间采用无时钟同步的串行数据传送,因此在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。2)总线上的DS18B20数量较少时,典型的应用连接就能胜任。但是当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题。3)连接DS18B20的总线电缆是有长度限制的。对于普通信号电缆传输长度不宜超过50m;对于双绞线带屏蔽电缆的传输长度也不能超过150m,因此在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待,DS18B20的返回信号,一旦某个DS18B20接触不好或断线,在程序读该DS18B20时,将没有返回信号,程序进入死循环。所以程序设计中要对此进行一定的处理,比如可以加入超时退出等可靠行设计。2.2单片机系统2.2.1 单片机AT89S52的主要性能l (1) 与MCS-51单片机产品兼容l (2) 8K字节在系统可编程Flash存储器l (3) 1000次擦写周期l (4) 全静态操作:0Hz33Hzl (5) 三级加密程序存储器l (6) 32个可编程I/O口线l (7) 三个16位定时器/计数器l (8) 八个中断源l (9) 全双工UART串行通道l (10) 低功耗空闲和掉电模式l (!) 掉电后中断可唤醒l (12) 看门狗定时器l (13) 双数据指针l (14) 掉电标识符2.2.2 AT89S52的功能特性描述 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.2.3 AT89S52的引脚结构 图2.6AT89S52的结构1、AT89S52的结构如图2.6所示。2、各引脚功能VCC : 电源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.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如表2.7所示。在flash编程和校验时,P1口接收低8位地址字节。表2.7AT89S52引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)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 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如表2.8所示。在flash编程和校验时,P3口也接收一些控制信号。表2.8AT89S52引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.2.4 AT89S52的特殊功能寄存器特殊功能寄存器特殊功能寄存器(SFR)的地址空间映象如表2.9所示。表2.9 AT89S52 特殊寄存器映象及复位值并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位,寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位数据指针寄存器:位于SFR中82H83H的DP0和位于84H85。特殊寄存器AUXR1中DPS0 选择DP0;DPS=1 选择DP1。用户应该在访问数据指针寄存器前先初始化DPS至合理的值。掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期间POF置“1”。POF可以软件控制使用与否,但不受复位影响。2.2.5 AT89S52存储器结构存储器结构MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。2.2.6 本设计中单片机系统的总体电路方案采用AT89S52单片机作为控制器,完成所有的控制功能,包括:1. 温度传感器DS18B20的初始化和读取温度值2. HS1602液晶模块驱动3. 按键识别和控制4. 温度存储及读取5. 和PC机的串口通信单片机系统的总体电路如图2.7。图2.7 单片机系统总体电路2.3电源模块图2.8充电电路本方案采用锂离子手机充电电池和配套的锂电池充电器作为电源,手机用的锂电池电压范围是3.6V到4.2V,限定充电电压是4.25V,完全满足各模块的工作电压范围。充电器在作为电源的同时也可以对锂电池进行充电,所以系统在离开市电时可正常工作。充电器电路如图2.8所示。 2.4存储模块2.4.1 AT24C08结构考虑到有时生产和测试过程需要对数据进行统计处理,便于日后调整系统更好的进行生产和测试。本方案利用AT24C08芯片进行存储,实现温度测量存储与再现。AT24C08是ATMEL公司生产的串行EEPROM(8K,10248),直接通过I2C总线的SDA中的器件地址码变更来变换读写功能,当从串行时钟线SCL输入正边缘时钟信号时,数据进入每一个EEPROM器件,在负边缘时数据从每个器件中输出,串行数据线SDA双向输送时,该脚用漏极开路驱动,1、2、3脚作器件地址输入。其外部引脚及引脚功能如图2.9所示。图2.9 AT24C08外部引脚及引脚功能图2.10 AT24C08内部结构图AT24C08内部主要由EEPROM存储阵列及其行和列译码电路、电源泵/定时、串行多路调制器、数据寄存器、I2C总线控制逻辑电路组成,如图2.10所示。电源泵的设置免除外设置的写入高压电源;数据寄存器保证了页写数据的装载空间;器件地址比较器用于辩识自己的从地址。2.4.2 AT24C08工作原理从地址选择:AT24C08片内的存储空间地址采用了一个字地址(WORDADR)字节的寻址,故片内寻址范围为256字节。页写功能:EEPROM写入时,总需要一定的写入时间(5-15ms),因此,在写入时无法连续写入多个数据字节,在E2PROM器件中设有一定容量的数据寄存器,用户一次写入EEPROM的数据字节不大于页写字节数时可按通常RAM的写入速度装载至EEPROM中的数据寄存器中,随后启动自动写入定时控制逻辑,经过5-10ms自动将数据寄存器中的数据同步写入EEPROM的指定单元中。AT24C08的页写字节数为16。页地址空间的“翻卷”:对应于页写字节数,数据寄存器分别有2、3、4位页地址,为字地址的低位部分。在写入时,写入数据按照字地址(WORDADR)的最低部分,定为在数据寄存器的页地址空间、数据寄存器地址的低位部分,溢出时不会向字地址的高位部分进位,这就造成写入数据在地址的“翻卷”。EEPROM的写周期时序:由于页写功能的设置,I2C总线对AT24C08的操作只体现在对其数据寄存器的装载,在数据装载完毕,E2PROM接收到I2C总线发送的停止位后,自动启动一个内部同步的写周期,将数据寄存器中的数据写入EEPROM阵列中,在这个内部写入周期中所有输入皆无效。写周期结束后AT24C08才允许对总线响应。2.4.3 AT24C08的连接电路图2.11 AT24C08连接电路2.5液晶显示模块HS1602采用标准的16脚接口,其引脚如表2.10所示,其中VSS为地电源,VDD接5V正电源,V0为液晶显示模块对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作,当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。LEDA和LEDK为背光电源,LEDA接5V正电源,LEDK接GND。D0D7为8位双向数据线。表2.10 接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极用HS1602液晶显示模块显示字符或字符串之前必须对其进行初始化,HS1602液晶显示模块的初始化流程如下:1) 5.0 初始化过程(复位过程)2) 5.1 延时15ms3) 5.2 写指令38H(不检测忙信号)4) 5.3 延时5ms5) 5.4 写指令38H(不检测忙信号)6) 5.5 延时5ms7) 5.6 写指令38H(不检测忙信号)8) 5.7(以后每次写指令、读/写数据之前均需检测忙信号)9) 5.8 写指令38H:显示模式设置10) 5.9 写指令38H:显示关闭11) 5.10 写指令01H:显示清屏12) 5.11 写指令06H:显示光标移动设置13) 5.12 写指令0CH:显示开关及光标位置HS1602液晶模块内部的字符发生存储器(CGROM)已经存储了128个不同的点阵字符图形,如表2.11所示。 表2.11 CGROM 中的字符代码与图形对应关系 高低00000010001101000101011001110000CGRAM0Pp0001!1AQaq0010”2BRbr0011#3CScs0100$4DTdt0101%5EUeu0110&6FVfv01117GWgw1000(8HXhx1001)9IYiy1010*:JZjz1011+;Kk1100,Nn1111/?O_o表2.12 HS1602液晶模块内部的控制器控制指令指令指令码 说明 RS R/W D0 D1 D2 D3 D4 D5 D6 D7 清屏 0000000001清显示,光标回位 光标返回 000000001*ADD=0时,回原位 输入方式 00000001I/DS决定是否移动以及移动方向 显示开关 0000001DCBD-显示,C-光标,B-光标闪烁 移位 000001S/CR/L*移动光标及整体显示 功能设置 00001DLNF*DL-数据位数,L-行数,F-字体CGRAM地址设置 0001A5 A4 A3 A2 A1 A0设置CGRAM的地址DDRAM地址设置 001A6 A5 A4 A3 A2 A1 A0设置DDRAM的地址忙标志/读地址计数器 01BFAC6 AC5 AC4 AC3 AC2 AC1 AC0读出忙标志位(BF)及AC值CGRAM/DDRAM数据写 10写数据将内容写入RAM中CGRAM/DDRAM数据读 11读数据将内容从RAM中读出HS1602液晶模块内部的控制器共有11条控制指令,如表2.12所示。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的HS1602液晶显示模块可以和单片机AT89C51直接接口,电路如图2.13所示。图2.13 AT89S52和HS1602液晶模块连接电路液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表2.14是HS1602的内部显示地址。即第1行的显示地址应为80H+显示位置,第2行的显示地址应为C0H+显示位置。表2.14 HS1602的内部显示地址显示位置12345678910111213141516第1行808182838485868788898A8B8C8D8E8F第2行C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF2.6串口通信模块RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改,在这之前,有RS232B、RS232A,它规定连接电缆和机械、电气特性、信号功能及传送过程。RS-232C适合于数据传输速率在020000b/s范围内的通信。表2.15 9针串口功能一览表针脚功能针脚功能1载波检测6数据准备完成2接收数据7发送请求3发送数据8发送清除4数据终端准备完成9振铃指示5信号地线PC机常用DB-9连接器作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器,它只提供异步通信的9个信号,9针串口功能见表2.15,并且对电缆长度也有要求: RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的,为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。 本方案对RS-232C接口采用3线制(RXD、TXD、GND)软握手的零MODEM方式进行单片机和PC之间的数据通信,即PC机和单片机的发送数据线(TXD)与接收数据(RXD)交叉连接,二者的地线(GND)直接相连,其它信号线如握手信号线均不用,而采用软件握手。但由于RS-232-C的逻辑电对地是对称的,与TTL、MOS 逻辑电平完全不同,逻辑0电平规定为+5 +15V之间,逻辑1是电平为-5 -15V之间,因此利用MAX232芯片进行电平转换,电路连接如图2.14.图2.14 RS-232C通信连接电路 37第3章 软件设计3.1主程序流程 软件部分包括五个部分,对应着系统的五种模式,程序流程如图3.1所示。初始化读最新温度读最新温度设定温度值保存/删除数据读出数据刷新显示缓冲区数据判断是否刷新显示缓冲区数据刷新显示缓冲区数据保存数据并刷新显示缓冲区数据刷新显示缓冲区数据显示模式选择改状态指示改状态指示改状态指示改状态指示改状态指示State=0环境温度模式模式State=1体温计模式State=2设定模式State=4读出数据State=3保存/删除数据图 3.1 程序流程图3.2 DS18B20模块程序设计3.2.1程序流程DS18B20模块程序主要完成DS18B20的初始化和温度的读去操作,程序流程如图3.2所示。DS18B20初始化结束温度转换跳过ROM匹配延时DS18B20是否存在?跳过ROM匹配读暂存器转换为显示码是否图3.2 DS18B20模块程序流程图3.2.2程序源码uchar DataH;uchar DataL;unsigned long Data;void Delay (uchar us) while (-us);bit init_18b20()/1820初始化uchar n=0;bit flag=0;DQ=1;_nop_();DQ=0;Delay(255);Delay(20); /550usDQ=1;Delay(55);if(DQ=0) flag=1; /detect 1820 success! else flag=0; /detect 1820 fail! Delay(100); DQ=1;return flag;void write1820_byte (uchar wr) /单字节写入 uchar i; for (i=0;i=1; uchar read1820_byte (void) /读取单字节 uchar i,u=0; for(i=0;i=1; DQ=1; if(DQ=1) u|=0x80; Delay(18);/40us return(u); /对从DS18B20读出的温度值(ddh,ddl)进行处理,送显示缓冲区void DataCoding(unsigned char ddH , unsigned char ddL)Data = ddH * 256 + ddL;Data = Data * 625;void Get_temperarue(void)if (init_18b20 ()write1820_byte (0xcc); /skip rom write1820_byte (0x44); /temp convertDelay(35);if (init_18b20 () write1820_byte (0xcc); /skip rom write1820_byte (0xbe); /read tempDataL = read1820_byte();DataH = (read1820_byte()&0x0f);DataCoding( DataH, DataL );3.3 HS1602驱动程序设计3.3.1程序流程 HS1602液晶驱动主要完成HS1602的初始化以及字符和字符串的显示,程序流程如图3.3所示。1602液晶模块初始化开始显示图3.3 HS1602液晶驱动程序流程图3.3.2程序源码/液晶初始化void lcd_init(void) delay_nms(15); lcd_write_command(0x38,0);/显示模式设置三次(此时不管lcd空闲与否) delay_nms(5); lcd_write_command(0x38,0); delay_nms(5); lcd_write_command(0x38,0); delay_nms(5);lcd_write_command(0x38,1);/显示模式设置(从此之后均需lcd空闲) lcd_write_command(0x08,1);/显示关闭 lcd_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论