Arduino初初教程2——I/O口输出应用

Arduino除了能驱动LED之外,还可以通过I/O输出驱动蜂鸣器和数码管。
LED(发光二极管),能将电能转化为光能,其也具有单向导电性,反向击穿电压约5V。它的正向伏安特性曲线很陡,使用时必须串连限流电阻,在5V的电路中一般使用400欧左右的电阻。
LED的两根引脚中较长的一根为正极。有两种接法,1、当led的正极通过限流电阻与Arduino的I/O口相连,另一端接地,此时Arduino输出高电平时led点亮,输出低电平时led熄灭。2、当led的负极与Arduino的I/O口相连,另一端通过限流电阻接5V电压,此时Arduino输出低时led点亮,输出高电平时led熄灭。
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电。也可以采用上面说到两种接法,不同的是不需要接限流电阻。
数码管可以看成是多个led的集合,led的公共脚接在一起,若公共脚是正极的称为共阳极数码管,公共脚是负极的称为公阴极数码管。按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个小数点。
接下来我们使用一个公阳极的数码管循环显示1到8 八个数字。电路连接上数码管的公共引脚接5V电压,其他引脚串连限流电阻接到Arduino的I/O口上。数码管上7个短线段分别用A、B、C、D、E、F、G表示。如下
    a
      —
f  |   g   | b
      —
e |   d   | c
      —
Arduino的连接对应关系如下(引脚输出低电亮数码段)
a ——  7引脚
b ——  6引脚
c ——  5引脚
d ——  11引脚
e ——  10引脚
f ——  8引脚
g ——  9引脚
程序如下(直接粘贴到Arduino开发环境下就可直接应用):
//设置控制各段的数字IO脚
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
//显示数字1
void digital_1(void)
{
  unsigned char j;
  digitalWrite(c,LOW);//给数字5引脚低电平,点亮c段
  digitalWrite(b,LOW);//点亮b段
  for(j=7;j<=11;j++)//熄灭其余段
    digitalWrite(j,HIGH);
}
//显示数字2
void digital_2(void)
{
  unsigned char j;
  digitalWrite(b,LOW);
  digitalWrite(a,LOW);
  for(j=9;j<=11;j++)
    digitalWrite(j,LOW);
digitalWrite(c,HIGH);
  digitalWrite(f,HIGH);
}
//显示数字3
void digital_3(void)
{
  unsigned char j;
  digitalWrite(g,LOW);
  digitalWrite(d,LOW);
  for(j=5;j<=7;j++)
    digitalWrite(j,LOW);
digitalWrite(f,HIGH);
  digitalWrite(e,HIGH);
}
//显示数字4
void digital_4(void)
{
  digitalWrite(c,LOW);
  digitalWrite(b,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
digitalWrite(a,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(d,HIGH);   
}
//显示数字5
void digital_5(void)
{
  unsigned char j;
  for(j=7;j<=9;j++)
    digitalWrite(j,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
digitalWrite(b,HIGH);
  digitalWrite(e,HIGH);
}
//显示数字6
void digital_6(void)
{
  unsigned char j;
  for(j=7;j<=11;j++)
    digitalWrite(j,LOW);
  digitalWrite(c,LOW);
digitalWrite(b,HIGH);
}
//显示数字7
void digital_7(void)
{
  unsigned char j;
  for(j=5;j<=7;j++)
    digitalWrite(j,LOW);
for(j=8;j<=11;j++)
    digitalWrite(j,HIGH);
}
//显示数字8
void digital_8(void)
{
  unsigned char j;
  for(j=5;j<=11;j++)
    digitalWrite(j,LOW);
}
void setup()
{
  int i;//定义变量
  for(i=5;i<=11;i++)
    pinMode(i,OUTPUT);//设置5~11引脚为输出模式
}
void loop()
{  
  while(1)
  {
    digital_1();//数字1
    delay(2000);//延时2s
    digital_2();
    delay(2000);
    digital_3();
    delay(2000);
    digital_4();
    delay(2000);
    digital_5();
    delay(2000);
    digital_6();
    delay(2000);
    digital_7();
    delay(2000);
    digital_8();
    delay(2000);   
  }
}
[ 本帖最后由 晨光熹微 于 2011-6-25 19:40 编辑 ]

附件

20110625_64a3194d9b55bc32aef28coGtSjsqfnC  20110625_d4625e1aac4646b8ce1dxDVHoCJC98Z3 20110625_d22c58b8e01f00e91fd7iAsdTMKZPhsJ

转载于:https://my.oschina.net/u/732489/blog/134017

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值