欢迎光临
我们一直在努力

1位 4位 十段位 数码管 示例教程 适用于arduino平台

1. 产品图片

2. 产品购买地址点我购买

3. 产品概述
数码管也称LED 数码管,是一种半导体发光器件,其基本单位是发光二极管。按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1 位、2 位、4 位、7 位等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

4. 产品参数
共阳极就是把所有LED 的阳极连接到共同接点com也就是公共极这里的3、8都是公共极,而每个LED的阴极分别为a、b、c、d、e、f、g 及dp(小数点)。

5. 使用方式
数码管在应用中应注意如下几点:
a、段及小数点都要上加限流电阻(这是为了使得数码管的显示亮度一样,有的人会在公共极上加一个电阻,那样的话,虽然8个LED亮度相同,但数字2和数字8的亮度就不同了,因为他们点亮的个数不同);
b、使用电压:根据发光颜色决定;
c、使用电流:静态总电流80mA(每段10mA);动态平均电流4-5mA 峰值电流100mA。

6. 示例程序(一位共阳数码管)

//中贝斯特UltiRobot一位共阳数码管示例教程
//程序效果:数码管依次显示数字1~8!
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com

//设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
int dp=4;

//显示数字1
void digital_1(void)
{
unsigned char j;
digitalWrite(c,LOW);//给数字5引脚低电平,点亮c段
digitalWrite(b,LOW);//点亮b段
for(j=7;j<=11;j++)//熄灭其余段
digitalWrite(j,HIGH);
digitalWrite(dp,HIGH);//熄灭小数点DP段
}
//显示数字2
void digital_2(void)
{
unsigned char j;
digitalWrite(b,LOW);
digitalWrite(a,LOW);
for(j=9;j<=11;j++)
digitalWrite(j,LOW);
digitalWrite(dp,HIGH);
digitalWrite(c,HIGH);
digitalWrite(f,HIGH);
}
//显示数字3
void digital_3(void)
{
unsigned char j;
digitalWrite(g,LOW);
digitalWrite(d,LOW);
for(j=5;j<=7;j++)
digitalWrite(j,LOW);
digitalWrite(dp,HIGH);
digitalWrite(f,HIGH);
digitalWrite(e,HIGH);
}
//显示数字4
void digital_4(void)
{
digitalWrite(c,LOW);
digitalWrite(b,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(dp,HIGH);
digitalWrite(a,HIGH);
digitalWrite(e,HIGH);
digitalWrite(d,HIGH);
}
//显示数字5
void digital_5(void)
{
unsigned char j;
for(j=7;j<=9;j++)
digitalWrite(j,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(dp,HIGH);
digitalWrite(b,HIGH);
digitalWrite(e,HIGH);
}
//显示数字6
void digital_6(void)
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,LOW);
digitalWrite(c,LOW);
digitalWrite(dp,HIGH);
digitalWrite(b,HIGH);
}
//显示数字7
void digital_7(void)
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,LOW);
digitalWrite(dp,HIGH);
for(j=8;j<=11;j++)
digitalWrite(j,HIGH);
}
//显示数字8
void digital_8(void)
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,LOW);
digitalWrite(dp,HIGH);
}
void setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11引脚为输出模式
}
void loop()
{
while(1)
{
digital_1();//数字1
delay(2000);//延时2s
digital_2();
delay(2000);
digital_3();
delay(2000);
digital_4();
delay(2000);
digital_5();
delay(2000);
digital_6();
delay(2000);
digital_7();
delay(2000);
digital_8();
delay(2000);
}
}

7. 示例程序(一位共阴数码管)

//中贝斯特UltiRobot一位共阴数码管示例教程
//程序效果:数码管依次显示数字1~8!
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com

//设置控制各段的数字IO脚
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
int dp=4;//定义数字接口:7 6 5 11 10 8 9 4
void digital_1(void)//显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
for(j=7;j<=11;j++)
digitalWrite(j,LOW);
digitalWrite(dp,LOW);
}
void digital_2(void)
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void)
{
unsigned char j;
digitalWrite(g,HIGH);
digitalWrite(d,HIGH);
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(f,LOW);
digitalWrite(e,LOW);
}
void digital_4(void)
{
digitalWrite(c,HIGH);
digitalWrite(b,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,LOW);
digitalWrite(a,LOW);
digitalWrite(e,LOW);
digitalWrite(d,LOW);
}
void digital_5(void)
{
unsigned char j;
for(j=7;j<=9;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(dp,LOW);
digitalWrite(b,LOW);
digitalWrite(e,LOW);
}
void digital_6(void)
{
unsigned char j;
for(j=7;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(c,HIGH);
digitalWrite(dp,HIGH);
digitalWrite(b,LOW);
}
void digital_7(void)
{
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,HIGH);
for(j=8;j<=11;j++)
digitalWrite(j,LOW);
}
void digital_8(void)
{
unsigned char j;
for(j=5;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,HIGH);
}
void digital_9(void)
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
}
void setup()
{
int i;
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);
}
void loop()
{
while(1){
digital_1();
delay(1000);
digital_2();
delay(1000);
digital_3();
delay(1000);
digital_4();
delay(1000);
digital_5();
delay(1000);
digital_6();
delay(1000);
digital_7();
delay(1000);
digital_8();
delay(1000);
digital_9();
delay(1000);

}
}

8. 示例程序(四位共阳数码管)
数码管正对自己,小点在下。
*上四针从左到右对应的unoPIN:12、1、6、11、10、2
*下四针从左到右对应的unoPIN:5、4、8、3、7、9

//中贝斯特UltiRobot四位共阳数码管示例教程
//程序效果:不断计数
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com

//设置阴极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;
//设置阳极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//设置变量
long n = 0;
long n10 = 0;
long n100 = 0;
long n1000 = 0;
int x = 100;
int del = 55;  //此处数值对时钟进行微调

byte segs[7] = { a, b, c, d, e, f, g };

byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 },  // = 0
                                 { 1,0,0,1,1,1,1 },  // = 1
                                 { 0,0,1,0,0,1,0 },  // = 2
                                 { 0,0,0,0,1,1,0 },  // = 3
                                 { 1,0,0,1,1,0,0 },  // = 4
                                 { 0,1,0,0,1,0,0 },  // = 5
                                 { 0,1,0,0,0,0,0 },  // = 6
                                 { 0,0,0,1,1,1,1 },  // = 7
                                 { 0,0,0,0,0,0,0 },  // = 8
                                 { 0,0,0,0,1,0,0 }   // = 9
                             }; 

void setup()
{
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(p, OUTPUT);
}

void loop()
{

        long w = millis()/100;
//这个是调用时间的函数
        shownum(w);
}

void pickDigit(int x)  //定义pickDigit(x),其作用是开启dx端口
{
  digitalWrite(d1, LOW);
  digitalWrite(d2, LOW);
  digitalWrite(d3, LOW);
  digitalWrite(d4, LOW);

  switch(x)
  {
  case 1: 
    digitalWrite(d1, HIGH); 
    break;
  case 2: 
    digitalWrite(d2, HIGH); 
    break;
  case 3: 
    digitalWrite(d3, HIGH); 
    break;
  default: 
    digitalWrite(d4, HIGH); 
    break;
  }
}

void dispDec(int x)  //设定开启小数点
{
  digitalWrite(p, LOW);
}

void clearLEDs()  //清屏
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(p, HIGH);
}

// 点亮对应数字的数码管
void lightSegments(int x) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(segs[i], seven_seg_digits[x][i]);
  }
}

