1,AT24C02存储地址从0x00到多少

1KB=1024B,2KB=2048B.如果用十六进制数表示则为:3FFH=1KB ,7FFH=2KB. 2K的地址就是说从0X00H---07FFH. 同理其实在我们学习单片机内部ROM区时它的空间大小就是FFFH=4KB.

AT24C02存储地址从0x00到多少

2,电子技术大神求救我用AT24c08实现一个密码的存储和读取我先往

6位十进制一个byte不能表示,你的数据类型是?at24c08应该是以byte为单位的,建议先以byte为单位测试驱动的读写功能,6位十进制需要拼接
你好!你的数据类型是什么啊?会不会是数据类型声明不合适啊仅代表个人观点,不喜勿喷,谢谢。
是不是指针问题

电子技术大神求救我用AT24c08实现一个密码的存储和读取我先往

3,at24c16程序怎么写

你现在的错是什么错呢?IIC协议有吧?你现在问题不是可以显示就是不能让AT24C16断电保存变量是吗?如果是这样话,很简单的,你只要在每次显示的同时把变量值还要写入AT24C16的的指定地址才可以保存起来的。这样下次上电就可读出来了。
121
你好,我正在使用c16,但是一直有乱码,我想看一下你的子程序。可以吗?谢谢了,问了好多同学,问题没解决。谢谢了。
AT24c16是EEROM,与传统的片外EPROM有所区别.当然你前面说的,用单片机任意两只脚作为输入和输出是对的,读取程序就是需要IIC协议,这个得自己来写,这程序一时半会也不说清楚的。当然你不会也可以叫别人给你写的。单片机是不会自动寻找EEROM的,这需要你的单片机程序配合,也就是你单片机程序让它寻址它就寻址。另外,站长团上有产品团购,便宜有保证

at24c16程序怎么写

4,单片机掉电后如何保留程序执行后得到的变量以便控制单片机上电

利用MAX813L芯片检测外部掉电,然后通过单片机中断来控制保存掉电时的参数,在外部电源与单片机单独供电之间须加一个IN5819二极管,在单片机供电侧加一个4700uf的大电容即可保持外部断电后单片机仍可维系1S左右的时间来保存你的系统状态是搓搓有余的。
你这个是没有办法的,STC没有掉电EEPROM,你要么换芯片,要么加个EEPROM,例如加AT24C16,如果你不改电路,没有别的办法。再不行,就要在外部加个电池,平时由电源供电,用外中断引脚检测电源是否有电,一旦电源没电了,单片机迅速进入中断,并且单片机进入休眠状态。
可以外接存储芯片或者直接使用单片机内部的存储器如EEPROM,在程序运行时,当变量有变化时就存起来,这样掉电后变量值就保存了
我没有看明白你的程序 这里是什么意思:void t1()interrupt 0 pcon=0; et0=1; }void se()interrupt 2 pcon=0; et0=1;}如果你是做掉电的话 两种情况 控制单片机电源电压拉低保持内部供电,还有一种就是 让重要数据在中断里运行,触发后返回

5,真心求教怎么看单片机往EEPROM AT24C02的写入数据的大小

1. 你要写什么数据进入AT24C02, 只有你自己知道. 自己定义的数据可能是变量, 数组, 结构等. 2. 衡量数据的大小一般用字节来(byte)计算, 1字节(byte) = 8 位(bits). 如果你的程序是用C语言写的话, 可以直接用sizeof()来获取你的字节数 (例如, 定义int a; 则sizeof(a)可以返回 a用了多少字节). 这样你就知道你写入数据的大小了, 比较AT24C02的2K位(bit)的存储容量, 通过简单的计算就知道够不够用了.3. 如果是汇编语言或者其它不能用sizeof()的编程语言, 可以查看编译的结果的文件(list文件或者map文件), 看看你用于写入数据所定义的变量, 数组, 结构(数据块)到底用了多少个字节.
24c02是2K Bit,也就是2048/8=256字节,换算成8位的AD结果可以储存256个
在AT24C02里面,只能存放 256 字节。每次,最多连续写入 16 字节。
真心不懂你要知道什么?E2ROM总共能够存放2KBit数据,至于你要存多少数据进去,是你自己定义的,只要不超过它的空间总量就行了!

6,I2C总线数字调谐收音机

天收音机I2C读程序调试好了,用设置电台方式,收到了一个电台,由此验证了收音机芯片是OK的。 现总结一下I2C标准协议:依次对读写总规则,开始位,地址,数据,回应和结束位进行总结。1. 读写总规则:数据在时钟为低时可以改变,即可以在时钟为低时准备好数据;时钟变高时,数据由“主设备”写入到“从设备”或从“从设备”读出来。2.开始位 开始位定义:时钟为高时,数据由高变低。每笔数据传输都要以“开始位”作为开始。3.地址 每个从设备都有自己的地址,每个设备有两个地址——写入地址和读出地址,两个地址的前7bit是一样的,最后一位(bit0)为0表示写入地址,数据由“主设备”写入到“从设备”;最后一位(bit0)为1表示读出地址,数据从“从设备”读出来给“主设备”。4.数据 数据以字节为最小单位进行写入或读出。一笔数据可以包含1个字节或多个字节。5.回应 无论写入还是读出,每一个byte都有一个回应(为低)。分为两种——写入回应和读出回应。写入回应是由“从设备”发出的,“主设备”写完8个bit(一个字节)后,要在第9bit读“从设备”发出的回应,以此判断是否正确写入。读出回应是由“主设备”发出的,“主设备”读完8bit之后,要在第9bit写回应,以此通知“从设备”,“主设备”是否正确读出。6.结束位 结束位定义:时钟为高时,数据由低变高。每笔数据传输都要以“结束位”作为结束。

