单片机第7章MCS-51单片机接口技术3_第1页
单片机第7章MCS-51单片机接口技术3_第2页
单片机第7章MCS-51单片机接口技术3_第3页
单片机第7章MCS-51单片机接口技术3_第4页
单片机第7章MCS-51单片机接口技术3_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章51单片机的接口技术共四十一页7.9 新型(xnxng)串行接口芯片及其接口技术 传统的单片机外围(wiwi)扩展接口采用并行方式,即单片机与外围(wiwi)器件用8根数据线进行数据交换,再加上一些地址线和一些控制线,占用了大量的单片机I/O口。这不仅造成单片机资源的浪费,甚至会影响单片机其他功能的实现。因此近年来,越来越多的新型外围器件采用了串行接口,绝大多数单片机应用系统的外围扩展接口也从并行方式过渡到串行方式。共四十一页7.9.1 I2C总线(zn xin)器件及其接口技术 I2C总线是Inter IC Bus(内部集成电路总线)的缩写,是Phulips公司研发的一种双向二线制总线

2、,用于单片机及其外围设备,是近年来应用较多的串行总线之一。I2C总线的优点是简单、有效,并且占用的空间(kngjin)非常小,减少了电路板的空间(kngjin)以及芯片引脚的数量,降低了互联成本。总线的长度可达8m,最多可支持40个器件。目前具备I2C接口的芯片有很多,如AT24系列EEPROM、PCF8563日历时钟芯片、PCF8576LCD驱动器及PCF8591A/D转换器等。共四十一页1. I2C总线接口(ji ku) I2C总线只有两根信号线,一根是双向的数据/地址线SDA,另一根是串行时钟总线SCL。所有连接到I2C总线上的设备的串行数据线都接到SDA上,而所有设备的串行时钟线都接到

3、SCL上。应用时两根总线必须接有510K的上拉电阻。共四十一页 一个单片机系统外围(wiwi)可以扩展多个I2C总线器件,每个器件需要设定不同的地址。这样单片机可以根据器件的不同地址进行识别并与之进行数据传输。 I2C总线的数据传输速率在标准工作方式下为100Kb/S,高传输速率可达到400Kb/S 。共四十一页 当某个器件向总线上发送信息时,它就是发送器(也叫主器件)(在任何时刻总线上只有一个主控器件实现总线的控制操作),而当从总线上接收信息时,该器件又称为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生(chnshng)时钟信号以开放传送的器件,此时任何被寻址的器件都被认为是从器件

4、。I2C总线器件完全由挂接在总线上的主器件送出的地址和数据控制。 共四十一页2. I2C总线器件的地址 I2C总线可进行双向的信息传送。外围(wiwi)器件并联在总线上,就像电话机一样只有拨通各自的电话号码才能工作,所以每一个器件都有唯一的地址。器件的地址共7位,它与方向位构成了I2C总线器件的寻址字节SLA。位D7D6D5D4D3D2D1D0含义DA3DA2DA1DA0A2A1A0R/W共四十一页DA3、DA2、DA1和DA0:器件的地址位,是I2C总线外围接口器件固有的地址编码,器件出厂时就已经定了,使用者不能更改。例如I2C总线器件AT24Cxx系列器件的地址是1010。A2、A1和A0

5、:引脚地址位,是由I2C总线外围器件的地址端口根据接地或接电源的不同而形成(xngchng)的地址数据,由使用者控制。R/W:数据方向位,规定了总线上主节点对从节点的数据方向。R/W = 1时,为接收,R/W = 0时为发送。共四十一页3. I2C总线上的时钟信号 I2C总线上的时钟信号是挂接在SCL时钟线上的所有器件的时钟信号逻辑“与”运算的结果。一旦某个器件的时钟信号下跳变为低电平,将使SCL线一直(yzh)保持低电平,所有器件都开始低电平期。当所有器件的时钟信号都跳变为高电平时,低电平期结束,SCL线被释放返回高电平。其后,第一个结束高电平期的器件又使SCL线的信号变成低电平。这样就在S

6、CL线上产生一个同步脉冲,可见时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件决定。共四十一页4. I2C总线的传输协议与数据传送(1)起始和停止条件 在数据传送过程中,必须确认(qurn)数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称为启动和停止信号)的定义如图所示。共四十一页2)数据格式在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的。方向位为0表示发送,即主器件把信息写到所选择的从器件。方向位为1表示接收,即主器件将从从器件读信息。开始信号后系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较(bjio),

