第三十五课--Microduino EEPROM读写实验/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年3月5日 (三) 06:34的版本 程序
跳转至: 导航搜索
Language English

目的

本教程将教大家如何使用Microduino中的EEPROM,存储在EEPROM的值将在Microduino-OLED上显示

设备

EEPROM介绍

EEPROM,或写作E2PROM,全称电子抹除式可复写只读存储器 (英语:Electrically-Erasable Programmable Read-Only Memory),是一种可以通过电子方式多次复写的半导体存储设备。

Microduino的控制芯片中都自带了EEPROM,它的用途比较广,掉电后需要保存的信息都可以存储到这里。比如电子保险箱的密码。


原理图

第三十五课-Microduino EEPROM读写实验原理图.jpg

程序

#include <avr/eeprom.h>
#include "U8glib.h"
#define EEPROM_write(address, var) eeprom_write_block((const void *)&(var), (void *)(address), sizeof(var))
#define EEPROM_read(address, var) eeprom_read_block((void *)&(var), (const void *)(address), sizeof(var))

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);//定义OLED连接方式

// 定义一个包含 int 类别的 config_type 结构
struct config_type
{
  int num;
};


void draw() {
  // 1) 定义结构变量config,并定义config的内容
  config_type config;
  config.num = random(3000);//在0~3000里选定随机数
  // 2) 把变量config存储到EEPROM,从地址0开始写入。
  EEPROM_write(0, config);
  // 3) 从EEPROM地址0开始读取,结果存储在config_readback
  config_type config_readback;
  EEPROM_read(0, config_readback);
  u8g.setFont(u8g_font_unifont);//字体1
  u8g.drawStr( 0, 16, "Num:");
  u8g.setFont(u8g_font_7x13);//字体2
  u8g.setPrintPos(0, 32);
  u8g.print(config_readback.num);

}

void setup()
{

}

void loop()
{
  u8g.firstPage();  
  do {
    draw();
  } 
  while( u8g.nextPage() );
  
  delay(2000);//延迟两秒
  
}

函数说明:

EEPROMwrite(addr,data)函数用于在指定地址写入数据,addr表示要写入的地址,data表示要写入的数据

EEPROM_read(addr,data)函数用于在指定地址读出数据,addr表示要读出的地址,data表示要读出的数据

random(num)函数用于生成随机数,num用于指定生成随机数的范围

调试

步骤一:把代码复制到IDE中,编译

步骤二:运行代码

步骤三:查看Microduino-OLED显示

第三十五课-Microduino OLED显示EEPROM读写结果连接图.jpg


结果

Microduino-OLED将显示EEPROM读写结果,每两秒钟随机换数字

视频

http://v.youku.com/v_show/id_XNjgwODM2NTYw.html