李金娟
摘 要:文章介紹了基于亞龍YL-236實驗臺的32×16點陣顯示屏的硬件電路設計、電路驅動、軟件設計,實現滾動顯示16×16的漢字、8×16的數字、字母。具有結構簡單,可控性好,方便實現的優點,具有一定的實際價值。
關鍵詞:32×16點陣;74HC573;單片機
LED點陣顯示屏是一種簡單的漢字、數字、字母顯示器,具有價廉、易于控制、使用壽命長等特點,可廣泛應用于各種公共場合,如車站、碼頭、銀行、學校、火車、公共汽車顯示等。文章詳細介紹了一種簡單方便的32x16點陣LED顯示屏的設計過程。
1 硬件系統設計
亞龍YL-236實驗臺32列×16行的點陣顯示屏,由8個8×8行共陰點陣器組成。
一般說來,LED點陣顯示屏有行共陽和行共陰兩種類型,內部結構如圖1所示。
本顯示屏采用行共陰型LED顯示屏,采取縱向掃描(即橫向取模、字節倒序)、直接送橫向顯示碼的方式工作,基本顯示原理采用動態掃描顯示。分辨率為32X16的顯示屏由8個共陰型LED點陣單元構成。共陰型LED點陣單元(8X8)的結構示意圖如圖1(b),由行輸入高電平點亮(在行驅動上加了ULN2803)。
8個LED點陣單元級聯的電路原理,如圖2所示。U1、U2分別鎖存上半屏和下半屏數據,并由ULN2803反相緩沖驅動,U3-U6鎖存數據并直接驅動LED顯示。因為本顯示屏采用行共陰LED,而行數據經過ULN2803反相緩沖驅動,所以行數據和列數據都是高電平點亮。通過控制U1(或者U2)選擇上(或者下)半屏,通過控制U3-U6選擇列,來使得在任何時刻只有唯一的行導通以點亮該行,當行切換的速度足夠快時,由于人眼的視覺暫留現象,看上去整個屏都是亮的,這就是動態掃描的基本原理。
其實圖2已經構成一塊LED屏了,如果微處理器有足夠大的驅動能力和足夠多的I/O口,就可以直接驅動這塊LED屏了。但是為了能用AT89S52單片機來控制它,我們需要再加一些驅動電路和譯碼電路,以提供足夠的驅動能力以及簡化與單片機的連接。
行驅動電路使用兩片74HC573和兩片ULN2803,74HC573是比較常用的驅動芯片,當LE接高電平時,D端為輸入、Q端為輸出。
列掃描電路則利用了四片74HC573,U3、U4、U5、U6分別對應列0、列1、列2、列3屏。U3、U4、U5、U6的LE端為高電平,D端為輸入、Q端為輸出。
本系統采用AT89S52單片機作控制器,整個電路主要由單片機控制及其接口電路、驅動顯示電路、電源電路等部分組成。為了簡化顯示屏電路,降低成本,本系統在單片機部分不加字庫存儲器。而在PC機上編輯漢字和字符顯示信息形成數組,通過keil軟件編譯生成hex文件,然后通過ISP下載線下載給單片機存儲并進行顯示處理。
2 LED點陣顯示器的掃描驅動
LED顯示屏驅動電路的設計應與所用控制系統相配合。驅動通常分為動態掃描型及靜態鎖存型驅動二大類。文章選用動態掃描型驅動電路。動態掃描型驅動方式是首先選中上半屏,先后往第0塊、第1塊、第2塊、第3塊的點陣上送橫向取模字節倒序的數據,然后循環8次上半屏掃描完畢;再選中下半屏循環8次,這樣子16行全部掃描完畢。只要每行的刷新速率大于50Hz,利用人眼的視覺暫留效應,人們就可以看到一幅完整的文字或畫面。
編程過程中注意:
⑴向點陣發送數據時,首先將數據送總線D0-D7,然后給相關集成塊發送鎖存信號。當74HC573的LE(ROW0、ROW1、COL0、COL1、COL2、COL3)引腳為高電平時,D端數據被傳送到其輸出端Q。當LE為低電平,Q端數據被保持,不受D端影響。
⑵要點亮點陣LED,發送的行列數據都是高電平有效。
⑶行線數據是低位在上,列線數據是低位在前。
有兩種掃描方式,即橫向掃描和縱向掃描。掃描方式不同,取模的方式不同,字模數據不同,編程的方式也不同,結合具體的硬件電路還能夠看到,顯示的亮度不同。一般說來,結合亞龍YL-236實驗臺的點陣實際電路,選擇橫向取模,字節倒序,即縱向掃描的方式,這樣亮度更亮一些。
先來看一下8×8行共陰點陣的橫向掃描和縱向掃描方式,如圖3所示。行和列數據都是高電平點亮。
本程序中漢字是16×16點陣,按照從左到右從上到下橫向取模字節倒序的方式取模,取模過程如圖4所示,右高位。
圖4采用橫向取模,字節倒序的方式進行取模,結構上左到右從上到下。那么生產的字模的表格為:從第一行開始,取左側的8位,倒序讀,0x20;接著取第一行右側的8位,倒序讀,0x01;接著取第二行左側的8位,倒序讀,0x20;接著取第二行右側的8位,倒序讀,0x01;接著取第三行左側的8位,倒序讀,0x20;……
取模之后的編碼表如下:
//漢字字模表:北 //
// 漢字庫: 宋體16.dot 橫向取模右高位,數據排列:從左到右從上到下 //
/////////////////////////////////////////////////////////////////////////
unsigned char code tab[] = // 數據表
{
0x20,0x01,0x20,0x01,0x20,0x11,0x20,0x19,0x20,0x05,0x3E,0x03,0x20,0x01,0x20,0x01,
0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x38,0x41,0x27,0x41,0x22,0x7E,0x00,0x00,
};
3 軟件系統設計
為了便于同時顯示8×16的英文和16×16的漢字,把兩種字模數組都存入同一個數組,統一按16字節一行,英文占一行,漢字占兩行。同時,增加一個字符索引數組,以便查找它的字模。
索引字符串存到索引數組中,索引字符串中字符的序號與其在字模中的行號相同。查找一個字符在索引中的位置,就查到了相應字模行號。
本系統的軟件設計流程圖如圖5所示,該顯示程序以常用的左移為例來進行設計。
4 結語
經過實際應用證明,本顯示屏可以作為信息顯示裝置。用于公共場所來進行信息顯示,而且具有工作穩定、字符清晰、亮度適中等特點。若所顯示的信息較為簡單,也可直接將信息代碼拷入單片機中,還可以通過外擴儲存器的方式來增加顯示的信息量。
[參考文獻]
[1]雷林軍.單片機控制裝置安裝與調試[M].北京:電子工業出版社,2011.
[2]楊少光.單片機控制裝置安裝與調試備賽指導[M].北京:高等教育出版社,2010.