摘 要:提出了一種利用大容量FLASH存儲器存放樓層地址信息的漢字火災樓層顯示器。該設備通過解析火警控制器從CAN總線上發送來的火警信息,在漢字液晶上動態實時地顯示火警發生地點和報警類型。詳細介紹了火災報警系統中樓層顯示器的軟硬件組成。
關鍵詞:火災報警;CAN總線;樓層顯示器;FLASH;漢字液晶
Abstract: A Chinese fire indicator which used a large-capacity FLASH for floor address information is proposed. This device analyses information from fire alarm controller through CAN Bus, and displays occurent fire addresses and alarm types on Chinese LCD module dynamically and in real time. The software and hardware architecture of fire indicator is introduced in detail.
Keywords: Fire alarm; CAN Bus; Fire indicator; FLASH; Chinese LCD
1 引言
火災樓層顯示器作為火災自動報警系統的重要組成部分,是一種安裝在樓層或獨立防火區中的數字式火災報警顯示裝置。它通過報警總線與火災報警控制器相連,處理并顯示報警總線上的數據。火災樓層顯示器中的內置單片機將接收到的總線信息進行判斷、分析和處理,將報警的探測器地址編號轉換成相應的火警地點信息(例如房間號和房間類型等),連同火警類型一道通過液晶顯示出來,同時發出聲光報警信號,通知失火區域的人員。
目前國內現有的火災樓層顯示器大都以51單片機作為MCU。因為ROM尋址空間所限,火災樓層顯示器大都只能顯示火警所在樓層號和地址號,無法以直觀的漢字信息提示情況各異的具體火警地點。如果將漢字信息通過總線分發到各個樓層顯示器,巨大的通訊量又會給火警系統總線帶來沉重負荷,導致整個火警系統效率低下,延誤火警上報時機。本文提出了一種基于CAN總線的大容量漢字火災樓層顯示器,很好的解決了上述問題。
2 火災報警系統總體功能描述
火災報警控制系統中,中央火警控制器通過CAN總線和各個單元進行實時通訊并完成各項控制和報警功能。單元是火災探測器、手動報警按鈕、輸入輸出模塊、樓層顯示器等設備的總稱。它們是系統終端,直接探測火災信號,并通過通道上報給控制器,同時接收由各種通道轉發控制器給單元的聯動信息(啟動輸入輸出模塊控制的滅火裝置)、顯示信息(樓層顯示器顯示火災信息)等。通道是回路模塊、轉接模塊和總線控制盤等設備的總稱。它們是控制設備和終端的通道,是拓撲網絡構成的中繼設備。火災報警控制系統的總體結構和樓層顯示器在系統的中的位置如圖1所示。
[align=center]

圖1 火災報警控制系統結構及樓層顯示器所在位置顯示[/align]
3 系統功能及硬件描述
3.1 漢字樓層顯示器硬件設計方案
如圖2所示,漢字樓層顯示器包括單片機及其外圍電路,CAN總線模塊, FLASH存儲器,漢字液晶模塊,UART接口,以及燈和按鍵,蜂鳴器。單片機可通過UART接收PC上傳下來的漢字信息,存儲到FLASH中作為地址信息的查詢數據庫。通過CAN控制器MCP2510和CAN總線驅動器PCA82C250組成的CAN通信模塊和火災報警控制器進行CAN總線通信。如果有火警發生,單片機將記錄火警信息,查詢FLASH得到火警發生的漢字地址信息,并在漢字液晶上滾動顯示火警和信息查詢結果。同時,發生火警時還可通過查詢鍵快速查詢火警信息,通過蜂鳴器報警,通過消音鍵消音,并點亮發光二極管報警。未發生火警時,通過自檢鍵自檢可以檢查各個功能是否能正常工作。
[align=center]

圖2 漢字樓層顯示器結構框圖[/align]
3.2 FLASH存儲器電路設計
FLASH選用的SST29SF040是SST公司推出的高速可編程閃存。它符合JEDEC標準,具有512K×8 Bits的存儲結構;芯片擦除及寫入的時間快,整片擦除只需70毫秒,段擦除只需18毫秒,字編程寫入時間僅為14微秒;可靠性高,能夠重復寫100,000次,數據可以保存100年不丟失。
SST29SF040的容量是512K Bytes,而51系列單片機的ROM直接尋址范圍是64K Bytes,如果不加以處理而直接使用,將會浪費大量的存儲空間。我們使用了一種分頁存儲方式,使得FLASH存儲空間得以充分利用,大大擴充了單片機ROM尋址范圍。按照每條漢字信息占用32個Bytes計算,理論上可以最大存儲16384條火警地址信息,足以應付絕大多數復雜的工程環境。圖3為存儲器電路,最高位地址線A16-A18接單片機的P1.0-P1.2,因而FLASH存儲器實現了8頁,每頁64K的外部存儲結構。在每次讀寫FLASH時,將P1.0-P1.2賦不同的值即可實現不同的頁選。假設page為待選取的頁號變量(0-7),在Keil Cx51中通過下列語句即可實現讀寫前的選頁操作:P1 = (P1 & 0xf8) | page;
[align=center]

