□李 瑋 陳 紅
隨著城市化的發展,高層建筑無論是從高度還是數量上都有著驚人的增長速度。縱觀我國的電梯發展歷程,電梯行業形成了一個從無到有,從有到多,從多到精的發展歷程。而作為電梯的顯示控制則是電梯內部組成不可或缺的一部分。現在的直行電梯種類很多,而其顯示屏類型大致有兩種,數碼管顯示和LED點陣屏;其顯示控制系統大多為單片機,只不過單片機種類不同。本文將仿真以AT89C51單片機為基礎驅動4個8*8的LED顯示屏組成的16*16大小的屏來完成16層電梯在升降運行中的基本顯示。
在實際應用過程中,電梯因當滿足的使用要求為:當按鍵按下,判斷當前樓層與被按下按鍵的樓層數(目標樓層)的具體位置,然后滾動顯示上(下)行樓層數、方向箭頭,并在到達目標樓層后停止。因此,實際電路應該由按鍵模塊、顯示模塊、控制模塊(即89C51單片機)三個模塊組成。其中按鍵模塊要實現16層的按鍵需求;顯示模塊要滿足兩位16層按鍵及方向箭頭的顯示;控制模塊則是要提供數據的輸入以及對按鍵、顯示屏的掃描。如圖1所示。

圖1 系統組成
本設計采用Proteus仿真軟件進行硬件電路設計,硬件電路部分主要由樓層選擇按鍵模塊、單片機核心控制模塊、數據傳輸及掃描模塊、LED點陣顯示屏等組成。電梯升降系統可以通過16個樓層選擇按鍵確定電梯樓層編號,單片機接收到樓層編號與當前所在樓層編號進行比對,確定電梯上升或下降,然后將上升或下降的樓層圖案通過數據傳輸及掃描模塊傳輸至LED點陣顯示屏上顯示。
系統的電梯顯示屏由4個8*8的LED點陣屏組成,具有行列各8個共16個管腳,通過動態掃描行列管腳從而實現單個LED芯片點亮,進而實現字符的顯示。而在對實際電路的應用分析時發現,使用4個8*8的LED點陣屏組合成16*16的顯示屏所需要的管腳過多,實際顯示過程中,16*16的顯示屏共有64個管腳,要完成全部的掃描,對于只有32個I/O口的51單片機并不現實,所以對于行列的掃描需要添加具有特定功能的擴展芯片。在該程序設計中選取了兩個74HC595(8位移位寄存器)與一個74HC154(4~16位譯碼器)來完成I/O口的擴展。電梯升降電路如圖2所示。第一,矩陣按鍵的設置取P1口作為矩陣按鍵的端口,其中P1.0~P1.4為列端口,P1.5~P1.7為行端口,并在其端口邊空白處進行矩陣按鍵的排布。第二,行數據輸出端,選取P0口作為其端口,行數據輸出端口只需要3個I/O口并選取P0.5、P0.6、P0.7;向點陣屏輸入需要16位的端口,采用兩個74HC595級聯的方式,將16位的信號輸入點陣屏。第三,選取P2端口作為列輸入與74HC154連接,其中P2.0~P2.3為數據輸入,P2.5為使能控制端;由于74HC154輸出為低電平,而向點陣屏輸入必須為高電平,因此在與點陣屏連接之前,必須要加反向器與上拉電阻。第四,點陣屏的排放以及管腳的選擇,根據程序要求,上半屏選取上半屏為同列(1~8列),下半屏同列(9~16列),左半屏同行(1~8行),右半屏同行(9~16行)。

圖2 電梯升降電路圖
(一)程序設計方案。當電梯通電時,電梯顯示屏點亮默認顯示為1層;有人下某層按鍵時電梯向該樓層方向移動(向上或向下,1層只能向上,16層只能向下),此時電梯顯示屏開始滾動顯示當前樓層數已經電梯運行方向;到達目標樓層時電梯停止運行,顯示當前樓層并等待響應下次按鍵,如此循環。

圖3 主程序流程圖
(二)程序流程圖。如圖3所示,16層高層建筑在顯示屏控制上需要16個按鍵控制,即1~16層的樓層按鍵。在軟件編寫中以矩陣式鍵盤的方式來編寫,將16個按鍵看成是4*4的矩陣按鍵,通過對該矩陣進行行列掃描的方式來確定被按下的按鍵具體是哪一個。這種方法的優點在于只需要占用8個I/O口就可以控制16個按鍵,減少了對I/O口的使用提高了硬件使用效率,并且4*4的矩陣按鍵恰好占用51單片機上一組I/O口。
在電梯升降過程中,LED顯示的畫面是通過滾動的形式進行樓層顯示的切換,整個滾動顯示函數塊的運行過程是:每次掃描一列,左右半屏同時輸入一行數據,共掃描15次,保持往復循環直到激勵信號,根據樓層位置向上(下)運行,此時開始每掃描一列,輸入的行數據就讀取原有數據的后(前)一行,顯示時就會表現出圖像整體上移(下移)一行;偏移8次后即顯示出上(下)一樓的樓層數此時加(減)1;如此循環至達到目標樓層后繼續保持當前數值的掃描直到下次激勵信號的到來。程序仿真的效果圖如圖4所示。

圖4 電梯升降顯示仿真圖
本文設計的程序是通過Proteus軟件進行仿真,經過軟硬件仿真實現預期的目標,實現了采用LED點陣顯示電梯升降的畫面,該程序在實際應用方面仍存在缺陷:在電梯運行過程中無法響應臨時出現的激勵信號,即在到達目標樓層之前無法改變目標。若想實現對突發信號的響應,需要在原有中斷的基礎上繼續添加二級中斷。