void shownum (int x)
{

  long x1 = x/1000%10;
  long x10 = x/100%10;
  long x100 = x/10%10;
  long x1000 = x/1%10;


  clearLEDs();
  pickDigit(1);
  lightSegments(x1);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(2);
  lightSegments(x10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(3);
  dispDec(3);
  lightSegments(x100);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(0);
  lightSegments(x1000);
  delayMicroseconds(del);
}

9. 示例程序(四位共阴数码管)
数码管正对自己,小点在下。
*上四针从左到右对应的unoPIN:12、1、6、11、10、2
*下四针从左到右对应的unoPIN:5、4、8、3、7、9

//中贝斯特UltiRobot四位共阴数码管示例教程
//程序效果:不断计数
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com
int y[8] = {1,2,3,4,5,6,7,8};
int d[4] = {12,11,10,9};
int digital[10][8] = {{6,y[0],y[1],y[2],y[3],y[4],y[5]},{2,y[1],y[2]},{5,y[0],y[1],y[3],y[4],y[6]},{5,y[0],y[1],y[2],y[3],y[6]},{4,y[1],y[2],y[5],y[6]},{5,y[0],y[2],y[3],y[5],y[6]},{6,y[0],y[2],y[3],y[4],y[5],y[6]},{3,y[0],y[1],y[2]},{7,y[0],y[1],y[2],y[3],y[4],y[5],y[6]},{6,y[0],y[1],y[2],y[3],y[5],y[6]}};
long n=0;
int x=100;
int del=55;
void setup(){
  for(int i=0;i<8;i++)
    pinMode(y[i],OUTPUT);
  for(int i=0;i<4;i++)
    pinMode(d[i],OUTPUT);
}
void clearLEDs(){
  for(int i=0;i<8;i++)
    digitalWrite(y[i],LOW);
}
void pickDigit(int x){
  for(int i=0;i<4;i++)
    digitalWrite(d[i],HIGH);
  if(x>4) x=4;
  digitalWrite(d[x-1],LOW);
}
void showDigital(int x){
  for(int i=1;i<=digital[x][0];i++)
     digitalWrite(digital[x][i], HIGH);
}
void disp(int x){
  digitalWrite(y[7],HIGH);
}
void loop(){
  clearLEDs();
  pickDigit(1);
  showDigital((n/x/1000)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(2);
  showDigital((n/x/100)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(3);
  disp(3);
  showDigital((n/x/10)%10);
  delayMicroseconds(del);

  clearLEDs();
  pickDigit(4);
  showDigital(n/x%10);
  delayMicroseconds(del);

  n++;

  if(digitalRead(13) == LOW){
   n=0;
  }
}

10. 示例程序(十段位共阴数码管)
仿照流水灯实验的接线方式,注意10段位光条数码管的正负,接反了会烧。

//中贝斯特UltiRobot十段位数码管示例教程
//程序效果:10位数码管的A-J 等依次点亮,并循环—-LED流水灯
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com

int led1=1;
int led2=2;
int led3=3;
int led4=4;
int led5=5;
int led6=6;
int led7=7;
int led8=8;
int led9=9;
int led10=10;

void setup(){
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(led5,OUTPUT);
  pinMode(led6,OUTPUT);
  pinMode(led7,OUTPUT);
  pinMode(led8,OUTPUT);
  pinMode(led9,OUTPUT);
  pinMode(led10,OUTPUT);
}
void loop(){
  digitalWrite(led1,LOW);
  digitalWrite(led2,HIGH);
  delay(100);
  digitalWrite(led2,LOW);
  digitalWrite(led3,HIGH);
  delay(100);
  digitalWrite(led3,LOW);
  digitalWrite(led4,HIGH);
  delay(100);
  digitalWrite(led4,LOW);
  digitalWrite(led5,HIGH);
  delay(100);
  digitalWrite(led5,LOW);
  digitalWrite(led6,HIGH);
  delay(100);
  digitalWrite(led6,LOW);
  digitalWrite(led7,HIGH);
  delay(100);
  digitalWrite(led7,LOW);
  digitalWrite(led8,HIGH);
  delay(100);
  digitalWrite(led8,LOW);
  digitalWrite(led9,HIGH);
  delay(100);
  digitalWrite(led9,LOW);
  digitalWrite(led10,HIGH);
  delay(100);
  digitalWrite(led10,LOW);
  digitalWrite(led1,HIGH);
  delay(100);
}

11. 相关下载
百度网盘:点我下载

未经允许不得转载:Arduino-Maker » 1位 4位 十段位 数码管 示例教程 适用于arduino平台

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育