基于Proteus的单片机实时时钟仿真设计.doc

上传人:laozhun 文档编号:4148327 上传时间:2023-04-07 格式:DOC 页数:91 大小:11.37MB
返回 下载 相关 举报
基于Proteus的单片机实时时钟仿真设计.doc_第1页
第1页 / 共91页
基于Proteus的单片机实时时钟仿真设计.doc_第2页
第2页 / 共91页
基于Proteus的单片机实时时钟仿真设计.doc_第3页
第3页 / 共91页
基于Proteus的单片机实时时钟仿真设计.doc_第4页
第4页 / 共91页
基于Proteus的单片机实时时钟仿真设计.doc_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《基于Proteus的单片机实时时钟仿真设计.doc》由会员分享,可在线阅读,更多相关《基于Proteus的单片机实时时钟仿真设计.doc(91页珍藏版)》请在三一办公上搜索。

1、第一章 绪论 1.1 课题研究的背景 随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在5V的低压工作,电压可选用4.55.5V电压供电。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2课题的研究目的与意义二

2、十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。1.3课题解决的主要内容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗

3、断电的器件。(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。(4)根据硬件电路图,在开发板上完成器件的焊接。(5)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。(6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。(7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(8)软件设计时必须要有完善的思路,要做到程序简单,调试方便。第二章 设计要求与方案论证2.1设计要求(1) 基本要求 具有年、月、日、星期、时、分、秒显示和校准功能,24小时制; 具

4、有定时响铃和定点报时功能; 具有环境温度采集和显示功能; 具有响铃播放音乐功能; 具有响铃显示特定字符、字符串等功能。2.2 系统基本方案选择和论证2.2.1 单片机芯片的选择方案和论证方案一:用中小规模集成电路74/54系列和CC4000系列及555集成电路构建秒脉冲源,再利用分频器、计数器、缓存器等得到分、时、日、月、年的计时信号,最后用译码器驱动数码管显示,得到时钟功能。用热敏电阻、A/D转换芯片及相关控制、显示电路组成温度显示部分。用寄存器、比较器及相关控制电路组成闹钟电路。方案二:采用FPGA(现场可编辑门列阵)或CPLD(复杂可编程逻辑器件)作为系统控制器。FPGA/CPLD可以实

5、现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。方案三:采用AT89C51单片机,完全兼容MCS-51系列单片机的所有功能,并且本身带有2K的内存储器,可以在编程器上实现闪烁式的电擦写达几万次以上,比以往惯用的8031CPU外加EPROM为核心的单片机系统在硬件上具有更加简单方便等优点,具体如下:1)AT89C51单片机是最早期也最典型的产品,低功耗、高性能、采用CHMOS工艺的8位单片机。2)它在硬件资源和功能、软件指令及编程上与Intel 80C3X单片机完全相同

6、。在应用中可直接替换。3)在AT89C51内部有FLASH程序存储器,既可用常规的编程器编程,也可用在线使之处于编程状态对其编程。编程速度很快,擦除时也无需紫外线,非常方便。4)AT89C5X系列可认为是Intel 80C3X的内核与Atmel FLASH技术的结合体。它为许多嵌入式控制系统提供了灵活、低成本的解决方案。方案比较:由三种方案可以看出,用方案一实现设计要求需要使用大量的集成电路,系统结构复杂,电路连接困难。单个芯片的质量对系统的稳定性影响甚大,逻辑功能出现错误不易定位,整体调试费时费力。扩展系统功能工作量极大,甚至有可能要将整个设计方案推倒重来。方案二使用一片FPGA/CPLD即

7、可替代方案一中绝大多数的集成电路。使用VHDL超高速硬件描述语言设计电路,基本不需要硬件调试,方便快捷。但是FPGA/CPLD高速处理能力得不到充分发挥且价格较贵不适合在数字钟这种简单电路中使用。方案三利用单片机作为控制核心,硬件按照技术手册要求连接后基本不需要调试,相关的逻辑功能全部由软件实现,修改方便。功能扩展只需要在现有程序的基础上增加函数即可实现,无需对已实现功能的程序进行改动,调试方便,问题定位快捷、准确。综上所述,我们采用方案三实现系统总体要求。2.2.2 显示模块选择方案和论证 方案一: 采用LED数码管动态扫描, LED数码价格适中,对于显示数字最合适,而且采用动态扫描方法与单

