單片機片內大容量EEPROM的一種巧妙應用
本文引用地址:http://dyxdggzs.com/article/172734.htm
究其原因,這與EEPROM的特點(diǎn)有關(guān)。STC89C5lRC/RD+系列單片機片內的EEPROM,與普通的EEPROM不同。普通的EEPROM有字節讀/寫(xiě)功能,不需要擦除,在字節寫(xiě)的時(shí)候自動(dòng)擦除。而STC89C51RC/RD+系列單片機片內的EEPROM,具有Flash的特性,只能在擦除了扇區后進(jìn)行字節寫(xiě),寫(xiě)過(guò)的字節中不能重復寫(xiě),只有待扇區擦除后才能重新寫(xiě),而且沒(méi)有字節擦除功能,只能扇區擦除。
基于以上EEPROM(Data Flash)不易擦除的特點(diǎn),可以寫(xiě)后先不擦除。利用EEPROM(Data Flash)容易寫(xiě)、時(shí)間短(字節寫(xiě)只有60 μs)的特點(diǎn),可以充分利用其寫(xiě)的功能。根據汽車(chē)電泳整流器的特點(diǎn):每泳1輛汽車(chē),整流器的輸出電流就從0逐漸上升到最大電流,然后又逐漸回到0。從電流的變化可以準確地識別出電泳過(guò)的車(chē)的數量。每識別出1輛車(chē),就在EEPROM(Data Flash)的1個(gè)字節中(起始地址為0000H)寫(xiě)入#01H(也可以是其他數,但不能為#OFFH),然后地址自動(dòng)加1,等待識別出下一輛車(chē)。這樣就通過(guò)EEPROM(Data Flash)字節地址的方式,間接記錄了汽車(chē)電泳整流器電泳過(guò)的車(chē)輛總數,并可在數碼管上顯示出來(lái)。16 KB的EEPROM(Data Flash)可記錄16 384輛車(chē)。待將計滿(mǎn)時(shí),可按擦除按鈕擦除EEP-ROM(Data Flash)中的所有扇區,再重新計數。如按每10分鐘電泳1輛車(chē),1天工作16小時(shí),可連續記錄16 384/60/10×16)=170天。此種方法也可用于對電泳整流器連續工作時(shí)間的累計,如每10分鐘記錄1個(gè)數據,可連續記錄16 384/(60/10)=2 730小時(shí)。
整流器停機斷電后,每次開(kāi)機給單片機上電時(shí),在初始化程序中,首先從地址#0000H讀片內EEPROM的數據,如果數據不為#OFFH,地址自動(dòng)加1,再讀下一個(gè)字節,直到所讀數據為#OFFH為止。此時(shí)EEPROM的地址指針數據,即為前面累加的電泳車(chē)輛數(或累計電泳工作時(shí)間),可在數碼管上顯示出來(lái)。整流器工作后,按前述
評論