C51编写的AT24C02详细的读写程序_第1页
C51编写的AT24C02详细的读写程序_第2页
C51编写的AT24C02详细的读写程序_第3页
C51编写的AT24C02详细的读写程序_第4页
C51编写的AT24C02详细的读写程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C51_AT24C02读写程序:/*voidstart()/ 开始信号voidstop()/停止信号voidAck() 发确认信号voidNoAck()/发无确认信号voidinit()初始化信号,拉高SDA和SCL两条总线bitwrite_byte(uchardate)写一字节,将 date 写入 AT24C02 中ucharread_byte()/读一字节,从 AT24C02 中读一字节bitbusyf)/应答查询,stop()后,启动AT24C02内部写周期,启动查询初始化EEPROM子程序内容为OXFF,nPage(O31)voidlnit_Flash(ucharnPage)/Bbyt

2、es/lpageinitOxFFvoidwrite_add(ucharaddress,uchardate)向 AT24C02 中写数据从AT24C02中给定的地址nAddr起,将存放在以指针nContent开头的存储空间中的nLen个字节 数据,连续写入AT24C02voidwrite_flash(uchar* nContent,ucharnAddr,uchar nLen)ucharread_add(ucharaddress)/从 AT24C02 中读出数据从AT24C02中给定的地址nAddr起,读取nLen个字节数据存放在以指针nContent开头的存储空 间。voidread_flash

3、(uchar*nC onten t,uchar nAddpuchar nLen)7/*单片机 P2 口接 74HC138 (三八译码器)P2.3-74HC138:/EL P2.274HC13&A2、P2.174HC13&A1、P2.0-74HC138:A0译码器输出YO, Yl、Y2> Y3、Y4、Y5、Y6、Y7均低电平有效,分别选通18个数码管。包括2个 四位一体数码管LG3641BH,共2x4=8个数码管。数码管数据口为P0 口。数码管为共阳4位一体数码管。功能:译码器输出为1一一8个数码管的段选信号,轮流选择1一一8数码管。voiddisplay(uchar*nC

4、ontent,ucharnLen)功能:在8段数码管上显示nLen个字符,这些字符存储在指针 nContent开头的往下的内容中。显示原理:1、送出要显示的段数2、P2译码,选择要显示的位3、延时1一一2ms,时间不能太长,否则会闪烁,也不能太短,否则会很暗。4、取消段选,消隐!若要显示多段,重复以上4步!7# include<reg51.h>#include<intrins.h># defineuchar unsign edchar# defineui ntunsignedintsbitL8=PlA7;/74HC138-7 臼/74HC138-A2/74HC138-A

5、1/74HC138-A0sbitP2_3=P2A3;sbitP2_2=P2A2; sbitP2_l=P2Al; sbitP2_0=P2A0; ucharcodetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa l,0x86,0x8e ;共阳数码管0sbitsda=PlA2;sbitscl=PlA0; uchara;voiddelayf)/ 延时函数 ;voidstart()/ 开始信号 sda=l;_nop_(); scl=l;_nop_(); sda=O;_nop_();voidstopf

6、)/停止信号sda=O;_nop_(); scl=l;_nop_(); sda=l;_nop_();voidAckf)/发确认信号scl=O;_nop_();sda=O;_nop_();scl=l;_nop_();scl=O;_nop_();voidNoAck()/发无确认信号scl=O;_nopj);sda=l;_nop_();scl=l;_nopj);scl=O;_nop_();/voidrespons()/应答,在数据传输8位后,等待或者发送一个应答信号/uchari;/scl=O;/_nop_();/sda=l;/_nop_();/scl=l;/scl拉高,准备读数据/delay();

7、/while(sda=l)&&(i<250)i+;/ 读数据/scl=O;/scl拉低,数据读完毕,(必须)/delay();/voidinitf)初始化信号,拉高SDA和SCL两条总线sda=l;scl=l;bitwrite_byte(uchardate)写一字节,将 date 写入 AT24C02 中uchari;scl=O;for(i=0;i<8;i+)date=date«l;sda=CY;将要写入的数据送入SDAscl=l;/scl拉高,准备写数据_nop_();scl=O;/scl拉低,写数据完毕_nop_();sda=l;应答时序中,该线必须为

8、高_nop_();scl=l;/scl拉高,准备读数据_nop_();CY=sda;将sda中的数据读出scl=O;/scl拉低,数据读完毕(必须)return(CY);ucharread_byte()/读一字节,从 AT24C02 中读一字节uchari,k;for(i=0;i<8;i+)sda=l;_nop_();scl=l;/scl拉高,准备读数据_nop_();k=(k«l)|sda;/将sda中的数据读出scl=O;/scl拉低,数据读完毕(必须)_nop_();returnk;/voiddelay2(ucharx)/延时,放在写入与读出之间/uchara,b;/fo

9、r(a=x;a>0;a-)/for(b=100;b>0;b-);/bitbusyf)/应答查询,stop()后,启动AT24C02内部写周期,启动查询 startf);CY=write_byte(OxaO);return(CY);初始化EEPROM子程序内容为OXFF,nPage(O31)voidlnit_Flash(ucharnPage)/8bytes/lpageinitOxFFucharnLen;ucharAddr;nLen=8;Addr=8*nPage;start();write_byte(OxaO);write_byte(Addr);for(;nLen!=0;nLen-)w

10、rite_byte(Oxff);stop();voidwrite_add(ucharaddress,uchardate)向 AT24C02 中写数据start(); write_byte(OxaO); /resp on s(); write_byte(address); /resp on s(); write_byte(date); /resp on s();stop();从AT24C02中给定的地址nAddr起,将存放在以指针nContent开头的存储空间中的nLen个字节 数据,连续写入AT24C02voidwrite_flash(uchar* nContentucharnAddpucha

11、r nLen)uchari,temp; ucharAddr;Addr=nAddr; start(); write_byte(OxaO); write_byte(Addr); for(i=0;i<nLen;i+)if(Addr%8=0)stop();while(busy();start();write_byte(OxaO); write_byte(Addr);temp=* nContent; write_byte(temp);n Content+;Addr+; stop();ucharread_add(ucharaddress)/从 AT24C02 中读出数据uchardate; star

12、t(); write_byte(OxaO); /resp on s(); write_byte(address); /resp on s();2019-8-5start();write_byte(Oxal);/resp on s();date=read_byte();NoAck();stop();returndate;从AT24C02中给定的地址nAddr起,读取nLen个字节数据存放在以指针nContent开头的存储空 间。voidread_flash(uchar*nC onten ucharnAddGucharnLen) ucharAddr;Addr=nAddr;start();write

13、_byte(OxaO);write_byte(Addr);start();write_byte(Oxal);while(-nLen)*nConte nt二read_byte();n Content+;Ack();/发确认信号*nConte nt=read_byte();NoAckf);/无确认信号stop();/发停止信号/*功能:延时x*0.14ms7voiddelayl(unsignedcharx)/x*0.14MS unsig nedchari;while(x-)for(i=0;i<13;i+)y*y/*功能:在8段数码管上显示nLen个字符,这些字符存储在指针nContent 开

14、头的往下的内容中。*/voiddisplay(uchar* nContent,ucharnLen)2019-8-5uchartemp; uchari;if(nLen>8)/最多显示8段nLen=8;for(i=0;i<nLe n;i+)temp=* nContent;nCon tent+;PO=tabletemp;P2=P2&OxfO|i;/译中 74HC138: Yi(i=0,l,.7),选中第 i+1 个数码管 delayl(lO); 延时P2=P2|OxOf;/取消位选,消隐/*主程序功能:实现存储器EEPROMAT24C02的数据读写操作7voidmain()uchardat16=0,1,2,33,5,6,7,8,9,10,11,12,1344,15),1;ucharoutl16=0;ucharout2;PO=Oxff;Pl=Oxff;P2=0xff;P3=0xff;init();初始化 AT24C02lnit_Flash(O);/将第 31 页初始化为 OxFF while(busy();/ write_add(23,0x5);在 23 地址处写入数据 0x5; write_flash

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论