数码管介绍
数码管是一种发光半导体器件,它的基本单元是发光二极管
类型
按 段
- 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
}
}