(十一)arduino入门:数码管显示

一、本节介绍

7段显示器是由并联连接的七个LED组成的装置,可用于显示数字和一些字母。可以通过将显示器上的不同引脚连接到电源来表示不同的字母/数字,从而并行打开LED。在本课中,您将学习如何使用这样的显示来显示字符。

二、材料准备

  • 1 * Arduino Uno板
  • 1 * 7段显示(普通阴极)
  • 8 *电阻(220Ω)
  • 1 * USB数据线
  • 杜邦线
  • 1 *面包板

三、原理讲解

数码管由七个以矩形方式排列的LED组成。七个LED中的每一个被称为段,因为当被照亮时,段形成数字数字(十进制和十六进制)的一部分以被显示。另外第八个LED有时在同一封装内使用,因此当两个或多个7段显示器连接在一起显示大于十的数字时,允许显示小数点(DP)。

image https://bbs.qutaojiao.com/assets/images/1-KWIMHoqunWzYvfaX.jpeg

数码管中的七个LED中的每一个被给予位置段,其中一个连接引脚被直接从矩形塑料封装中取出。这些LED引脚从一个直到g标记,代表每个单独的LED。其他LED引脚连接在一起并进行布线以形成公共引脚。

因此,通过以特定顺序向前偏置LED段的适当引脚,某些段将变亮,而其他段将变暗,从而可以在显示器上生成所需数字的字符模式。这样我们就可以在同一个7段显示屏上显示十位十进制数字0到9中的每一个。

显示器的公共引脚通常用于标识哪种类型的7段显示器。由于每个LED具有两个连接引脚,一个称为“阳极”和另一个“阴极”,因此有两种类型的LED 7段显示器,称为公共阴极(CC)和通用阳极(CA)。

两个显示器之间的区别,正如其名称所示,共阴极是将7段的所有阴极直接连接在一起,共阳极具有连接在一起的7段的所有阳极。

共阴极(CC) – 在共阴极显示中,LED段的所有阴极连接都连接在逻辑“0”或接地。通过经由限流电阻器施加“HIGH”或逻辑“1”信号来照亮各个段,以使各个阳极端子(ag)正向偏置。

共阴极数码管显示

image https://bbs.qutaojiao.com/assets/images/1-ugkLe47IJCwJgpK3.jpeg

普通阳极(CA) – 在共阳极数码管中,LED段的所有阳极连接都连接到逻辑“1”。通过将合适的限流电阻施加到特定段(ag)的阴极的接地逻辑“0”或“低”信号来照亮各个段。

常见的阳极数码管显示

image https://bbs.qutaojiao.com/assets/images/1-FCBnEZj2nm7w2uYo.jpeg

四、实验步骤

步骤1:建立电路

数码管和Arduino Uno板之间的接线如下图所示:

隐藏内容,您需要满足以下条件方可查看
End

image https://bbs.qutaojiao.com/assets/images/1-XggGMgN4Qtuzxqrd.png

原理图

隐藏内容,您需要满足以下条件方可查看
End

步骤2:编写程序

步骤3:编译代码

步骤4:将程序上传到Arduino Uno板

您现在应该看到7段显示从0到9,然后A到F,来回。

image https://bbs.qutaojiao.com/assets/images/1-bsCXsJrJ10KZc8z7.jpeg

本节代码:

       
设备: 添加
平台:
/***********************************/
//数码管显示
//您现在应该看到从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);
}

人已赞赏
入门教程Arduino

(十)arduino入门:串行监视器

2018-6-13 21:35:05

入门教程Arduino

(十二)arduino入门:74HC595数码管

2018-6-14 10:50:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索