微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 串行E2PROM 24LC65在单片机中的应用

串行E2PROM 24LC65在单片机中的应用

时间:02-28 来源:互联网 点击:

1. 概述

24LC65是目前容量较大的一种串行E2PROM 芯片,具有8kB的存储容量,体积小,功耗低,可掉电保护。AT89C52单片机亦具有8kB内部ROM,同样具备低功耗和控制功能强等特点,由两者构成的单片机小系统硬件开销少,数据可串行传送,功耗低,非常实用。但是,读、写24LC65的程序编写却比较麻烦,本文将介绍对其编程的方法,并介绍采用子程序结构编写的已通过的写、读24LC65的应用编程。

2. 24LC65与单片机的连接

2.1 24LC65的引脚功能

24LC65采用8脚DIP封装,引脚功能如下:
  1~3脚(A0、A1、A2)为三位地址输入端;
  4脚GND为接地端;
  5脚SDA为二进制数据输入输出端;
  6脚SCL为时钟输入端;
  7脚NC悬空;
  8脚VCC为5V正电源。

2.2 24LC65与单片机的连接

连接电路如图1所示,图中共接有8片24LC65芯片,芯片的三位地址A2、A1、A0接成8种组态,由A2、A1、A0排列组成8个片选地址,因此在两线上最多可选用8片,可寻址64kB存储空间,每片寻址8kB,其中,1#芯片地址范围是0000H~1FFFH,8#芯片地址范围是 E000H~FFFFH。SDA为串行数据输入输出线,SCL是时钟输入端,每次访问24LC65之前,必须执行启动I2C数据总线操作,每次结束访问时,也必须执行停止I2C数据总线操作,其操作时序由SCL与SDA的关系确定,如图2的示,可以看出,当SCL为高电平时,SDA由高变低时启动I2C总线,而SDA由低变高时,停止总线操作。若启动总线为读操作,则在SCL脉冲的下降沿读出1 bit的数据,若启动写操作,则在SCL脉冲的上升沿写入1 bit 的数据。

3. 数据格式

对E2PROM 24LC65每次写一个字节操作的数据格式由4个字节构成。第1字节为:

其中,×为任意,A12、A11、A10、A9、A8为E2PROM 24LC65的高5位地址。

第3字节是E2PROM 24LC65的低8位地址A7~A0。第4字节才是8位数据。注意,每个字节后紧跟一个回答(ACK)信号。

4. 写24LC65程序

用MCS-51单片机的指令编写对24LC65写一字节的子程序是关键,主程序连续调四次便可实现对24LC65写一字节数据的目的。假设待写入字节在单片机内字节地址分别是6FH、6EH、…、68H,并分别存放在待写入字节的D7、D6、…、D0位,作为调用写一字节子程序的入口参数。由主程序启动,并停止总线。其程序分别如下:

  ;主程序启动与停止总线
  SETB P3.1 ;SCL=1
  SETB P3.0 ;SDA=1
  CLR P3.0 ;SDA=0,启动总线
  ┊

  CLR P3.0
  SETB P3.1
  SETB P3.0 ;停止总线操作
  ; 写一字节的子程序
  MOV C,6FH ;D7位送给进位C
  CLR P3.1
  MOV P3.0,C
  SETB P3.1;写入D7位
  CLR P3.1
  MOV C,6EH ;D6位送给进位C
  MOV P3.0,C
  SETB P3.1 ;写入D6位
  CLR P3.1
  MOV C,6DH ;D5位送给进位C
  MOV P3.0,C
  SETB P3.1 ;写入D5位
  CLR P3.1
  MOV C,6CH
  MOV P3.0,C
  SETB P3.1 ;写入D4位
  CLR P3.1
  MOV C,6BH
  MOV P3.0,C
  SETB P3.1 ;写入D3位
  CLR P3.1
  MOV C,6AH
  MOV P3.0,C
  SETB P3.1 ;写入D2位
  CLR P3.1
  MOV C,69H
  MOV P3.0,C
  SETB P3.1 ;写入D1位
  CLR P3.1
  MOV C,68H
  MOV P3.0,C
  SETB P3.1 ;写入D0位
  CLR P3.1
  NOP
  SETB P3.1 ;写一字节结束
  CLR P3.1  ;ACK
  RET

5. 读24LC65程序

读24LC65程序中既有写控制字和写地址操作,又有读数据的操作,其中,写控制字和写地址操作相同于写24LC65程序,即前三个字节相同,只不过第三字节结束后要停止总线操作。第四字节重新启动总线,送读命令。只有第五字节才是读24LC65的操作。读24LC65的程序如下:
    MOV R7,#08H
READ:SETB P3.1 ;读一字节于A中
     CLR P3.1  ;移出一位
    MOV C,P3.0 ;移出一位传给进位C
    RLC A
    DJNZ R7,READ
    SETB P3.1
    CLR P3.1 ;ACK
    CLR P3.0
    SETB P3.1
    SETB P3.0 ;停止总线
    RET

该程序在实际使用中运行可靠,实用性强。如果希望增加存储容量,可以另选单片机的两条I/O线,同样可以连接8片24LC65芯片,组成另一64kB的串行E2PROM。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top