ATMEL公司推出的帶有看門狗功能的單片機AT89C55WD帶有20K的程序存儲器,是8051系列中一款較為先進的產(chǎn)品,其看門狗功能可以大大提高產(chǎn)品的穩(wěn)定性,大容量的內(nèi)部程序存儲器可以容納功能豐富的軟件。
以往的許多無紙記錄儀均采用3.5英寸軟盤作為數(shù)據(jù)存貯介質(zhì),但軟盤存貯的可靠性差、存儲容量有限、成本較高等諸多缺點實在難以克服。
作為一種高科技的非易失性存儲設備,F(xiàn)LASH閃存首先在數(shù)碼相機、PDA、移動電話等數(shù)字產(chǎn)品當中得到了應用,隨著工藝的進步和價格的下降,逐步向其他應用領域擴展,其容量大、功耗低、速度快、不易受損等優(yōu)點正受到人們越來越多的青睞,而且最大的好處是,隨著技術水平的進步,F(xiàn)LASH閃存的容量也在不斷增加,目前已經(jīng)達到128M,而接口方式并沒有任何變化,這就避免了費時費力的重新設計。FLASH閃存分為插拔式和貼片式,目前國內(nèi)大部分廠家都采用貼片式即直接把FLASH閃存焊接于電路板上,這種應用方式就使FLASH閃存一旦焊好就無法更改和移動,而插拔式可以根據(jù)需要任意擴充并且攜帶方便,非常適合容量不確定和需要移動的應用?;谶@些原因,我們采用了插拔式FLASH閃存作為無紙記錄儀的存儲設備。
下面簡要介紹以C51為開發(fā)工具,以AT89C55WD單片機為核心,以插拔式FLASH閃存為存儲器的無紙記錄儀的設計和實現(xiàn)。
一、無紙記錄儀總體布局
無紙記錄儀所要實現(xiàn)的功能是這樣的:記錄儀有4個通道,每秒采樣1次,每個通道每次采樣需記錄兩個字節(jié),根據(jù)各個通道的轉儲速率(從1至255可設定),把采樣的數(shù)據(jù)寫入外部數(shù)據(jù)存儲器62256,一旦數(shù)據(jù)滿512字節(jié),就把512字節(jié)一次性寫入FLASH閃存中。
圖1:記錄儀總體功能圖
總體功能圖如圖1所示。
二、系統(tǒng)電路構成
無紙記錄儀電路由單片機AT89C55WD、液晶顯示電路、A/D采集電路、FLASH閃存存儲電路、時鐘電路和看門狗電路組成,下面簡要介紹各個組成部分。
1.單片機AT89C55WD及電路組成
AT89C55WD與MCS-51相兼容,可對內(nèi)核進行1000次的電擦寫,其電壓、電流和功耗都比較小,帶有20K的可重寫快閃存儲器和硬件看門狗定時器。
看門狗定時器是在系統(tǒng)軟件崩潰后進行恢復的一種方法,WDT由14位計數(shù)器和看門狗復位特殊功能寄存器(WDTRST SFR)組成,在缺省設置下,系統(tǒng)復位時即關閉。要使WDT有效,用戶必須向0A6H單元的WDTRST SFR順序寫入01EH和0E1H。當WDT有效,計數(shù)器每經(jīng)過一個機器周期后加1,除了硬件或WDT溢出復位,沒有任何方法可使WDT無效。當計數(shù)器溢出,WDT就在RST引腳產(chǎn)生一個復位的高脈沖。
要使WDT持續(xù)有效,就必須每隔一定時間往WDTRST寫入01EH和0E1H來避免WDT溢出。當WDT的14位計數(shù)器計數(shù)至16383(3FFFH)時,計數(shù)器便溢出,引起設備的復位。這就意味著用戶必須至少每16383個機器周期復位WDT一次。使WDT復位,必須向只寫寄存器WDTRST寫入01EH和0E1H。當WDT溢出時在RST引腳產(chǎn)生一個復位的高電平脈沖,持續(xù)時間為:98×TOSC ,TOSC=1/FOSC。為了充分利用WDT,在要求防止WDT溢出復位時,應每隔一定周期寫WDTRST一次。
單片機AT89C55WD通過P0口驅動液晶顯示器;通過T1輸出作為AD7715的采樣脈沖同時用P2.6引腳讀入AD7715的采樣數(shù)據(jù);因為FLASH的8根數(shù)據(jù)線與地址線是復用的,用單片機的P0口通過一片74ALS244及TC4010BP將電平轉化后與FLASH相連;用單片機的P2.4經(jīng)過74ALS32作為時鐘DS1305的脈沖輸入,INT0與時鐘的引腳6即INT0相連,這樣DS1305每秒產(chǎn)生中斷信號作為AD7715采樣的開始;通過把對時鐘DS1305的脈沖輸入作為看門狗X25045的輸入,通過P2.6向X25045寫入數(shù)據(jù)來實現(xiàn)看門狗功能。
2.液晶顯示電路
在記錄儀中使用HG16501點陣式液晶顯示器,其內(nèi)置有T6963C控制芯片,與單片機接口較為簡單。
3. A/D采集電路
A/D采集電路主要由AD7715構成,該芯片是串行輸入,三線接口,而4個通道的輸入則選用了HCF4051。
4.電平轉換電路
該電路主要是5V與3.3V之間的電平轉換電路,本設計采用三片TC4010BP來實現(xiàn)。
5.時鐘電路
系統(tǒng)時鐘采用串行時鐘芯片DS1305,并使用Motorola SPI工作方式。DS1305的INT0與單片機INT0直接相連,DS1305每秒產(chǎn)生中斷啟動AD7715進行采樣。
6.看門狗電路
系統(tǒng)防復位的看門狗電路由可編程的X25045來實現(xiàn),該芯片具有看門狗定時器、電壓監(jiān)控和EEPROM三種功能,這種組合降低了系統(tǒng)的成本并節(jié)省了電路板空間。
三、系統(tǒng)軟件部分
系統(tǒng)軟件采用C51語言與A51匯編語言混合編程,其中中斷采樣部分采用A51匯編語言來編寫。
1.編程語言
本系統(tǒng)采用Keil公司V6.10的C51編譯器。A51是一個有通用特性機用法的重定位宏匯編器,能很好地與INTEL公司的MASM51宏匯編兼容,支持模塊化編程,可以方便地與高級語言接口,但與MASM51還是有很大區(qū)別,主要是A51對許多MASM51的寄存器都不支持,這一點需要注意。
2.工作過程
系統(tǒng)上電,對時鐘、液晶顯示器HG16501、AD7715芯片初始化后,主程序處于循環(huán)檢測鍵盤的按鍵狀態(tài),并根據(jù)按鍵作相應處理,而采集部分是由CPU每秒產(chǎn)生中斷來執(zhí)行。四個通道采集后先向外部存儲器62256寫完512個字節(jié)后置寫入允許,主程序一發(fā)現(xiàn)寫入允許置位,就將這512字節(jié)的數(shù)據(jù)寫入FLASH閃存,同時把寫允許復位。 因為軟件是分級菜單結構,每進入下一級子菜單,都必須作同樣的事,時鐘讀并顯示,檢查寫FLASH閃存允許位是否置位,如置位,則把數(shù)據(jù)寫入FLASH閃存,所以把它單獨列為常規(guī)操作。
主程序和常規(guī)操作的流程圖比較簡單,故略去。
圖2:中斷采集流程圖
中斷采集流程圖如圖2所示。
四、C51及A51程序
整個系統(tǒng)軟件C51部分的源程序約70KB,中斷部分的A51源程序約7.1KB,兩部分編譯連接后產(chǎn)生的HEX文件將近16KB,僅用了20KB程序存儲器的五分之四,剩下的4K可留給將來添加新功能。
結束語
在研制無紙記錄儀的過程中,我們采用C51與A51混合編程進行軟件開發(fā),以FLASH閃存作為存儲器,不但軟件的功能豐富多了,而且由于存儲器穩(wěn)定可靠、便于攜帶,也方便了進一步的數(shù)據(jù)處理工作。