Arduino学习(八) 数码管

来源:互联网 发布:淘宝卖家店铺动态设置 编辑:程序博客网 时间:2024/04/26 10:37




一、了解数码管(Digitron


数码管, 又称LED数码管, 是由八段发光二极管(LED)封装在一起组成“8”字型的器件,外加一个小数点。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一

数码管就是八个LED的并联,各LED阳极或阴极共用一个管脚。根据共用管脚的不同,分为按共阳极数码管和共阴极数码管二种。



如上图中的外形图, 数码管有8个显示笔划"a,b,c,d,e,f,g,h" (h是小数点,有时也称为dp), 上下共10个引脚,上方中间的脚是公共极,如图分别是a,b,c,d,e,f,g,h脚。

 对于共阴极数码管,公共极是阴极。对于共阳极数码管,公共极是阳极。


共阳极数码管和共阴极数码管从外型上无法区分。判别方法是用万用表量一下。


数码管的显示机制与LED完全一样,比如:  在 a脚 与 公共脚 之间加一个正向电压、电流3-10mA, 则 a段 将亮。其它段道理一样。 

让不同的段亮起,显示为不同的数字。当b, c 段亮时,显示为1.   abcdef段亮,显示为0. 等等。


数码管基本型显示一位数字,也有两位、三位、四位数字的数码管。



由于本人没有数码管的模块,以下直接用数码管搭电路进行实验学习。


二、数码管实验(使用数码管元器件自已搭电路)

1, 准备元器件和器材

     共阴极数码管(1位)  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


2, 电路原理图


把共阴极数码管的公共脚接GND, 串接一个限流电阻

abcdefgh 各脚接 Arduino的数字脚(D2-D9)


说明一下:由于本人没有买排阻,上图是个简化接法。一般的接法是在abcdefgh各脚中均接一个限流电阻,如下:


3, 用面包板接线

把数码管, 电阻插入面包板, 按上述电路原理图,用杜邦线接好线

将abcdefgh脚 分别接到D2-D9脚 (注意管脚顺序)

公共极接1K电阻后接GND


4, 在Arduino IDE中写个Arduino程序控制数码管显示

int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连hvoid setup() {  for(int x=0; x<8; x++)    pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态}//在数码管中显示数字的函数void displayDigit(unsigned char digit) {  //定义一个数组表:不同数字的abcdefgh各段的取值  unsigned char abcdefgh[][8] = {    {1,1,1,1,1,1,0,0},  //0    {0,1,1,0,0,0,0,0},  //1    {1,1,0,1,1,0,1,0},  //2    {1,1,1,1,0,0,1,0},  //3    {0,1,1,0,0,1,1,0},  //4    {1,0,1,1,0,1,1,0},  //5    {1,0,1,1,1,1,1,0},  //6    {1,1,1,0,0,0,0,0},  //7    {1,1,1,1,1,1,1,0},  //8    {1,1,1,1,0,1,1,0},  //9    {1,1,1,0,1,1,1,0},  //A    {0,0,1,1,1,1,1,0},  //b    {1,0,0,1,1,1,0,0},  //C    {0,1,1,1,1,0,1,0},  //d    {1,0,0,1,1,1,1,0},  //E    {1,0,0,0,1,1,1,0},  //F  };    if ( digit >= 16 ) return;  for (unsigned char x=0; x<8; x++)    digitalWrite( pinDigitron + x, abcdefgh[digit][x] );}void loop() {    //在数码管中显示0-9,A-F各个数字   for (int x=0; x<16; x++) {     displayDigit(x);  //调用displayDigit()子函数,显示数字     delay(1000); //等待1000毫秒   }}

运行效果: 数码管每隔一秒显示一个数字, 从0到9, 再从A到F


四、四位数码管实验(使用数码管元器件自已搭电路)

四位数码管把四个数码管集成在一起的,可以显示四位数字


1, 准备元器件和器材

     四位共阴极数码管  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


1, 准备元器件和器材

     共阴极数码管  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


2, 四位数码管的管脚和显示原理

四位数码管共12个脚,管脚如下图:



其中:  1, 2, 3, 4 脚用于选择处理哪一位数字(对于共阴型,低电平有效),也是这一位数字的公共极。比如选择数字1,则对1脚送低电平。

选好数字后,对abcdefgh的操作与一位数码管相同


3, 电路原理图



abcdefgh 各脚接 Arduino的数字脚(D2-D9)

1,2,3,4脚接D10-D13, 分别串接一个限流电阻


4,用面包板接线

把数码管, 电阻插入面包板, 按上述电路原理图,用杜邦线接好线

将abcdefgh脚 分别接到D2-D9脚 (注意管脚顺序)

1,2,3,4脚接D10-D13, 分别串接一个限流电阻


5, 在Arduino IDE中写个Arduino程序控制四位数码管显示

int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连hint pinWei = 10;  void setup() {  for(int x=0; x<4; x++) {     pinMode(pinWei+x, OUTPUT); //设置各脚为输出状态     digitalWrite(pinWei+x, HIGH);//   }       for(int x=0; x<8; x++) {    pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态  }  }//在数码管中显示数字的函数void displayDigit(unsigned char digit) {  //定义一个数组表:不同数字的abcdefgh各段的取值  unsigned char abcdefgh[][8] = {    {1,1,1,1,1,1,0,0},  //0    {0,1,1,0,0,0,0,0},  //1    {1,1,0,1,1,0,1,0},  //2    {1,1,1,1,0,0,1,0},  //3    {0,1,1,0,0,1,1,0},  //4    {1,0,1,1,0,1,1,0},  //5    {1,0,1,1,1,1,1,0},  //6    {1,1,1,0,0,0,0,0},  //7    {1,1,1,1,1,1,1,0},  //8    {1,1,1,1,0,1,1,0},  //9    {1,1,1,0,1,1,1,0},  //A    {0,0,1,1,1,1,1,0},  //b    {1,0,0,1,1,1,0,0},  //C    {0,1,1,1,1,0,1,0},  //d    {1,0,0,1,1,1,1,0},  //E    {1,0,0,0,1,1,1,0},  //F    {0,0,0,0,0,0,0,1},  //DOT = 16    {0,0,0,0,0,0,0,0},  //BLANK = 17    {0,0,0,0,0,0,1,0},  //MINUS= 18  };    if ( digit > 18 ) return;  for (unsigned char x=0; x<8; x++)    digitalWrite( pinDigitron + x, abcdefgh[digit][x] );}//在指定的位,显示指定的数字void display(unsigned char wei, unsigned char digit) {  #define BLANK 17    for(int x=0; x<4; x++) {     if ( x != wei- 1)       digitalWrite(pinWei + x, HIGH);  }    displayDigit(BLANK);//擦除  digitalWrite(pinWei + wei- 1 , LOW);//位选  delay(1);  displayDigit(digit);//显示数字  delay(5);}void loop() {    display(1, 3);//在第1位显示数字3   display(2, 2);//在第2位显示数字2   display(3, 0xB);//在第3位显示数字 b   display(4, 0xF);//在第4位显示数字 F}

运行效果: 四位数码管显示 "32bF"














一、了解数码管(Digitron


数码管, 又称LED数码管, 是由八段发光二极管(LED)封装在一起组成“8”字型的器件,外加一个小数点。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一

数码管就是八个LED的并联,各LED阳极或阴极共用一个管脚。根据共用管脚的不同,分为按共阳极数码管和共阴极数码管二种。



如上图中的外形图, 数码管有8个显示笔划"a,b,c,d,e,f,g,h" (h是小数点,有时也称为dp), 上下共10个引脚,上方中间的脚是公共极,如图分别是a,b,c,d,e,f,g,h脚。

 对于共阴极数码管,公共极是阴极。对于共阳极数码管,公共极是阳极。


共阳极数码管和共阴极数码管从外型上无法区分。判别方法是用万用表量一下。


数码管的显示机制与LED完全一样,比如:  在 a脚 与 公共脚 之间加一个正向电压、电流3-10mA, 则 a段 将亮。其它段道理一样。 

让不同的段亮起,显示为不同的数字。当b, c 段亮时,显示为1.   abcdef段亮,显示为0. 等等。


数码管基本型显示一位数字,也有两位、三位、四位数字的数码管。



由于本人没有数码管的模块,以下直接用数码管搭电路进行实验学习。


二、数码管实验(使用数码管元器件自已搭电路)

1, 准备元器件和器材

     共阴极数码管(1位)  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


2, 电路原理图


把共阴极数码管的公共脚接GND, 串接一个限流电阻

abcdefgh 各脚接 Arduino的数字脚(D2-D9)


说明一下:由于本人没有买排阻,上图是个简化接法。一般的接法是在abcdefgh各脚中均接一个限流电阻,如下:


3, 用面包板接线

把数码管, 电阻插入面包板, 按上述电路原理图,用杜邦线接好线

将abcdefgh脚 分别接到D2-D9脚 (注意管脚顺序)

公共极接1K电阻后接GND


4, 在Arduino IDE中写个Arduino程序控制数码管显示

int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连hvoid setup() {  for(int x=0; x<8; x++)    pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态}//在数码管中显示数字的函数void displayDigit(unsigned char digit) {  //定义一个数组表:不同数字的abcdefgh各段的取值  unsigned char abcdefgh[][8] = {    {1,1,1,1,1,1,0,0},  //0    {0,1,1,0,0,0,0,0},  //1    {1,1,0,1,1,0,1,0},  //2    {1,1,1,1,0,0,1,0},  //3    {0,1,1,0,0,1,1,0},  //4    {1,0,1,1,0,1,1,0},  //5    {1,0,1,1,1,1,1,0},  //6    {1,1,1,0,0,0,0,0},  //7    {1,1,1,1,1,1,1,0},  //8    {1,1,1,1,0,1,1,0},  //9    {1,1,1,0,1,1,1,0},  //A    {0,0,1,1,1,1,1,0},  //b    {1,0,0,1,1,1,0,0},  //C    {0,1,1,1,1,0,1,0},  //d    {1,0,0,1,1,1,1,0},  //E    {1,0,0,0,1,1,1,0},  //F  };    if ( digit >= 16 ) return;  for (unsigned char x=0; x<8; x++)    digitalWrite( pinDigitron + x, abcdefgh[digit][x] );}void loop() {    //在数码管中显示0-9,A-F各个数字   for (int x=0; x<16; x++) {     displayDigit(x);  //调用displayDigit()子函数,显示数字     delay(1000); //等待1000毫秒   }}

运行效果: 数码管每隔一秒显示一个数字, 从0到9, 再从A到F


四、四位数码管实验(使用数码管元器件自已搭电路)

四位数码管把四个数码管集成在一起的,可以显示四位数字


1, 准备元器件和器材

     四位共阴极数码管  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


1, 准备元器件和器材

     共阴极数码管  一个

     面包板一块

     1K 电阻一个

      杜邦线若干


2, 四位数码管的管脚和显示原理

四位数码管共12个脚,管脚如下图:



其中:  1, 2, 3, 4 脚用于选择处理哪一位数字(对于共阴型,低电平有效),也是这一位数字的公共极。比如选择数字1,则对1脚送低电平。

选好数字后,对abcdefgh的操作与一位数码管相同


3, 电路原理图



abcdefgh 各脚接 Arduino的数字脚(D2-D9)

1,2,3,4脚接D10-D13, 分别串接一个限流电阻


4,用面包板接线

把数码管, 电阻插入面包板, 按上述电路原理图,用杜邦线接好线

将abcdefgh脚 分别接到D2-D9脚 (注意管脚顺序)

1,2,3,4脚接D10-D13, 分别串接一个限流电阻


5, 在Arduino IDE中写个Arduino程序控制四位数码管显示

int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连hint pinWei = 10;  void setup() {  for(int x=0; x<4; x++) {     pinMode(pinWei+x, OUTPUT); //设置各脚为输出状态     digitalWrite(pinWei+x, HIGH);//   }       for(int x=0; x<8; x++) {    pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态  }  }//在数码管中显示数字的函数void displayDigit(unsigned char digit) {  //定义一个数组表:不同数字的abcdefgh各段的取值  unsigned char abcdefgh[][8] = {    {1,1,1,1,1,1,0,0},  //0    {0,1,1,0,0,0,0,0},  //1    {1,1,0,1,1,0,1,0},  //2    {1,1,1,1,0,0,1,0},  //3    {0,1,1,0,0,1,1,0},  //4    {1,0,1,1,0,1,1,0},  //5    {1,0,1,1,1,1,1,0},  //6    {1,1,1,0,0,0,0,0},  //7    {1,1,1,1,1,1,1,0},  //8    {1,1,1,1,0,1,1,0},  //9    {1,1,1,0,1,1,1,0},  //A    {0,0,1,1,1,1,1,0},  //b    {1,0,0,1,1,1,0,0},  //C    {0,1,1,1,1,0,1,0},  //d    {1,0,0,1,1,1,1,0},  //E    {1,0,0,0,1,1,1,0},  //F    {0,0,0,0,0,0,0,1},  //DOT = 16    {0,0,0,0,0,0,0,0},  //BLANK = 17    {0,0,0,0,0,0,1,0},  //MINUS= 18  };    if ( digit > 18 ) return;  for (unsigned char x=0; x<8; x++)    digitalWrite( pinDigitron + x, abcdefgh[digit][x] );}//在指定的位,显示指定的数字void display(unsigned char wei, unsigned char digit) {  #define BLANK 17    for(int x=0; x<4; x++) {     if ( x != wei- 1)       digitalWrite(pinWei + x, HIGH);  }    displayDigit(BLANK);//擦除  digitalWrite(pinWei + wei- 1 , LOW);//位选  delay(1);  displayDigit(digit);//显示数字  delay(5);}void loop() {    display(1, 3);//在第1位显示数字3   display(2, 2);//在第2位显示数字2   display(3, 0xB);//在第3位显示数字 b   display(4, 0xF);//在第4位显示数字 F}

运行效果: 四位数码管显示 "32bF"


0 0