圣源电子制作
标题: arduino学习笔记18数码管实验 [打印本页]
作者: SYDZ__顺 时间: 2012-4-26 17:15
标题: arduino学习笔记18数码管实验
本帖最后由 SYDZ__顺 于 2012-5-15 18:14 编辑
arduino学习笔记18数码管实验 数码管介绍
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数数码管和八段数数码管,八段数数码管比七段数数码管多一个发光二极管单元(多一个小数点显示)
发光二极管单元连接方式分为共阳数码管和共阴数码管。共阳数码管是指将所有发光二极管的阳极连接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管则更好相反,阴极连接到一起形成了公共阴极,阳极是独立分开的。
先来看一下本次实验使用的数码管。
通过查询型号LG5011BSR得知其为0.5"单联共阳数码管,下面是其引脚图。
(, 下载次数: 257)
查看其背后,四个角分别有2个原点和5,10两个标记。分别表示了1,6,5,10针脚。
数码管和发光二极管一样,需要添加限流电阻,因为网上没有查到资料说明该数码管的击穿电压是多大。所以供给电源电压宁可小不可大,所以选择220Ω限流电阻,和3.3V供电。
线路连接图如下
(, 下载次数: 261)
(, 下载次数: 261)
把下面的代码编译后下载到控制板上,看看效果~
1. //设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
2. int a=7;
3. int b=6;
4. int c=5;
5. int d=11;
6. int e=10;
7. int f=8;
8. int g=9;
9. int dp=4;
10.
11. //显示数字1
12. void digital_1(void)
13. {
14. unsigned char j;
15. digitalWrite(c,LOW);//给数字5引脚低电平,点亮c段
16. digitalWrite(b,LOW);//点亮b段
17. for(j=7;j<=11;j++)//熄灭其余段
18. digitalWrite(j,HIGH);
19. digitalWrite(dp,HIGH);//熄灭小数点DP段
20. }
21. //显示数字2
22. void digital_2(void)
23. {
24. unsigned char j;
25. digitalWrite(b,LOW);
26. digitalWrite(a,LOW);
27. for(j=9;j<=11;j++)
28. digitalWrite(j,LOW);
29. digitalWrite(dp,HIGH);
30. digitalWrite(c,HIGH);
31. digitalWrite(f,HIGH);
32. }
33. //显示数字3
34. void digital_3(void)
35. {
36. unsigned char j;
37. digitalWrite(g,LOW);
38. digitalWrite(d,LOW);
39. for(j=5;j<=7;j++)
40. digitalWrite(j,LOW);
41. digitalWrite(dp,HIGH);
42. digitalWrite(f,HIGH);
43. digitalWrite(e,HIGH);
44. }
45. //显示数字4
46. void digital_4(void)
47. {
48. digitalWrite(c,LOW);
49. digitalWrite(b,LOW);
50. digitalWrite(f,LOW);
51. digitalWrite(g,LOW);
52. digitalWrite(dp,HIGH);
53. digitalWrite(a,HIGH);
54. digitalWrite(e,HIGH);
55. digitalWrite(d,HIGH);
56. }
57. //显示数字5
58. void digital_5(void)
59. {
60. unsigned char j;
61. for(j=7;j<=9;j++)
62. digitalWrite(j,LOW);
63. digitalWrite(c,LOW);
64. digitalWrite(d,LOW);
65. digitalWrite(dp,HIGH);
66. digitalWrite(b,HIGH);
67. digitalWrite(e,HIGH);
68. }
69. //显示数字6
70. void digital_6(void)
71. {
72. unsigned char j;
73. for(j=7;j<=11;j++)
74. digitalWrite(j,LOW);
75. digitalWrite(c,LOW);
76. digitalWrite(dp,HIGH);
77. digitalWrite(b,HIGH);
78. }
79. //显示数字7
80. void digital_7(void)
81. {
82. unsigned char j;
83. for(j=5;j<=7;j++)
84. digitalWrite(j,LOW);
85. digitalWrite(dp,HIGH);
86. for(j=8;j<=11;j++)
87. digitalWrite(j,HIGH);
88. }
89. //显示数字8
90. void digital_8(void)
91. {
92. unsigned char j;
93. for(j=5;j<=11;j++)
94. digitalWrite(j,LOW);
95. digitalWrite(dp,HIGH);
96. }
97. void setup()
98. {
99. int i;//定义变量
100. for(i=4;i<=11;i++)
101. pinMode(i,OUTPUT);//设置4~11引脚为输出模式
102. }
103. void loop()
104. {
105. while(1)
106. {
107. digital_1();//数字1
108. delay(2000);//延时2s
109. digital_2();
110. delay(2000);
111. digital_3();
112. delay(2000);
113. digital_4();
114. delay(2000);
115. digital_5();
116. delay(2000);
117. digital_6();
118. delay(2000);
119. digital_7();
120. delay(2000);
121. digital_8();
122. delay(2000);
123. }
124. }
复制代码
本次试验的效果为数码管1,2,3,4,5,6,7,8这样子循环显示。
http://player.youku.com/player.php/sid/XMjgzNzQ4Mzk2/v.swf
欢迎光临 圣源电子制作 (http://sydz.syyyd.com/) |
Powered by Discuz! X3.4 |