Bootstrap

IIC及AT24C02的读写(单片机实验)

IIC及AT24C02的读写(单片机实验)

有问题欢迎私信哦

课程设计(综合实验)内容及要求
通过IIC总线扩展1片AT24C02芯片 ,实现单片机对存储器24C02 的读写,并通过LED灯或8段数码管显示存储单元的状态。进行软件仿真,实验仪实现或焊接制作具体实物。

目录
1 项目分析 1
1.1 设计内容 1
1.1.1 设计任务 1
1.1.2 设计要求 1
1.2 总体设计 1
2 硬件设计 2
2.1 器件选型 2
2.1.1 单片机芯片的选择方案和论证  2
2.1.2 显示模块选择方案和论证 2
2.1.3 扩展芯片的选择方案和论证 3
2.1.4 独立按键的选择方案和论证 3
2.2 器件设计 4
2.2.1 IIC总线接口电路模块设计 4
2.2.2 单片机主控制模块设计 8
2.2.3 复位电路模块设计 10
2.2.4 显示模块设计 10
2.2.5 按键控制模块设计 11
2.3 硬件调试 11
3 软件设计 12
3.1 代码设计 12
3.2 仿真实现 16
4 系统调试总结分析 18
4.1 电路调试 18
4.2 软件调试 18
4.3 综合调试 18
4.4 故障分析与解决方案 18
4.5 总结与经验 18

1 项目分析
1.1 设计内容
1.1.1 设计任务
通过IIC总线扩展1片AT24C02芯片,实现单片机对存储器24C02的读写,并通过LED灯或8段数码管显示存储单元的状态。
1.1.2 设计要求
1.具有对存储器24C02 的读写功能;
2.具备num++、保存、清零、读取功能;
3.设置按键控制num++、保存、清零、读取功能;
4.设置显示模块可以直观的看到操作显示;
5.使用Protues软件进行电路设计并仿真;
6.按照仿真设计实物;
1.2 总体设计
方案说明:
此系统利用AT89C51单片机和芯片AT24C02设计完成。利用按键输入读写命令和相应的地址、数据,对AT24C02芯片进行读写操作,与单片机进行数据交换;8段数码管显示器作为显示部分;独立键盘实现多种操作。
系统结构如图1-1所示
在这里插入图片描述
2 硬件设计
2.1 器件选型

2.1.1 单片机芯片的选择方案和论证

采用AT89C51芯片作为硬件核心,AT89C51是美国ATMEL公司生产的一种高性能、低功耗、带4kFlashMemory的8位CMOS单片微型计算机芯片。FlashMemory又称闪烁存储器,它是EPROM和EEPROM技术有机结合的产物。其既具有EPROM一样的可编程能力,又带有像EEPROM的电可擦除性能,而且还具有不挥发性、反访问速度快(约60ns)和密度高等特点。由于以上优点使AT89C51可靠性高、实时性好、速度快、系统掉电后重要数据和状态信息不会丢失,其性能价格远高于同类芯片。它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入或擦除1000次。一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任意实时控制系统来说,这样长的时间是不可能在线修改程序的。与EEPROM相比较,FPEROM大大缩短了存储内容擦除和写入的时间,为在线改写程序提供了极大的方便。

2.1.2 显示模块选择方案和论证
采用LED灯作为显示模块,虽然通过灯的颜色可以判断,但是不能读取具体的数据,并且实物焊接电路复杂,通过数码管显示模块,不仅可以知道是否读取,而且还可以直观地读取具体的数据,也为电路的设计带来了方便。

本实验选择采用数码管显示模块。
LED数码管简介:
LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。

当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。除半导体激光器外,当电流激励时能发射光学辐射的半导体二极管。严格地讲,术语LED应该仅应用于发射可见光的二极管;发射近红外辐射的二极管叫红外发光二极管(IRED,Infrared Emitting Diode);发射峰值波长在可见光短波限附近,由部份紫外辐射的二极管称为紫外发光二极管;但是习惯上把上述三种半导体二极管统称为发光二极管。

LED七段数码管的结构:
LED七段数码管,如图2-1-2所示,是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用的段数一般为7段,有的另加一个小数点 。LED数码管根据LED的接法不同,分为共阴和共阳两类 。
共阴极结构,是8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管,则对应的阳极端接高电平。共阳极结构,是8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源。要使哪根发光二极管,则对应的阴极端接地。
在这里插入图片描述
图2-1 LED数码管结构图

其中7段发光二极管构成7笔的字形“8”,1根发光二极管构成小数点。从a-g引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的7(或8)位二极管编制称为字段码。不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码。

2.1.3 扩展芯片的选择方案和论证
AT24C02是带有IIC总线接口的EEPROM存储器,具有掉电记忆的功能,并且可以像普通RAM一样用程序改写。它是一个2k位串行CMOS E2PROM,内部含有256个8位字节,有一个8字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能 。

2.1.4 独立按键的选择方案和论证
独立按键主要是指轻触式按键开关,也称之为轻触开关。独立按键是一种电子开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。

独立按键的软件常采用查询式结构,先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。

独立键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态(引脚图如图2-2所示)。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下,每次只处理一个按键,期间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序,准确输出按键值(或键号),满足跳转指令要求。本次实验中,单片机控制系统,只需要几个功能键,此时,可采用独立式按键结构,矩阵键盘编程复杂。
在这里插入图片描述
图2-2 独立按键引脚图

