arduino 基础设备使用-数码管

数码管介绍

数码管是一种发光半导体器件,它的基本单元是发光二极管

类型

按 段
  • 1 七段二极管
  • 2 八段二极管(多了个小数点)
按 发光二极管的连接方式
  • 共阴数码管
    所以发光二极管的阴极 连接在一起形成一个 公共阴极
  • 共阳数码管
    所以发光二极管的阳极 连接在一起形成一个 公共阳极(COM)

使用方法

注意:因为发光二极管每一字段都是由发光二极管组成,需连接限流电阻

  • 共阳八段数码管:
    在公共极(COM)接 +5V 电压 ,
    当某一字段的发光二极管的阴极为低电平时,相应字段就被点亮。
    当某一字段的发光二极管的阴极为高电平时,相应字段就不亮了。

  • 共阴八段数码管:
    在公共极(COM)接 GUD 地线 ,
    当某一字段的发光二极管的阳极为高电平时,相应字段就被点亮。
    当某一字段的发光二极管的阳极为低电平时,相应字段就不亮了。

实验器材准备

八段数码管 一个
220Ω直插电阻 一个
面包板 一个
跳线 一扎

接线原理图

在这里插入图片描述
在这里插入图片描述
偷懒 直接在公共端串联一个电阻即可

数码管内部连线图

在这里插入图片描述
在这里插入图片描述

代码

//设置控制各段的数字IO 脚
int a=7;//定义数字接口7 连接a 段数码管
int b=6;// 定义数字接口6 连接b 段数码管
int c=5;// 定义数字接口5 连接c 段数码管
int d=10;// 定义数字接口10 连接d 段数码管
int e=11;// 定义数字接口11 连接e 段数码管
int f=8;// 定义数字接口8 连接f 段数码管
int g=9;// 定义数字接口9 连接g 段数码管
int dp=4;// 定义数字接口4 连接dp 段数码管

void digital_0(void) //显示数字1
{
unsigned char j;

digitalWrite(g,LOW);

for(j=4;j<=11;j++)//除G都点亮
{
  if(j == 9)continue;
  digitalWrite(j,HIGH);
}
digitalWrite(dp,LOW);//熄灭小数点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) //显示数字8
{
unsigned char j;
for(j=5;j<=10;j++)
{
  digitalWrite(j,HIGH);
}
digitalWrite(e,LOW);
digitalWrite(dp,LOW);
}

void setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11 引脚为输出模式
}

void loop()
{
while(1)
{
digital_0();//显示数字1
delay(1000);//延时2s
digital_1();//显示数字1
delay(1000);//延时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();//显示数字8
delay(1000); //延时1s
}
}
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值