Arduino 数码管 LED 驱动 数组法
上个例子讲到驱动 LED 数码管,采用一种最直接的方案,对每个 LED 进行高低电平的控制,
这样的优点是每个 LED 都是受控可检的,避免了由于短路造成的假象,但对于数字变化来说,
写起来就非常冗余,因此这次尝试用数组的方法实现。
[plain] view plaincopy
1. //设置阴极接口
2. int d1 = 1;
3. int d2 = 2;
4. int d3 = 3;
5. int d4 = 4;
6. int d5 = 5;
7. int d6 = 6;
8. int d7 = 7;
9. //设置阳极接口
10. int a = 8;
11. int b = 9;
12. int c = 10;
13. int d = 11;
14. int e = 12;
15. int f = 13;
16. int g = A0;
17. int h = A1;
18.
19. byte gyang[8] = { a, b, c, d, e, f, g, h };
20. byte gyin[7] = { d1, d2, d3, d4, d5, d6, d7 };
21.
22. byte gong_yang[14][8] = {
23. { 1,1,0,0,0,0,0,0 }, // 0 = 缺水
24. { 0,0,1,1,0,0,0,0 }, // 1 = 低水位
25. { 0,0,0,0,1,1,1,0 }, // 2 = 定时关机
26. { 1,1,1,1,1,1,0,0 }, // 3 = 0
27. { 0,1,1,0,0,0,0,0 }, // 4 = 1
28. { 1,1,0,1,1,0,1,0 }, // 5 = 2
29. { 1,1,1,1,0,0,1,0 }, // 6 = 3
30. { 0,1,1,0,0,1,1,0 }, // 7 = 4
31. { 1,0,1,1,0,1,1,0 }, // 8 = 5
32. { 1,0,1,1,1,1,1,0 }, // 9 = 6
33. { 1,1,1,0,0,0,0,0 }, // 10 = 7
34. { 1,1,1,1,1,1,1,0 }, // 11 = 8
35. { 1,1,1,1,0,1,1,0 }, // 12 = 9
36. { 0,0,0,0,0,0,0,1 }, // 13 = 摄氏度符号、睡眠符号
37. };
38. byte gong_yin[5][7] = {
39. { 1,1,1,1,1,1,0 }, // 0 = 缺水、低水位、定时关机
40. { 0,1,1,1,1,1,1 }, // 1 = 温度十位、摄氏度符号
41. { 1,0,1,1,1,1,1 }, // 2 = 温度个位、睡眠符号
42. { 0,0,1,1,1,1,1 }, // 3 = 温度个和十位
43. { 1,1,0,0,0,0,1 }, // 4 = 时钟个、十位和两点
44. };
45.
46. void setup()
47. {
48. pinMode(d1, OUTPUT);
49. pinMode(d2, OUTPUT);
50. pinMode(d3, OUTPUT);
51. pinMode(d4, OUTPUT);
52. pinMode(d5, OUTPUT);
53. pinMode(d6, OUTPUT);
54. pinMode(d7, OUTPUT);
55. pinMode(a, OUTPUT);
56. pinMode(b, OUTPUT);
57. pinMode(c, OUTPUT);
58. pinMode(d, OUTPUT);
59. pinMode(e, OUTPUT);
60. pinMode(f, OUTPUT);
61. pinMode(g, OUTPUT);
62. pinMode(h, OUTPUT);
63. digitalWrite(a, LOW);
64. digitalWrite(b, LOW);
65. digitalWrite(c, LOW);
66. digitalWrite(d, LOW);
67. digitalWrite(e, LOW);
68. digitalWrite(f, LOW);
69. digitalWrite(g, LOW);
70. digitalWrite(h, LOW);
71. digitalWrite(d1, HIGH);
72. digitalWrite(d2, HIGH);
73. digitalWrite(d3, HIGH);
74. digitalWrite(d4, HIGH);
75. digitalWrite(d5, HIGH);
评论1
最新资源