串行EEPROM在单片机系统中的应用
来源:测品娱乐
第6卷第2期无锡职业技术学院学报Vol.6No.22加7年6月JounralofWuxiInstituteOfTechnlOoygJun.20 )(7串行EEPROM在单片机系统中的应用侯立功 (无锡职业技术学院江苏无锡214073) 摘要:该文介绍了常用的24Cxx系列串行EEPROM在MCS一51单片机系统中的应用编程方法,包含了1,C总线基本概念、42Cxx系列串行EEPRoM的操作方法,内容精练实用,作为职业院校单片机应用教学内容的补充,对于激发学生的学习兴趣、拓展思维、贴近市场需求具有一定的实用意义。 关键词:IZC总线;串行EEpROM;24c二;Mcs一51单片机中图分类号二 T玛n.11文献标识码:A文章编号:1671一88(02oo7)折一23刃3APP1 icatinoinSerialEEPR0MMon0lihticIntegratdeCicruitsysetmHOUh一 ogngAbs tract:hTisPaPerin加ducedsapplicaitonProrgammingmethodinthecommonlyused24Coseirlaproceudermonloithicinteg旧tedcicruitEEpROMintheMCs一slsyetsm.ithascontainestheIZCbasiccno-cePt,theoPeraitngP功cedureOf24CxxseiralproceduremonolihticintegartedcicruitEEPR0M,thecontentconcisepractical,asthesupplementcontentof即plicationcourseaboutmonolihticintergaIedcicruit盯stempaplicatino.Itisceratinprcaticlasi,iifcancefrositmulitangstudents,stu勿inteerst,devel叩igntohught,drwaingcfosetothemarketrequierment.Ke yworsd:1,c;sed己EEPROM;24Cxx;MCS一slMonolithiCInet脚tedCicruitsysetmI 2(Clnte:Ic)是Phiilsp公司开发的双向两线总线,目知识、理解总线时序的重要性、提升学生的动手能力。前已经成为一项国际标准。全球有超过50家以上的IC 420C1容量为IKB,常用封装为8脚PDIP或SOIC,生产厂商提供超过10种以上的符合IZC总线规范的不其中WP为硬件写保护,当WP接GND时,允许正常的读同的Ic,所有符合IZc总线规范的器件可直接通过广c总写操作,当wp接vCC时,只能读不能写。因此,作为一线通讯,方便而有效地实现IC之间的控制。项加强的数据保护措施,当不需要写人数据给24C01时,随着近年来半导体存储器技术的发展, 42C。系列已可通过单片机来控制Wp引脚的电平为“1”,防止IZC总成为串行EEPROM中用量最大的一类,其主要特性有:线误操作。AO、IA、ZA为器件地址选择,将这三个引脚配(1)符合IZC总线规范;(2)可反复擦写一百万次;()4数置成不同的编码值,可在同一12c总线上最多同时连接8据保存长达10年;(5)极低的电流消耗;(6)体积小巧、片24C01串行EEPROM,每片24C01的“器件地址”格式价格便宜。因此被广泛应用于各类IC卡、智能家电、工如图1。其中,高4位的“1010”为IZc总线分配给24系业仪器仪表等产品上。列串行EEPROM的协议地址格式;之后的AZ、IA、OA供 目前许多新型的单片机已经内含IZc总线接口,可同一总线上连接多片器件时分配地址,在多数单片机应直接简单地控制IZC器件。但传统的Mcs一51单片机没用系统中,通常只用一片24Cxx来保存某些参数,此时将有IZc总线接口,绝大多数有关单片机的教材里也没有OA、IA、ZA均接cND即可;形*W为读写控制位,当该如何应用串行EEPROM的内容。因此,作为单片机应用位为“0”时,表示写操作,该位为“1”时,表示读操作。教学内容的补充,笔者以Atmel公司的A犯4C01为例,编制了基于MCS一51单片机对串行EEPROM的数据存取应用程序,希望籍此能够引导学生掌握IZC总线的一些图1器件地址格式收稿日期:2()X7-30一81作者简介:侯立功,男,无锡职业技术学院讲师。・32・ 侯立功:串行EEPROM在单片机系统中的应用第2期s cL为串行时钟线,sDA为串行数据线。IZc总线标准规定:在时钟信号SCL为高电平时,SDA线上的数据保持稳定,此时“数据有效”;时钟信号SCL为低电平时,DSA线上的数据允许改变,如图2所示。IZc总线标准还规定:所有发送到SDA线上的数据信息必须为8位,首先传输数据的最高位。据此,笔者首先编制读写IZc总线数据的子程序如下:,”/;厂厂 -一入任八—入:’\csL犷一义— 一飞数据保持稳定厂-数据保持稳数据有效可以改变数据有效 数据 图2数据的有效性 ;子程序功能:写数据、IZC总线;人口参数:(RO)二要写的数据;出口参数:无wrietDataEZ:MovR7,0#SH;控制写一个字节8位WriteCylce:CLRSCL;SCL二“0”,可以改变数据MovA, OR;数据在RO寄存器 RLCA;从MSB、LSB顺序移出数据至串行数据线SDAMOV SDA,CMovR O,A;保存移位输出后的数据MOVR 6,钓3H;延时JD NZR6,¥SETBscL ;scL二“1”,数据保持,数据有效MOVR 6,钓3H;延时JD NZR6,¥JD NzR7,wrietCyelc;循环写完一个字节数据REl l,;子程序功能:从IZC总线读数据;人口参数:无;出口参数:(A)二读出的数据ReadDataEZ:MOVR7,钓SHRedaCylce:CLRSCL;SCL=“0”,允许改变数据R6,钓3H;延时6R,¥SCL;scL二“1”,数据保持,数据有效MOVR6钓3H;延时DJNZR6¥ MOVC,SDA;按MSB、璐B顺序从SDA总线上读人数据RLC AJD NZR7,RDCYLRET rc总线标准又规定:SCL线为高电平时,SDA线上的数据变化表示起始(5)或停止(P)条件,如图3所示。必须以起始(5)和停止(P)条件来作为读写IZC总线的开始和结束,据此,笔者编制了如下子程序:S1)ASCL柳阁舰的图3起动与停止信号 ;子程序功能:起始信号;人口/出口参数:无tSatrZE:SE邓SDA;SDA二“1”SETB SCL;SCL二“1”MOV R7,们3H;延时 DJNz7R,¥CLR SDA;SDA=“0,,Mov R7,们3H;延时JD Nz7R,¥RET ;子程序功能:停止信号;人口/出口参数:无tSoP皿:CLRSDA;SDA二“0,,SETB SCL;SCL=“1”MOV R7,和3H;延时 JDNZR7,¥SETB SDA;SDA二“1”Mov m,钓3H;延时JD NZR7,¥RET 1 ,C总线标准还规定:1,C器件在收到每个数据后,应在SCL的第九个时钟脉冲时,在SDA线上输出一个低电平作为响应,如图4所示。笔者编制了读24C01器件响应的程序,用以判断串行EEPROM是否收到数据并决定是否开始下一个数据的传输。输人数据时输出数据日起动()s图4应答信号Acknoelwdge:cLRSCL;输出第9个时钟・33・第6卷无锡职业技术学院学报Mo V7R,钓3H;延时据地址 DJNZ R7,鉴Mov OR,l#0l00(力OB;发器件地址SETB SCL及写信号 J BSDA,非;等待响应信号ACALL WdteDalaEZCLR SCL AcALLAcknowledge;等待应答RET Mov OR,o1H;发写人数据以上是有关I Zc总线的一些基本知识和操作。地址 42c01完全符合IZc总线规范,其规定的任意写一个数据ACALL W石teDataEZ到串行EEPROM中的总线格式如图5所示。笔者根据上 AcALLAcknlwoedeg;等待应答述的IZc总线操作,结合24C01的数据写人格式编制的程Mov OR,B;发写人数据序如下:ACALL W石teDatEaZ甄。件,址二 。,地址数据歪 AcALLAcnk、led罗;等待应答AcALL stop皿;发停止信号M言言份畏含LRA林言盔LARl: T 420C1数据手册中还给出了连续写人数据到串行 图5任意写一个数据EEP ROM中的方法,其格式如图6所示。此处需要注意;子程序功能:写任一字节的数据、串行EEPROM一4col 的是,42C01内部的数据组织为字节形式,并且连续的8;人口参数:(A)二写人地址,(B)=写人数据个字节组成一个“页面”, 连续写人数据只允许在同一个;出口参数:无“页面”内操作, 这样每次最多只能连续写人8个字节的WrtiBeyte皿:ACALLStatrEZ;发起动信号数据, 超过8个字节时,多余的部分将“回滚”覆盖本页面MOV IR,A;暂存写入数前面的数据。 起 动 器件地址写n(数据地址)n()(数据)(时1)(数据)(晓)擞据)止停 图6连续写人数据;子程序功能:写连续字节的数据(最多一个页面)、串行R卫T EEPROM24c01从串行EEPROM中任意读取一个字节和连续读取若 ;人口参数:(A)二写人EEPROM的起始地址(目标地址)干字节的总线格式,在24C01数据手册中给出了总线格(RI)二源数据的起始地址(源地址)式,参照上述方法,可以容易地编制出来,限于篇幅,此处(R Z)二数据个数(最多8)不再列出其程序源代码。需要说明的是,读取数据时,不;出口参数:无受“页面”字节数的,可从串行EEPROM的任一地址WrtiePageZE:ACALLStrat巴;发起始信号开始连续读取任意多个字节的数据,当读取的地址超过MOV R3,A;暂存目标地址该串行EEPB()M的地址上限时,将自动“回滚”至串行MOV RO,#1l00000)(B;发器件地址及EPROM的起始地址读取。写信号以上所述, 已经全部经过笔者在相关的课题项目中ACALL WrietDataEZ使用,证明安全可靠,调用简单。作为单片机应用教学的ACAL LAckno讯ed罗;等待应答补充,内容难度适中,又能够扣紧时代的脉搏,极大地激Mov RO,30H;发目标地址发了学生的学习兴趣,进而增强了他们的动手能力,从单ACALL W万teDataEZ片机的编程、IZC总线的概念进而到串行EEPROM的操 ACA几cAki拍wledge;等待应答作,达到了较好的综合实训的效果。WriteaP罗C界le:Mov00H,@RI;发源数据 参考文献:ACALLWr iteDataEZ〔1〕周志德。单片机原理及应用〔M〕.北京:高等教育出版社.ACALLAc k刀owledge;等待应答〔2〕涂时亮,张友德.单片微机MCS一51用户手册〔M〕复旦大学I NCRI;源地址+1出版社. DJ NZRZ,WriteaP罗Cycle;继续写数据[3〕外ilip,c呷耐1on.仆eIZc一bu,如mthe呷top二tiec[M].ACAL LS吻皿〔4〕TW。一wi二SirealEEPROMA几4C0lAdatasehta.tAmelCO耳”-耐O n・(责任编样冷宇)・34・