ATmega16L-EEPROM写入读取实验

发布者:量子启示最新更新时间:2012-08-18 来源: 51hei关键字:ATmega16L  EEPROM  写入读取 手机看文章 扫描二维码
随时随地手机看文章
/***************************************
读写AVR单片机EEPROM实验。
先向单片机EEPROM写入1到255,然后依次读出,
并在数码管上显示出来
***************************************/
#include
const unsigned char duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                              0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
const unsigned char weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char shu[8];
unsigned int num;

unsigned int aa,bb;

/****************************************
               延时函数
****************************************/
void delay(unsigned char t)
{
   unsigned char x,y;
   for(x=t;x>0;x--)
    for(y=100;y>0;y--);
}

/****************************************
               显示函数
****************************************/
void display(void)
{
unsigned char i;
for(i=0;i<4;i++)
{
  PORTB =0X00;
  PORTA|=0X01;
  PORTA&=0XFE;
 
  PORTB =weima[i];
  PORTA|=0x02;
  PORTA&=0XFD;
 
  PORTB=shu[i];
  PORTA|=0X01;
  PORTA&=0XFE;
 
  delay(4);
}
}

/***************************************
            写EEPROM
***************************************/
void write_eep(unsigned int add,unsigned int data)
{              //data为待写数据,add为某单元地址
while(EECR&(1< EEAR=add;              //设定单元地址  
EEDR=data;             //将数据写入EEDR
EECR|=(1< EECR|=(1<}

/***************************************
            读EEPROM
***************************************/
unsigned char read_eep(unsigned int add)
{                      //add为某单元地址
while(EECR&(1< EEAR=add;             //设定单元地址
EECR|=(1< return EEDR;          //返回读出的数据
}

/***************************************
             数据转换子函数
***************************************/
void change(unsigned int i)
{
shu[0]=duanma[i/1000];
shu[1]=duanma[i/100%10];
shu[2]=duanma[i%100/10];
shu[3]=duanma[i%10];
}


/***************************************
             端口初始化
***************************************/
void init_port(void)
{
PORTA=0XFF;
DDRA=0XFF;
PORTB=0XFF;
DDRB=0XFF;
}

/***************************************
                MAIN
***************************************/       
void main(void)
{
init_port();
for(aa=0;aa<255;aa++)
{
    write_eep(aa,aa);

    change(num); //延时
display();
display();
display();
}

while(1)
  {
   for(aa=0;aa<255;aa++)
   {
    num=read_eep(aa);
    for(bb=0;bb<40;bb++) //延时
display();
   
change(num);
   
    for(bb=0;bb<40;bb++) //延时
display();
   }
  }
}
关键字:ATmega16L  EEPROM  写入读取 引用地址:ATmega16L-EEPROM写入读取实验

上一篇:ATmega16L-定时器应用于数码管
下一篇:ATmega16L-外部中断1例程

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

STC51单片机EEPROM的使用方法
STC51单片机有类似flash的功能EEPROM,可以掉电保存数据,不同型号的可以保存不同大小的数据,以12C5A60S2为例,EEPROM的大小为2K,分为两个扇区,掉电保存在很多地方需要。 首先寄存器的问题,不同系列的STC单片机的与EEPROM有关的寄存器不同,比如10/11/12系列的sfr ISP_DATA = 0xC2;sfr ISP_ADDRH = 0xC3;sfr ISP_ADDRL = 0xC4;sfr ISP_CMD = 0xC5;sfr ISP_TRIG = 0xC6;sfr ISP_CONTR = 0xC7;89/90系列的sfr ISP_DATA = 0xe2;sfr ISP_ADDRH = 0xe
[单片机]
STC51单片机<font color='red'>EEPROM</font>的使用方法
最新全能数控电源IC-ADP1043A
    1 通讯系统     1.1 I2C接口     ADP1043A的控制通过I2C接口被载出,ADP1043A接到I2C总线作为从属元件,由主控器件控制。     1.2 I2C地址     ADP1043A的I2C地址有外部从VDD端接到AGND的外部电阻来设置,表1列出了推荐的电阻值及相应的地址,8个不同的地址可用。     如果一个不正确的电阻值被用上,结果I2C地址会紧靠两地之间的临界处,一个标志就被设置出来。     在表1中推荐的值可以变化±2kΩ,ADP1043A扔回相同的地址。因此,推荐选择1%精度的电阻用于ADD端。     I2C地址0*58是广播地址,它允许多个部分同时写入,用广播地址提到表1中的
[电源管理]
最新全能数控电源IC-ADP1043A
意法半导体(ST)率先推出SO8窄型封装的1Mbit串行EEPROM
新的微型高密度存储器芯片成为消费电子和医疗设备参数存储的理想选择 中国 , 2007 年 1 月 25 日 — 世界非易失性存储器 IC 的领导厂商 意法半导体(纽约证券交易所代码: STM) 今天推出一款新的 1-Mbit 串行 EEPROM 芯片,这个型号为 M24M01 的新产品采用微型 SO8N 封装,封装外壳宽度仅为 150-mil (3.8mm) ;这个串行 EEPROM 是目前市场上唯一的在如此小的封装内挤进高密度存储器芯片的半导体器件。该产品还有一款是采用 SO8W 封装,这款产品内置 I2C 双线串口,
[新品]
读写24LCxx系列的EEPROM的实例程序
读写24LCxx系列的EEPROM的实例程序 ;******************************************************** ;* * ;* ? PIC16F877A ?I2C Master 家Α???﹃?Α EEPROM ?絛ㄒ祘Α * ;* * ;* Written by: Richard Yang * ;* Sr. Corporate Application Engineer * ;* Microchip Technology Inc.
[模拟电子]
STC89C58RD+ 内部EEPROM 放数据 FLASH-ISP-IAP
#include reg52.h #include intrins.h /* use _nop_() function */ //sfr16 DPTR = 0x82; /* 新增特殊功能寄存器定义 */ sfr ISP_DATA = 0xe2; sfr ISP_ADDRH = 0xe3; sfr ISP_ADDRL = 0xe4; sfr ISP_CMD = 0xe5; sfr ISP_TRIG = 0xe6; sfr ISP_CONTR = 0xe7; /* 定义命令 */ #define READ_AP_and_Data_Memory_Command 0x01 /* 字节读数
[单片机]
贰拾壹:EEPROM的操作
EEPROM概述 电可擦除只读存储器 EEPROM 可以长期非易失地保存信息,又可以随时用电改写。EEPROM的种类很多,它们大致可以分为并行、串行、加密型3种。 并行 EEPROM:速度快,可做到高度集成。但是引脚多,使用不方便。 串行 EEPROM:引脚少,应用方便。但结构复杂,难以做到了高度集成,所以单片机一般容量不大。 加密型 EEPROM:可以对写入的数据进行加密,避免越权存取,保密功能强。但加密型EEPROM的操作步骤比较复杂,成本高。 通信时序 1.起停信号 时钟线保持高电平期间,数据线电平从高到低的跳变为I2C总线的起始信号。时钟线保持高电平期间,数据线电平从低到高的跳变为I2C总线的停止信号。
[单片机]
贰拾壹:<font color='red'>EEPROM</font>的操作
单片机上Flash和EEPROM的异同
FLASH的全称是FLASHEEPROM,但跟常规EEPROM的操作方法不同。 FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。 至于那个“总工”说的话如果不是张一刀记
[单片机]
基于ATmega16L的净水机控制系统的设计
水是人类生命的源泉,人们对饮用水质的要求及相应的标准在不断提高。但由于工业废水和生活污水等水体排放量的不断增加,致使水源污染日益加剧。人类经历了由最初的简单的沉淀净水到传统的煮沸处理,发展到现在的深度净化饮用水。解决饮用水污染问题有两条途径:一是通过保护饮用水水源,选用优质饮用水水源;二是强化饮用水处理工艺。在发达国家饮用水净化处理工艺已经很成熟且净水机的使用也相当普及,但在我国,这种净水机目前仍不为大众消费者所熟悉。所以设计功能完善、经济实用的智能净水机具有积极的社会意义。 1 控制系统的构成与工作原理 图1为净水机控制系统的结构框图。净水机主要由控制主板、增压泵、温度传感器、压缩机、电热丝、水位检测板、LCD显示屏、紫外
[工业控制]
基于<font color='red'>ATmega16L</font>的净水机控制系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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