89C51单片机和DS18B20数字温度计外文原文+翻译Word文档格式.docx
《89C51单片机和DS18B20数字温度计外文原文+翻译Word文档格式.docx》由会员分享,可在线阅读,更多相关《89C51单片机和DS18B20数字温度计外文原文+翻译Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
P1.5
MOSI(用于ISP编程)
P1.6
MISO(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2端口是一个带有内部上拉电阻的8位双向I/O端口。
P2端口的输出缓冲级可驱动(吸收或输出电流)4个TTL输入。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
当作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2端口送出高8位地址数据。
在访问8位地址的外部数据存储器(例如执行MOVX@Ri指令)时,P2端口上的内容(即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不变。
Flash编程或校验时,P2也可接收高位地址和其它控制信号。
P3端口是一组带有内部上拉电阻的8位双向I/O端口。
P3端口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3端口写入“1”时,他们被内部上拉电阻拉高并作为输入端口。
当作输入端时,被外部拉低的P2端口将用上拉电阻输出电流(IIL).P3端口还接收一些用于Flash闪存编程和程序校验的控制信号。
P3端口可以采用AT89S51的
各种特殊功能,如下表所示。
P3.0
RXD(串行输入端口)
P3.1
TXD(串行输出端口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时/计数器0外部输入)
P3.5
T1(定时/计数器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
3存储器结构
MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
3.1程序存储器
如果的EA引脚接地(GND),全部程序都可以执行外部存储器。
在AT89S51,如果EA连接到电源+(VCC),程序首先执行地址从0000H到FFFH内部存储器,在执行地址从1000H到FFFFH的外部程序存储器。
3.2数据存储器
AT89S51具有128字节的内部RAM。
这128字节都可以通过直接和间接寻址方式访问,堆栈操作可利用间接寻址方式进行,因此,128字节都可以可作为堆栈空间。
4看门狗定时器(WDT)
看门狗定时器(WDT)是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗定时器复位SFR(WDTRST)构成。
外部复位时,看门狗定时器(WDT)默认为关闭状态,要打开WDT,用户必须按顺序将01EH和0E1H写到WDTRST寄存器(SFR地址为0A6H),当启动了WDT,它会随警惕振荡器在每个机器周期计数,除了硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
4.1使用看门狗定时器(WDT)
用户在打开WDT时,需要按次序将01EH和0E1H写到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需要在一定的时候将01EH和0E1H写道WDTRST寄存器以避免WDT计数溢出。
14位WDT计数器达到16383(3FFFH),WDT将溢出并使用器件复位。
WDT打开时,它会随着晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。
WDT计数器既不可读也不可写,当WDT溢出时,通常将使RST引脚输出高电平的复位脉冲。
复位脉冲持续时间为98xTosc,而Tosc=1/Fosc(晶体振荡频率)。
为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。
4.2掉电和空闲模式下的WDT
掉电时期,晶体振荡停止,看门狗定时器也停止。
掉电模式下,用户不嗯那个在复位看门狗定时器。
有两种方法可以推出掉电模式:
硬件复位或通过激活外部中断,当硬件复位退出掉电模式时,处理看门狗定时器可像通常的上电复位一样。
当由中断退出掉电模式时则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高电平事即可相应中断服务。
以防止中断误复位,当器件复位,中断引脚持续为低时,看门狗定时器并未开始计数,知道中断引脚被拉高时为止。
这为在掉电模式下的中断执行中断服务程序而设置。
为保证看门狗定时器在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位看门狗定时器。
在进入空闲模式前,看门狗定时器打开时,WDT是否继续计数由SFR中的AUXR的WDIDLE位决定,在IDLE期间(位WDIDLE=0)默认状态是继续计数。
为防止AT89S51从空闲模式中复位,用户应该周期性地设置定时器,重新进入空闲模式。
当WDIDLE位被置位,在空闲模式中看门狗定时器将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。
5中断
AT89S51共有五个中断向量:
两个外部中断(INT0和INT1),两个定时器中断(Timer0和Timer1)和一个串行中断。
这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。
IE也包含总中断控制位EA,EA清0,将关闭所有中断。
6振荡器特性
AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
如图所示。
外接石英晶体或陶瓷谐振器都可以使用于反馈元件。
用户也可以采用外部时钟,在这种情况下,外部时钟接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空,如图7-2所示。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但是最小高电平持续时间和最大的低电平时序时间应符合产品技术条件的要求。
7空闲模式
在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍然保持激活状态,这种方式由软件产生。
此时,片内RAM和所有特殊功能寄存器的内特那个保持不变,空闲模式可由任何语序中断的请求或硬件复位终止。
需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其他端口。
为了避免在复位结束时可能对端口产生意外写入,激活空闲模式的那条指令的后一条指令不应该是一条对端口或外部存储器的写入指令。
8掉电模式
在掉线模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。
退出掉电模式的方法是硬件复位或由处于使能状态的外中断INT0和INT1激活。
复位后将重新定义全部特殊功能寄存器,但不改变原来RAM中的内容,在VCC恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
DS18B20数字温度计
描述:
DS18B20数字温度计提供9至12位温度读数,指示器件的温度。
信息经过单线接口送入DS18B20或送出,因此从中央处理器到DS18B20仅需连接一条(和地)。
读、写和完成温度变换所需的电源可以有数据线本身提供,而不需要外部电源。
因为每一个DS18B20有唯一的系列号,因此多个DS18B20可以存在于同一条单线总线上。
这允许在许多不同的地方放置温度灵敏器件。
此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。
特性:
独特的单线接口,只需一个接口引脚即可通信。
多点能力使分布式温度检测应用得以简化。
不需要外部元件。
可用数据线供电,提供3.0V到5.5V的电源。
不需备份电源。
测量范围从-55°
C到+125°
C,等效的华氏温标范围是-67°
F到+257°
F
以9到12位数字值方式读出温度。
在750毫秒内把12位温度变换为数字。
用户可定义的,非易失性的温度警告设置。
告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况)。
应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。
引脚排列
引脚说明
GND–地
DQ–数字输入输出
VDD–可选的VDD
NC–不连接
详细引脚说明
综述
图1的方框图表示DS18B20的主要部件。
DS18B20有三个主要的数据部件:
1)64为激光ROM,2)温度灵敏元件,3)非易失性温度告警触发器TH和TL。
器件从单线的通信线取得其电源,在信号线为高电平的时间周期内,把能量贮存在内部的电容器中,在单信号线为低电平的时间期内断开此电源,直到信号线变为高电平重新接上寄生(电容)电源为止,作为另一种可供选择的方法,DS18B20也用外部5V电源供电。
与DS18B20的通信经过一个单线接口。
在单线接口情况下,在ROM操作未定建立之前不能使用存贮器和控制操作。
主机必须首先提供五种ROM操作命令之一:
1)读ROM,2)符合ROM,3)搜索ROM,4)跳过ROM,5)告警搜索。
这些命令对每一个器件的64位激光ROM部分进行操作。
如果在单线上有许多器件,那么可以挑选出一个特定的器件,并给总线上的主机指示存在多少器件及其类型。
在成功地执行了ROM操作序列之后,可使用贮存2器和控制操作。
然后主机可以提供六种存贮器和操作命令之一。
一个操作命令指示DS18B20完成温度测量。
改测量的结果放入DS18B20的高速暂存存贮器,通过发出读暂存存储器内容的存储器操作命令可以读出此结果。
每一温度告警触发器TH和TL构成一个字节的EPROM。
如果不对DS18B20施加告警搜索命令,这些寄存器用作通用用户存储器。
使用存储器操作命令可以写TH和TL。
对这些寄存器的读访问通过便簮存储器。
所以数据均以最低有效位在前的方式被读写。
单线总线系统
单线总线是一种具有一个总线主机和一个或若干个从机的系统。
DS18B20起从机的作用。
这种总线系统的讨论分为三个题目:
硬件接法,处理顺序,以及单线信号(信号类型与定时)。
硬件接法
根据定义,单线总线只有一根线:
这一点很重要的,即线上的第一个器件能在适当的时间驱动该总线。
为了做到这一点第一个连接到总线上的器件必须具有漏极开路或三态输出。
DS18B20的单线接口。
多站总线由单线总线和多个与之相连的从属器件组成。
单线总线要求近似等于5k.
单线总线的空闲状态是高电平。
不管任何原因,如果执行需要被挂起,那么,若要重新恢复执行,总线必须保持在空闲状态。
如果不满足这一点且总线保持在低电平时间大于480微秒,那么总线上所有的器件均被复位。
硬件连接图
处理顺序
经过单线总线接口访问DS18B20的协议如下:
初始化
ROM操作命令
存贮器操作命令
处理/数据
单线总线上的所有处理均从初始化序列开始。
初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。
一旦总线主机检测到从属器件的存在,他便可以发出器件ROM操作命令之一。
所有ROM操作命令均由8位长,这些命令列表如下:
读ROM[33H]
此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。
此命令只能在总线上仅有一个DS18B20得情况下可以使用。
如果总线上存在多于一个得从属器件,那么所有从片企图同时发送时将发生数据冲突的现象。
符合ROM[55h]
符合ROM命令。
后继以64位的ROM数据序列,允许总线主机对多点总线上的DS18B20寻址。
只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。
所有与64位ROM序列不符的从片将等待复位脉冲。
此命令在总线数据上有单个或多个器件的情况下均可使用。
跳过ROM[CCh]
在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。
如果在总线上存在多于一个得从属器件而且在跳过ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突
搜索ROM[F0h]
当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。
搜索ROM命令允许总线主机使用一种消去处理来识别总线上的所有从片的64位ROM编码。
5.告警搜索[ECh]
此命令的流程与搜索ROM命令相同。
但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。
告警的条件定义为温度高于TH或低于TL。
只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量告警。
6.ROM搜索举例
ROM搜索过程是简单三步过程的重复:
读一位,读核位的补码,然后写所需的那一位的值。
总线主机在ROM的每一位上完成这一简单的三步过程。
在全部过程完成之后,总线主机便知道一个器件中ROM的内容,器件中其余的数以及他们的ROM编码可以游另外一个过程来识别。
以下ROM搜索过程的例子假设四个不同的器件连接到同一条单线总线上。
四个器件的ROM数据如下所示:
ROM100110101…
ROM210101010…
ROM311110101…
ROM400010001…
搜索过程如下:
1.总线主机通过发出复位脉冲开始初始化序列,从属器件通过发出同时的存在脉冲作出响应。
2.然后总线主机在单线总线上发出搜索人ROM命令。
3.总线主机从单线过程中读一位。
每一器件通过把他们各自ROM数据的第一位的值放到单线总线上来作出响应。
ROM1和ROM4:
将把一个0放在单线总线上,即,把它拉至低电平。
ROM2和3通过使总线停留在高电平而把1放在单线总线上。
结果是线上所有器件的逻辑与,因此总线主机接收到一个0.总线主机读另一位。
因此搜索ROM数据命令正在执行,所以单线总线上所有器件通过把各自ROM数据第一位的补码放到单线总线上来对这第二个读作出响应。
ROM1和ROM2把1放在单总线上,使之处于高电平。
ROM2和ROM3把0放在单线上,因此他将被拉至低电平。
对于第一个ROM数据位的补码总线主机观察到得仍是一个0.总线主机便可决定单线总线上有一些第一位为0的器件和一些第一位为1的器件。
4.总线主机写一个0.在这次搜索过程的其余部分,将不选择ROM2和ROM3,仅留下连接到单线总线的ROM1和ROM4。
5.总线主机再执行两次读,并在一个1位之后接收到一个0位,这表示所有还连接在总线上的器件的第二个ROM数据位为0.
6.总线主机接着写一个0,使ROM1和ROM4二者保持连接。
7.总线主机执行两次连读,并接收到两次0数据位。
这表示连接着的器件ROM数据的第三位都是1数据位和0数据位。
8.总线主机写一个数据位。
这将不选择ROM1而把ROM4作为唯一仍连接着的器件加以保留。
9.总线主机读ROM4的ROM数据位的剩余部分,而且访问需要的部件。
这就完成了第一个过程并且唯一的识别单线总线上的部件。
10.总线主机通过重复步骤1至7开始一个新的ROM搜索序列。
11.总线主机写一个1,这将不与ROM4发生联系,而唯一的与ROM1仍保持着联系。
12.总线主机对于ROM1读出ROM位的剩余部分而且,如果需要的话,与内部逻辑通信。
这就完成了第二个ROM搜索过程,在其中ROM中的另一个被找到。
13.总线主机通过重复步骤1至3开始一次新的ROM搜索。
注意下述内容:
在第一次ROM搜索过程中,总线主机知道一个单线器件的唯一的ID号。
取得部件唯一ROM编码的时间为:
960us+(8+3×
64)us=13.16ms
因此总线主机每秒钟能够识别75个不同的单线器件。
TheDescriptionofAT89S51
1GeneralDescription
TheAT89S51isalow-power,high-performanceCMOS8-bitmicrocontrollerwith4KbytesofIn-SystemProgrammableFlashmemory.ThedeviceismanufacturedusingAtmel’shigh-densitynonvolatilememorytechnologyandiscompatiblewiththeindustry-standard80C51instructionsetandpinout.Theon-chipFlashallowstheprogrammemorytobereprogrammedin-systemorbyaconventionalnonvolatilememoryprogrammer.Bycombiningaversatile8-bitCPUwithIn-SystemProgrammableFlashonamonolithicchip,theAtmelAT89S51isapowerfulmicrocontrollerwhichprovidesahighly-flexibleandcost-effectivesolutiontomanyembeddedcontrolapplications.
TheAT89S51providesthefollowingstandardfeatures:
4KbytesofFlash,128bytesofRAM,32I/Olines,Watchdogtimer,twodatapointers,two16-bittimer/counters,afive-vectortwo-levelinterruptarchitecture,afullduplexserialport,on-chiposcillator,andclockcircuitry.Inaddition,theAT89S51isdesignedwithstaticlogicforoperationdowntozerofrequencyandsupportstwosoftwareselectablepowersavingmodes.
TheIdleModestopstheCPUwhileallowingtheRAM,timer/counters,serialport,andinterruptsystemtocontinuefunctioning.ThePower-downmodesavestheRAMcontentsbutfreezestheoscillator,disablingallotherchipfunctionsuntilthenextexternalinterruptorhardwarereset.
2Ports
Port0isan8-bitopendrainbi-directionalI/Oport.Asanoutputport,eachpincansinkeightTTLinputs.When1sarewrittentoport0pins,thepinscanbeusedashigh-impedanceinputs.Port0canalsobeconfiguredtobethemultiplexedlow-orderaddress/databusduringaccessestoexternalprogramanddatamemory.Inthismode,P0hasinternalpull-ups.Port0alsoreceivesthecodebytesduringFlashprogrammingandoutputsthecodebytesduringprogramverification.Externalpull-upsarerequiredduringprogramverification.
Port1isan8-bitbi-directionalI/Oportwithinternalpull-ups.ThePort1outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort1pins,theyarepulledhighbytheinternalpull-upsandcanbeusedasinputs.Asinputs,Port1pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpull-ups.
Port1alsoreceivesthelow-orderaddressbytesduringFlashprogrammingandverification.
PortPin
AlternateFunctions
MOSI(usedforIn-SystemProgrammi