风筝
发表于: 2018-8-11 15:50:10 | 显示全部楼层

对于许多应用来说,不需要使用价格昂贵的液晶显示屏来显示数据。简单的七段数码管就够了。

如果您的Arduino应用只需要显示一些数字,请考虑使用七段数码管显示。 七段数码管有七个LED指示灯,排列成8字形状。它们易于使用且成本低廉。下图显示了一个常见的七段数码管。

SSD.jpg


七段数码管有两种类型:共阳极和共阴极。两种类型的内部结构几乎相同。不同之处在于LED的极性和公共端子。在共阴极七段数码管中,所有七个LED以及标点LED将阴极连接到引脚3和引脚8。要使用该数码管,我们需要将GROUND连接到引脚3和引脚8,并将+ 5V连接到其他引脚,使各个段点亮。下图显示了共阴极七段数码管的内部结构:

Common_cathode.png

共阴极

共阳极数码管正好相反。在共阳极数码管中,所有八个LED的正极连接在一起,然后连接到引脚3和引脚8。要打开单个段,请将其中一个引脚接地。下图显示了共阳极七段数码管的内部结构。

Common_Anode.png

共阳极

七段标记为a-g,点为“dp”,如下图所示:

SSD_circuit_new.jpg

要显示特定数字,请单独点亮某段,如下表所示:

数字
gfedcba
abcdefg
a
b
c
d
e
f
g
0
0×3F
0×7E
on
on
on
on
on
on
off
1
0×06
0×30
off
on
on
off
off
off
off
2
0×5B
0×6D
on
on
off
on
on
off
on
3
0×4F
0×79
on
on
on
on
off
off
on
4
0×66
0×33
off
on
on
off
off
on
on
5
0×6D
0×5B
on
off
on
on
off
on
on
6
0×7D
0×5F
on
off
on
on
on
on
on
7
0×07
0×70
on
on
on
off
off
off
off
8
0×7F
0×7F
on
on
on
on
on
on
on
9
0×6F
0×7B
on
on
on
on
off
on
on
A
0×77
0×77
on
on
on
on
on
on
on
B
0×7C
0×1F
off
off
on
on
on
on
on
C
0×39
0×4E
on
off
on
on
on
off
off
D
0×5E
0×3D
off
on
on
on
on
off
on
E
0×79
0×4F
on
off
off
on
on
on
on
F
0×71
0×47
on
off
off
off
on
on
on

实验1

在这个实验中,我们将只需点亮和熄灭关闭LED,来熟悉七段数码管的工作原理。


需要的硬件

●    七段数码管(共阴极)

●    Arduino MEGA2560开发板

●    面包板

●    220欧电阻(1/4 W)

●    连接导线


接线图

在该电路中,七段数码管的引脚连接到Arduino引脚2-9,如下表所示。公共引脚(引脚3和引脚8)连接到GND,dp没有连接,因为此实验未使用dp。

七段数码管引脚
Arduino引脚
导线颜色
1(e)
6
橙色
2(d)
5
白色
3,8(COM)
GND
4(C )
4
黄色
5(dp)
-
6(b)
3
红色
7(a)
2
蓝色
9(F)
7
青色
10(g)
8
绿色

seven-segment-arduino_ver2.jpg


代码

  1. void setup()
  2. {
  3.   // define pin modes
  4.   
  5. pinMode(2,OUTPUT);
  6. pinMode(3,OUTPUT);
  7. pinMode(4,OUTPUT);
  8. pinMode(5,OUTPUT);
  9. pinMode(6,OUTPUT);
  10. pinMode(7,OUTPUT);
  11. pinMode(8,OUTPUT);

  12. }

  13. void loop()
  14. {
  15.   // loop to turn leds od seven seg ON
  16.   
  17.   for(int i=2;i<9;i++)
  18.   {
  19.     digitalWrite(i,HIGH);
  20.     delay(600);
  21.   }
  22.   
  23.   // loop to turn leds od seven seg OFF
  24.   for(int i=2;i<9;i++)
  25.   {
  26.     digitalWrite(i,LOW);
  27.     delay(600);
  28.   }
  29.   
  30.   
  31.   delay(1000);

  32. }
复制代码


实验2

在本实验中,我们将使用Arduino mega开发板连接七段数码管,并学习在七段数码管上显示从九开始的倒计时,延迟一秒。


需要的硬件

该实验所需的硬件与实验1相同。


接线图

该实验的接线图与实验1的电路相同。


代码

  1. // make an array to save Sev Seg pin configuration of numbers

  2. int num_array[10][7] = {  { 1,1,1,1,1,1,0 },    // 0
  3.                           { 0,1,1,0,0,0,0 },    // 1
  4.                           { 1,1,0,1,1,0,1 },    // 2
  5.                           { 1,1,1,1,0,0,1 },    // 3
  6.                           { 0,1,1,0,0,1,1 },    // 4
  7.                           { 1,0,1,1,0,1,1 },    // 5
  8.                           { 1,0,1,1,1,1,1 },    // 6
  9.                           { 1,1,1,0,0,0,0 },    // 7
  10.                           { 1,1,1,1,1,1,1 },    // 8
  11.                           { 1,1,1,0,0,1,1 }};   // 9
  12.                                        
  13. //function header
  14. void Num_Write(int);

  15. void setup()
  16. {
  17.   // set pin modes
  18.   pinMode(2, OUTPUT);   
  19.   pinMode(3, OUTPUT);
  20.   pinMode(4, OUTPUT);
  21.   pinMode(5, OUTPUT);
  22.   pinMode(6, OUTPUT);
  23.   pinMode(7, OUTPUT);
  24.   pinMode(8, OUTPUT);
  25.   

  26. }

  27. void loop()
  28. {
  29.   
  30.   //counter loop
  31.   
  32.   for (int counter = 10; counter > 0; --counter)
  33.   {
  34.    delay(1000);
  35.    Num_Write(counter-1);
  36.   }
  37.   delay(3000);
  38. }

  39. // this functions writes values to the sev seg pins  
  40. void Num_Write(int number)
  41. {
  42.   int pin= 2;
  43.   for (int j=0; j < 7; j++) {
  44.    digitalWrite(pin, num_array[number][j]);
  45.    pin++;
  46.   }
  47. }
复制代码

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-22 04:46 , Processed in 0.042634 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表