7,求助AT24C16与51单片机的应用附上原理图还有程序小弟定会感

AT24C08和16是差不多的,单片机部分的原理图就不用了吧。以下是AT24Cxx是H函数#ifndef __AT24C08_H__#define __AT24C08_H__#include "delay.h"#defineOP_READ0xa1// 器件地址以及读取操作,0xa1即为1010 0001B#defineOP_WRITE 0xa0// 器件地址以及写入操作,0xa1即为1010 0000Bsbit SCL=P3^1; //将串行时钟总线SDA位定义在为P3.1引脚sbit SDA=P3^2; //将串行数据总线SDA位定义在为P3.2引脚/*************************************************************函数名称:start函数功能:开始传送函数入口参数:无返回值 :无*************************************************************/void start( void )SDA = 1; //SDA初始化为高电平“1” SCL = 1; //开始数据传送时,要求SCL为高电平“1”_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期SDA = 0; //SDA的下降沿被认为是开始信号_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期SCL = 0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递) }/*************************************************************函数名称:stop函数功能:传送结束函数入口参数:无返回值 :无*************************************************************/void stop( void )SDA = 0; //SDA初始化为低电平“0”_nSCL = 1; //结束数据传送时,要求SCL为高电平“1”_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期SDA = 1; //SDA的上升沿被认为是结束信号_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期_nop_(); //等待一个机器周期SDA=0;SCL=0;}/*************************************************************函数名称:ReadData函数功能:从AT24Cxx读取数据,从AT24Cxx移入数据到MCU入口参数:无返回值 :ReadData()*************************************************************/unsigned char ReadData()unsigned char i;unsigned char x; //储存从AT24Cxx中读出的数据for(i = 0; i < 8; i++)SCL = 1; //SCL置为高电平x<<=1; //将x中的各二进位向左移一位x|=(unsigned char)SDA; //将SDA上的数据通过按位“或“运算存入x中SCL = 0; //在SCL的下降沿读出数据}return(x); //将读取的数据返回}/*************************************************************函数名称:WriteCurrent函数功能:向AT24Cxx的当前地址写入数据,在调用此数据写入函数前需首先调用开始函数start(),所以SCL=0入口参数:y--储存待写入的数据返回值 :WriteCurrent()*************************************************************/bit WriteCurrent(unsigned char y)unsigned char i;bit ack_bit; //储存应答位for(i = 0; i < 8; i++)// 循环移入8个位 SDA = (bit)(y&0x80); //通过按位“与”运算将最高位数据送到S //因为传送时高位在前,低位在后_nop_(); //等待一个机器周期 SCL = 1; //在SCL的上升沿将数据写入AT24Cxx _nop_(); //等待一个机器周期 _nop_(); //等待一个机器周期 SCL = 0; //将SCL重新置为低电平,以在SCL线形成传送数据所需的8个脉冲y <<= 1; //将y中的各二进位向左移一位}SDA = 1; // 发送设备(主机)应在时钟脉冲的高电平期间(SCL=1)释放SDA线, //以让SDA线转由接收设备(AT24Cxx)控制_nop_(); //等待一个机器周期 _nop_(); //等待一个机器周期 SCL = 1; //根据上述规定,SCL应为高电平_nop_(); //等待一个机器周期 _nop_(); //等待一个机器周期 _nop_(); //等待一个机器周期 _nop_(); //等待一个机器周期 ack_bit = SDA; //接受设备(AT24Cxx)向SDA送低电平,表示已经接收到一个字节 //若送高电平,表示没有接收到,传送异常SCL = 0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递)return ack_bit;// 返回AT24Cxx应答位}/***************************************************函数名称:WriteSet函数功能:向AT24Cxx中的指定地址写入数据入口参数:add (储存指定的地址);dat(储存待写入的数据)返回 值:无***************************************************/void WriteSet(unsigned char add, unsigned char dat)// 在指定地址addr处写入数据WriteCurrentstart(); //开始数据传递WriteCurrent(OP_WRITE); //选择要操作的AT24Cxx芯片,并告知要对其写入数据WriteCurrent(add); //写入指定地址WriteCurrent(dat); //向当前地址(上面指定的地址)写入数据stop(); //停止数据传递delayNms(4); //1个字节的写入周期为1ms, 最好延时1ms以上}/***************************************************函数名称:ReadCurrent函数功能:从AT24Cxx中的当前地址读取数据入口参数:无出口参数:x (储存读出的数据) ***************************************************/unsigned char ReadCurrent( void )unsigned char x;start(); //开始数据传递WriteCurrent(OP_READ); //选择要操作的AT24Cxx芯片,并告知要读其数据x=ReadData(); //将读取的数据存入xstop(); //停止数据传递return x; //返回读取的数据}/***************************************************函数名称:ReadSet函数功能:从AT24Cxx中的指定地址读取数据入口参数:set_addr出口参数:x ***************************************************/unsigned char ReadSet(unsigned char set_addr)// 在指定地址读取start(); //开始数据传递WriteCurrent(OP_WRITE); //选择要操作的AT24Cxx芯片,并告知要对其写入数据WriteCurrent(set_addr); //写入指定地址return(ReadCurrent()); //从指定地址读出数据并返回}#endif怎么调用?这样 WriteSet( 地址 ,数据);

文章TAG:at24c16能存多少多少  at24c02  存储  
下一篇