Delphi实现LED数码管仿真显示程序

在电子设备上广泛地使用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仿真显示板上。

时间: 2024-08-26 05:56:24

Delphi实现LED数码管仿真显示程序的相关文章

【STM32 .Net MF开发板学习-06】蜂鸣器和LED数码管显示

无论是蜂鸣器还是LED数码管显示,其实这二者对代码编写来说没有太大区别,都是GPIO的一个典型应用.红牛开发板有一个蜂鸣器,而EM-STM3210E有一个四位LED数码管,代码都相对简单,不值的为二者单独写一篇博文,所以二者合一以一篇文章来说明,不过两个示例代码是独立的. 先说一下蜂鸣器,查原理图,发现控制该蜂鸣器的管脚是PB2,此外值得一提的是和BOOT1插针的1.2脚共用,所以如果你把跳线连接1.2,上电后,蜂鸣器会响.相关代码如下: public class Buzzer { enum G

麻烦哪位大神看一下下面关于DS1302和1602液晶显示器的程序,为啥仿真显示的星期总是后一天的呀

问题描述 麻烦哪位大神看一下下面关于DS1302和1602液晶显示器的程序,为啥仿真显示的星期总是后一天的呀 麻烦哪位大神看一下下面关于DS1302和1602液晶显示器的程序,为啥仿真显示的星期总是后一天的呀,比如今天星期三,就显示成星期四 下面是的DS1302的程序 #include #include //#define uchar unsigned char //#define uint unsigned int /*复位脚*/ #define RST_CLR PORTB&=~(1< #

LED显示屏上文字显示内容的控制是用硬件厂家自己提供的软件合适还是自己编写程序进行控制合适?

问题描述 需要对多个LED显示屏上的显示内容进行控制,显示主要是文字.请问一般的做法是用LED硬件厂家自己提供的软件来进行显示文字的控制,还是自己开发一个程序进行控制好(还不知道厂家有没有提供LED控制的dll).个人觉得厂家的控制软件虽然实现了功能但是感觉使用比较复杂,也不知道用户愿不愿用.但是自己编写控制软件是不是比较复杂,也不知道硬件厂商是否提供了控制LED的dll.本人没有做过LED方面的东西,烦请高手告知常规做法是什么,非常感谢! 解决方案 解决方案二:自己顶!解决方案三:再顶!

数码管流动显示(自己的单片机)

/********************************************************************************** *  标题:                  试验数码管上显示数字( 单片机直接实现位选 共阴极)        * *                                                                                  * *  连接方法:P0与J12 用8PIN排

按键盘数码管流动显示实验

要求:按下键盘,六个数码管流动显示按下的值. 连线:将片选CS0接到key_LED_CS上 #include  <reg52.h> #define   LEDLen   6 xdata unsigned char OUTBIT _at_ 0x8002;   // 位控制口 xdata unsigned char OUTSEG _at_ 0x8004;   // 段控制口 xdata unsigned char IN     _at_ 0x8001;   // 键盘读入口 unsigned ch

通用数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页通用

程序|分页|关键字|数据|数据库|显示 数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页. 阿余经常写一些数据库相关的程序,当然离不开显示库中的数据了,说实话,做这样的程序真是无聊啊,所以,阿余就想写个函数,一个通用的数据库显示函数.要求如下:   1. 能显示指定的字段,当然,字段名和显示的文字可以不一样.  2. 能同时按多个字段进行查询,支持模糊和精确两种查询方式.  3. 有横向排列和纵向排列字段两种显示方式.  4. 能自动分页.  5. 能设定每页显示多少条记录.好啦,要

通用数据库显示程序

程序|数据|数据库|显示 数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页. 阿余经常写一些数据库相关的程序,当然离不开显示库中的数据了,说实话,做这样的程序真是无聊啊,所以,阿余就想写个函数,一个通用的数据库显示函数.要求如下: 1. 能显示指定的字段,当然,字段名和显示的文字可以不一样. 2. 能同时按多个字段进行查询,支持模糊和精确两种查询方式. 3. 有横向排列和纵向排列字段两种显示方式. 4. 能自动分页. 5. 能设定每页显示多少条记录.好啦,要求大至就是这样了.根据这个

STM32F103VET6超声波测距仪LCD12864显示程序

问题描述 STM32F103VET6超声波测距仪LCD12864显示程序 STM32F103VET6超声波测距仪LCD12864显示程序,电路模块有HC-SR-04超声波模块,四位按键实现测距上下限设置,LCD显示测距结果,蜂鸣器报警. 刚接触STM32,程序不会写,求教各位大神,谢谢 解决方案

lcd显示-STM32下lcd12864一个字节显示程序

问题描述 STM32下lcd12864一个字节显示程序 lcd地址每行是8个字,16个字节,显示数据时首地址只能是字的整数倍,比如我只想在第二个字节处写下一个字母,但地址就定位不到第二个字节处,只能是1,3,5--字节处,也就是每个字的首地址,求大神指点怎么定位到每一个字节的首地址处 解决方案 http://wenku.baidu.com/link?url=wviwTAPWlFSel0d7WZcfvVdRhg3GHpUI1VS2a7f618l-NqjKx9kTBrMJoaZA7dcKvJKR-S