在電子設備上廣泛地使用LED數碼管顯示數據,在許多應用軟件中也經常模擬LED數碼管顯示數據,使程序畫面看起來很有特色。使用Delphi 程序實現LED數碼管的仿真顯示非常容易,具體步驟如下:
1.啟動Delphi 4.0。在“Tools”工具菜單上選擇Delphi的圖象編輯器“Image Editor”,建立一個新的位圖,並設定位圖的尺寸,寬為:48,高為:64。設定位圖的底色為紫紅色,前景色為紅色。在位圖上選擇適當寬度的線條畫出一個正方的8字,並將方型8字的各個拐角處用斜線斷開,這樣可使圖象模擬的更加真實。完成後按文件名bitmap_0.bmp存儲。然後用此文件復制9個文件,文件名分別為bitmap_1—9。用圖象編輯器將這些方形的8字位圖按文件名序號的順序分別修改成0-9的數字位圖,存儲後備用。
2.建立一個新的工程,在窗體Form1上添加“面板”元件Panel1,設定“面板”元件的屬性:bevelouter=bmRaised; bvevelInner=bvLowered; BorderWidth=4,設置後在Panel1元件上形成一個凸起的邊框。在Panel1上添加一個“畫板”元件PaintBox1,將PaintBox1的屬性Hight 和Width設定為64和318,並適當調整Panel1面板的尺寸,使其正好包圍畫板元件。
3.在窗體中添加一個“圖象列表”元件ImageList1,在元件上雙擊鼠標,調出添加圖象對話框,將先前制作好的位圖bitmap_0至bitmap_9按順序添加進圖象列表元件中去,使圖象列表中位圖的序號與位圖本身代表的數字相同,並注意將位圖設定為不透明。
4.轉到單元編輯窗口,在Tform1的類說明部分添加一個顯示LED的過程說明語句:
procedure display_LED(number:integer); 。
在implementation語句下面添加一個全局變量和對應上面過程說明的過程體。內容如下:
implementation
{$R *.DFM}
var
dis_number:integer;
procedure Tform1.display_LED(number:integer);
var
I:integer;
digital:array[0..5]of integer;
begin
{限制顯示位數小於6位}
if number>999999 then number:=0;
for I:=0 to 5 do digital[I]:=0;
{分離數字位}
I:=0;
while (number)>0 do
begin
digital[I]:=number mod 10;
number:=number div 10;
I:=I+1;
end;
{顯示數字}
for I:=5 downto 0 do
imagelist1.draw(paintbox1.canvas, (5-I)*54,0,digital[I]);
end;
5.在Form1窗體的OnCreated 事件中輸入語句:dis_number:=0; ,使顯示的初始值為0。在畫板元件的On Paint 事件中輸入語句:display_LED(dis_number); ,此語句非常重要,它可以在初始啟動時顯示初值0,在窗口本身被覆蓋後又恢復到前台時仍可顯示正常的數值。至此已完成了顯示函數的程序編制。在需要顯示數字的程序中調用display_LED 函數就能將數字顯示在LED 的仿真顯示板上。本舉例程序只顯示6位以下的數字。
6.為了測試顯示效果,我們在窗體上增加一個編輯框元件Edit1,和一個按鈕元件button1。用鼠標雙擊按鈕元件跳轉到Click事件編輯窗口,輸入如下語句:
dis_number:=strTOint(Edit1.text);
display_LED(dis_number);
完成後按F9鍵編譯並運行程序。在運行窗口的編輯框中輸入6位以下的整數數字,點擊按鈕,編輯框中的數字就顯示在LED仿真顯示板上。