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字节为:
1 |
0 |
1 |
0 |
A2 |
A1 |
A0 |
R/W |
其中A2、A1、A0为地址位,R/W为读写位,R/W=1,读E2PROM操作;R/W=0,写E2PROM操作。
第2字节为:
X |
X |
X |
A12 |
A11 |
A10 |
A9 |
A8 |
其中,×为任意,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。
上一篇:基于AT89C51单片机的电子计价秤的设计与实现
下一篇:用AT89C2051实现电话远程控制家用电器
推荐阅读最新更新时间:2024-03-16 12:53