本帖最后由 SYDZ__顺 于 2012-5-15 18:14 编辑
arduino学习笔记18数码管实验 数码管介绍
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数数码管和八段数数码管,八段数数码管比七段数数码管多一个发光二极管单元(多一个小数点显示)
发光二极管单元连接方式分为共阳数码管和共阴数码管。共阳数码管是指将所有发光二极管的阳极连接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管则更好相反,阴极连接到一起形成了公共阴极,阳极是独立分开的。
先来看一下本次实验使用的数码管。
通过查询型号LG5011BSR得知其为0.5"单联共阳数码管,下面是其引脚图。
查看其背后,四个角分别有2个原点和5,10两个标记。分别表示了1,6,5,10针脚。
数码管和发光二极管一样,需要添加限流电阻,因为网上没有查到资料说明该数码管的击穿电压是多大。所以供给电源电压宁可小不可大,所以选择220Ω限流电阻,和3.3V供电。
线路连接图如下
把下面的代码编译后下载到控制板上,看看效果~ 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这样子循环显示。
|