首页gydF4y2Ba

接口7段显示到8051gydF4y2Ba

七段显示器用来表示数字信息。七段显示器可以显示0到9的数字,甚至可以显示少量字符,如A、b、C、H、E、E、F等。它们非常流行,并且有更多的应用。所以,在这个项目中,我将向你展示7段显示如何通过接口7段显示gydF4y2Ba8051单片机gydF4y2Ba.gydF4y2Ba

在开始这个概念之前,先了解一下gydF4y2Ba如何接口led与8051微控制器gydF4y2Ba.gydF4y2Ba

本文介绍了如何将七段显示与AT89C51单片机接口。该系统以预定义的延迟连续显示从0到9的数字。在这个过程中,我将设计两个电路:一个电路是单位7段显示,另一个电路是4位显示gydF4y2Ba7段显示gydF4y2Ba.gydF4y2Ba

电路原理gydF4y2Ba

7段显示器内部由8个led组成。在这些LED中,7个LED用于表示数字0到9,单个LED用于表示小数点。一般七个段有两种类型,一种是公共阴极,另一种是公共阳极。gydF4y2Ba

〇重要相关职位gydF4y2Ba水位指示器项目完成文件gydF4y2Ba

在共同的阴极,所有的阴极led绑在一起,并标记为com。而阳极则保持原样。在共同阳极,七段显示所有的阳极绑在一起,阴极是自由留下。下图显示了7段显示器的内部连接。gydF4y2Ba

内部连接七段gydF4y2Ba
七段内部连接gydF4y2Ba

在第一个电路中,我将接口一个公共阴极单数字7段显示器到8051微控制器,而在第二个电路中,我将接口一个公共阳极类型4位数字7段显示器到8051微控制器。gydF4y2Ba

线路图gydF4y2Ba

电路1:将7段显示接口到8051(单个数字- CC)gydF4y2Ba

在第一个电路中,我将单个数字7段显示器与8051接口。7段显示器是普通的阴极类型。gydF4y2Ba

接口7段显示到8051单数字电路gydF4y2Ba

电路2:将7段显示接口到8051(4位- CA)gydF4y2Ba

在第二电路中,我将一个4位7段显示器接口到8051单片机,显示类型为公用阳极。gydF4y2Ba

接口7段显示到8051 4-Digit电路gydF4y2Ba

电路元件gydF4y2Ba

  • 采用AT89C51单片机gydF4y2Ba
  • AT89C51单片机编程板gydF4y2Ba
  • 编程电缆gydF4y2Ba
  • 12V直流电池或适配器gydF4y2Ba
  • 共阴极7段显示器gydF4y2Ba
  • 普通阳极4位数字7段显示gydF4y2Ba
  • 电阻- 10KΩ × 2, 330Ω, 1KΩ × 8, 470Ω × 4gydF4y2Ba
  • 1KΩ x8电阻包gydF4y2Ba
  • 33pF陶瓷电容器× 2gydF4y2Ba
  • 11.0592 MHz的水晶gydF4y2Ba
  • 10μF电解电容器gydF4y2Ba
  • 2N2222 NPN晶体管X 4gydF4y2Ba
  • 按钮gydF4y2Ba
  • 连接电线gydF4y2Ba

也请阅读文章gydF4y2Ba[gydF4y2Ba如何将直流电机与8051单片机接口gydF4y2Ba?gydF4y2Ba]gydF4y2Ba

电路设计gydF4y2Ba

电路1gydF4y2Ba

这里用共阴极七段来显示数字。在该电路中,7段的引脚a到h连接到微控制器的PORT 2和gydF4y2BacomgydF4y2Ba引脚通过330欧姆电阻连接到地面。这个电阻是用来降低电压的。由于我们使用普通阴极7段,我们需要发送逻辑1段发光。gydF4y2Ba

图中显示共阴极七段的结构。这里的圆点是用来表示小数点的。这里LED的所有阴极都连接到Gnd引脚。这个LED的工作电压是2到3V,但从控制器我们将得到5V,所以要降低剩余的电压,我们必须通过电阻连接控制器a到g引脚。gydF4y2Ba

共阴极7段显示器gydF4y2Ba
共阴极7段显示器gydF4y2Ba

电路2gydF4y2Ba

由于在第二个电路中使用的4位7段显示器是普通阳极类型,我们需要通过公共端子驱动LED段。我用了4个NPN晶体管驱动4个普通阳极,晶体管由8051控制。gydF4y2Ba

接下来是a到h段,它们连接到8051的PORT0引脚。gydF4y2Ba

数字驱动模式gydF4y2Ba

为了在7个线段上显示数字,我们需要发光不同的线段逻辑组合。例如,如果你想在7段上显示数字3,那么你需要发光段a, b, c, d和g。下面的表格显示了我们需要从端口2发送的十六进制十进制值来显示从0到9的数字。gydF4y2Ba

数字gydF4y2Ba
DpgydF4y2Ba
ggydF4y2Ba
fgydF4y2Ba
egydF4y2Ba
dgydF4y2Ba
cgydF4y2Ba
bgydF4y2Ba
一个gydF4y2Ba
十六进制值gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x3fgydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0 x06gydF4y2Ba
2gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x5bgydF4y2Ba
3.gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x4fgydF4y2Ba
4gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0 x66gydF4y2Ba
5gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
0 x6dgydF4y2Ba
6gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
0 x7dgydF4y2Ba
7gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x07gydF4y2Ba
8gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x7fgydF4y2Ba
9gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0gydF4y2Ba
0gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
1gydF4y2Ba
0 x67gydF4y2Ba

