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