圖3 FLASH存儲器分頁存儲電路[/align]
3.3漢字液晶顯示模塊設計
我們選用金鵬電子公司的OJM2*8A漢字液晶模塊作為顯示設備。OJM2*8A中文液晶顯示模塊內含GB 2312的15*15點陣國標一、二級簡體漢字和 8*8點陣及8*16點陣ASCII字符,用戶輸入GB2312區位碼或ASCII碼即可實現文本顯示。每個漢字的區位碼只占用兩個字節,是原來漢字點陣所需存儲單元的1/16。
漢字液晶模塊接口協議為請求/應答(REQ/BUSY)握手方式。應答BUSY高電平(BUSY =1)表示液晶模塊忙于內部處理,不能接收用戶命令;BUSY低電平(BUSY =0)表示液晶模塊空閑,等待接收用戶命令。發送命令到液晶模塊可在BUSY =0后的任意時刻開始,先把用戶命令的當前字節放到數據線上,接著發高電平REQ信號(REQ =1)通知液晶模塊處理當前數據線上的命令或數據。液晶模塊在收到外部REQ高電平信號后立即讀取數據線上的命令或數據,同時將應答線BUSY 變為高電平,表明模塊已收到數據并正在忙于對此數據的內部處理。此時用戶對模塊的寫操作已經完成,用戶可以撤消數據線上的信號并可作模塊顯示以外的其他工作,也可不斷地查詢應答線BUSY是否為低(BUSY=0 ?),如果BUSY=0,表明模塊對用戶的寫操作已經執行完畢,可以再送下一個數據。如向模塊發出一個完整的顯示漢字的命令,包括坐標及漢字代碼在內共需5個字節。模塊在接收到最后一個字節后才開始執行整個命令的內部操作,因此最后一個字節的應答BUSY 高電平(BUSY =1)持續時間較長。對液晶模塊寫漢字時序圖如圖4所示。
[align=center]

圖4 對液晶模塊寫漢字時序圖[/align]
3.4 CAN總線通訊模塊設計
我們選擇Microchip公司的MCP2510CAN控制器和Philips公司的PCA82C250CAN收發器構建CAN總線通訊模塊。MCP2510支持CAN2.0A/B協議,可接收和發送2.0協議下的標準幀、擴展幀和遠程幀。MCP2510擁有三個發送緩沖區和兩個接收緩沖區,可以進行接收濾波和消息管理,防止過度發送和過度接收形成擁塞。其最大的優點是擁有傳輸速率可達5Mb/S的SPI端口,節省MCU端口,提高通信速度。Philips公司的82C250CAN總線收發器可與MPC2510無縫連接,它有高速模式,斜率控制模式和延時模式。經過多次的實驗證實其工作在斜率控制模式下最為穩定,速度也能構滿足系統10Kbps的傳輸速率。
[align=center]

圖5 CAN總線通信電路[/align]
CAN總線通訊模塊電路如圖5所示,單片機通過I/O口直接和MCP2510的SPI口相連,用軟件模擬實現SPI接口協議。PCA82C250作為MCP2510與物理CAN總線的接口。如果需要進一步提高系統的抗干擾能力,可在MCP2510和PCA82C250之間加一個光電隔離器。
4 系統軟件設計
漢字樓層顯示器軟件功能主要是1.將串口發送下來的漢字信息文件寫入FLASH存儲。2.和火災報警控制器進行CAN通信,如果發現有火警信息,則查找FLASH中的漢字地址信息,予以顯示在漢字液晶上報警,如有多條火警信息,則滾動顯示各條信息。
[align=center]

圖6 漢字樓層顯示器軟件流程圖[/align]
圖6是漢字樓層顯示器軟件流程圖。用page(值為0-7)表示讀寫的FLASH頁,用count(值為0-65535)表示每頁頁內地址。其中page0-page6用來存儲通過串口下載的漢字信息,page7用來存儲接收到的火警等動態信息。一旦接收到新火警,即查詢FLASH中相應的漢字信息,并在液晶上滾動顯示。
為了快速定位所查詢的火警漢字地址信息,我們采用數組結構存儲。盡管這樣會因為實際火警地址不等長,而造成存儲中出現一些空地址,存儲效率不高,但是由于我們對數組的查找是一種可以直接定位的快速查找,不用采用鏈表之類的復雜數據結構,也避免了二分檢索之類復雜的搜索算法。對于單片機而言,實質上是以比較小的空間為代價換來了比較高的時間效率,還是十分值得的。
5 結語
本文提出的基于CAN總線的大容量漢字火災樓層顯示器,較好的解決了現有火災樓層顯示器的缺陷。對大于51單片機ROM 64K尋址空間的數據存儲需求,采取分頁存儲的訪問方式可以很好的解決這個問題。通過在FLASH中存儲大容量數據信息,可以避免因為CAN總線上通訊數據流量過大而導致火警不能及時傳達,延誤報警時機。而且FLASH中的漢字信息可以通過串口在線擦寫,便于現場調試。目前產品已經投入實用,用戶反應運行良好。
參考文獻
[1] 朱明,王殊. 一種基于CAN總線的大型火災報警系統下位網絡的設計與實現. 消防技術與產品信息,2003,(12):5~8
[2] 王立峰,王曉平,耿慶波,彭熙偉. 基于CAN總線的客房通信控制器的設計.微計算機信息,2005,(16):3~7
[3] 徐愛鈞,彭秀華編著. Keil Cx51 V7.0單片機高級語言編程與uVision2應用實踐. 電子工業出版社,2004