|
对于许多应用来说,不需要使用价格昂贵的液晶显示屏来显示数据。简单的七段数码管就够了。 如果您的Arduino应用只需要显示一些数字,请考虑使用七段数码管显示。 七段数码管有七个LED指示灯,排列成8字形状。它们易于使用且成本低廉。下图显示了一个常见的七段数码管。
七段数码管有两种类型:共阳极和共阴极。两种类型的内部结构几乎相同。不同之处在于LED的极性和公共端子。在共阴极七段数码管中,所有七个LED以及标点LED将阴极连接到引脚3和引脚8。要使用该数码管,我们需要将GROUND连接到引脚3和引脚8,并将+ 5V连接到其他引脚,使各个段点亮。下图显示了共阴极七段数码管的内部结构:
共阴极 共阳极数码管正好相反。在共阳极数码管中,所有八个LED的正极连接在一起,然后连接到引脚3和引脚8。要打开单个段,请将其中一个引脚接地。下图显示了共阳极七段数码管的内部结构。
共阳极 七段标记为a-g,点为“dp”,如下图所示:
要显示特定数字,请单独点亮某段,如下表所示: 数字
| 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 | 绿色 |
代码 - void setup()
- {
- // define pin modes
-
- pinMode(2,OUTPUT);
- pinMode(3,OUTPUT);
- pinMode(4,OUTPUT);
- pinMode(5,OUTPUT);
- pinMode(6,OUTPUT);
- pinMode(7,OUTPUT);
- pinMode(8,OUTPUT);
-
- }
- void loop()
- {
- // loop to turn leds od seven seg ON
-
- for(int i=2;i<9;i++)
- {
- digitalWrite(i,HIGH);
- delay(600);
- }
-
- // loop to turn leds od seven seg OFF
- for(int i=2;i<9;i++)
- {
- digitalWrite(i,LOW);
- delay(600);
- }
-
-
- delay(1000);
- }
复制代码
实验2 在本实验中,我们将使用Arduino mega开发板连接七段数码管,并学习在七段数码管上显示从九开始的倒计时,延迟一秒。
需要的硬件 该实验所需的硬件与实验1相同。
接线图 该实验的接线图与实验1的电路相同。
代码 - // make an array to save Sev Seg pin configuration of numbers
- int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0
- { 0,1,1,0,0,0,0 }, // 1
- { 1,1,0,1,1,0,1 }, // 2
- { 1,1,1,1,0,0,1 }, // 3
- { 0,1,1,0,0,1,1 }, // 4
- { 1,0,1,1,0,1,1 }, // 5
- { 1,0,1,1,1,1,1 }, // 6
- { 1,1,1,0,0,0,0 }, // 7
- { 1,1,1,1,1,1,1 }, // 8
- { 1,1,1,0,0,1,1 }}; // 9
-
- //function header
- void Num_Write(int);
- void setup()
- {
- // set pin modes
- pinMode(2, OUTPUT);
- pinMode(3, OUTPUT);
- pinMode(4, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(8, OUTPUT);
-
-
- }
- void loop()
- {
-
- //counter loop
-
- for (int counter = 10; counter > 0; --counter)
- {
- delay(1000);
- Num_Write(counter-1);
- }
- delay(3000);
- }
- // this functions writes values to the sev seg pins
- void Num_Write(int number)
- {
- int pin= 2;
- for (int j=0; j < 7; j++) {
- digitalWrite(pin, num_array[number][j]);
- pin++;
- }
- }
复制代码
|