2.2 器件设计
2.2.1 IIC总线接口电路模块设计
2.2.1.1 IIC 总线协议
IIC 总线的两根通信线,一根是串行数据线SDA,另一根是串行时钟线SCL。多个符合IIC总线标准的器件都可以通过同一条IIC总线进行通信,而不需要额外的地址译码器。每个连接到总线上的器件都有一个唯一的地址作为识别的标志,都可以发送或接收数据。IIC 总线通信速率受主机控制,标准模式下可达100kbit/s。
一般具有IIC总线的器件其SDA、SCL引脚都为集电极(或漏极)开路结构。因此实际使用时,SDA和SCL信号线必须加3-10K的上拉电阻。总线空闲时均保持高平。IIC总线接法如图2-3所示。

图2-3 IIC总线连接示意图

(1) IIC的主机和从机,发送器和接收器
产生IIC总线时钟信号和起始、停止控制信号的器件,称为主机,被主机寻址的器件称为从机。
任何将数据传送到IIC总线的器件称为发送器,任何从IIC总线接收数据的器件称为接收器。
主机和从机都可作为发送数据器件和接收数据器件。

(2) IIC 总线上数据的有效性:
时钟线SCL为高电平时,数据线SDA的任何电平变化将被看作总线的起始或停止信号;
在数据传送过程中,当时钟线SCL为高电平时,数据线SDA必须保持稳定状态,不允许有跳变;数据线SDA的状态只能在SCL低电平期间才能改变。即进行串行传送数据时,在SCL高电平期间传送位数据,低电平期间准备数据。

(3) 从机地址
IIC总线不需要额外的片选信号或地址译码。多个IIC总线接口器件可连接到一条IIC总线上,它们之间通过地址来区分。主机是主控制器件,只有一个主机的不需要地址。其它器件均为从机,均有器件地址,但必须保证同一条IIC总线上的器件地址不能重复。一般从机地址由7位地址位和1位读写位组成,地址位为高7位,读写位为最低位。读写位为0时,表示主机将向从机写入数据;读写位为1时,表示主机将要从从机读取数据。

(4) IIC 总线的通信时序
IIC 总线的通信时序如图2-4所示。

图2-4 IIC 总线的通信时序

SCL线为高电平期间,SDA线由高电平 SCL线为高电平期间,SDA线由低电平
向低电平的变化表示起始信号,如图2-5 向高电平的变化表示终止信号,如图2-6

图2-5 IIC起始信号 图2-6 IIC终止信号
① 首先主机发送一个起始信号。当时钟线SCL处于高电平期间,数据线SDA电平从高到低的跳变形成IIC总线的起始信号,启动IIC总线。
② 主机逐位发送7位(高位在前,低位在后)从机地址和1位读写控制信号,共8位。需8个时钟。
③ 与传送地址一致的从机发应答信号(ACK)。在第9个时钟周期时将SDA线拉低表示其已收到一个8位数据。若在第9个时钟周期,SDA为高电平时为非应答。
④ 开始传送数据,传送数据数量不限。每个字节(8位)后紧跟1个接收器件发出的应答位。若是主机读取从机数据时,从机发送数据,主机发应答位;若是主机写数据到从机时,主机发送数据,从机发应答位。
⑤ 数据传输结束时,主机发送1个停止信号,当时钟线SCL为高电平时,数据线SDA由低电平变为高电平时形成终止信号,停止IIC总线通信。

(5) 数据传输基本格式如表2-1。

表2-1 IIC总线数据传输基本格式
S A7~A1 R/W ACK D7~D0 ACK D7~D0 ASK P
起始位 7位
地址 0:写
1:读


位 8位
数据 应答位 8位
数据 … 应答位
0:应答
1:非应答 停


其中S、A7-A1、R/W、P总是由主机产生;写数据时,ACK由从机产生,D7-D0由主机产生;读数据时,ACK由主机产生,D7-D0由从机产生。
(6) 总线空闲
IIC总线空闲的时候,两条线SDA和SCL都是高电平。
接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。
2.2.1.2 IIC总线器件AT24C02
AT24C02 是一个2K位的串行CMOS型 E2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功能。该器件通过IIC总线接口进行操作,其引脚如图2-7所示,各引脚功能见表2-2。

图2-7 AT24C02引脚图

表2-2 AT24C02引脚功能说明
管脚名称 功能说明
SCL AT24C02 串行时钟输入管脚。用于产生器件所有数据发送或接收的时钟,是输入管脚。
SDA 双向串行数据/地址管脚。用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或wire-OR。
WP 写保护。当WP 脚连接到Vcc ,所有内存变成写保护只能读;当WP 引脚连接到Vss 或悬空,允许器件进行读/写操作。
A0 A1 A2 器件地址输入。这些管脚为硬连线或者不连接,对于单总线系统最多可寻址4 个AT24C02器件。当这些引脚没有连接时其默认值为0。
VSS 电源地
VCC 1.8-6V
AT24C02的器件地址见表2-3
型号 控制码 片选 读写 总线访问的器件
AT24C02 1010 A2A1A0 1/0 最多8个
表2-3 AT24C02器件地址
主器件每次传送的信息的第一个字节必须是器件地址码,第二个字节为器件单元地址,用于实现选择所操作的器件的内部单元,从第三个字节开始为传送的数据。
从器件在接收到起始条件后,每接收一个地址编码或数据后都会回送一个低电平的应答信号。IIC器件地址码格式见表2-4
D7 D6 D5 D4 D3 D2 D1 D0
器件类型码 片选 R/W
表2-4 器件地址码格式
在这里插入图片描述
图2-8 单个AT24C02连接电路图

2.2.1.3 对AT24C02的读写过程
(1) 向AT24C02某一存储单元写入1个字节数据,过程如下:
① 主机发送一个起始信号,启动发送过程;
② 主机发送7 位从机地址和1位写控制位;
③ 从机发应答位。在主机发送起始信号和从机地址字节后࿰

;