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