引言 MCS- 51單片機是目前國內應用最廣泛的一種單片機型。全球各單片機生產(chǎn)廠(chǎng)商在MCS-51內核基礎上,派生了大量的51內核系列單片機,極大地豐富了MCS- 51的種群。其中STC公司推出了STC89系列單片機,增加了大量新功能,提高了51的性能,是MCS-51家族中的佼佼者。早期的單片機控制系統,采用單片機加片外EEPROM配合,來(lái)存儲一些需要預置的重要參數,并在數碼管上顯示出來(lái)。由于單片機控制的整流器要求實(shí)時(shí)性很強,而早期EEPROM的寫(xiě)周期在10 ms左右,因此運行參數的預置是在整流器待機的情況下進(jìn)行的。而很多情況下需要在運行的同時(shí)記錄數據,如用單片機控制的12脈波汽車(chē)電泳整流器要求在運行的同時(shí)實(shí)時(shí)記錄重要數據,而且在掉電時(shí)不丟失。由于在12脈波整流器中運行的單片機程序,其周期必須小于1.67 ms(交流電網(wǎng)的1個(gè)周期是20 ms,除以12就是l_67 ms),這就要求實(shí)時(shí)記錄的時(shí)間在1ms以下甚至更短(考慮到程序的執行時(shí)間)。經(jīng)查閱資料發(fā)現,目前很多EEPROM達不到這個(gè)要求[1],即使時(shí)間最短的AT89S8252單片機片內。EEP-ROM的寫(xiě)周期也是2.5 ms。本文通過(guò)對EEPROM的巧妙應用,實(shí)現了整流器在線(xiàn)記錄數據的功能。 1 尋找符合要求的單片機 設備使用的是Atmel公司的AT89C52(40DIP封裝)單片機和EEPROM芯片2817A。要想在不改變原設備電路板的情況下完成要求的功能,就只能在兼容的MCS-51系列單片機中想辦法。AT89S8252片內含有2 KB的EEPROM,經(jīng)編程測試發(fā)現,它雖然能實(shí)時(shí)記錄數據并且斷電不丟失,但是在向片內EEPROM中記錄1個(gè)數據時(shí),能引起輸出電壓和電流的波動(dòng),不能滿(mǎn)足實(shí)際運行的需要。其原因是AT89S8252單片機片內EEPROM的寫(xiě)周期為2.5 ms,超過(guò)了1.67 ms的程序的執行周期,從而影響了程序的正常運行。所以執行周期是解決問(wèn)題的關(guān)鍵。 由參考文獻[2-3] 知:STC89C51RC/RD+系列單片機片內含有EEPROM(Data Flash),讀1個(gè)字節/編程1個(gè)字節/擦除1個(gè)扇區(512字節)的時(shí)間分別為10/μs/60μs/10 ms。編程1個(gè)字節的時(shí)間為60μs,遠小于A(yíng)T89S8252片內EEPROM 2.5 ms的編程時(shí)間,這為解決問(wèn)題提供了思路。 2 問(wèn)題的解決 單片機STC89C55RD+(40DIP封裝),其引腳、功能完全與AT89C52兼容,與MCS-51程序也兼容,片內含有20KB的Flash程序存儲器,16KB的EEPROM數據存儲器。把原用于A(yíng)T89C52中的程序寫(xiě)到STC89C255RD+中,放到原設備上運行,可長(cháng)期穩定地運行。經(jīng)修改的在整流器中運行的單片機程序,實(shí)時(shí)記錄一些數據到STC289C55RD+的EEPROM中,整流器可正常運行,但不能執行扇區擦除操作。執行扇區擦除操作將嚴重影響整流器的正常運行,引起輸出電壓和電流的很大波動(dòng)。執行扇區擦除操作時(shí),從示波器來(lái)看整流器的輸出間斷了20 ms,電壓電流顯示很大的波動(dòng)。用示波器捕捉到了EEPROM寫(xiě)時(shí)的波形,輸出波形暫停了20 ms,1個(gè)周波電壓,電壓波形如圖1所示,不執行扇區擦除操作時(shí)的波形如圖2所示。從圖中可以看出,問(wèn)題得到了很好的解決。 ![]() ![]() 究其原因,這與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)有字節擦除功能,只能扇區擦除。 3 EEPROM(Data FIash)的巧妙應用 基于以上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)。整流器工作后,按前述 ![]() ![]() 結語(yǔ) 結合上產(chǎn)的實(shí)際情況,在不改變原設備電路板的情況下,通過(guò)使用 MCS-51系列兼容單片機STC89C55RD+,巧妙利用其片內EEPROM,實(shí)現了在整流器運行的同時(shí)記錄數據的功能,切掉點(diǎn)情況下不丟失數據。這種方法有效地提高了原設備的功能,給用戶(hù)的使用到來(lái)了極大的方便,并且通過(guò)實(shí)驗驗證了此方法是可行的。 參考文獻 1. AT89S8252用戶(hù)手冊 2. 鄔偉奇 STC89 系列高性能單片機及其應用 [期刊論文] -微計算機信息2004(7) 3. 宏晶科技 STC89C51RC/RD+系列單片機用戶(hù)手冊 2006 4. 帶有鐵電隨機存取存儲器的高精度實(shí)時(shí)時(shí)鐘所具備的優(yōu)勢 [期刊論文] -國外電子元器件2007(10) 作者:保定萊特整流器制造有限公司 張志忠 華北電力大學(xué) 侯紀勇 秦皇島首鋼板材有限公司 崔娜 來(lái)源:?jiǎn)纹瑱C與嵌入式系統應用 2009 (4) |