返回首页

简介
该项目描述为构建一个分段七个元素的LED显示屏的硬件仿真的方法。这是相同的排序数字LED在使用微波炉,廉价的闹钟,甚至在一些不那么便宜的飞机。这是最常用的显示时间,无线电频率,多少钱,你存入苏打水机,或到底有多少,它是要花费填补煤气罐等东西。
虽然它不是任何特定的值显示在一个现代化的软件应用程序中的LED仿真的数值,控制并提供一些价值的情况下,你不妨建立一个实际的硬件仿真。

图1:LED控制演示入门
为了上手,解压附件,并加载到Visual Studio 2005的解决方案。检查解决方案资源管理器,并注意该解决方案包含两个项目:

图2:显示项目文件的解决方案资源管理器
LED显示屏项目是一个Windows控件库,它包含一个单一的用户控制题为LED的吗??可以预料,这LED.vb控制包含的类,它定义自定义的LED控制。还请注意,该项目包含一个资源文件夹,在这个项目中所使用的资源,包括需要的图像显示的LED数值(0到9)。
第二个项目,LED用户,是一个示范项目,消耗的控制。该项目包含一个单一的Windows窗体类名为??我frmDemo.vb??这种形式包含了六个更新每隔1000毫秒显示当前时间(见图1)LED控制。代码:LED.vb
LED控制是一个用户控件,这样有一个可视化设计;控制的大小设置为40像素宽和60像素高,一个图片框控件是下降到容器中,并设置停靠容器的充分程度。
提供正确的数值可视化表示,我只是用了10个图像文件,从0到9的每个数字。我用一个共同的绘图软件包定义一个40像素60像素图,给了它一个轻微的渐变背景多为黑色,和我定义了一个绿色填写正确的大小和形状的多边形,支持建设的每个细分七段LED显示。要生成每个号码,我只是幻像,通过设置其填充颜色深灰色未使用的LED段。我这样做,使段仍然掉以轻心可见,就像它在实际LED显示屏。当然,这种填充颜色(绿色)可以被任何颜色,和,如果你是模拟一个红色或琥珀色,或青色LED,你将要使用的颜色,而不是绿色。我用绿色,因为绿色是颜色,人眼是最擅长在感知,因为它是在夜视成像系统,需要使用的军事应用常用的一种颜色(450纳米的波长范围内的果岭不损害夜视设备使用)。
嵌入到必要的图像文档,我打开了我的项目??从溶液中,打开资源??"选项卡,使用的接口负荷的10个使用的图像,每个供应数字控制使用的读数。一旦添加到项目中,你会发现一个文件夹,题为我>资源添加到项目中;???如果你看一下里面的文件夹,你会看到每个图像文件。选择任何文件夹中包含的图像文件将显示在属性网格中控制其属性,我选择的所有图像生成操作属性设置为嵌入式资源虽然图像仍可以不执行这最后的检索??第一步。

