圣源电子制作

标题: arduino学习笔记18数码管实验 [打印本页]

作者: SYDZ__顺    时间: 2012-4-26 17:15
标题: arduino学习笔记18数码管实验
本帖最后由 SYDZ__顺 于 2012-5-15 18:14 编辑

arduino学习笔记18数码管实验
数码管介绍

数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数数码管和八段数数码管,八段数数码管比七段数数码管多一个发光二极管单元(多一个小数点显示)
发光二极管单元连接方式分为共阳数码管和共阴数码管。共阳数码管是指将所有发光二极管的阳极连接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管则更好相反,阴极连接到一起形成了公共阴极,阳极是独立分开的。

先来看一下本次实验使用的数码管。

通过查询型号LG5011BSR得知其为0.5"单联共阳数码管,下面是其引脚图。

(, 下载次数: 212)

查看其背后,四个角分别有2个原点和5,10两个标记。分别表示了1,6,5,10针脚。

数码管和发光二极管一样,需要添加限流电阻,因为网上没有查到资料说明该数码管的击穿电压是多大。所以供给电源电压宁可小不可大,所以选择220Ω限流电阻,和3.3V供电。
线路连接图如下
(, 下载次数: 211)
(, 下载次数: 213)




把下面的代码编译后下载到控制板上,看看效果~
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