AT240C02中EEPROM保存数据

发布者:JoyfulSunflower最新更新时间:2015-05-21 来源: 51hei关键字:AT240C02  EEPROM  保存数据 手机看文章 扫描二维码
随时随地手机看文章
/***********************

程序功能:
利用定时器产生一个0~99秒变化的秒表,并且显示在数码管上,
每过一秒将这个变化的数写入板上AT24C02内部。当关闭电源,
并再次打开电源时,单片机先从AT24C02中将原来写入的数读取出来,
接着此数继续变化并显示在数码管上。
************************/

/************************
         CODE:
************************/
#include
#define uint unsigned int 
#define uchar unsigned char
#define AT024C02 0xa0
sbit sda=P2^0;
sbit scl=P2^1;
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
uchar led[8];
uchar code dutable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//段选
uchar sec,count;
/***********************
 I2C总线控制
***********************/
void delay()
{;;}
void delay_1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<=110;y++)
{
}
}
}
void i2cinit()
{
sda=1;
delay();
scl=1;
delay();
}
void start()
{
sda=1;
delay();
scl=1;
delay();
sda=0;
}
void stop()
{
sda=0;
delay();
scl=1;
delay();
sda=1;
}
void respons()
{
uchar i=0;
scl=1;
delay();
while((sda==1)&&(i<250))//等待应答信号
{
i++;
}
scl=0;
delay();
}
void write_byte(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
scl=0;
delay();
temp=temp<<1;
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_byte()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;
delay();
scl=0;
delay();
}
scl=0;
delay();
sda=1;
delay();
return k;
}
void write_address(uchar address,uchar date)
{
start();
write_byte(AT024C02);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_address(uchar address)
{
uchar date;
start();
write_byte(AT024C02);
respons();
write_byte(address);
respons();

start();
write_byte(AT024C02+1);
respons();
date=read_byte();
stop();
return date;
}
/***********************
 定时器中断
***********************/
void time0uint()
{
sec=0;
count=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display()
{
uchar i;
sec=read_address(1);
led[0]=dutable[sec/1000];
led[1]=dutable[sec%1000/100];
led[2]=dutable[sec%100/10];
led[3]=dutable[sec%10];
for(i=0;i<4;i++)
{
P0=led[i];
switch(i)
{
case 0:LS138A=0; LS138B=0; LS138C=0; break;         
       case 1:LS138A=1; LS138B=0; LS138C=0; break;            
       case 2:LS138A=0; LS138B=1; LS138C=0; break; 
       case 3:LS138A=1; LS138B=1; LS138C=0; break; 
}
delay_1ms(2);
}
P0=0X00; 
}
void main()
{
i2cinit();
time0uint();
while(1)
{
display();
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
sec++;
if(sec>=100)
{
sec=0;
}
write_address(1,sec);

}

关键字:AT240C02  EEPROM  保存数据 引用地址:AT240C02中EEPROM保存数据

上一篇:AT24C02EEPROM芯片《实现对其读和写》
下一篇:单片机中的掉电存储管理

推荐阅读最新更新时间:2024-03-16 14:03

STM8S003F3 使用内置的Data EEPROM的操作接口
操作系统:win10 64bit 平台:STM8S003F3 IDE: IAR For STM8 /* Data EEPROM 操作初始化 */ void Init_Flash(void) { FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); } /************************************************ 函数名称 : EE_FLASH_WriteNByte 功 能 : 写EEPROM 参 数 : pBuffer ----- 写入数据区首地址 WriteAddr --- 要写入Flash的地址
[单片机]
基于S3C2440的嵌入式Linux驱动——AT24C02(EEPROM I2C接口)驱动解读
本文将介绍Linux中AT24C02驱动。AT24C02是一种EEPROM,使用I2C接口来访问。 在开发板中,使用I2C控制器0和AT24C02连接,这里就不给出原理图了,如需要,可以搜索TQ2440开发板的原理图。 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.32 本文所有的代码均位于内核源码:linux/drivers/misc/eeprom/at24.c中。 1. 模块注册和注销 static int __init at24_init(void) { /* 将io_limit向下圆整到最近的2的幂*/ io_limit = rounddown_pow_of_two(
[单片机]
带RTC的I2C总线铁电存储器FM31256
FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。 铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。 1 FM31
[缓冲存储]
51单片机EEPROM(E2PROM)测试程序
/ * * 文件名称: eeprom.c * 摘 要: 对EEPROM某个扇区进行读、写和擦除,并发送到串口 UART=9600 8位数据 CRYSTAL=18.432 TIMER_MODE=12T (EEPROM就是DATA FLASH,擦除只能按扇区,读写可以按字节,字节为0XFF时才可以写) * CPU芯片: STC12C5A16S2 instruction mode:1T * 作 者: XCY * 修改日期: 2012年3月27日 * */ #include reg52.h #include intrins.h typedef unsigned char BYTE; typedef unsigned
[单片机]
EEPROM 24c02 [读取存储多字节]
先将数据存进去,然后再读出来显示在数码管上。 除了代码里定义的连线外还要把p0连接到8位数码管的8针上。 1 /*----------------------------------------------- 2 名称:IIC协议 EEPROM24c02 3 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一些数据,然后在内存中清除这些数据, 4 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。 5 函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 6 周期,即晶振频率要小于12MHZ) 7 --------------
[单片机]
ATmega16读写EEPROM AT25256(ICC编译)程序
#include iom162v.h #define BAUD 9600 //波特率4800 #define CRYSTAL 3686400 // 晶振 3M #define BAUD_set (unsigned int)( (unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1 ) //波特率计算 #define BAUD_H (unsigned char)(BAUD_set 8) //波特率寄存器 #define BAUD_L (unsigned char)(BAUD_set) /* // GPRS #define GPRS_ONOFFH PORTA|=(1 PA5) #defi
[单片机]
AT89S51单片机扩展EEPROM AT2864的设计
  2864A与AT89S51单片机的接口电路如下图所示。 2864A的片选端CE与高地址线P2.7连接,P2.7=0才能选中2864A。这种线选法决定了2864A对应多组地址空间,即0000H~1FFFH,2000H~3FFFH,4000H~5FFFH,6000H~7FFFH。当系统中有其他ROM和RAM 存储器 时,要统一考虑编址问题。      这8K字节存储器可作为数据存储器使用,但掉电后数据不丢失。      AT89S51对2864A进行写操作时所用指令包括: AT89S51对2864A进行读操作时所用指令包括: 下面介绍对2864A装载一个页面数据(16个字节)的子程序W
[单片机]
AT89S51单片机扩展<font color='red'>EEPROM</font> AT2864的设计
STC89C51RC_EEPROM 头文件
/************************************************************************************/ /*****File Function : STC89C51RC_EEPROM Read and Write *****/ /*****Program Author : ZhengWen(ClimberWin) *****/ /*****Compile Date : 2008/2 *****/ /*****Edition Info : V1.0
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved