戴 娟,孫亞中
DAI Juan1, SUN Ya-zhong2
(1. 南京工業職業技術學院 電氣與電子工程學院,南京 210046;2. 中國電子科技集團 第五十五研究所,南京 210046)
LED顯示屏已經廣泛應用于現實社會中,許多從事該行業的人員都經歷過相應編程設計,但在LED顯示屏實現書寫顯示功能方面,涉及的人員并不多,相關資料也很少,特別是用單片機控制實現LED顯示屏中較復雜功能——圖像拖移方面的處理編程,觸及的人員和可查資源就更少。
早期在一個N×N點陣LED書寫屏中,用單片機實現完成任意圈定圖像拖移的功能編程時,采用圈定圖像地址中顯示數據的搬家、覆蓋,出現再次移動時會將原顯示圖形修改,移動過的區域圖像,會出現拖動痕跡,即移動區域的圖形不能恢復的問題。本文給出了一個用51單片機控制系統,借助C語言中的動態數組完成移動圈定圖形,并能將拖移過的軌跡消除,恢復原圖形的功能設計方法構思及相應程序。
LED點陣書寫顯示屏結構分:點陣模塊,光筆控制器,圖像控制器。結構如圖1所示。
圖2(a)中光敏電陰與三個運放器構成光筆;圖2(b)中使用STC12C5410單片機作控制核心,74HC161與74HC245作譯碼驅動,共同產生LED點陣屏的行譯碼信號,LED的列信號則由單片機的端口P1.5串行輸出。

圖1 LED點陣書寫顯示屏
圖像拖移的處理步驟主要有:對圖像圈定點的處理、對圈內圖像坐標點的處理和顯示圖像數據的移動。
1)對圖像圈定點的處理:把圈上的點按照行進行排序,取出列坐標的最大值和最小值。
2)對圈內圖像坐標點的處理:上一步取出的行和列坐標的最大值和最小值可以構成一個矩形,把矩形內的地址進行坐標化并存入數組。
3)顯示圖像數據移動:上述兩步執行后,光筆觸及屏上的第一點(x1,y1)定為基準點,第二點(x2,y2) 為結束點,隨著光筆移動,而前面被圈中的點跟隨基準點移動,當單片機處理速度比較高時,人眼就可察覺拖移的效果。


圖2 控制器原理圖

圖3 LED點陣圖像顯示數據區結構原理圖
單片機軟件編程中針對圖像拖動顯示功能要求,開辟了三個顯示數據RAM區,如圖3,其中顯示數據區DDS和原圖像數據區OIS為與屏體相關的、同樣大小的靜態數組[a][b],圈定對象圖像區MIS數據則應根據程序員習慣來構建。
關鍵是原顯示圖像數據不能被拖動過的顯示圖像數據修改。可以采用在SRAM 中開辟同屏幕同大小的顯示緩存,用來保存原圖像數據,該數據只有在調用新的顯示圖像時才被修改。
LED點陣顯示時,利用顯示指針所指的地址與移動圖像地址比較,當在該移動區域內則調用該區域數據,超出該移動區域則調用原顯示圖像數據。
數組構建:1)顯示數據區DDS(對應顯示數據數組DDS[a][b])
3.4 抗細菌生物膜 細菌生物膜是指細菌侵入人體后形成的由細菌及其分泌的含水聚合性基質共同組成的膜樣多細菌復合體,是細菌繁殖及對抗宿主的一種方式。細菌形成生物膜后其耐藥性是游離狀態的 500~1 000 倍,可使細菌逃避宿主的體液免疫及細胞免疫反應。MA 主要通過以下 2 個方面發揮抗細胞生物膜作用:(1)減少生物膜形成期藻酸鹽等物質的含量;(2)于細胞生物膜的Ⅰ基因區發揮作用,通過降低酰基絲氨酸內脂酶濃度、抑制細菌群體感應等功能破壞已生成的生物膜[25]。
2)原圖像數據區OIS(對應顯示數據數組OIS[a][b])
3)圈定圖形數據區MIS有兩種方法:靜態區,動態區。考慮到靜態區的程序處理雖簡單,但占用資源大;而動態區程序處理復雜,但資源重復利用率較高。我們采用構建動態數組,對應數據數組unsigned char xdata *pdat。
所有數組中的數據均以二進制形式與LED 點陣一一對應。
如圖4 所示。

圖4 圖像拖移軟件流程
1)通過控制器采用亮點掃描方式獲取光筆所在的行列x、y坐標,將該數據按照先x后y順序存入一維動態數組paddr [n],即n為偶數為x坐標,n為奇數為y坐標建立初始的移動區域地址坐標數組。
2)利用冒泡法[1]或三目運算(x = (x<y)? x:y和x = (x>y)? x:y) )在paddr [ ]中找出最大、最小行xmax、 xmin。
3)建立移動圖形地址數組pp[ ][ ],從xmin到xmax, 根據x依次遞增排序,在數組paddr[ ]找出同x值時列y坐標,將y值大者送pp [1][x-xmin],值小者送pp [0][x-xmin]。
4)根據移動圖形地址數組pp [ ][ ]和原始圖形數據數組OIS [a][b],建立移動圖形數據數組pdat[],行為從xmin到xmax依次增加,只需要保存列數據。
5)接收光筆移動坐標數據,處理需移動的偏移值xl=x2-x1、yl=y2-y1,根據偏移值修改移動圖形地址數組pp [ ][ ]。
6)根據移動圖形地址數組pp [ ][ ]、移動圖形數據數組pdat [ ]和原圖形數據數組OIS [ ][ ],構建顯示圖形數據數組DDS [ ][ ]。
顯然在1.1中提及對圖像圈定點的處理是通過1)、2)過程完成,對圈內圖像坐標點的處理是通過3)過程完成,顯示圖像數據的移動通過4)、5)、6)過程完成。
利用STC12C5410單片機控制一個a×b×8點陣LED模塊的書寫顯示屏系統,借助少許按鍵,實現圈定圖像拖移功能。該方法已經應用于實際工程項目中。
在應用中還遇到:圈定的圖形不是封閉的,我們一般采用根據上下數據找出數據規律,上下坐標值對稱求平均值[4],人為設定閉合點;圈定的圖形是多拐點,對于單片機來說處理不能完全象C++語言那樣方便,比較復雜,我們也采用了光滑不等距插值算法[5],對于LED顯示屏這種分辨率不高的顯示,效果也可以。
[1]Robert Sedgewick. 周良中譯, C算法[M], 人民郵電出版社, 2004.
[2]譚浩強, C語言程序設計[M], 清華大學出版社, 2008.
[3]劉文濤, 單片機語言C51典型應用設計[M], 人民郵電出版社, 2005.
[4]尹彥芝, C語言常用算法與子程序[M], 清華大學出版社,1991.
[5]徐士良, C常用算法程序集[M], 清華大學出版社, 1994.