用51单片机和EEPROM如何写掉电存储c程序

比如当数码管从0到9变化,变化到5时,突然断电,上电之后仍然从5开始变化... 比如当数码管从0到9变化,变化到5时,突然断电,上电之后仍然从5开始变化 展开
 我来答
雨雪随行
2011-08-15 · TA获得超过247个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:116万
展开全部

简单的方式:变化一次写一次,无论是否掉电,再次上电先读eeprom

复杂的方式

按照如图连接,要求是单片机必须有掉电检测功能

意法半导体(中国)投资有限公司
2021-01-14 广告
可以写对它写程序,让它听从你的安排,你让它实现什么功能它就能实现,比如电子钟、电子琴、打印机、手机、电梯控制,智能家具如:空调、冰箱、洗衣机等,如果这些家电没有它,什么都不能工作。单片机内部很复杂,你研究的越深你就会越爱上它,它可以帮你实现... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
匿名用户
2011-08-16
展开全部
直接存储是不行的,单片机本身的RAM是掉电就没有的。一般使用EEPROM,常用的有24c01等,采用I2C协议进行读写数据,怎么使用这类芯片的程序网上搜一下能搜出几吨来。可以自己搜索一下,由于你使用的51单片机,可以直接用IO口来模拟I2C协议,很简单的。
需要注意的一点就是,要注意E2P芯片的寿命(一般是读写100万次,足够了)。
存储数据的时候,可以对操作数和存储的数据进行比较,不相等则存储,比如:
if (ReadI2c()!=data)

这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。
碰到要存储的是时间的时候,并且是每秒钟存的话,由于寿命的原因,则要另外想办法,常用的有:
1.在掉电瞬间的时候去存储数据,这种方法要硬件上给予检测电路来告知现在掉电了,然后程序就对时间进行存储,这种方法的弊端是“必须要有检测电路”。
2.考虑到上述的问题,可以开辟多块空间来存储“时间”,每次上电依次使用不同的空间,但是为了要有“使用哪一块的判断条件”,所以必须再多一个空间存储“判断”:每次程序开始,将“判断++”,然后根据其来决定使用哪一块的“时间空间”。
/*************************************************************/
希望能有帮助,上述是对掉电记忆来讲比较不错的的方法了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a3795a7
2011-08-15 · TA获得超过513个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:187万
展开全部
这不是单单软件能解决的,首先硬件上需要电池供电(备用);
当主电源掉电后,需要一路AD之类的监视主电源,监视到掉电情况,数据记入EEPROM;
如果是工业话系统,之后应该进入睡眠的省电模式,等到主电源恢复的时候唤醒;
如果仅仅试验性质可以跳过上步。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友00c59a2
2011-08-15 · 超过31用户采纳过TA的回答
知道答主
回答量:185
采纳率:0%
帮助的人:72.8万
展开全部
数据变化一次就把值写到e2prom中,下次开机直接先读e2prom中的值。。就可以了啊。。
追问
就是不知道怎么写这程序啊?
追答
是说存取e2prom数据的程序?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海滩之love
2011-08-15
知道答主
回答量:17
采纳率:0%
帮助的人:7.7万
展开全部
这个问题不是简单就能说明白的,这里涉及到一个I2总线协议,是关于如何使用串行存储器的介绍,有一些存储器的读写时序,建议先了解一个这个协议。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式