图3:??我的项目中添加图像文件来控制资源
控制补充说,和图像文件打包成控制图书馆的可用资源,唯一剩下要做的就是写必要的回应,以推动正确的图像显示的一小段代码设置控制当前的数值。
嵌入类只包含下面的代码:公共类LED 私人小组LED_Load(BYVAL发件人为对象,_ #System.EventArgs E)把手Me.Load SetNumber(0) END SUB 公共小组SetNumber(BYVAL NUM为整数) 选择案例NUM  0; 案例0 &# 160; pbxLED.Image = My.Resources.zero & #160; 案例1   ; pbxLED.Image = My.Resources.one 案例2 pbxLED.Image = My.Resources.two   ;案例3 pbxLED.Image = My.Resources.three 案例4 60; pbxLED.Image = My.Resources.four 案例5 pbxLED.Image = My.Resources.five 案例6  60; pbxLED.Image = My.Resources.six 0; 案例7 &# 160; pbxLED.Image = My.Resources.seven   ; 案例8  60; pbxLED.Image = My.Resources.eight 案例9  0; pbxLED.Image = My.Resources.nine  60; CASE ELSE pbxLED.Image = My.Resources.zero 最终选择 END SUB末级
正如你可以看到,来驱动显示器所需的代码实在是微不足道。类不包含的进口,并公开宣布。 Load事件处理程序初始化的LED显示为零的数值模拟,它通过一个公共的子程序题为SetNumber,这反过来又接受一个整数参数,代表数字控制显示。
SetNumber子程序执行一个整数值传递到子程序的选择案例,这取决于传递的是数字,它会选择和控制图片框控制使用控制中的图像加载到相应的图像的资源。
为了使控制更健壮一点,你应该评估进入子程序传递的整数,以确保它是大于或等于零,并且小于或等于九。
那个漂亮的包装控制。一旦控制的一个实例是创建,控制SetNumber子程序是用于不断更新的控制中显示的数值。代码:frmDemo.vb
该示范项目只包含一个窗体类(frmDemo),这是作为一个测试床用于尝试新的LED控制。为了使为一个更有趣的的演示,演示使用了6个LED的控制,安排看起来像一个数字时钟。这6个LED控制,布置成一组箱内对,每对之间放置冒号。冒号是简单的两个小板,大小和安排每对间的叠对每个面板看起来像一个冒号,同样的方法可以用来放置其他非可更新的设计元素,如小数点,如果一个人使用例如,显示了类似的控制,UHF无线电频率。面板的背景颜色设置为绿色,所以,它似乎相匹配的LED控制(见图4)。

图4:演示表格控制安排
演示表格还包含了一个定时器,定时器的时间间隔设置为1000毫秒,它是启用;大部分在这个示范片的情况发生在定时器的Tick事件,每1000毫秒的间隔,每个LED的值是根据当前时间设置。
类包含下面的代码:公共类frmDemo 私人小组Timer1_Tick(BYVAL发件人为System.Object,_   ; #System.EventArgs E)把手T​​imer1.Tick 作为字符串DIM小时 作为字符串DIM分钟 作为字符串DIM秒  60; DIM小时()为char DIM分钟()为char DIM秒()为char  0; 作为字符串昏暗的HR1 作为字符串昏暗的HR2 作为字符串昏暗的MM1 作为字符串昏暗的平方毫米 作为字符串昏暗的SS1 作为字符串昏暗的SS2  0; 小时= Now.Hour.ToString() 分钟= Now.Minute.ToString() 秒= Now.Second.ToString() 小时= hrs.ToCharArray() 分钟= mins.ToCharArray()  60; 秒= secs.ToCharArray() 如果hours.Length GT; 1,则 HR1 =小时(0) HR2 =小时(1)   ; 其他 HR1 ="; 0quot"; HR2 =小时(0)  60; 结束如果 如果minutes.Length GT; 1,则 MM1 =分钟(0) 平方毫米=分钟(1) & #160; 其他 MM1 ="; 0quot"; 平方毫米=分钟(0)   ; 结束如果 如果seconds.Length GT; 1,则 SS1 =秒(0) SS2 =秒(1)   ; 其他 SS1 ="; 0quot"; SS2 =秒(0)  60; 结束如果 Led1.SetNumber(Convert.ToInt32(HR1)) Led2.SetNumber(Convert.ToInt32(HR2)) Led3.SetNumber(Convert.ToInt32(MM1)) Led4.SetNumber(Convert.ToInt32(平方毫米)) Led5.SetNumber(Convert.ToInt32(SS1)) Led6.SetNumber(Convert.ToInt32(SS2)) END SUB 私人小组btnExit_Click(BYVAL发件人为System.Object,_  0; #System.EventArgs E)把手btnExit.Click  60; Me.Dispose() END SUB末级
演示类是公开宣布,它包含没有进口。定时器的Click事件处理程序捕捉到三个字符串变量的当前时间,当前时间分成小时,分钟和秒。小时,分钟和秒转换成字符数组,字符数组值检查,然后为每个相关的LED控制,用于设置小时,分钟和秒。只有在其他类的代码是用于出售的形式,当用户点击"退出"按钮。
结束讨论这个应用程序的设计和代码。摘要
该项目演示了一个简单的方法,建立一个用户控件,可用于模拟LED的硬件。这种设计提供了一个方式,一个简单的。NET应用程序可以用来提供一个实际的硬件仿真的例子。你可以采取提供时钟的例子,在它改善像建设一个一个录像机或一个LED时钟仿真的做一些事情谁知道,一个小的时间和努力,也许你可以转成一个$ 12报警你的$ 17000的笔记本电脑时钟。

回答

评论会员:ReymonARG 时间:2011/12/07
在程序的外部文件
。GP明年..
评论会员:斯科特凯恩 时间:2011/12/07
解决方案不起作用。不知道为什么。当我尝试启动它,以某种形式显示,但不是一个示例中所示。