.NET MF系列目录: http://www.cnblogs.com/lscy/archive/2012/08/23/2651768.html
LG3641BH
一、设备介绍
LG3641BH数码管的资不好找,在网上找到一些,跟大家分享一下。
引脚定义:
1-E
2-D
3-H
4-C
5-G
6-COM1
7-B
8-COM2
9-COM3
10-F
11-A
12-COM4
LG3641BH是共阳数码管,关于共阳数码管和共阴数码管:
3614A是共阴级,3641B是共阳级。共阴极数据码是为ABCDEFGH输出高电平,COM1~4输出低电平,共阳极正好相反。
更多资料,请大家查到后,共同分享。
二、数码管显示原理
数码管原理如图:
每一个8字,分为ABCDEFG7段和右下角一个点H,共8段。每一段对应于探索者上一个引脚。然后,COM1~4是对应于显示第几个数字,顺序从右往左。
看到这里,可能会比较奇怪,为什么数码管是四个数字共用一个组ABCDEFGH?嘿嘿,自己查相关资料,不作过多描述。
那么程序中应该如何控制呢?
举例说明:比如要让最后边的数字显示数字7。
1. 确定7对应哪几个引脚:A B C
2. 使COM1输出高电平 (取决于数码管共阳极)
3. 使ABC三个引脚输出低电平
4. 让COM1和ABC恢复原样,重复2,3两步。
5. 由于人眼识别有视频暂留的影响,所以当在进行步骤4时,中间停留时间应该尽可能的短。
三、演示
- 接线
与数码管对应关系:
- 引脚初始化
View Code
OutputPort com1 = new OutputPort((Cpu.Pin)COMS.COM1, false); com1.Dispose();
OutputPort com2 = new OutputPort((Cpu.Pin)COMS.COM2, false); com2.Dispose();
OutputPort com3 = new OutputPort((Cpu.Pin)COMS.COM3, false); com3.Dispose();
OutputPort com4 = new OutputPort((Cpu.Pin)COMS.COM4, false); com4.Dispose();
OutputPort A = new OutputPort((Cpu.Pin)DataPin.A, true); A.Dispose();
OutputPort B = new OutputPort((Cpu.Pin)DataPin.B, true); B.Dispose();
OutputPort C = new OutputPort((Cpu.Pin)DataPin.C, true); C.Dispose();
OutputPort D = new OutputPort((Cpu.Pin)DataPin.D, true); D.Dispose();
OutputPort E = new OutputPort((Cpu.Pin)DataPin.E, true); E.Dispose();
OutputPort F = new OutputPort((Cpu.Pin)DataPin.F, true); F.Dispose();
OutputPort G = new OutputPort((Cpu.Pin)DataPin.G, true); G.Dispose();
OutputPort H = new OutputPort((Cpu.Pin)DataPin.H, true); H.Dispose();
注意:当Port不再使用时,请记得Dispose,底层代码并未做此操作,否则会导致其它地方再为此pin实例化Port时,抛出异常。.Net MF抛出异常是一件相当杯具的事情,当你发生时再来找我吧。![]()
- 数码管测试
View Code
Test数码管的每段区域(COMS.COM1, true);
Debug.Print("COM1");
Test数码管的每段区域(COMS.COM2, true);
Debug.Print("COM2");
Test数码管的每段区域(COMS.COM3, true);
Debug.Print("COM3");
Test数码管的每段区域(COMS.COM4, true);
Debug.Print("COM4");
View Code
/// <summary>
/// 测试某一个数字数码管
/// </summary>
/// <param name="index"></param>
/// <param name="dot"></param>
private static void Test数码管的每段区域(COMS index, Boolean dot)
{
OutputPort op = new OutputPort((Cpu.Pin)index, false);
op.Write(true);
Debug.Print("COM" + index.ToString());
OutputPort A = new OutputPort((Cpu.Pin)DataPin.A, false);
Debug.Print("A");
A.Write(false);
OutputPort B = new OutputPort((Cpu.Pin)DataPin.B, false);
Debug.Print("B");
B.Write(false);
OutputPort C = new OutputPort((Cpu.Pin)DataPin.C, false);
Debug.Print("C");
C.Write(false);
OutputPort D = new OutputPort((Cpu.Pin)DataPin.D, false);
Debug.Print("D");
D.Write(false);
OutputPort E = new OutputPort((Cpu.Pin)DataPin.E, false);
Debug.Print("E");
E.Write(false);
OutputPort F = new OutputPort((Cpu.Pin)DataPin.F, false);
Debug.Print("F");
F.Write(false);
OutputPort G = new OutputPort((Cpu.Pin)DataPin.G, false);
Debug.Print("G");
G.Write(false);
if (dot)
{
OutputPort dotPort = new OutputPort((Cpu.Pin)DataPin.H, false);
dotPort.Write(false);
Thread.Sleep(100);
dotPort.Write(true);
dotPort.Dispose();
}
Thread.Sleep(1000);
A.Write(true);
B.Write(true);
C.Write(true);
D.Write(true);
E.Write(true);
F.Write(true);
G.Write(true);
A.Dispose(); Debug.Print(" A Dispose");
B.Dispose(); Debug.Print(" B Dispose");
C.Dispose(); Debug.Print(" C Dispose");
D.Dispose(); Debug.Print(" D Dispose");
E.Dispose(); Debug.Print(" E Dispose");
F.Dispose(); Debug.Print(" F Dispose");
G.Dispose(); Debug.Print(" G Dispose");
op.Write(false);
op.Dispose();
}
- 开始干活啦
View Code
Debug.Print("Test is over, wait form 3 seconds, then start showing datas");
Thread.Sleep(3000);
while (true)
{
//Thread.Sleep(50);
Show(COMS.COM1, 7, false); //显示7
Show(COMS.COM2, 8, true); //显示8
Show(COMS.COM3, 4, false);//显示4
Show(COMS.COM4, 2, false);//显示2
}
View Code
static Int32 delay = 5;
static void Show(COMS index, Int32 value, Boolean dot)
{
OutputPort op = new OutputPort((Cpu.Pin)index, false);
op.Write(true);
//Debug.Print("COM" + index.ToString());
OutputPort A = new OutputPort((Cpu.Pin)DataPin.A, true);
OutputPort B = new OutputPort((Cpu.Pin)DataPin.B, true);
OutputPort C = new OutputPort((Cpu.Pin)DataPin.C, true);
OutputPort D = new OutputPort((Cpu.Pin)DataPin.D, true);
OutputPort E = new OutputPort((Cpu.Pin)DataPin.E, true);
OutputPort F = new OutputPort((Cpu.Pin)DataPin.F, true);
OutputPort G = new OutputPort((Cpu.Pin)DataPin.G, true);
OutputPort H = new OutputPort((Cpu.Pin)DataPin.H, true);
switch (value)
{
case 0:
//PortShow( DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.E);
//PortShow(DataPin.F);
A.Write(false);
B.Write(false);
C.Write(false);
D.Write(false);
E.Write(false);
F.Write(false);
break;
case 1:
//PortShow(DataPin.B);
//PortShow(DataPin.C);
B.Write(false);
C.Write(false);
break;
case 2:
//PortShow(DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.D);
//PortShow(DataPin.E);
//PortShow(DataPin.G);
A.Write(false);
B.Write(false);
D.Write(false);
E.Write(false);
G.Write(false);
break;
case 3:
//PortShow(DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.G);
A.Write(false);
B.Write(false);
C.Write(false);
D.Write(false);
G.Write(false);
break;
case 4:
//PortShow(DataPin.B);
//PortShow(DataPin.C);
//PortShow(DataPin.F);
//PortShow(DataPin.G);
B.Write(false);
C.Write(false);
F.Write(false);
G.Write(false);
break;
case 5:
//PortShow(DataPin.A);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.F);
//PortShow(DataPin.G);
A.Write(false);
C.Write(false);
D.Write(false);
F.Write(false);
G.Write(false);
break;
case 6:
//PortShow(DataPin.A);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.E);
//PortShow(DataPin.F);
//PortShow(DataPin.G);
A.Write(false);
C.Write(false);
D.Write(false);
E.Write(false);
F.Write(false);
G.Write(false);
break;
case 7:
//PortShow(DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.C);
A.Write(false);
B.Write(false);
C.Write(false);
break;
case 8:
//PortShow(DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.E);
//PortShow(DataPin.F);
//PortShow(DataPin.G);
A.Write(false);
B.Write(false);
C.Write(false);
D.Write(false);
E.Write(false);
F.Write(false);
G.Write(false);
break;
case 9:
//PortShow(DataPin.A);
//PortShow(DataPin.B);
//PortShow(DataPin.C);
//PortShow(DataPin.D);
//PortShow(DataPin.F);
//PortShow(DataPin.G);
A.Write(false);
B.Write(false);
C.Write(false);
D.Write(false);
F.Write(false);
G.Write(false);
break;
}
if (dot) //点显示
{
//PortShow(DataPin.H);
H.Write(false);
}
A.Dispose();
B.Dispose();
C.Dispose();
D.Dispose();
E.Dispose();
F.Dispose();
G.Dispose();
H.Dispose();
op.Write(false);
op.Dispose();
}
- 编译、布署,显示效果如下:
相关资源:
1.QQ群:1600838
2.博客:http://www.cnblogs.com/nnhy/
3.论坛:http://www.53wb.com/
来源:https://www.cnblogs.com/lscy/archive/2012/08/23/2651776.html








