基于I2C的单片机EEPROM的设计
2017-04-18常洪波
常洪波
摘要: 在科学技术飞速发展的今天,单片机技术不断进步并且得到了广泛应用。单片机在一定程度上实现了自动化、智能化,满足了人们的各种需要。单片机的引脚和越来越多的器件的限制使我们不得不采用I2C等总线来进行扩展操作,它可以大大简化设计、减小系统的体积并提高系统可靠性。而且,系统的更改和扩充也变得很容易。因为单片机需要强大的功能和较大的数据存储空间,我们需要用到外部存储器EEPROM等。本文以I2C与EEPROM的连接和数据存储、交换为主要内容,利用AT89C51单片机和LED数码管等元件和Proteus软件、Keil软件来开发,借助C语言程序实现了本设计的全部功能,包括数码显示、数据传输、读写功能等。本设计实现了简单的单片机实现不了的大容量数据传输,解决了掉电后存储数据丢失的问题,而且避免了控制多个对象时I/O口不够用的现象。
Abstract: With the development of science and technology, single-chip technology in the continuous progress has been widely used, in particular, is widely applied in the field of mechanical and electrical products. To a certain extent, the microcontroller is automated and intelligent, and meet people's daily needs. MCU pin and a growing number of device limitations make us have to use the I2C bus to extend operation, it can greatly simplify the design, reduce system size and improve system reliability. Moreover, the single-chip system changes and expansion has become easier. The microcontroller requires strong functions and data storage requirements so that we need external memory EEPROM. This article describes the I2C and EEPROM connection and data storage, data exchange. It uses AT89C51 microcontroller and LED digital tube and Proteus Software Keil software, C language to realize the full functionality of the design, including the key treatment, liquid crystal display, the data transfer, the data read and write functions. The design solves the problem of large-capacity data transmission, to solve the problem after power loss of stored data, and also solves the problem of I/O port is not enough to control multiple objects.
关键词: I2C总线;EEPROM;数据读写功能;单片机
Key words: I2C bus;EEPROM;Data read and write capabilities;MCU
中圖分类号:TN201 文献标识码:A 文章编号:1006-4311(2017)10-0225-03
0 引言
如今单片机的应用领域越来越广泛。但实际应用中经常会遇到单片机I/O接口资源不够用的情形,在一些复杂应用系统中,被控对象较多(如控制多个LED数码管的显示、超过30路状态的显示)时,端口供需矛盾就会十分突出,一般可以采用外接8155、8255、8259、74HC164及74LS245等外扩I/O接口来解决[1],但这样会使系统更加复杂,增加成本,可靠性下降[2]。鉴于此,在单片机设计应用时就需要使用总线进行扩展,最合适的应用最广的是I2C总线。I2C串行总线可以使系统的硬件设计简单化、系统体积减小,它可靠性高,系统更改、扩充也很容易。为解决单片系统功能强大、强处理能力、大数据存储需求和掉电后存储数据丢失的问题,我们一般使用EEPROM存储器进行扩展[3]。EEPROM是一种电可擦可写可编程的外部存储器,它有较大的存储容量,在很多系统中被大量采用。
1 硬件系统设计
1.1 总体设计
选用AT89C51为主控制器,选用AT24C系列进行存储。本课题拟采用Proteus软件和Keil的联调将硬件仿真的过程完美展现。因此,可以用仿真软件先完成测试再进行实际器件的操作[4]。采用的软件是Proteus来对单片机及其单片机外围的电路进行了仿真,实验流程清晰,变化的程序在仿真元件性质的变化上得到了很好的体现,实验原理得到恰当的诠释,设计原理也很容易理解[5],实验结果应用到实际电路上可行、有效,可以大大提高设计效率[6]。如此的仿真实验,从某种意义上讲,弥补了实验和工程应用之间的脱节问题。系统方案设计框图如图1所示。
1.2 总线设计
I2C总线可以大幅度节约单片机的接口线。I2C总线协议规定:发送器是指任何将数据传输到总线上的器件,接收器是指任何从总线接收数据的器件。并且每个接到I2C总线上的器件的地址是唯一不变的。若数据是由主机发送到其它器件,这时主机为发送器,接收数据的器件为接收器[7]。51单片机系统的串行总线扩展中,常以AT89C51单片机为主机,其它接口器件为从机。总线流程图如图2所示。
1.3 EEPROM设计
AT24C02是一种EEPROM芯片,AT24C02是由ATMEL公司提供的,是由CMOS工艺制造的。I2C总线的串行EEPROM,它的容量是2kb,工作电压是处于1.8V~5.5V之间的[8],它是一种串行电可擦可编程存储器,它结构紧凑、存储容量大,可以在I2C总线上并接芯片,适用于大容量数据存储。EEPROM流程图如图3所示。
2 系统原理图
本次设计主器件为8051单片机,从器件为AT24C02,其仿真电路如图4所示。8051单片机本身没有I2C接口,但我们可以利用8051的两根I/O口线来实现该功能。因单片机主控制器系统中仅由主控制器驱动时钟线[9],可以利用8051芯片的其中一根I/O口线来作为信号线(SCL),并且将它设置为“输出方式”,由软件来控制以及产生串行时钟信号;我们使用另一根I/O口线作为I2C总线数据线(SDA),软件来控制在时钟脉冲低电平期间的读取以及输出数据。图4中P3.4口作为串行时钟控制线(SCL),P3.5口作为串行数据传输线(SDA)。
3 软件与调试
8051对AT24C02的读写操作的过程中,首先AT24C02被写入3字节的数据,然后AT24C02中的数据将会被读出。程序实现了用8051单片机来对AT24C02进行写入、读出操作。程序中首先AT24C02以0x010开头的3个连续的字节单元会被写入数组buffer1中的3个字节,然后数据会从这3个连续的字节单元中被读出,并存放在RAM中的buffer2里。部分代码如图5所示。
如图6所示,程序实现了I2C与EEPROM之间的数据传送并显示出了0-99数字连续显示。
4 结论
本文对单片机的I/O不够用的问题,提出了一种非常实用的解决方法,一种基于I2C的单片机EEPROM设计,将单片机与I2C总线以及EEPROM进行了有机结合,给出了较好的系统原理图,并且进行了仿真程序实现了I2C与EEPROM之间的数据传送并显示出了0-99数字连续显示,验证效果良好。
参考文献:
[1]张毅刚,赵光权,刘旺.单片机原理及应用[M].高等教育出版社,2016.
[2]胡汉才.单片机原理及其接口技术[J].三版.北京:清华大学出版社,2010.
[3]张鹏,王琪,袁明新.利用proteus仿真平台提高机械类学生单片机应用能力[J].科教导刊,2015(13):23-24.
[4]侯进旺,杨晓晴.基于AT89S2051单片机串行通信接口的I/O扩展技术研究[J].现代电子技術,2015(7):160-162.
[5]刘韬,楼兴华.数字电子系统设计与开发实例导航[M].人民邮电出版社,2005,6.
[6]刘霞,孟涛,魏青梅.电子设计与实践[M].电子工业出版社, 2015.
[7]王毅,万英.基于IIC总线的温湿度测量系统的设计[J].福建师范大学学报:自然科学版,2014(6):40-45.
[8]吕国芳.AT24C02在电压控制系统中的应用[J].国外电子测量技术,2004.
[9]沈大林.C语言程序设计案例教程[M].中国铁道出版社,2007,6.