注意:gydF4y2Ba这些值只适用于普通阴极显示器。如果你想驱动一个普通阳极显示器,那么你必须取每个位的补码并替换代码中的十六进制值(我已经在第二个电路的代码中做了)。gydF4y2Ba

算法gydF4y2Ba

电路1gydF4y2Ba

  1. 首先初始化数组中所有数字的段十六进制值。gydF4y2Ba

无符号字符arr [10] = {0 x3f, 0 x06 0 x5b 0 x4f, 0 x66 0 x6d 0 x7d 0 x07 0 x7f, 0 x67};gydF4y2Ba

  1. 现在使用for循环并将数组值赋给PORT2,并具有一定的时间延迟。gydF4y2Ba

(我= 0;< 10;我+ +)gydF4y2Ba

{gydF4y2Ba

P2 = arr[我];gydF4y2Ba

delay_ms (500);gydF4y2Ba

}gydF4y2Ba

电路2gydF4y2Ba

  1. 首先初始化数组中所有数字的段十六进制值。gydF4y2Ba

ugydF4y2Baxc0 nsigned char ch [] = {0, 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90}gydF4y2Ba

2.根据值,交换数字。gydF4y2Ba

无效显示(unsigned long int n)gydF4y2Ba

{gydF4y2Ba

领导= ch (n / 1000);gydF4y2Ba

sw1 = 1;gydF4y2Ba

sdelay (30);gydF4y2Ba

sw1 = 0;gydF4y2Ba

领导= ch ((n / 100) % 10);gydF4y2Ba

sw2 = 1;gydF4y2Ba

sdelay (30);gydF4y2Ba

sw2 = 0;gydF4y2Ba

领导= ch [(n / 10) % 10];gydF4y2Ba

sw3 = 1;gydF4y2Ba

sdelay (30);gydF4y2Ba

sw3 = 0;gydF4y2Ba

领导= ch (n % 10);gydF4y2Ba

sw4 = 1;gydF4y2Ba

sdelay (30);gydF4y2Ba

sw4 = 0;gydF4y2Ba

}gydF4y2Ba

代码gydF4y2Ba

电路1码(单位数)gydF4y2Ba

第一个电路的代码和仿真文件可以从这个链接下载:gydF4y2Ba下载项目代码gydF4y2Ba

电路2代码(4位)gydF4y2Ba

电路1仿真视频gydF4y2Ba

如何操作?gydF4y2Ba

  1. 先把程序烧到单片机上gydF4y2Ba
  2. 根据电路图给出连接方式gydF4y2Ba
  3. 确保7段a到g引脚分别接在第一电路的P2.0到P2.6和第二电路的PORT0引脚上。gydF4y2Ba
  4. 接通电源,可以看到数字0 ~ 9在第一电路中连续显示,有一定的延迟;数字0 ~ 9999在第二电路中显示4位7段显示。gydF4y2Ba
  5. 电源开关。gydF4y2Ba

项目输出视频gydF4y2Ba

应用程序gydF4y2Ba

  • 数字时钟中广泛使用七段显示时间。gydF4y2Ba
  • 这些是用于电子仪表显示数字信息。gydF4y2Ba
  • 用于仪表板gydF4y2Ba
  • 用于数字显示。gydF4y2Ba

限制gydF4y2Ba

  • 为了显示较大的信息,增加了复杂性。gydF4y2Ba
  • 它是不可能显示符号在7段。gydF4y2Ba

17的反应gydF4y2Ba

  1. 我想把上面的项目部分用于我大学四年级的项目。gydF4y2Ba

    我需要得到上述项目的代码,以便得到一个想法,如何去编程在微控制器。并将其用作虚拟项目。gydF4y2Ba

    我使用七段显示显示信息关于我的客户。关于我的项目,我只能说这么多。gydF4y2Ba

    希望能尽快拿到密码。gydF4y2Ba
    紧迫。gydF4y2Ba
    谢谢你!gydF4y2Ba

  2. # includegydF4y2Ba
    void main ()gydF4y2Ba
    {gydF4y2Ba
    无符号字符赛格[10]= {0 x3f, 0 x06 0 x5b 0 x4f, 0 x66 0 x6d 0 x7d 0 x07 0 x7f, 0 x67};gydF4y2Ba
    无符号字符x;gydF4y2Ba
    unsigned int我;gydF4y2Ba
    P1 = 0 x00;gydF4y2Ba

    而(1)gydF4y2Ba
    {gydF4y2Ba
    (x = 0; x < 10; x + +)gydF4y2Ba
    {gydF4y2Ba
    P1 =赛格[x];gydF4y2Ba
    (我= 0;< 45000;我+ +)gydF4y2Ba
    {gydF4y2Ba
    }gydF4y2Ba
    }gydF4y2Ba
    }gydF4y2Ba
    }gydF4y2Ba

  3. 我们已经做过了,如果你们知道如何用开关控制7段显示器,还有一个要求是,如果开关1按下蜂鸣器会鸣叫一次,如果是2,就会鸣叫2次gydF4y2Ba

  4. 这个视频对我来说很有帮助,但对你来说没有多大用处gydF4y2Ba
    请解释一下4 - 7部分是如何同时工作的?gydF4y2Ba
    想要显示666,我们需要给每个选择线控制信号…你将如何给…控制信号到4 7段显示?gydF4y2Ba
    尽快回复,因为我正在做一个基于此的项目。gydF4y2Ba

留下一个回复gydF4y2Ba

您的电子邮件地址将不会被公布。gydF4y2Ba必需字段被标记gydF4y2Ba*gydF4y2Ba

Electronicshub图标gydF4y2Ba
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu