queensf
总版主
总版主
  • 注册日期2003-12-04
  • 发帖数735
  • QQ
  • 铜币3枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1494回复:1

LED数码管仿真显示程序

楼主#
更多 发布于:2004-04-07 20:20
在电子设备上广泛地使用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:=0;
 {分离数字位}
 I:=0;
 while (number)>0 do
 begin
  digital:=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);
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仿真显示板上。
喜欢0 评分0
[color=blue][size=4][i][b][u] 【 解决不了的事情,就不要想。世界不会因为我而改变。 】 [/size][/u][/b][/i][/color]
queensf
总版主
总版主
  • 注册日期2003-12-04
  • 发帖数735
  • QQ
  • 铜币3枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-04-12 20:34
自己顶!!!
[color=blue][size=4][i][b][u] 【 解决不了的事情,就不要想。世界不会因为我而改变。 】 [/size][/u][/b][/i][/color]
举报 回复(0) 喜欢(0)     评分
游客

返回顶部