李志強 郭麒 肖尊興 陳海明
(衡陽師范學院,湖南 衡陽 421008)
LED點陣顯示屏是由一系列發光二極管排列組合而成的點陣,根據字形控制點陣屏局部發光完成字母、數字和漢字顯示。LED屏的顯示多采用計算機控制,目前生產廠家提供的LED屏控制系統都是通過控制LED屏來顯示各種數據的。由于數據種類的多樣混雜,數據不能以一種穩定格式進行保存。本文所介紹的顯示方法用到的系統雖也是控制LED屏顯示的軟件,但它是采用表格數據庫保存數據,將表格數據庫和LED屏顯示直接連接起來,讓LED屏顯示表格數據庫中的內容,從而解決LED屏不能統一管理數據顯示的問題,也使得各種文字信息的公布變得更加方便。
顯示中,我們需用到現行計算機通用的字庫字模,一個字的點陣分為 16×16、24×24、32×32和48×48等不同規格。一個LED顯示屏成品主要由控制卡和單元板兩部分組成。組裝LED屏時,必須先確定接口的一致性,才方便組裝。如果接口不一致,需自行制作轉換線。
在系統中信號先由PC機發送給控制卡,通過控制卡識別信號,再根據識別情況返回一個信號給PC機,如果控制卡識別成功,將把顯示信號發給LED屏,讓其顯示相應信息。PC機上的控制軟件對顯示信號進行操作,先將PC機上的字符機器碼編譯成LED屏顯示碼,通過串口發送給控制卡,再根據控制卡返回的信號在PC機上判斷LED屏是否顯示成功,然后控制卡會自動將正確的顯示碼發送給LED屏。
在許多單片機與嵌入式應用系統中,經常要用到文字顯示,如何提取字符點陣顯示信息,本文接下來就這一問題介紹一種簡易、快速的提取方法。PC機中的數據通過串口通信發送,在程序中一般以16進制表示2進制數,常見的編碼有ASCII碼、Binary碼、Unicode碼等。在要介紹的提取方法中,LED屏顯示數據的編碼是相對獨立的,它的編碼由廠家設定,顯示數據中,數字和字母的編碼由ASCII碼轉換而來,漢字編碼由Unicode碼轉換而來。
字母和數字的顯示編碼是將它們的ASCII碼減去0x0a作為高8位,將0x63作為低8位;若是多個字母或數字,則將它們的ASCII碼減去0x0a并從高到低依次存放,再將0x63存放在低8位即可。
以字母“A”為例說明:
字母“A”的 ASCII碼為 0x41,0x41-0x0a=0x37,將0x37作為高8位,0x63作為低8位,得到字母“A”的LED屏顯示編碼為0x3763。
①漢字內碼轉換成Unicode碼
漢字在PC機中存儲的漢字標準交換碼是一種計算機內部碼,是微機內部使用的代碼、系統處理的對象。在計算機內英文字符是用一個字節的ASCII碼表示,由于漢字眾多,對一個漢字需用兩個字節表示,且為了與系統中ASCII碼相區別,將這兩個字節的最高位置1,作為機器內的漢字代碼即機內碼,簡稱內碼。要將漢字內碼轉換成LED屏顯示碼就必須先將其轉換成Unicode碼,在VC++中有一個函數能完成此轉換功能,該函數為:
intMultiByteToWideChar(UINT Code-Page,

該函數最后返回一個整數,若函數調用成功且轉換的字符不為空,則返回寬型字符的數值;若函數調用成功而轉換的字符為空,則返回一個能接收轉換字符緩沖大小的數值;若函數調用失敗,則返回0。該函數有六個參數:第一個參數表示轉換要得到的編碼類型;第二個參數表示轉換類型的設置;第三個參數表示將要轉換的字符串;第四個參數表示將要轉換的字符串的字節數;第五個參數表示轉換后字符存儲區的首地址;第六個參數表示存儲區的大小。
②Unicode碼轉換成顯示編碼
將漢字在PC機上存儲的漢字標準交換碼轉換成Unicode碼后,將Unicode碼的低8位加上0x70所得的除進位以外的8位作為高8位,再將Unicode碼的高8位減去0x43后與上一步的進位相加作為低8位;若是多個漢字,則通過同樣的方式轉換后,從高到低依次存放即可。
以漢字“我”為例說明:
漢字“我”在PC機上存儲的漢字標準交換碼為4650,利用MultiByteToWideChar函數轉換得到其Unicode碼為0x6211,其Unicode碼的低8位為0x11,0x11+0x70=0x81,所得除進位以外的8位0x81作為高8位;Unicode碼的高8位為0x62,0x62-0x43=0x1F,上一步沒有進位,0x1F直接作低8位,漢字“我”的LED屏顯示編碼就為0x811F。
發送給LED屏的數據除了字符的顯示編碼外還有它從高位起的48個字節和從低位起的4個字節,這些數據共同組成LED顯示字符的數據包,其中高位字節的第19個字節表示進入動畫,第20個字節表示環繞邊框,第21個字節表示進入速度,第22個字節表示停留時間,第41個字節表示字體顏色,第45個字節表示字符個數,其低位字節的第1、2個字節表示驗證碼,這是前面高位所有數求和所得的兩個字節,然后交換其本身的高低字節得到。
本文論述了如何在LED顯示屏上顯示字符信息的方法,并結合實例進行了說明。從而很好地解決了在LED顯示屏上顯示表格信息這一難題。此方法通過直接將計算機中的數據庫和LED顯示屏連接,實現了用計算機控制LED屏的功能,加上計算機中數據庫技術已十分成熟,因此可以方便地對數據進行存儲、修改、刪除,所以本文提出的LED點陣顯示屏字符信息顯示的方法解決了其他LED顯示系統不便于設計表格和保存數據的問題。
所述方法在LED點陣顯示屏、學風信息顯示系統等方面的應用,充分顯示了此顯示方法具有靈活性好、功能強、簡單易操作等優點,有很好的發展前景。
[1]李衛東.微機控制LED點陣顯示屏[J].大連理工大學,2000,(1):23-24.
[2]黃永順.從國標字庫中提取漢字點陣信息的方法及應用 [J]漳州師范師院學報,2004,(17):48-50.
[3]趙堂春,李勇,陶砂.基于 32×16LED 顯示屏混合字符顯示的設計與實現[J].制造業自動化,2010,(5):45-50.
[4]余金棟,寫式LED點陣顯示屏的設計[J].電子技術,2010,(5):50-55.
[5]哲源.掌握VisualC++MFC程序設計與剖析[M].北京:清華大學出版社,2001,120-123.
[6]李剛.MSCEComm控件在串口編程中的應用 [J].重慶電力高等??茖W校學報,2003,(4):11-62.
[7]闞能琪,汪鑫.MSComm控件在串口編程中的應用[J].四川工業學院學報,(1):2003,56-77.