目录
一、本节介绍
7段显示器是由并联连接的七个LED组成的装置,可用于显示数字和一些字母。可以通过将显示器上的不同引脚连接到电源来表示不同的字母/数字,从而并行打开LED。在本课中,您将学习如何使用这样的显示来显示字符。
二、材料准备
- 1 * Arduino Uno板
- 1 * 7段显示(普通阴极)
- 8 *电阻(220Ω)
- 1 * USB数据线
- 杜邦线
- 1 *面包板
三、原理讲解
数码管由七个以矩形方式排列的LED组成。七个LED中的每一个被称为段,因为当被照亮时,段形成数字数字(十进制和十六进制)的一部分以被显示。另外第八个LED有时在同一封装内使用,因此当两个或多个7段显示器连接在一起显示大于十的数字时,允许显示小数点(DP)。
数码管中的七个LED中的每一个被给予位置段,其中一个连接引脚被直接从矩形塑料封装中取出。这些LED引脚从一个直到g标记,代表每个单独的LED。其他LED引脚连接在一起并进行布线以形成公共引脚。
因此,通过以特定顺序向前偏置LED段的适当引脚,某些段将变亮,而其他段将变暗,从而可以在显示器上生成所需数字的字符模式。这样我们就可以在同一个7段显示屏上显示十位十进制数字0到9中的每一个。
显示器的公共引脚通常用于标识哪种类型的7段显示器。由于每个LED具有两个连接引脚,一个称为“阳极”和另一个“阴极”,因此有两种类型的LED 7段显示器,称为公共阴极(CC)和通用阳极(CA)。
两个显示器之间的区别,正如其名称所示,共阴极是将7段的所有阴极直接连接在一起,共阳极具有连接在一起的7段的所有阳极。
共阴极(CC) – 在共阴极显示中,LED段的所有阴极连接都连接在逻辑“0”或接地。通过经由限流电阻器施加“HIGH”或逻辑“1”信号来照亮各个段,以使各个阳极端子(ag)正向偏置。
共阴极数码管显示
普通阳极(CA) – 在共阳极数码管中,LED段的所有阳极连接都连接到逻辑“1”。通过将合适的限流电阻施加到特定段(ag)的阴极的接地逻辑“0”或“低”信号来照亮各个段。
常见的阳极数码管显示
四、实验步骤
步骤1:建立电路
数码管和Arduino Uno板之间的接线如下图所示:
原理图
步骤2:编写程序
步骤3:编译代码
步骤4:将程序上传到Arduino Uno板
您现在应该看到7段显示从0到9,然后A到F,来回。
本节代码:
[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]
/***********************************/
//数码管显示
//您现在应该看到从0到F的7段显示周期
//2017.10.17
/***********************************/
const int a = 7; //a连接到数字引脚7
const int b = 6; // b连接到数字引脚6
const int c = 5; //c 连接到数字引脚5
const int d = 11; //d连接到数字引脚11
const int e = 10; //e 连接到数字引脚 10
const int f = 8; //f 连接到数字引脚 8
const int g = 9; //g 连接到数字引脚 9
const int dp = 4; //dp 连接到数字引脚 4
void setup()
{
//从4到11循环,并将它们全部初始化为 输出
for (int thisPin = 4; thisPin <= 11; thisPin++)
{
pinMode(thisPin, OUTPUT);
}
digitalWrite(dp, LOW); //从4到11循环,并将它们全部输出
}
/*********以下为数码管 1-f 的显示函数*********/
void digital_1(void) //显示 1 函数
{
digitalWrite(c, HIGH); //数码管c段为高电平
digitalWrite(b, HIGH); //数码管b段为高电平
for (int j = 7; j <= 11; j++) //数码管其余段为低电平
digitalWrite(j, LOW);
}
void digital_2(void)
{
digitalWrite(b, HIGH);
digitalWrite(a, HIGH);
for (int j = 9; j <= 11; j++)
digitalWrite(j, HIGH);
digitalWrite(c, LOW);
digitalWrite(f, LOW);
}
void digital_3(void)
{
unsigned char j;
digitalWrite(g, HIGH);
digitalWrite(d, HIGH);
for (j = 5; j <= 7; j++)
digitalWrite(j, HIGH);
digitalWrite(f, LOW);
digitalWrite(e, LOW);
}
void digital_4(void)
{
digitalWrite(c, HIGH);
digitalWrite(b, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(a, LOW);
digitalWrite(e, LOW);
digitalWrite(d, LOW);
}
void digital_5(void)
{
unsigned char j;
for (j = 7; j <= 9; j++)
digitalWrite(j, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(b, LOW);
digitalWrite(e, LOW);
}
void digital_6(void)
{
unsigned char j;
for (j = 7; j <= 11; j++)
digitalWrite(j, HIGH);
digitalWrite(c, HIGH);
digitalWrite(b, LOW);
}
void digital_7(void)
{
unsigned char j;
for (j = 5; j <= 7; j++)
digitalWrite(j, HIGH);
for (j = 8; j <= 11; j++)
digitalWrite(j, LOW);
}
void digital_8(void)
{
unsigned char j;
for (j = 5; j <= 11; j++)
digitalWrite(j, HIGH);
}
void digital_9(void)
{
unsigned char j;
for (j = 5; j <= 9; j++)
digitalWrite(j, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
}
void digital_A(void)
{
unsigned char j;
for (j = 5; j <= 10; j++)
digitalWrite(j, HIGH);
digitalWrite(d, LOW);
}
void digital_b(void)
{
unsigned char j;
for (j = 7; j <= 11; j++)
digitalWrite(j, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
}
void digital_C(void)
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
void digital_d(void)
{
unsigned char j;
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(j, HIGH);
for (j = 9; j <= 11; j++)
digitalWrite(j, HIGH);
}
void digital_E(void)
{
unsigned char j;
digitalWrite(b, LOW);
digitalWrite(c, LOW);
for (j = 7; j <= 11; j++)
digitalWrite(j, HIGH);
}
void digital_F(void)
{
unsigned char j;
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
for (j = 7; j <= 10; j++)
digitalWrite(j, HIGH);
}
void loop()
{
digital_1();//显示1
delay(1000);//延时1秒
digital_2();//显示2
delay(1000);
digital_3();//显示3
delay(1000);
digital_4();//显示4
delay(1000);
digital_5();//显示5
delay(1000);
digital_6();//显示6
delay(1000);
digital_7();//显示7
delay(1000);
digital_8();//显示8
delay(1000);
digital_9();//显示9
delay(1000);
digital_A();//显示a
delay(1000);
digital_b();//显示b
delay(1000);
digital_C();//显示c
delay(1000);
digital_d();//显示d
delay(1000);
digital_E();//显示e
delay(1000);
digital_F();//显示f
delay(1000);
}
[/scu]
写的特别棒
支持