百韵网 >>  正文

求51单片机大神指教IIC总线AT24C02使用。有某个地方不懂。//是关于开机记忆。

来源:www.baiyundou.net   日期:较早时间
void main()
{
init();
sec=read_add(2);//问题就在此处,无论写什么地址,都在数码管上面没有显示。
if(sec>100) //若将此处去掉,则没有记忆功能。
sec=0; //
TMOD=0x01;
ET0=1;
EA=1;
/***************************************************************************************************************

sec = read_add(2); //这里是sec 读取I2C指定2地址的数据,仔细看下面代码
write_add(2,sec); //这里是吧sec写入指定地址2里面,所以上面必须从地址2里面读取数据。
if(sec>100) //若将此处去掉,则没有记忆功能。
sec=0; //

这一块就是往I2C指定地址写入数值应该0 - 100数值,你把这里去掉了,没有往I2C写入数值你说能读出来数据吗还会有记忆功能吗。
***************************************************************************************************************/

TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
TR0=1;
while(1)
{
display(sec/100,sec/10,sec%10);
if(write==1) //
{ //
write=0; //
write_add(2,sec); //
}
}
}
/*************************************************/
void time0() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
tcont++;
if(tcont==20)
{
tcont=0;
sec++;
write=1; //
if(sec>100)
sec=0;
}
}

IIC AT24C02用在51单片机上,~

你的程序是上电后从新开始写到24C02地址1上呀,所以你看不出来变化。

page_write是页写方式写入数据,地址自动向后推。AT24C02就自动向后推七次,再写入的话地址又翻到上面来了,那就覆盖原来的数据了。网上有人说AT24C02可以写16个字节,就是16个字节换页,可根据英文资料是8个,16个我自己也没试成功过。

前面我说的不准确,这里的分页是写入方式决定的,与flash存储的分页是两个概念,不一样的,这个更准确的说应该是分段。

刚刚看了网上的一些程序,好像都有 ufirstr_ad=firstr_ad;估计都是源于一个版本。按我的理解,指针做形参是复制个副本,不会对实参有影响,直接用firstr_ad应该也可以,我自己在keil C上调软件也证明了这一点。我手头没硬件,所以具体在硬件上怎样我不得而知。你自己可以试试啊

相关要点总结:

15388078379:求51单片机大神指教IIC总线AT24C02使用。有某个地方不懂。//是关于开...
上玲答:void main(){ init();sec=read_add(2);//问题就在此处,无论写什么地址,都在数码管上面没有显示。if(sec>100) //若将此处去掉,则没有记忆功能。sec=0; // TMOD=0x01;ET0=1;EA=1;/ sec = read_add(2); //这里是sec 读取I2C指定2地址的数据,仔细看下面代码 write_add...

15388078379:关于51单片机IIC总线问题,AT24C02的使用!我想要写一个数据,然后再读出...
上玲答:include<reg51.h> include<intrins.h> define uchar unsigned char sbit SCL=P2^0; //定义端口 sbit SDA=P2^1;// //启动IIC总线程序 // void start(void){ SDA=1; //发送起始条件数据信号 _nop_();SCL=1; //发送起始条件的时钟信号 _nop_();_nop_();_nop_();_nop_();_...

15388078379:51单片机模拟IIC总线问题
上玲答:假设你有两台或者以上的S3C2410,单片机作为主机,然后单片机发送数据,所有S3C接收(接收的前提是他的接收端口上获得IIC的开始信号,你可以选择利用中断进行检测),然后你在软件里可以预先设置好每台S3C的地址,即接收单片机的前8BIT,然后对照地址,一样的话就开始接收接下来的信息,没有就放弃这个通信,这...

15388078379:IIC总线器件有哪些???除了AT24C01~16外还可以控制哪些器件??51单片机...
上玲答:我做功放数字音调时有用过一款,PT2314,是IIC总线控制的,用AT89C2050控制,能完成节主音量、低音、高音、平衡、话筒音量、混响级别等功能,想要资料联系我

15388078379:51单片机的iic通信问题,求助啊
上玲答:IIC总线的时序,好像是:最高频率在400KHz。单片机指令的执行时间,速度快,所以要加延时。停止函数,是在SCL=1期间,SDA出现上升,那么SDA先要为0,这个0,要在SCL=0实现。

15388078379:用51单片机做一个模拟I2c的实验,E2PROM用的是at24c512b,但是程序始终...
上玲答:24C512的地址位是16位的,不能只传送八位地址位

15388078379:51单片机如何模拟I2C总线中从机接收ID,发送数据的程序
上玲答:起动总线函数 函数原型: void Start_I2c();功能:启动I2C总线,即发送I2C起始条件 / void Start_I2c(){ SDA="1"; /*发送起始条件的数据信号*/ _nop_();SCL="1"; /*起始条件建立时间大于4.7us,延时*/ _nop_();SDA="0"; /*发送起始信号*/ _nop_(); /* 起始条件锁定时间...

15388078379:51单片机i2c总线读写操作问题
上玲答:因为开始读取完或者写完一组数据需要一个开始信号和一个终止信号,而这个信号就是数据线的上升下降沿。而后面数据线拉高的原因是为了能正确读取到数据,因为单片机如果是低电平外部器件很有可能不能拉高而一直读到低。手机纯打,往采纳。

15388078379:51单片机关于I2C总线的应答信号的疑问,求大神帮忙
上玲答:从机)一般都是有I2C协议的?肯定有,不然怎么通信。SCL:时钟线 SDA:数据线 你的理解,个人感觉就是没仔细看过IIC协议,建议在文库里看看IIC协议。IIC协议从程序上讲包含:初始化总线,启动总线,停止总线,总线读一个字节,总线写一个字节,总线应答。只要一个一个搞清楚了,就能操作IIC总线。

15388078379:51单片机中Iic总线中这个时序图怎么理解,怎么有2个start,还有那个星号...
上玲答:你可以先看一下I2C时序。在I2C读时序中,start--->器件地址--->ACK--->内存地址--->ACK--->START--->器件地址--->ACK--->数据--- --->ACK ...--->STOP 其实读时序中包含一个写操作,因为必须告诉从机你要读的地址以及从机 ...

(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网