7、如果两者一致,则该器件为被主器件寻址的器件。共四十一页 I2C总线上的数据传输采用时钟脉冲逐位串行传送方式,时序如下图所示。在SCL的低电平期间,SDA线上高、低电平能变化,即数据可以(ky)变化。在SCL高电平期间,SDA线上的数据必须保持稳定,不允许变化。因为此时SDA状态的改变已经被用来表示起始和停止条件,以便接收器件的采样接收。共四十一页5. 响应 I2C总线协议规定:每传送一个字节数据(含地址及命令字)后,都要有一个应答信号(也叫应答位,用ACK表示),以确定数据传送是否正确。应答位的时钟脉冲由主机产生,发送器件需要在应答时钟脉冲的高电平期间释放(送高电平)数据/地址线SDA,转由接

8、收器件控制(kngzh)。通常接收器件在这个时钟脉冲内必须向SDA传送低电平,以产生有效的应答信号表示接收正常。如接收器件不能接收或不能产生应答信号时,则保持SDA为高电平。此时主机产生一个停止信号,表示接收异常,使传送异常结束。共四十一页 当主机为接收器件时,主机对最后一个字节不应答,以向发送器件表示数据传送结束。此时发送器件应释放(shfng)SDA,以便主机产生一个停止信号。共四十一页 考虑I2C器件驱动过程都一样,我们(w men)采用统一的I2C_driver.h来实现对I2C器件的使用。具体见L16M相关I2C的范例。共四十一页7.9.3 单总线器件及其接口技术 I2C总线器件与单

9、片机之间的通信需要两根线,而单总线器件与单片机的数据通信只需要一根线。美国DALLAS公司推出的单总线技术与I2C总线不同(b tn),它采用单根信号线,既可以传输时钟信号又可以传输数据信号,且数据又可以双向传输,因而这种总线技术具有线路简单、成本低廉、便于扩展和维护等优点。共四十一页1. 单总线简介单总线适用于单主机系统,能够控制一个或多个从机设备。主机通常是单片机,从机可以是单总线器件,它们之间通过(tnggu)一条信号线进行数据交换。单总线上同样允许挂接多个单总线器件。因此,每个单总线器件必须有各自固有的地址。单总线通常需要接一个4.7K欧姆的上拉电阻。这样当总线空闲时,状态为高电平。共

10、四十一页(1)初始化单总线器件单总线上的所有处理均从初始化开始,单片机先发出一个“复位”脉冲,当单总线器件接收到复位脉冲后向单片机发出“存在”脉冲信号,以“告知” 单片机该器件在总线上并且已经(y jing)准备好,等待操作。共四十一页(2)识别单总线器件总线上允许挂接多个单总线器件,为便于单片机识别,每个单总线器件在出厂前都光刻好了64位的序列号作为地址序列码。所以(suy)单片机能够根据该地址来识别,并判断对哪一个单总线器件进行操作。共四十一页(3)数据交换单片机与单总线器件之间的数据交换必须遵循严格的通信协议。单总线协议定义了复位信号、应答信号、写“0”、读“0”、写“1”、读“1”的几

11、种信号类型。所有的单总线命令序列都是由这些基本的信号类型组成的。除了应答信号外,其他均由单片机发出同步信号,并且(bngqi)发送的所有命令和数据的低位字节在前。共四十一页2. DS18B20数字温度传感器简介(1)DS18B20基本情况DS1820具有以下基本特性:只要有一个I/O脚即可实现温度的采集,实际应用中不需要外部任何元器件即可实现测温;测量温度范围在55到125 之间;数字温度计的分辨率用户可以从9位到12位选择,精度为0.5C。内部有E2PROM,用户可以进行温度上、下限(xixin)报警设置;共四十一页(2)DS18B20的引脚功能描述(mio sh)DS18B20的外观如图所

12、示。GND:地信号;DQ:数据输入(shr)/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。VDD:外接供电电源输入端。当工作于寄生电源时,此引脚必须接地。共四十一页(3)DS18B20数据(shj)输出格式 DS18B20读出的温度结果的数据为两个字节,用16位符号扩展的二进制补码读数形式提供。因此,在系统中要将得到温度值数据进行格式转换,才能用于显示。 高8位中的低3位D6D5D4和低8位中的高4位D3D2D1D0构成温度的整数(zhngsh)部分。低8位中的D-1D-2D-3D-4为温度的小数部分(为0.5+0.25+0.125+0.0625)。共四十一页温度

13、值数据输出高位字节 低位字节数据输出(十六进制)+12500000 111 1101 000007D0H+8500000 101 0101 00000550H+25.062500000 001 1001 00010191H+10.12500000 000 1010 001000A2H+0.500000 000 0000 10000008H000000 000 0000 00000000H-0.511111 111 1111 1000FFF8H-10.12511111 111 0101 1101FF5DH-25.062511111 110 0110 1111FE6FH-5511111 100 1

14、001 0000FC90HDS18B20的温度(wnd)举例共四十一页(4)DS18B20相关操作命令 使用DS18B20测温时,首先要对DS18B20进行初始化,由主机发出的复位脉冲(下拉500uS,然后释放),DS18B20收到信号后等待1660uS,然后发出应答脉冲(60240uS的低电平脉冲)。当DS18B20发出响应(xingyng)主机的应答脉冲时,即向主机表明DS18B20已处在总线上并且准备工作。 共四十一页 DS18B20相关操作命令有两类,一类是ROM命令,通过每个器件64-bit的ROM码,使主机指定(zhdng)某一特定器件(如果有多个器件挂在总线上)与之进行通信。另一

15、类是功能命令,通过功能命令对DS18B20的Scratchpad存储器进行读/写,或者启动温度转换。共四十一页ROM及功能(gngnng)命令指令约定代码功 能读ROM0 x33读DSl8820温度传感器ROM中的编码(即64位地址)匹配ROM0 x55发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之做出响应,为下一步对该DSl8820的读写作准备搜索ROM0 xF0用于确定挂接在同一总线上DSl8820的个数和识别64位ROM地址。为操作各器件作好准备跳过ROM0 xCC忽略64位ROM地址,直接向DSl8820发温度变换命令。适用于单只DSl8820

16、工作报警搜索命令0 xEC执行后只有温度超过设定值上限或下限的芯片才做出响应共四十一页指令约定代码功 能温度变换0 x44启动DS18B20进行温度转换,12位转换时最长为1750 ms(9位为93.75 ms)。结果存入内部9字节RAM中读高速缓存0 xBE读内部RAM中9字节的内容写高速缓存 0 x4E发出向内部RAM的字节2、3写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据复制高速缓存0 x48将RAM中字节2、3的内容复制到EEPROM中重调EEPROM 0XB8将EEPROM中内容恢复到RAM中的第3、4字节读供电方式0XB4寄生供电时DS18B20发送0,外接电源供电时

17、DS18B20发送1 共四十一页 DS18B20使用注意事项 DS18B20虽然具有诸多优点,但在使用时也应注意以下几个问题:于DS18B20与微处理器间采用串行数据传送方式,因此,在对DS18B20进行读写编程时,必须严格地保证(bozhng)读写时序,否则,将无法正确读取测温结果。对于在单总线上所挂DS18B20的数量问题,若单总线上所挂DSl8:B20超过8个时,则需要解决单片机的总线驱动问题,这一点,在进行多点测温系统设计时要加以注意。共四十一页连接DS18B20的总线电缆是有长度限制的。当采用普通信号电缆且其传输长度超过50 m时,读取的测温数据将发生错误。而将总线电缆改为双绞线带屏

18、蔽电缆时,正常通讯距离可达150 m,如采用带屏蔽层且每米绞合次数更多的双绞线电缆,则正常通信距离还可以进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DSl8B20进行长距离测温系统设计(shj)时要充分考虑总线分布电容和阻抗匹配问题。共四十一页在DS18B20测温程序设计中,当向DS18B20发出温度转换命令后,程序总要等待Dsl8820的返回信号。这样,一旦某个DS18B20接触不好或断线,在程序读该DSl8B20时就没有返回信号,从而使程序进入死循环。因此,在进行DSl8B20硬件(yn jin)连接和软件设计时,应当加以注意。共四十一页如果单片机对多只DS

19、18B20进行操作,需要先执行读ROM命令,逐个(zhg)读出其序列号,然后再发出匹配命令,就可以进行温度转换和读写操作了。单片机只对一只DS18B20进行操作,一般不需要读取ROM编码以及匹配ROM编码,只要用跳过ROM命令,就可以进行温度转换和读写操作。共四十一页温度传感器DS18B20驱动程序软件包 由于DS18B20的驱动过程象LCD驱动一样(yyng),都是程式化的程序软件,所以为方便使用将其编成名为DS18B20_drive.h的软件包文件。共四十一页 DS18B20_drive.h具体内容如下: #define uchar unsigned char #define uint u

20、nsigned int sbit DQ=P13; /定义(dngy)DSl8820端口DQ uchar yes0;*以下是延时函数* void Delay(uint num) while( -num); 共四十一页*以下(yxi)是DSl8820初始化函数。若返回值为0,则DSl8820正常;若返回值为1,则不正常 Init DSl8820( ) DO=l; /DQ复位 Delay(8); 延时 DQ=0; /单片机将DQ拉低 Delay(90); /精确延时大于480扯s DQ=1; /拉高总线 Delay(8); yes0=DQ; /如果=0,则初始化成功;=1,则初始化失败 Delay(100); DQ=1; return(yes0); / 返回(fnhu)信号。若yes0为0,则存在; 若yes0为1,则不存在。共四十一页 *以下是读1字节(z ji)函数* ReadOneByte( ) uchar i=0; uchar dat=0; for(i=8;i0;i-) DQ=0; dat=1

温馨提示

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

评论

0/150

提交评论