1 引言 火災樓層顯示器作為火災自動(dòng)報警系統的重要組成部分,是一種安裝在樓層或獨立防火區中的數字式火災報警顯示裝置。它通過(guò)報警總線(xiàn)與火災報警控制器相連,處理并顯示報警總線(xiàn)上的數據;馂臉菍语@示器中的內置單片機將接收到的總線(xiàn)信息進(jìn)行判斷、分析和處理,將報警的探測器地址編號轉換成相應的火警地點(diǎn)信息(例如房間號和房間類(lèi)型等),連同火警類(lèi)型一道通過(guò)液晶顯示出來(lái),同時(shí)發(fā)出聲光報警信號,通知失火區域的人員。 目前國內現有的火災樓層顯示器大都以51單片機作為MCU。因為ROM尋址空間所限,火災樓層顯示器大都只能顯示火警所在樓層號和地址號,無(wú)法以直觀(guān)的漢字信息提示情況各異的具體火警地點(diǎn)。如果將漢字信息通過(guò)總線(xiàn)分發(fā)到各個(gè)樓層顯示器,巨大的通訊量又會(huì )給火警系統總線(xiàn)帶來(lái)沉重負荷,導致整個(gè)火警系統效率低下,延誤火警上報時(shí)機。本文提出了一種基于CAN總線(xiàn)的大容量漢字火災樓層顯示器,很好的解決了上述問(wèn)題。 2 火災報警系統總體功能描述 火災報警控制系統中,中央火警控制器通過(guò)CAN總線(xiàn)和各個(gè)單元進(jìn)行實(shí)時(shí)通訊并完成各項控制和報警功能。單元是火災探測器、手動(dòng)報警按鈕、輸入輸出模塊、樓層顯示器等設備的總稱(chēng)。它們是系統終端,直接探測火災信號,并通過(guò)通道上報給控制器,同時(shí)接收由各種通道轉發(fā)控制器給單元的聯(lián)動(dòng)信息(啟動(dòng)輸入輸出模塊控制的滅火裝置)、顯示信息(樓層顯示器顯示火災信息)等。通道是回路模塊、轉接模塊和總線(xiàn)控制盤(pán)等設備的總稱(chēng)。它們是控制設備和終端的通道,是拓撲網(wǎng)絡(luò )構成的中繼設備;馂膱缶刂葡到y的總體結構和樓層顯示器在系統的中的位置如圖1所示。 圖1火災報警控制系統結構及樓層顯示器所在位置顯示 3 系統功能及硬件描述 3.1 漢字樓層顯示器硬件設計方案 如圖2所示,漢字樓層顯示器包括單片機及其外圍電路,CAN總線(xiàn)模塊,FLASH存儲器,漢字液晶模塊,UART接口,以及燈和按鍵,蜂鳴器。單片機可通過(guò)UART接收PC上傳下來(lái)的漢字信息,存儲到FLASH中作為地址信息的查詢(xún)數據庫。通過(guò)CAN控制器MCP2510和CAN總線(xiàn)驅動(dòng)器PCA82C250組成的CAN通信模塊和火災報警控制器進(jìn)行CAN總線(xiàn)通信。如果有火警發(fā)生,單片機將記錄火警信息,查詢(xún)FLASH得到火警發(fā)生的漢字地址信息,并在漢字液晶上滾動(dòng)顯示火警和信息查詢(xún)結果。同時(shí),發(fā)生火警時(shí)還可通過(guò)查詢(xún)鍵快速查詢(xún)火警信息,通過(guò)蜂鳴器報警,通過(guò)消音鍵消音,并點(diǎn)亮發(fā)光二極管報警。未發(fā)生火警時(shí),通過(guò)自檢鍵自檢可以檢查各個(gè)功能是否能正常工作。 圖2漢字樓層顯示器結構框圖 3.2FLASH存儲器電路設計 FLASH選用的SST29SF040是SST公司推出的高速可編程閃存。它符合JEDEC標準,具有512K×8Bits的存儲結構;芯片擦除及寫(xiě)入的時(shí)間快,整片擦除只需70毫秒,段擦除只需18毫秒,字編程寫(xiě)入時(shí)間僅為14微秒;可靠性高,能夠重復寫(xiě)100,000次,數據可以保存100年不丟失。 SST29SF040的容量是512KBytes,而51系列單片機的ROM直接尋址范圍是64KBytes,如果不加以處理而直接使用,將會(huì )浪費大量的存儲空間。我們使用了一種分頁(yè)存儲方式,使得FLASH存儲空間得以充分利用,大大擴充了單片機ROM尋址范圍。按照每條漢字信息占用32個(gè)Bytes計算,理論上可以最大存儲16384條火警地址信息,足以應付絕大多數復雜的工程環(huán)境。圖3為存儲器電路,最高位地址線(xiàn)A16-A18接單片機的P1.0-P1.2,因而FLASH存儲器實(shí)現了8頁(yè),每頁(yè)64K的外部存儲結構。在每次讀寫(xiě)FLASH時(shí),將P1.0-P1.2賦不同的值即可實(shí)現不同的頁(yè)選。假設page為待選取的頁(yè)號變量(0-7),在KeilCx51中通過(guò)下列語(yǔ)句即可實(shí)現讀寫(xiě)前的選頁(yè)操作:P1=(P1&0xf8)|page; 圖3FLASH存儲器分頁(yè)存儲電路 3.3 漢字液晶顯示模塊設計 我們選用金鵬電子公司的OJM2*8A漢字液晶模塊作為顯示設備。OJM2*8A中文液晶顯示模塊內含GB2312的15*15點(diǎn)陣國標一、二級簡(jiǎn)體漢字和8*8點(diǎn)陣及8*16點(diǎn)陣ASCII字符,用戶(hù)輸入GB2312區位碼或ASCII碼即可實(shí)現文本顯示。每個(gè)漢字的區位碼只占用兩個(gè)字節,是原來(lái)漢字點(diǎn)陣所需存儲單元的1/16。 漢字液晶模塊接口協(xié)議為請求/應答(REQ/BUSY)握手方式。應答BUSY高電平(BUSY=1)表示液晶模塊忙于內部處理,不能接收用戶(hù)命令;BUSY低電平(BUSY=0)表示液晶模塊空閑,等待接收用戶(hù)命令。發(fā)送命令到液晶模塊可在BUSY=0后的任意時(shí)刻開(kāi)始,先把用戶(hù)命令的當前字節放到數據線(xiàn)上,接著(zhù)發(fā)高電平REQ信號(REQ=1)通知液晶模塊處理當前數據線(xiàn)上的命令或數據。液晶模塊在收到外部REQ高電平信號后立即讀取數據線(xiàn)上的命令或數據,同時(shí)將應答線(xiàn)BUSY變?yōu)楦唠娖,表明模塊已收到數據并正在忙于對此數據的內部處理。此時(shí)用戶(hù)對模塊的寫(xiě)操作已經(jīng)完成,用戶(hù)可以撤消數據線(xiàn)上的信號并可作模塊顯示以外的其他工作,也可不斷地查詢(xún)應答線(xiàn)BUSY是否為低(BUSY=0?),如果BUSY=0,表明模塊對用戶(hù)的寫(xiě)操作已經(jīng)執行完畢,可以再送下一個(gè)數據。如向模塊發(fā)出一個(gè)完整的顯示漢字的命令,包括坐標及漢字代碼在內共需5個(gè)字節。模塊在接收到最后一個(gè)字節后才開(kāi)始執行整個(gè)命令的內部操作,因此最后一個(gè)字節的應答BUSY高電平(BUSY=1)持續時(shí)間較長(cháng)。對液晶模塊寫(xiě)漢字時(shí)序圖如圖4所示。 圖4對液晶模塊寫(xiě)漢字時(shí)序圖 3.4CAN總線(xiàn)通訊模塊設計 我們選擇Microchip公司的MCP2510CAN控制器和Philips公司的PCA82C250CAN收發(fā)器構建CAN總線(xiàn)通訊模塊。MCP2510支持CAN2.0A/B協(xié)議,可接收和發(fā)送2.0協(xié)議下的標準幀、擴展幀和遠程幀。MCP2510擁有三個(gè)發(fā)送緩沖區和兩個(gè)接收緩沖區,可以進(jìn)行接收濾波和消息管理,防止過(guò)度發(fā)送和過(guò)度接收形成擁塞。其最大的優(yōu)點(diǎn)是擁有傳輸速率可達5Mb/S的SPI端口,節省MCU端口,提高通信速度。Philips公司的82C250CAN總線(xiàn)收發(fā)器可與MPC2510無(wú)縫連接,它有高速模式,斜率控制模式和延時(shí)模式。經(jīng)過(guò)多次的實(shí)驗證實(shí)其工作在斜率控制模式下最為穩定,速度也能構滿(mǎn)足系統10Kbps的傳輸速率。 圖5CAN總線(xiàn)通信電路 CAN總線(xiàn)通訊模塊電路如圖5所示,單片機通過(guò)I/O口直接和MCP2510的SPI口相連,用軟件模擬實(shí)現SPI接口協(xié)議。PCA82C250作為MCP2510與物理CAN總線(xiàn)的接口。如果需要進(jìn)一步提高系統的抗干擾能力,可在MCP2510和PCA82C250之間加一個(gè)光電隔離器。 4 系統軟件設計 漢字樓層顯示器軟件功能主要是1.將串口發(fā)送下來(lái)的漢字信息文件寫(xiě)入FLASH存儲。2.和火災報警控制器進(jìn)行CAN通信,如果發(fā)現有火警信息,則查找FLASH中的漢字地址信息,予以顯示在漢字液晶上報警,如有多條火警信息,則滾動(dòng)顯示各條信息。 圖6漢字樓層顯示器軟件流程圖 圖6是漢字樓層顯示器軟件流程圖。用page(值為0-7)表示讀寫(xiě)的FLASH頁(yè),用count(值為0-65535)表示每頁(yè)頁(yè)內地址。其中page0-page6用來(lái)存儲通過(guò)串口下載的漢字信息,page7用來(lái)存儲接收到的火警等動(dòng)態(tài)信息。一旦接收到新火警,即查詢(xún)FLASH中相應的漢字信息,并在液晶上滾動(dòng)顯示。 為了快速定位所查詢(xún)的火警漢字地址信息,我們采用數組結構存儲。盡管這樣會(huì )因為實(shí)際火警地址不等長(cháng),而造成存儲中出現一些空地址,存儲效率不高,但是由于我們對數組的查找是一種可以直接定位的快速查找,不用采用鏈表之類(lèi)的復雜數據結構,也避免了二分檢索之類(lèi)復雜的搜索算法。對于單片機而言,實(shí)質(zhì)上是以比較小的空間為代價(jià)換來(lái)了比較高的時(shí)間效率,還是十分值得的。 5 結語(yǔ) 本文提出的基于CAN總線(xiàn)的大容量漢字火災樓層顯示器,較好的解決了現有火災樓層顯示器的缺陷。對大于51單片機ROM64K尋址空間的數據存儲需求,采取分頁(yè)存儲的訪(fǎng)問(wèn)方式可以很好的解決這個(gè)問(wèn)題。通過(guò)在FLASH中存儲大容量數據信息,可以避免因為CAN總線(xiàn)上通訊數據流量過(guò)大而導致火警不能及時(shí)傳達,延誤報警時(shí)機。而且FLASH中的漢字信息可以通過(guò)串口在線(xiàn)擦寫(xiě),便于現場(chǎng)調試。目前產(chǎn)品已經(jīng)投入實(shí)用,用戶(hù)反應運行良好。 |