多段数码管显示

数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极 COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

数码管

数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。当某一字段的阳极为高电平时,相应字段就点亮。

数码管共有七段显示数字的段,还有一个显示小数点的段。当让数码管显示数字时,只要将相应的段点亮即可。例如:让数码管显示数字1,则将b、c段点亮即可。

所需器材

数码管所需器材

原理图

数码管实验原理图

实物连接图

数码管连接图

程序代码

//设置控制各段的数字IO脚
int a = 7; //定义数字接口7连接a段数码管
int b = 6; // 定义数字接口6连接b段数码管
int c = 5; // 定义数字接口5连接c段数码管
int d = 11; // 定义数字接口11连接d段数码管
int e = 10; // 定义数字接口10连接e段数码管
int f = 8; // 定义数字接口8连接f段数码管
int g = 9; // 定义数字接口9连接g段数码管
int dp = 4; // 定义数字接口4连接dp段数码管
void digital_1(void) //显示数字1
{
  unsigned char j;
  digitalWrite(c, HIGH); //给数字接口5引脚高电平,点亮c段
  digitalWrite(b, HIGH); //点亮b段
  for (j = 7; j <= 11; j++) //熄灭其余段
    digitalWrite(j, LOW);
  digitalWrite(dp, LOW); //熄灭小数点DP段
}
void digital_2(void) //显示数字2
{
  unsigned char j;
  digitalWrite(b, HIGH);
  digitalWrite(a, HIGH);
  for (j = 9; j <= 11; j++)
    digitalWrite(j, HIGH);
  digitalWrite(dp, LOW);
  digitalWrite(c, LOW);
  digitalWrite(f, LOW);
}
void digital_3(void) //显示数字3
{
  unsigned char j;
  digitalWrite(g, HIGH);
  digitalWrite(d, HIGH);
  for (j = 5; j <= 7; j++)
    digitalWrite(j, HIGH);
  digitalWrite(dp, LOW);
  digitalWrite(f, LOW);
  digitalWrite(e, LOW);
}
void digital_4(void) //显示数字4
{
  digitalWrite(c, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
  digitalWrite(a, LOW);
  digitalWrite(e, LOW);
  digitalWrite(d, LOW);
}
void digital_5(void) //显示数字5
{
  unsigned char j;
  for (j = 7; j <= 9; j++)
    digitalWrite(j, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(dp, LOW);
  digitalWrite(b, LOW);
  digitalWrite(e, LOW);
}
void digital_6(void) //显示数字6
{
  unsigned char j;
  for (j = 7; j <= 11; j++)
    digitalWrite(j, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(dp, LOW);
  digitalWrite(b, LOW);
}
void digital_7(void) //显示数字7
{
  unsigned char j;
  for (j = 5; j <= 7; j++)
    digitalWrite(j, HIGH);
  digitalWrite(dp, LOW);
  for (j = 8; j <= 11; j++)
    digitalWrite(j, LOW);
}
void digital_8(void) //显示数字8
{
  unsigned char j;
  for (j = 5; j <= 11; j++)
    digitalWrite(j, HIGH);
  digitalWrite(dp, LOW);
}
void digital_9(void) //显示数字9.
{
  unsigned char j;
  for (j = 4; j <= 11; j++)
    digitalWrite(j, HIGH);
  digitalWrite(e, LOW);
}

void setup()
{
  int i;//定义变量
  for (i = 4; i <= 11; i++)
    pinMode(i, OUTPUT); //设置4~11引脚为输出模式
}
void loop()
{
  while (1)
  {
    digital_1();//显示数字1
    delay(2000);//延时2s
    digital_2();//显示数字2
    delay(1000); //延时1s
    digital_3();//显示数字3
    delay(1000); //延时1s
    digital_4();//显示数字4
    delay(1000); //延时1s
    digital_5();//显示数字5
    delay(1000); //延时1s
    digital_6();//显示数字6
    delay(1000); //延时1s
    digital_7();//显示数字7
    delay(1000); //延时1s
    digital_8();//显示数字8
    delay(1000); //延时1s
    digital_9();//显示数字9.
    delay(1000); //延时1s
  }
}
文件下载(已下载 4 次)

发布时间:2019/7/7 下午8:54:58  阅读次数:2350

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号