您当前的位置:五五电子网电子知识单元电路接口电路基于IIC总线技术的AT24C02与80C51接口电路 正文
基于IIC总线技术的AT24C02与80C51接口电路

基于IIC总线技术的AT24C02与80C51接口电路

点击数:7270 次   录入时间:03-04 11:49:30   整理:http://www.55dianzi.com   接口电路

  在单片机的开发应用中,常常希望对现场输入的数据能够在断电的情况下长久保存,以避免下次开机时的重新输入。此项工作通常采用AT24C02芯片来完成。AT24C02是带12C总线接口的E2PROM,其容量为256x8.它的特点是无需特殊设备,单片机本身就可对它进行读/写操作,写入数据在断电情况下可保存十年以上,使用非常方便。但由于80C51单片机没有IIC总线接口,故不能直接使用。通常采用虚拟IIC总线技术来解决这个问题。
  
  1.AT24C02与80C51的接口电路
  
  AT24C02的封装引脚示意图如上图所示。它与80C51的连接电路如下图所示。
  
  单片机要想与其连接的某一器件进行通信,该器件必须有一个地址。
  
  AT24C02的地址是一个8位二进制数,其格式为:

  其中:A2、A1、AO为引脚地址,其数值由连接电路决定。当接电源时取“1”,接地时取“0”。R/W为数据方向位,当R/=1W时,表示从AT24C02中读取数据,当R/=O时,表示向AT24C02中写入数据。

AT24C02与80C51接口电路

  2.AT24C02的数据操作格式
  
  IIC总线中,对AT24C02内部存储单元读/写时,除了要确定该器件的读/写地址外,还要指定片内的读/写子地址(SUBADR)。由于片内子地址采用8位地址指针寻址,故子地址(SUBADR)为OOH~FFH。按照AT24C02器件手册,读/写N个字节的数据格式如下:
  
  2.1写N个字节的操作格式

  其中白色单元格为单片机发送,AT24C02接收;灰色单元格为AT24C02发送,单片机接收。S为起始信号.P为终止信号.A为应答信号,A为非应答信号。SLAW为写地址.SLAR为读地址。按照上图的连接方式SLAW=AOH.SLAR=AIHoDatal~DataN为写入/读出的N个字节数据。从读操作格式中可以看出,在读N个字节前,首先要进行一个子地址(SUBADR)的写操作,然后才进行读操作。

  3. 80C51控制下虚拟IIC总线程序

  3.1典型信号的时序要求
  
  根据IIC总线上数据操作格式图,IIC总线数据传送时,有起始位(S),终止位(P).发送“0”及应答位(A),发送“1”及非应答位(A)等信号。按照典型IIC总线传送速率要求,这些信号时序如下图所示。

  
  3.2虚拟IIC总线汇编程序包VIIC
  
  为了在80C51上使用AT24C02,设计了一个80C51控制下的虚拟IIC总线程序包VIIC。此程序包有信号模和通用子程序CACK、WRBYT、RDBYT、WRNBYT、RDNBYT共九个子程序组成。设80C51单片机的系统时钟为6MHz,通用软件包VIIC程序清单如下:
  
  STA:SETBVSDA;启动IIC总线子程序

 

  CACK:SETBVSDA:置VSDA为输入方式SETBVSCL;使VSDA上数据有效CLRFO:预设FO=OMOVC,VSDA输入VSDA引脚状态JNCCEND:检查VSDA状态,正确应答转CEND,且FO=OSETBFO:无正常应答,FO=1CEND:CLRVSCL;子程序结束,使VSCL=ORETWRBYT:MOVRO,#08H:8位数据长度送RO中WLP:RLCA:发送数据左移,使发送位进入CJCWR1:判断发送“1”还是“0”,发“1”转WR1AJMPWRO:发“O”转WROWLPl:DJNZRO,WLP;8位数据发送完否?未完转WLPRETWRl:SETBVSDA:发送“1”程序段

RDBYT:MOVRO,#08H:8位数据长

度入RO

RLP.SETBVSDA置VSDA为输入方式

SETBVSCL使VSDA上数据有效

MOVC,VSDA:将VSDA引脚

状态送入进位C

RLCA.将进位C内容移入累加器A

CLRVSCL:使VSCL=O可继

续接收数据位

MOVR2.#10H

DJNZR2.$

DJNZRO,RLP:8位读完否?未

完转RLP

RET

WRNBYT:MOVR3,NUMBYT;

LCALLSTA:发送启动位启动

IIC总线

MOVA.SLAW:将写数据地址

(SLAW)送入A

LCALLWRBYT

LCALLCACK:检查应答位

JBFO.WRNBYT;非应答位则重发

MOVA.SUBADR;将数据子地

址(SUBADR)送入A

LCALLWRBYT

LCALLCACK:检查应答位

JBFO,WRNBYT;非应答位则重发

  节数据注:①在使用上述程序包时,若单片机主时钟不是6MHz,应适当调整NOP的个数,以满足时序要求。
  
  ②该通用软件占用的资源有RO.Rl.R2,R3,FO,C。使用的符号单元有:
  
  MTD发送数据缓冲区首址单元
  
  MRD接收数据缓冲区首址单元
  
  SUBADR数据子地址存放单元
  
  SLAW寻址字节写存放单元
  
  LSAR寻址字节读存放单元
  
  NUMBYT传送字节数存放单元
  
  VSDA虚拟IIC总线数据线
  
  VSCL虚拟IIC总线时钟线
  
  在使用虚拟IIC总线设计应用程序时,应首先将汇编程序包VIIC嵌入到程序存储器的任一空间,并根据系统的资源分配,在汇编程序时通过赋值语句给这些符号单元赋值。



www.55dianzi.com

  4.AT24C02应用实例
  
  假设AT24C02与80C51的连接如下图所示,且VIIC已安放在程序存储器中,并对其中符号标记已进行了如下伪指令定义。即:

  那么,对AT24C02的读,写操作可用下列子程序来完成。
  
  4.1写入AT24C02子程序
  
  假设要将N(≤8)个字节数据写入AT24C02以20H单元开始的N个单元中,其写入子程序VAT24W清单如下:

[1] [2]  下一页


本文关键字:技术  接口  接口电路单元电路 - 接口电路