LED顯示屏是由發光二極管構成的顯示點陣,人們通過控制每個LED的亮滅實現圖形或字符的顯示。由于LED顯示屏亮度高、視角廣、工作電壓低、功耗小、壽命長、耐沖擊、性能穩定,因而被廣泛應用于機場、商場、醫院、賓館、證券市場等公共場所。本文以單片機為控制核心設計和制作了一種漢字顯示系統,其成本低廉,內容更新簡便。
1.顯示原理
1.1LED點陣顯示屏
將多個LED按矩陣方式排列在一起,如圖1所示,就構成了一個LED點陣顯示屏。其中各個LED引腳按照一定的規律連接,以最常見的8*8單色LED點陣共陽型顯示器為例,其內部電路結構和外形規格如圖1所示。
16*16單色LED點陣顯示屏可由4塊8*8單色LED點陣顯示器組合而成,即16行16列,16*16=256像素。如果采用共陽型連接方式,即每行的LED陽極連接在一起,每列的LED陰極連接在一起
1.2顯示原理
對于共陽型LED點陣顯示屏,如果采用動態掃描方式,掃描電路就可以實現多行發光二極管的同名列共用一套驅動器。動態掃描,簡單說就是逐行輪流點亮。具體以8*8點陣模塊為例顯示字符“B”的過程如圖2所示。即先送出對應于第一行發光二極管亮滅的數據0FFH并鎖存,然后選通第一行,即送行數據80H,延時一段時間后,送行數據00H,第一幀顯示結束;再送第二行的列數據87H并鎖存,然后選通第二行,即送行數據40H點亮相同時間后,送行數據00H,相應二極管熄滅,第二幀顯示結束;以此類推第8行顯示之后,又重新點亮第一行,周而復始。當這樣輪回的速度足夠快(每秒24次以上)時,就能看到顯示屏上穩定的字符B了。上述列數據即為字符B了。上述列數據即為字符B的字模數據。
1.3漢字字模的生成
由于要顯示內容的不確定性,漢字字模的生成僅靠用戶自己構建是不可能的。如果依靠單片機完成字模的創建和顯示控制,則由于單片機運算能力有限,是無法實現漢字的選定和實時顯示。為此利用PC機和相關軟件,于先生成所要顯示漢字的字模。
通常可以利用UCDOS的漢字庫構造需要顯示的漢字字模。在UCDOS漢字庫中漢字均以行字模的形式存儲,只要確定了漢字在字庫中的位置和行字模的長度,就可以將需要漢字的行字模讀出。漢字在字庫中的位置可以通過漢字的機內碼根據如下公式加以確定:
采用PCtoLCD2002字模軟件。可以方便的生成字模數據,如圖3所示。將生成的字模數據復制到系統源程序中。
2系統硬件電路設計
圖4給出的是可以顯示一個16*16漢字系統的框圖。系統由AT89C51為主控芯片,顯示屏由4塊8*8LED共陰連接組成,其列驅動電路由2片74HC595構成,擴展為具有鎖存、串并移位和三態輸出的16位移位寄存器,字模數據由此輸出;行驅動電路由1片4-16線譯碼器74HC154構成,從DCBA輸入增量數據,將輸出逐行掃描信號。K1、K2、K3為顯示方式控制鍵,按鍵選擇可實現LED點陣顯示屏卷簾、上移、左移等顯示輸出。該系統在Proteus軟件環境下仿真獲得良好的顯示效果。
3系統軟件設計
3.1主程序流程圖
系統主程序開始以后首先是對系統環境初始化,包括設置串口、定時器、中斷和端口。然后進行鍵盤掃描,如果K1鍵按下字符左移輸出。主程序流程見圖5所示。
3.2顯示驅動程序
顯示驅動程序查詢當前亮點的行號,從顯示緩存區內讀取下一行的顯示數據,并通過串口發送給移位寄存器。為消除在切換行顯示數據的時候產生拖尾現象,在中斷程序中,驅動程序先要關閉顯示屏,等顯示數據打入輸出鎖存器后,然后再輸入新的行選通信號,重新打開顯示。顯示驅動程序如下:
4結束語
本設計以AT89C51為系統的控制核心,采用動態掃描的方法實現對16*16LED點陣顯示屏的控制。該系統通過仿真和實物制作,均獲得良好的顯示效果,證明這種方案是可行的,而且具有體積小、硬件電路結構簡單和容易實現等特點。但也存在更換顯示內容時需要對AT89C51進行重新編程的問題,如果增加ISP編程電路,可通過USB下載電纜對單片機程序數據進行及時更新。