Arduino与Proteus仿真实例-Arduino内置EEPROM数据存取驱动仿真

Arduino内置EEPROM数据存取驱动仿真

EEPROM(电可擦除可编程只读存储器)是用户可修改的只读存储器(ROM),可以通过施加高于正常电压的电压反复擦除和重新编程(写入)。 与 EPROM 芯片不同,EEPROM 不需要从计算机中取出即可进行修改。 但是,EEPROM 芯片必须整体擦除和重新编程,而不是选择性地擦除和重新编程。 它还具有有限的寿命——也就是说,它可以重新编程的次数被限制在数万或数十万次。 在计算机使用过程中经常重新编程的 EEPROM 中,EEPROM 的寿命可能是一个重要的设计考虑因素。

一种特殊形式的 EEPROM 是闪存,它使用正常的 PC 电压进行擦除和重新编程。

各种 Arduino 和 Genuino 板上支持的微控制器具有不同数量的 EEPROM:ATmega328P 上为 1024 字节,ATmega168 和 ATmega8 上为 512 字节,ATmega1280 和 ATmega2560 上为 4 KB(4096 字节)。 Arduino 和 Genuino 101 板具有 1024 字节的模拟 EEPROM 空间。

1、仿真电路原理图

在这里插入图片描述

2、仿真代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <EEPROM.h>

int readPin = 2;
int writePin = 3;
int counts = 1;
byte readState;
byte writeState;

void read\_interrupt(){
readState = 1;
}

void write\_interrupt(){
writeState = 1;
}

void setup(){
pinMode(readPin,INPUT);
pinMode(writePin,INPUT);
// 绑定按键中断
attachInterrupt(digitalPinToInterrupt(readPin),read_interrupt,RISING);
attachInterrupt(digitalPinToInterrupt(writePin),write_interrupt,RISING);

Serial.begin(9600);
}

void loop(){
if(readState){
int value = EEPROM.read(0); // 从地址0处读取一位数据
Serial.print("read:");
Serial.print(value);
Serial.println();
readState = 0;
}

if(writeState){
Serial.print("write:");
Serial.print(counts);
Serial.println();
EEPROM.write(0, counts); // 将一位数据写入到地址为0处
counts++;
writeState = 0;
}
}


3、仿真结果

在这里插入图片描述

文章来源: https://iotsmart.blog.csdn.net/article/details/121023666