东南大学成贤学院毕业设计报告
(2)中断方式:把结束信号作为中断请求信号。 (3)延时方式:不使用转换结束信号。
(4)DMA方式:把结束信号作为DMA请求信号。
2.4 存储器AT24C02 介绍
以单片机为核心的应用系统经常要处理大量的数据,而单片机本身的数据存储空间是有限的,所以存储器模块在单片机系统中是一个经常被用到的模块。
AT24Cxx系列芯片是Atmel公司生产的EEPROM存储器件,采用IIC总线技术,主要应用在存储一些掉电后还要保存数据的场合。在上次运行时保存的数据,掉电后在下一次上电时还能够调出。目前广泛使用的接触式IC卡、密码锁等都使用到了该系列芯片。
AT24C02是2K位的串行EEPROM器件,采且低功耗CMOS技术,内部含有256个8位字节,每页8字节的页写存储单元。该器件通过IIC总线接口进行操作,具有专门的写保护功能,可以擦除100万次,写入数据可以保存100年。其引脚如下图5-1所示。A2、A1、A0为地址输入端,SDA为串行数据输入/输出端,SCL为串行时钟输入端,WP为写保护控制端(WP=1时写保护有效,此时器件被设置为只读),VCC接+1.8V~6.0V工作电压,VSS接地。
A0 A1 A2 GND 1 2 8 VCC WP SCL SDA
7 AT24C02 6 3 4 5 图2-6 AT24C02的引脚图
2.4.1 引脚功能
AT24C02支持IIC总线数据传送协议,总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。如果只有一个AT24C02被总线寻址,三个地址输入引脚A0、A1、A2可悬空或连接到GND。
SCL 串行时钟:AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。
SDA 串行数据/地址:AT24C02 双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-OR)。
A0、A1、A2 器件地址输入端:这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。当使用AT24C02时最大可级联8个器件。如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2 )可悬空或连接到Vss。
WP 写保护:如果WP管脚连接到Vcc,所有的内容都被写保护,只能读。当WP管脚连接到Vss 或悬空,允许器件进行正常的读/写操作
存储结构与寻址:AT24C02的存储容量为2KB,内容分成32页,每页8B,共256B,操作时有两种寻址方式:芯片寻址和片内子地址寻址。
11
东南大学成贤学院毕业设计报告
(1)芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为1010 A2 A1 A0 R/W。其中A2,A1,A0为可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为0,表示芯片进行写操作。
(2)片内子地址寻址:芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00~FF,共256个寻址单位。 2.4.2 AT24C02的读写时序
IIC总线上,主机送出的命令只能被其中的一个器件接收并执行,主机对挂接的多个IIC从器件AT24C02是通过发送一个8位控制字来识别的,控制字中含有所要寻址的从机地址以及读写操作标志,寻址控制字结构如下表2-2所示。
表2-2 AT24C02的寻址控制字结构
D7 1 D6 0 D5 1 D4 0 D3 A2 D2 A1 D1 A0 D0 读/写 高四位D7~D4是针对不同类型器件的特征码,对于串行EEPROM为1010;D3~D1由引脚A2、A1、A0确定;最低位D0为读写控制,D0=1为读操作,D0=0为写操作。
AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机,并控制总线传送的方向。比如芯片AT24C02的地址A2A1A0=010,进行读操作时发送的控制字应为1010 0101B(A5H),进行写操作时发送控制字应为1010 0100B(A4H)。若总线上只有一个AT24C02,则一般将A2、A1、A0均接地,故读控制字为1010 0001B(A1H),写控制字为1010 0000B(A0H)。
(1)对AT24C02写操作
对AT24C02执行写操作分为字节写和页写两种方式。因为本次我们只用字节写,故此处只介绍字节写方式。
字节写就是一次写入一个字节数据。在字节写模式下,主器件发送起始命令和从器件地址信息给从器件;在从器件产生应答信号后,主器件发送要写入AT24C02的存储单元地址;主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元;AT24C02再次应答并在主器件产生停止信号后开始内部数据的擦写,在内部擦写过程中不再应答主器件的任何请求。字节写时序如下图2-7所示。 SDA
S T A R T
W R I T E
SLAVE ADDRESS BYTE ADDRESS
DATA
S T O P
A C K
图2-7 字节写时序
A C K
A C K
(2)对AT24C02执行读操作有三种不同的方式,分别是读当前地址内容、读指定地址中的内容、读连续地址中的内容。同样,由于需要我们只介绍第二种,即读指定地址中的内容。
12
东南大学成贤学院毕业设计报告
主器件首先通过发送起始信号、写控制字和要读取的字节数据的地址执行一个伪写操作。在AT24C02应答之后,主器件重新发送起始信号和读控制字,AT24C02输出主器件所要读取的一个8位字节数据,主器件发送非应答信号并产生一个停止信号。其操作时序如下图2-8所示。
S S W
R T T R
E A A I
A R R T SLAVE SLABYTE VE
D T ADDRESS ADDRESS E DATA n T ADDRESS n
SDA
A A A
C C C
K K K
图2-8 读指定地址时序
S T O P
N O A C K
2.4.3 I2C 接口介绍
IIC总线是Inter Integrated Circuit Bus的缩写,即“内部集成电路总线”。该总线是Philips公司推出的芯片中高性能的双向二线制串行传输总线,以SDA(数据线)和SCL(时钟线)两根线实现全双工同步数据传送,具有连线少、工作性能可靠等优点。目前Philips公司和其他集成电路制造商推出了很多基于IIC总线的外围器件,广泛应用于IC卡、音视频和家电等领域。
1、IIC总线规则
采用IIC总线进行数据通信,必须严格遵循以下基本时序进行操作。下面对这些时序进行介绍。 (1)启动时序
在初始状态时,SCL和SDA两根线都必须为高电平。当SCL为高电平时,如果SDA发生了从高到低的跳变,则把它作为起始信号。如下图2-9所示:
SDA SCL
起始条件
图2-9 启动/结束IIC总线时序
停止条件
(2)当SCL为高电平时,如果SDA发生了从低到高的跳变,则把它看作是停止信号。如上图5-4所示。除此之外,在发送数据的过程中当SCL 为高电平时,SDA应保持稳定。
(3)IIC总线数据传送时,每成功地传送一个字节数据后,接收器都必须产生一个ACK应答信号,应答的器件在第9个时钟周期时将SDA线拉低,表示其已收到一个8位数据(SDA=0时表示应答;SDA=1
13
东南大学成贤学院毕业设计报告
时为非应答)。如下图2-10所示。整个数据传输过程中,在收到最后一个字节后,接收器必须产生非应答,表示终止传输。
SCL SDA
1
8
9
ACK
图2-10 应答时序
应答
2.5 字符液晶显示器LCD1602的介绍
2.5.1 LCD1602的功能及引脚说明
字符型液晶显示器是一种专门用于显示字母、数字、符号等的点阵式LCD,目前常用16×1、16×2、20×2和40×2等模块。LCD1602属于16×2型,即实现2行、每行16个显示,分为带背光和不带背光两种,带背光的比不带背光的厚。
LCD1602的主要技术参数如下表2-3所示。
表2-3 LCD1602主要技术参数
显示容量 芯片工作电压 工作电流 模块最佳工作电压 字符尺寸 16×2个字符 4.5V~5.5V 2.0mA(5.0V) 5.0V 2.95×4.35(W×H)mm LCD1602采且标准的14引脚(无背光)或16引脚(有背光)接口,各引脚说明见下表2-4。
表2-4 LCD1602引脚功能表
引脚号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 引脚名称 VSS VDD VL RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK 引脚功能 电源地 电源正极 液晶显示偏压 数据/指令选择 读/写选择 使能信号 数据最低位 数据 数据 数据 数据 数据 数据 数据最高位 背光源正极 背光源负极 下面对需要与单片机接口的引脚的使用做详细说明。
14
东南大学成贤学院毕业设计报告
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。对比度过高时会产生“鬼影”,使用时可以通过一个10k?的电位器调整对比度。
第4脚:RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
第5脚:R/W读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W都为低电平时可以写入指令;当RS为高电平,R/W为低电平时,可以写入数据 ;当RS为低电平,R/W为高电平时,可以读忙信号。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 2.5.2 LCD1602的指令说明及时序
(1)LCD1602的控制指令
LCD1602液晶显示模块内部的控制器共有11条控制指令,见下表2-5。
表2-5 LCD1602指令表
序号 1 2 3 4 5 6 7 8 9 10 11 指令 清显示 光标复位 显示模式设置 显示开/关控制 光标或字符移位 功能设置 CGRAM地址设置 DDRAM地址设置 读忙标志或AC地址 写数据 读数据 RS 0 0 0 0 0 0 0 0 0 1 1 R/W 0 0 0 0 0 0 0 0 1 0 1 D7 0 0 0 0 0 0 0 1 BF D6 0 0 0 0 0 0 1 D5 0 0 0 0 0 1 D4 0 0 0 0 1 DL D3 0 0 0 1 S/C N D2 0 0 1 D R/L F D1 0 1 I/D C * * D0 1 * S B * * CGRAM地址 DDRAM地址 计数器AC值 写入的数据内容 读出的数据内容 每条指令的详细说明如下。
指令1:清显示,指令码01H。功能为清屏,光标复位到液晶显示屏的左上角,将地址计数器AC置0。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置。I/D控制光标移动方向,I/D=1光标右移,I/D=0光标左移;S为屏幕上所有显示内容是否移动,S=1时移动,S=0时不移动。
指令4:显示开关控制,用于设置显示、光标及闪烁。D=1开显示,D=0关显示;C=1有光标,C=0无光标;B=1光标闪烁,B=0光标不闪烁。
指令5:光标或显示字符移位。S/C=1时整个画面移动一位,S/C=0时移动光标一位;R/L=1右移,R/L=0左移。
指令6:功能设置命令。DL=1时为8位总线,DL=0时为4位总线;N=0时单行显示,N=1时双行显示;F=0时显示5×7的点阵字符,F=1时显示5×10的点阵字符。
指令7:CGRAM地址设置。D5~D0范围00H~3FH。
指令8:DDRAM地址设置。对于LCD1602,双行显示时,首行D6~D0范围是00H~0FH,次行D6~D0范围是40H~4FH。
指令9:读忙信号标志BF和计数器AC值。BF=1表示忙,此时模块不能接收命令或者数据,BF=0表示不忙。
15