首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

51单片机内部EEPROM使用求教

2012-08-11 
51单片机内部EEPROM应用求教!本人写一程序,数据存储于内部EEPROM中,同时程序有数码管显示功能!问题来了,每

51单片机内部EEPROM应用求教!
本人写一程序,数据存储于内部EEPROM中,同时程序有数码管显示功能!
问题来了,每当数据写入内部EEPROM中时,数码管就闪烁一下!说明擦写内部EEPROM所花时间太长了!数据手册上也说需要很长的时间!!!虽然内部EEPROM比外部的快,但是MCU在擦写内部EEPROM时却不能做别的事,反而让人觉得比外部EEPROM更慢!
请问大家有遇到过同样的问题吗!?大家时如何解决的呢!?

[解决办法]
擦写一次也就20多ms 
应该不会闪烁的吧!

以前写着玩的时候写,试过空等待50MS的间隔都不会有闪烁!

是不是你的程序哪里出问题了,
或者选择数码管余晖时间较长的类型
或者数码管带控制器的.
[解决办法]
"数码管动态显示"靠的是扫描,如果数码管能改成静态显示也可以解决。
一般键盘控制都带数码管显示控制,如周立功的芯片。
[解决办法]
应该是你程序的问题,我用AVR做的,没发现有闪烁的现象出现。还有你可以试试在擦鞋eeprom时把数码管位选关掉,应该就不闪了
[解决办法]
数据手册上写明了.

大建议:
1 . 同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区, 就不须读出保护。
2.如果一个扇区只用一个字节,那就是真正的EEPROM,STC 单片机的Data Flash 比外部EEPROM 要快很多,
读一个字节/ 编程一个字节大概是0.2uS/60uS。
3. 如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不
需要修改的数据须先读出放在STC 单片机的RAM 中,然后擦除整个扇区,再将需要保留的数据和需修改的
数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便(不需读出一大堆需保留数据)。

大约估算下
就算是改写整个扇区,也就 不到 40-50MS
如果需要改写少量数据,那也就 20多MS

你先写一个确保
空闲时间50MS以上的测试程序,
确保这测试程序不闪烁再说吧!
 
八成是你的显示程序子模块出问题!
[解决办法]
那你是否方便把相关的显示模块贴出来看看!
最好连相关的引脚电气定义标识一下!

你看看这样行不行:

main(){
while(1)
等待50MS();
}

display() int
{
显示();//每位3-20MS时间,时间越长,相对越亮.
}

////////////////////////////////
不闪烁就是根据视觉暂留,余晖效应处理的.

你也可以把擦除,和改写分开处理,减少EEPROM擦写连续占用CPU时间.
但这样,程序稍微复杂点.!

热点排行