作者 :alajl
日期: 2011-4-4
标题: Arduino第二次实验 —倒计时牌
原文链接: http://blog.youkuaiyun.com/alajl
准备工作:
1.Arduino 328控制板 1个
2.Prototype shield 扩展板 1个
3.面包板 1个
4.LED-8段共阳数码管,图示如下
5.电阻 220欧 -若干
6.多彩面包线 -若干条
LED数码管分为共阳和共阴 2种,解释如下:
共阳数码管在应用时应将公共极 COM 接到 +5V ,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极 (COM) 的数码管。共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
那么 LED的数码管电路图如下:
如果你要显示 1 ,那么 bc 灯点亮;
如果你要显示 2 ,那么 abged 灯点亮;
以此类推
dp, 表示的是小数点
电路图连接:
我们需要 8 根连接线,分别连接 a-g 和 dp
1 根线连接 , 接 5V 到 LED 灯的共阳级
代码如下:
// 设置控制各段的数字 IO 脚
int a=6;
int b=5;
int c=9;
int d=10;
int e=11;
int f=7;
int g=8;
int dp=4;
int waitTimer=1000;
void init_wire(){
int j;
for(j=4;j<=11;j++)
digitalWrite(j,HIGH);
}
// 显示数字 0
void digital_0(void)
{
init_wire();
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
}
// 显示数字 1
void digital_1(void)
{
init_wire();
digitalWrite(c,LOW);// 给数字 5 引脚低电平 , 点亮 c 段
digitalWrite(b,LOW);// 点亮 b 段
}
// 显示数字 2
void digital_2(void)
{
init_wire();
digitalWrite(b,LOW);
digitalWrite(a,LOW);
digitalWrite(g,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
// 显示数字 3
void digital_3(void)
{
init_wire();
digitalWrite(b,LOW);
digitalWrite(a,LOW);
digitalWrite(g,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
}
// 显示数字 4
void digital_4(void)
{
init_wire();
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
}
// 显示数字 5
void digital_5(void)
{
init_wire();
digitalWrite(a,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
}
// 显示数字 6
void digital_6(void)
{
init_wire();
digitalWrite(a,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
digitalWrite(g,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
}
// 显示数字 7
void digital_7(void)
{
init_wire();
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
}
// 显示数字 8
void digital_8(void)
{
init_wire();
int i;
for(i=5;i<=11;i++)
digitalWrite(i,LOW);
}
// 显示数字 9
void digital_9(void)
{
init_wire();
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
}
// 显示数字 p
void digital_p(void)
{
init_wire();
digitalWrite(dp,LOW);
}
void setup()
{
int i;// 定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);// 设置 4 ~ 11 引脚为输出模式
}
void loop()
{
setup();
while(1)
{
digital_1();// 数字 1
delay(waitTimer);// 延时 2s
digital_2();
delay(waitTimer);
digital_3();
delay(waitTimer);
digital_4();
delay(waitTimer);
digital_5();
delay(waitTimer);
digital_6();
delay(waitTimer);
digital_7();
delay(waitTimer);
digital_8();
delay(waitTimer);
digital_9();
delay(waitTimer);
digital_0();
delay(waitTimer);
digital_p();
delay(waitTimer);
}
}