首页 附录-整套24c16单片机读写驱动程序

附录-整套24c16单片机读写驱动程序

举报
开通vip

附录-整套24c16单片机读写驱动程序PAGEPAGE4用单片机实现通用存贮器IC卡的读写自动化仪表2002Vol.23No.6P.37-41本文对AT24系列存贮器和AT89系列单片机的特征及总线状态作为介绍,并以AT24C01与AT89C2051为例详细描述了通用存贮器IC卡的工作原理及用单片机对其进行读写操作的基本电路连接和软件编程方法。用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接...

附录-整套24c16单片机读写驱动程序
PAGEPAGE4用单片机实现通用存贮器IC卡的读写自动化仪 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 2002Vol.23No.6P.37-41本文对AT24系列存贮器和AT89系列单片机的特征及总线状态作为介绍,并以AT24C01与AT89C2051为例详细描述了通用存贮器IC卡的工作原理及用单片机对其进行读写操作的基本电路连接和软件编程方法。用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议,其中比较常用的是ATMEL公司生产的AT24系列芯片。以该系列中的AT24C01为例,它具有1k的存贮容量,适用于2V~5V的低电压/ 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 电压的操作,具有低功耗和高可靠性等优点。而AT89C2051虽是ATMEL公司89系列单片机的低档型,但它具有2k的FLASHROM(可重编闪速存贮器)、128×8位内部RAM及全静态操作方式,同样也具有低功耗和较强的功能。下面以AT24C2051为例,对通用存贮器IC卡的工作原理及基本电路连线作一介绍,该线路简单,使用灵活,能可靠地对通用存贮器IC卡进行读写。2硬件特性2.1AT24系列存贮器的特性AT24系列存贮器芯片采用CMOS 工艺 钢结构制作工艺流程车尿素生产工艺流程自动玻璃钢生产工艺2工艺纪律检查制度q345焊接工艺规程 制造,内置有高压泵,可在单电压供电条件下工作。其标准封装为8脚DIP封装形式,各引脚的功能说明如下:SCL:串行时钟。在该脚的上升沿时,系统将数据输入到每个EEPROM器件,在下降沿时输出。SDA:串行数据。该引脚为开漏极驱动,可双向传送数据。A0、A1、A2:器件/页面寻址。为器件地址输入端。在AT24C01/02中,该引脚被硬连接。Vcc:一般输入+5V的工作电压。图1是符合ISO7816-2标准的IC卡的触点图(见IC卡 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf P186)。对于AT24系列通用存贮器IC卡来说,通常只需使用四个触点。AT24C01的内部组态为128个8位字节,而对随机字寻址则需要一个7位地址。2.2总线状态及时序AT24C01的SCL及SDA两总线可通过一个电阻上拉为高电平,SDA上的数据仅在SCL为低电平时才能改变。当SCL为高电平时,SDA的改变表示“开始”和“停止”状态。此时,所有地址和数据字都以8位串行码方式输入输出EEPROM。开始状态:SCL为高电平时,SDA由高电平转入低电平。该命令必须在其它命令前执行。SCLSDA停止状态:SCL为高电平时,SDA由低电平转入高电平。该命令可终止所有通讯。SCLSDA确认:相同总线上的设备在收到数据后,以置SDA为低电平的方式对其进行确认。SCLSDA2.3器件寻址AT24系列EEPROM在开始状态后需紧接一个8位器件地址,以进行应读写操作。设备寻址码的高4位为1、0、1、0,对于AT24C01/02,寻址码高4位后面的三位是器件寻址码,与它们的硬连线管脚相对应。最低应是读写选择位,置0时可激发读操作。AT24设备寻址码具体的格式如下:1010A2A1A0R/W2.4AT89C2051芯片AT89C2051是MCS-51产品的兼容型,它具有2k的FLASHROM、128字节ROM,15根I/O引线、两个16位定时/计数器、一个五向量两级中断结构、一个全双工串行口、一个精密模拟比较器以及片内振荡电路和时钟电路。它的P1口和P3口是双向I/O口,其中P1.2~P1.7、P3.0~P3.5和P3.7带有内部上拉电阻。在AT89C2051用作输入端时,将首先向引脚写“1”而使内部MOS管截止以便引脚处于悬浮状态,从而可获得高阻抗输入。图2为通用存贮器IC卡的基本电路连接图。(略)3读写操作软件当系统采用6MHz晶体振荡器时所定义的I/O口线及器件地址如下:SCLBITP1.7SDABITP1.6DEVICEAD_WDATA10100000B;写卡器件地址DEVICEAD_RDATA10100001B;读卡器件地址3.1开始条件(START_IC)当SCL为高电平时,SDA由高转为低。程序如下:SCL0SDA在SCL、SDA全1前提下进入开始,开始完成后,SCL、SDA全00START_IC:CLRSCL;SCL由高变低,因为SCL低电平时才允许SDA更改NOP;加入空指令延时以确保信号可靠NOPSETBSDA;SDA先高NOPNOPSETBSCL;SCL高,起始条件建立时间大于4.7usNOPNOPCLRSDA;SDA低,起始条件锁定时大于4usNOPNOPCLRSCL;SCL低,钳住总线,准备发数据NOPRET3.2停止条件(STOP_IC)当SCL为高电平时,SDA由低转为高。程序如下:SCLSDA;在SCL、SDA高或低的前提下均可进入停止过程;停止过程完成后,SCL、SDA全1STOP_IC:CLRSCL;SCL低NOPCLRSDANOPNOPSETBSCL;发送结束条件的时钟信号NOP;结束总线时间大于4us(取4.7us)NOPSETBSDA;结束总线NOP;保证一个终止信号和起始信号的空闲时间大于4.7usNOP;在SCL、SDA高或低的前提下均可进入停止,停止完成后,SCL、SDA全1RET3.3应答确认信号(MACK_IC)与非应答信号MNACK_IC在接收方,每收到一字节后便将SDA电平拉低,程序如下:SCL0SDA1;应答完成后,SCL=0,SDA=1应答确认信号(MACK_IC)MACK_IC:CLRSCLNOPCLRSDA;在第9个SLC脉冲,将SDA置0NOPNOPSEIBSCLNOP;保持数据时间,即SCL为高时间大于4.7usNOPCLRSCLNOPSETBSDA;在SDA高或低的任何前提下,应答完成后,SCL=0,SDA=1NOPRET发送非应答信号MNACK_ICMNACK_IC:CLRSCLNOPNOPSETBSDA;将SDA置1NOPNOPSETBSCLNOPNOP;保持数据时间,即SCL为高时间大于4.7usNOPNOPNOPCLRSCLNOPSETBSDANOPRET24C16程序资源安排是:R0=字节的循环指针,R2=位数的计数器,R3=卡器件地址,R4=字节地址,R5=字节数或页面长度。R1可以留作其他循环指针,R6、R7可以留作uS级延时。3.4写一字节数据到IC卡(WR_BYTE)SCL┉SDAD7D6┉D0等待IC确认在下列程序中,参数A表示源数据,R2表示字节位数。WR_BYTE:MOVR2,#08;一字节8位数据CLRSCLNOPNOPWR_BYTE1:RLCA;带进位位左移,A.8->CMOVSDA,C;SCL低电平时改变SDA上的数据NOPSETBSCL;拉高SCL>=4.7uS把数据发送出去NOPNOPCLRSCLNOPNOPDJNZR2,WR_BYTE1;依次发送A中的8位数据SETBSDANOPNOPSETBSCLCLRF0NOPNOPMOVC,SDAJCWR_BYTE2SETBF0;判断应答位WR_BYTE2:NOPCLRSCLNOPRET此子程序的主要作用是按照定义的时序,顺序左移A中一字节8位数据,并通过引脚传送出去。当一字节发完后,等待IC卡发回的确认信号。3.5从IC卡读一字节(RD_BYTE)从IC卡中读一字节的源程序如下:SCL┉SDAD7D6┉D0发停止状态RD_BYTE:MOVR2,#08SETBSDA;设备SDA为读状态CLRA;清空A寄存器NOPNOPRD_BTYE1:SETBSCL;时钟线为高,接收数据位NOPNOPMOVC,SDA;读取一位数据到进位位RLCA;左移数据到ACC.0CLRSCL;将SCL拉低,时间大于4.7usNOPNOPDJNZR2,RD_BYTE1;依次读出8位数据到A中RET;无应答信号利用该程序可将读出的数据存放在A中。需要注意的是:读数据的器件不是通过确认状态来应答的,而是随后产生一个停止状态。3.6字节写入模式写单字节数据(WRITE_BYTE)下列程序入口参数:R3=卡器件地址,R4=目的字节地址,A=待写数据出口参数:F0作应答位,F0=1有应答占用资源:A、R4、CY、F0发开始信号---写卡器件地址---写入字节地址---写入单字节数据---发停止信号WRITE_BYTE:PUSHACC;保存A中的数据LCALLSTART_IC;发开始信号MOVA,R3;写入器件地址8位LCALLWR_BYTEJNBF0,RETWRB;无应答则跳转MOVA,R4;写入字节地址8位LCALLWR_BYTEJNBF0,RETWRB;无应答则跳转POPACC;恢复待写的A中数据LCALLWR_BYTE;写入单字节数据LCALLSTOP_IC;发停止信号RETRETWRB:POPACCLCALLSTOPRET在收到8位数据后,EEPROM将通过SDA来回送确认信号,而传送设备必须用停止状态来终止写操作。这时,EEPROM将进入一个内时固定存贮器的写入周期并且禁止在此其间的所有输入,直到写操作完成后才对通讯应答。其写入周期可自定义,最大为10ms。3.7页面写入模式写多字节数据(WRITE_PAGE)入口参数:R3=卡器件地址,R4=目的字节地址,R5=页面长度。R0=写数据缓冲指针发开始信号---写卡器件地址---写页面目的地址---连续写(R5)个字节数据---发停止信号WRITE_PAGE:LCALLSTART_IC;发开始信号MOVA,R3;写卡器件地址LCALLWR_BYTEJNBF0,IWRNBYTEMOVA,R4;写页面目的地址LCALLWR_BYTEJNBF0,IWRNBYTEWRITE_PAGE1:MOVA,@R0;连续写(R5)个字节数据LCALLWR_BYTEJNBF0,IWRNBYTEINCR0DJNZR5,WRITE_PAGE1IWRNBYTE:LCALLSTOP_IC;发停止信号RETAT24C01/02可利用上述程序进行8字节的页面写入,它的操作类似于写字节。不同的是,它无需在第一个字节送出后以停止状态,不同在收到确认信号后,再传送7个字节的数据码,最后以停止状态来终止页面写序列。AT24C04/08/16的页面为16字节。3.8立即性地址读单字节模式(READ_BYTEC)立即地址读模式读一字节数据的程序如下:入口参数:R3=卡器件地址,(字节源地址以芯片内的当前地址)出口数据:读取数据ACC开始信号---写出读卡器件---读出默认地址数据---发停止状态应答READ_BYTEC:LCALLSTART_IC;开始信号MOVA,R3;写读卡器件地址LCALLWR_BYTEJNBF0,RETRDBLCALLRD_BYTE;读出默认地址数据LCALLMNACK;读完最后一个字节数据需要发非应答信号RETRDB:LCALLSTOP_IC;发停止状态应答RET该程序执行后,其内部数据字地址指针将保持在上次读写操作访问的最后一个地址,并按1递增且在芯片上电期间一直有效。只有当地址为页面的最末时,下次访问才滚动到该页面的首地址。3.9选择性地址读单字节模式(READ_BYTER)在下列程序中,R3=卡器件地址,R4=字节源地址出口数据:读取数据ACC程序如下:开始信号--执行空字节写卡器件地址---写入源地址---开始信号--写卡器件地址--立即地址的数据读出—停止信号READ_BYTER:LCALLSTART_IC;启动总线MOVA,R3;执行空字节写卡器件地址LCALLWR_BYTEJNBF0,READ_BYTE3MOVA,R4;写入源字节地址LCALLWR_BYTELCALLSTART_IC;重新启动总线MOVA,R3LCALLWR_BYTE;写卡器件地址JNBF0,READ_BYTE3LCALLRD_BYTE;立即地址数据读出LCALLMNACK;读完最后一个字节数据需要发非应答信号READ_BYTE3:LCALLSTOP_IC;停止信号RET读操作模式需要一个字节写序列载入数据地址。在器件和数据地址写入并得到确认后,将再产生另一个开始条件,并送出读操作器件的地址,同时激发一个立即地址读取。3.10立即地址的连续读取N个字节数据(READ_BYTES);功能:从卡器件的当前立即字节地址开始读取N个数据入口参数:R3=卡器件地址,(字节源地址默认当前立即地址),R5=N数据长度出口参数:R0=目的指针开始信号--写出读卡器件---(R5)个立即地址的数据读出---停止信号READ_BYTES:LCALLSTART_IC;开始信号MOVA,R3;写出读卡器件LCALLWR_BYTEJNBF0,BYTESRETREAD_BYS2:LCALLRD_BYTE;连续立即地址的数据读出MOV@R0,A;存放数据到目的地址INCR0DJNZR5,READ_BYS1LCALLMNACK;读完最后一个字节数据需要发非应答信号BYTESRET:LCALLSTOP_IC;读完N个字节后发停止信号RETREAD_BYS1:LCALLACK_IC;收到数据后发确认信号SJMPREAD_BYS2其中连续读取由立即地址读或选择性地址读激发,并在收到一字节数据后发确认信号应答。当读数器件以停止状态应答时,操作被终止。3.11选择性地址的连续读取N个字节数据(READ_BYTES);功能:从卡器件某指定的字节地址开始读取N个数据;入口参数:R3=卡器件地址,R4=字节源地址,R5=N数据长度;出口参数:R0=接收数据目的缓冲区指针;占用资源:A、R0、R2、、R3、R4、R5、CYIRDNBYTE:LCALLSTART;启动总线MOVA,R3LCALLWR_BYTE;发送卡器件地址JNBF0,RETRDNMOVA,R4;指定源字节地址LCALLWR_BYTELCALLSTART;重新启动总线MOVA,R3LCALLWR_BYTE;写卡器件地址JNBF0,IRDNBYTERDN1:LCALLRDBYTE;读操作开始MOV@R0,AINCR0DJNZR5,SACKLCALLMNACK;读完最后一个字节数据需要发非应答信号RETRDN:LCALLSTOP_IC;发停止信号RETSACK:LCALLMACKSJMPRDN14总结该系统结构简单,在实际运行时具有很高的可靠性,同时具有一定的可扩展性,并可通过单片机的串行口经电平转换后直接与计算机相连,以进行数据通讯。另外,也可根据需要连接到其它引脚或卡座触点,如果适当改进电路和程序,还可读写加密卡和CPU卡等。
本文档为【附录-整套24c16单片机读写驱动程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥14.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
海上生明花
暂无简介~
格式:doc
大小:80KB
软件:Word
页数:8
分类:
上传时间:2021-12-16
浏览量:26