8、片机连接时,占用的单片机口线少,驱动电路简单,且LED在亮度、功耗、可视角度和刷新速率等方面,都更具很大的优势。但所需数码管太多焊接困难极易出错,所以不采用LED数码管作为显示。 方案二:采用字段式LCD,显示类型与数码管类似,靠7个字段拼凑生数字显示。一般只能显示09,AF16种字符。这种LCD驱动简单,耗电量小,在仅需要显示数字的场合应用较多,也用来在便携式应用的场合来代替数码管,所以也不采用字段式LCD作为显示。 方案三:采用点阵式LCD显示,LCD1602是字符型液晶,显示字母和数字比较方便,控制简单,功耗低,体积小,显示内容丰富,超薄轻巧,可以用电池供电,便于携带,成本较低。在袖珍式

9、仪表和低功耗应用系统中得到越来越广泛的应用。本设计需要显示较多的数字和字符,因此,采用点阵式LCD显示。2.2.3 时钟芯片的选择方案和论证 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,实现的时间误差较大。 方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能、低功耗、涓流充电的实时时钟芯片,内部含有一个实时时钟/日历,可自动对年、月、日、星期、时、分、秒进行计时,可以自动调整每月的天数。同时具有闰年补偿功能,而且精度高,

10、芯片内部有一个31字节的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。用户可以通过对DS1302的设置实现AM/PM指示的12小时制。DS1302采用三线串行通信接口与CPU进行同步通信,并采用突发方式一次传送多个字节的时钟数据或RAM数据。 方案比较:由于我们需要定时,而且防止掉电现象,能够保证准确的时间,所以我们采用了方案一。2.2.4 温度传感器的选择方案和论证 方案一: 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计需用A/D转换电路。增加

11、硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器,而且仅需要一条数据线进行传输易于与单片机连接,可以除去A/D模块,降低硬件成本,简化系统电路。另外,单总线具有经济性好,抗干扰能力强,使用方便等优点。在使用中不需要任何外围元件。具有负压特性,电源极性接反时,温度计不会因为发热而烧毁,而且还具有掉电保护功能。数字式温度传感器还具有测量精度高测量范围广等优点。所以选择DS18B20。2.2.5 按键模块的选择方案和论证 方案一: 采用44矩阵式键盘,在修改时钟或设置闹铃时间时就可以直接从键盘输入,节省I/

12、O口,方便、快捷,但程序较为复杂。方案二:采用独立式按键,占用较多的I/O口,稍为麻烦一些,但其程序简单。方案比较:由于,此多功能电子万年历不需要经常修改时间,需要的按键也不多,而且方案二程序简单,成本低,因此选择方案二。 2.3 电路设计最终方案决定综上各方案所述,对此次作品的方案选定: 采用AT89C51作为主控制系统;点阵式LCD作为显示;DS1302提供时钟;数字式温度传感器DS18B20;独立式按键。第三章 系统的硬件设计与实现3.1 电路设计框图3.2 系统硬件概述 本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在4.5V超低压工作;显示部分用LCD1602

13、实现,能够同时显示16x02即32个字符;闹钟部分由蜂鸣器构成,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,作为发声器件广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V.采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精

14、度高和低功耗等特点,同时具有掉电自动保存功能,本设计中为DS1302增加了备用电池,当主电源掉电时,备用电池自动为其供电;温度的采集由DS18B20构成;当闹铃时间到时,通过蜂鸣器播放闹铃铃声。3.3 主要单元电路的设计3.3.1 单片机主控制模块的设计 AT89C51为40引脚双开列直插式芯片,有四个I/O口P0口,P1口,P2口,P3口,MCS-51单片机共有4个8位的I/O口,(P0,P1,P2,P3),每一条I/O线都能独立地作为输入或输出线。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外

15、部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图-1所示。图-1 主控制系统 3.3 2 显示模块的设计 如图-2所示,采用LCD1602字符型液晶显示。 1602LCD分为带背光和不带背光两种,其控制器大多为HD44780,带背光的比不带背光的厚,两者尺寸差别如下图-3所示。 1602LCD主要技术参数: 显示容量:162个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm(1) LCD1602的

