首页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。阳极就不受影响了。在共阳极,七段显示所有的阳极绑在一起,阴极自由留下。下图为七段显示器的内部连接。gydF4y2Ba

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

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

线路图gydF4y2Ba

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

在第一个电路,我是接口一个单数字7段显示8051。七段显示器是常见的阴极式显示器。gydF4y2Ba

7段显示器与8051位电路的接口gydF4y2Ba

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

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

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

电路元件gydF4y2Ba

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

也请阅读帖子-gydF4y2Ba[gydF4y2Ba如何实现直流电动机与8051单片机的接口gydF4y2Ba?gydF4y2Ba]gydF4y2Ba

电路设计gydF4y2Ba

电路1gydF4y2Ba

这里用共阴极七段来显示数字。在这个电路中,7段的引脚a到h连接到微控制器的PORT 2和gydF4y2BacomgydF4y2Ba引脚通过330欧姆的电阻连接到地面。这个电阻是用来降低电压的。由于我们正在使用共阴极七段,我们需要发送LOGIC 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。下表向您展示了我们需要从PORT2发送的十六进制十进制值,以显示从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

Void显示(无符号长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

电路仿真视频1gydF4y2Ba

如何操作?gydF4y2Ba

  1. 最初将程序刻录到微控制器中gydF4y2Ba
  2. 按电路图给出连接方法gydF4y2Ba
  3. 确保7段的a ~ g引脚分别连接到第1路的P2.0 ~ P2.6和第2路的PORT0引脚上。gydF4y2Ba
  4. 打开电源,可以观察到数字0到9在第一个电路中连续显示,有一定的延迟,数字0到9999在第二个电路中显示为4位7段显示器。gydF4y2Ba
  5. 电源开关。gydF4y2Ba

项目输出视频gydF4y2Ba

应用程序gydF4y2Ba

  • 七段时间在数字时钟中被广泛使用来显示时间。gydF4y2Ba
  • 它们用于电子仪表中显示数值信息。gydF4y2Ba
  • 用于仪表板gydF4y2Ba
  • 用于数字读数显示器。gydF4y2Ba

限制gydF4y2Ba

  • 为了显示大的信息,复杂度增加了。gydF4y2Ba
  • 不能在七段上显示符号。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. 这个视频对我来说很有帮助,但它并不是很有用gydF4y2Ba
    给我解释一下,这4个7段是如何同时工作的?gydF4y2Ba
    像显示666,我们需要给每个选择线的控制信号,你将如何给控制信号到4 7段显示?gydF4y2Ba
    尽快回复,因为我正在做一个基于此的项目。gydF4y2Ba

留下一个回复gydF4y2Ba

您的电邮地址将不会公布。gydF4y2Ba

Baidu
map