16、基本参数及引脚功能1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表-1所示。 第1脚:VSS为地电源。 图-2 LCD1602字符型液晶显示 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度 最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 图-3 1602LCD尺寸图编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据1

17、5BLA背光源正极8D1数据16BLK背光源负极表-1 引脚接口说明表 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。(2)1602LCD的指令说明及时序 1602液晶模块内部的控制器共有11条控制指

18、令,如表-2所示。序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容 表-2 控制命令表 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高

19、电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移;S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C:控制光标的开与关,高电平表示有光标,低电平表示无光标;B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线;N

20、:低电平时为单行显示,高电平时双行显示;F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=

21、高脉冲输出无表-3 基本操作时序表 读写操作时序如图-4和图-5所示: 图-4 读操作时序 图-5 写操作时序(3)1602LCD的RAM地址映射及标准字库表 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图-6是1602的内部显示地址。图-6 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行。因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是: 010000

22、00B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图-7所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。(4)1602LCD的一般初始化(复位)过程

23、 延时15mS 写指令38H(不检测忙信号) 延时5mS 写指令38H(不检测忙信号) 延时5mS图-7 字符代码与图形对应图 写指令38H(不检测忙信号) 以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置3.3.3 时钟电路模块的设计图-8示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS130

24、2供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双

25、向)。SCLK始终是输入端。(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,再接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图-9所示。表-4为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该

26、位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 图-8 DS1302的引脚图 表-4 DS1302的控制字格式

27、图-9 DS1302读/写时序图(3) 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如表-4所示。 (4) DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-5。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有

28、寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81H80HCH10秒秒0-5983H82H10分分0-5985H84H12/24 010 时时1-12/0-23AM/PM87H86H0010日日1-3189H88H00010月月1-128BH8AH00000周日

29、1-78DH8CH年0-998FH8EHWP0000000 表-5 DS1302的日历、时间寄存器 3.3.4 温度传感器模块的设计如图-10所示。采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P1.0与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。 图-10 DS18B20温度采集 (1)DS18B20的理: DS18B20的测温原理如图-11所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变

30、,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在 -55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循图-11 DS18B20测温原理图环直到减法计数器2计数到0

31、时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20的核心功能是一个直接数字式温度传感器。芯片的分辨率可以按照用户的需要配置为9位、10位、11位、12位,芯片在上电后默认设置为12位。DS18B2

32、0可工作在低功耗的空闲状态。 单总线系统中的主机发出温度转换命令(44H)后,DS18B20便开始启动温度测量并把测量的结果进行A/D转换。经过A/D转换后,所产生的温度数据将存储在暂存器中的两个温度寄存单元中,数据的格式为符号扩展的二进制补码,同时DS18B20返回到空闲状态。 DS18B20的温度数据输出单位为“摄氏度”。温度数据在两个温度寄存器单元中的存储格式见下图:标志位(S)是温度数据的符号扩展位,表示温度的正负:如果温度为正,则S=0;如果温度为负,则S=1。在实际使用过程中,如果DS18B20被设置为12位分辨率,则在温度所有数据位都是有效位;如果DS18B20被设置为11位分辨

33、率,则D0位数据无效;如果DS18B20被设置为10位分辨率,则D1、D0位数据无效;如果DS18B20被设置为9位分辨率,则D2、D1、D0位数据无效。以12位分辨率为例,表-6给出了DS18B20部分数字量输出与温度值之间的关系。在表-6中,+85是DS18B20上电复位后在温度寄存器内对应的数字量。温度/数字量输出(二进制)数字量输出(十六进制)+1250000 0111 1101 000007D0+850000 0101 0101 00000550+25.06250000 0001 1001 00010191+10.1250000 0000 1010 001000A2+0.50000

34、0000 0000 1000000800000 0000 0000 00000000-0.51111 1111 1111 1000FFF8-10.1251111 1111 0101 1110FF5E-25.06251111 1110 0110 1111FF6F-551111 1100 1001 0000FC90 表-6 DS18B20部分数字量输出与温度值之间的对应关系在DS18B20完成温度转换以后,其温度值将与报警寄存器中的值相比较。在DS18B20中有两个报警寄存器,TH为温度上限值,TL为温度下限值,这两个寄存器均为8位,所以在进行温度比较时,只取出温度的中间8位(D4D11)进行比较

35、。TH和TL寄存器格式如下表所示:D7D6D5D4D3D2D1D0S26252423222120如果温度寄存器测量的结果低于TL或高于TH,则设置报警标志,这个比较过程会在每次温度测量时进行。一旦报警标志设置后,器件就会响应系统主机发出的条件搜索命令(ECH)。这样处理的好处是,可以是单总线上的所有器件同时测量温度,如果有些点上的温度超过了设定的阈值,则这些报警器件就会通过条件搜索方式识别出来,而不需要一个个器件去读取。无论是温度测量值还是报警阈值,都会存储在DS18B20芯片内的寄存器中。DS18B20的寄存器包括SRAM(暂存寄存器)和EEPROM(非易失寄存器)。EEPROM用于存放报警

36、上限寄存器(TH)、报警下限寄存器(TL)和配置寄存器。如果在使用过程中,没有使用报警功能,TH和TL可作为普通寄存器单元使用。DS18B20的存储器结构如表-7所示。表-7 DS18B2存储结构字节0和字节1是温度数字量的低位字节和高位字节,这两个寄存器是只读寄存器,在上电时默认值为0550H,即+85。字节2和字节3可用于存放报警阈值或用户寄存器。字节4是配置寄存器,用于设置DS18B20温度测量分辨率,其格式如下表:D7D6D5D4D3D2D1D00R1R011111字节6、6、7保留未使用。字节8用于存放前8个字节的CRC校验值。EEPROM中的值在掉电后仍然保留,SRAM中的值在掉电

37、后会丢失。在器件上电时,将EEPROM中的数据复制到SRAM中,SRAM恢复默认值。所以SRAM的字节2、3、4、8中的值取决于EEPROM中的值。用户可通过“回读EEPROM”命令后,通过一个读时隙来判断回读操作是否完成:如果回读操作正在执行,则DS18B20会向总线上发送一个0;如果回读操作已完成,则DS18B20会向总线上发送一个1.“回读EEPROM”命令会在DS18B20上电时自动完成一次,保证芯片在上电后可以使用有效数据。 (2)DS18B20的功能命令:DS18B20的功能命令包括两类:温度转换和存储命令,见表-8.1和表-8.2。 表-8.1 ROM指令表指 令 约定代码功 能

38、读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位ROM 地址。为操作各器件作好准备。 跳过ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。 表-8.2 RAM指令表指 令 约定代码功 能温度变换44H启动DS

39、1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 读暂存器0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂 存器 48H 将RAM中第3 、4字节的内容复制到EEPROM中。 重调EEPROM0B8H 将EEPROM中内容恢复到RAM中的第3 、4字节。 读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。 当系统中DS18B20使用寄生电源供电时,由于“温度转

40、换”和“复制SRAM” 的操作都是发生在主机发命令之后,由DS18B20自主完成,同时又需要较长的时间(“温度转换”的时间最长),所以通常在主机发出这些命令后,通过MOSFET将总线电压强拉至高电平,以保证这些操作顺利完成。如图-12所示。一般在“温度转换”时需要根据测量的分辨率选择保持强上拉的时间;在“复制SRAM”时需要至少保持10ms的强上拉,而且必须在主机发出命令的10s的时间内使用MOSFET进行上拉。3.3.5 掉电保护模块的设计I2C总线是一种双向二线制总线,结构简单,可靠性和抗干扰性能好。24C02芯片是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数

41、据的长期保存。图-12 DS18B20使用MOSFET进行强上拉电路原理图(1)I2C总线结构 I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。所以,I2C总线结构的硬件结构非常简洁。 24C02的引脚图: 当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收

42、信息时,又成为接收器。(2)I2C总线上的数据传送 1)位传输 I2C总线每传送一位数据必须有一个时钟脉冲。被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图所示,在标准模式下,高低电平宽度必须不小于4.7us。那么是不是所有I2C总线中的信号都必须符合上述的有效性呢?只有两个例外,就是开始和停止信号。开始信号:当SCL为高电平时,SDA发生从高到低的跳变,就定义为开始信号。停止信号:当SCL为高电平时,SDA发生从低到高的跳变,就定义为结束信号。2)数据传输的字节格式 SDA传送数据是以字节为单位进行的。每个字节必须是8位,但是传输的字节数量不受限制,首先传送的是数据的最高位。每次传送一个字节完毕,必

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号