【arduino数码管实验】疫情期间宅着没事做?这个东西可以了解一下......

目录


1.材料清单

2.实验原理

3.代码分析

4.总结



1.实验材料
  
材料清单 型号&数量
arduino开发板 UNO*1
数码管 5161BS(共阳极)*1
电阻 330Ω*1
导线 若干


2.实验原理
  共阳极数码管原理图如下:  

引脚分布图:
在这里插入图片描述
在这里插入图片描述
  有了上面两张图,就可以动手连线了,A-G分别接在了板子上2-8引脚,搭建完成的板子是这样的:

在这里插入图片描述
废话不说,直接写代码。


3.代码分析

(完整代码)


unsigned char num[10][8]={{2,3,4,5,6,7},{3,4},{2,3,5,6,8},{2,3,4,5,8},{3,4,7,8},{2,4,5,7,8},{2,4,5,6,7,8},{2,3,4},{2,3,4,5,6,7,8},{2,3,4,7,8}};

void setup()
{
    for(int i=2;i<9;i++)
    {
      pinMode(i,OUTPUT);
      digitalWrite(i,HIGH);  
    }
}

void Display(char a)
{
    unsigned char index=0;
    while(num[a][index])
    {
        digitalWrite(num[a][index],LOW);
        index++;  
    }  
}

void loop() 
{
      Display(random(0,10));
      delay(1000); 
      setup();
}

  
分析:
  我的思路是这样的,了解数码管的都知道无非是让它对应的脚输出低电平即可(共阳极),那么我就把要变化的脚写入数组中。
  
  至此这个程序已经完成一半了,setup()函数定义数码管连接的几个引脚为OUTPUT(输出),并把电平拉高,然后进入到主函数(loop()函数)中,产生一个0-9的随机数作为实参传给Display()函数,在显示随机数之后,延时1s并重置各个引脚为高电平(调用setup()函数)。
  
下面分析Display()函数:
  通过while循环来判断是否显示这个数所对应的引脚已全部被拉低,如果未完全,则继续,完全则退出。

  
  

4.总结

  没想到arduino的数码管这么繁琐,本来是想Display()函数中用switch来判断传进来的参数并产生对应动作,但是每个数字对应的段选引脚确实太多,会导致代码很多,啰嗦,因此决定用二维数组+while判断来实现。目前数组里只加了数字0-9的段选数据,有兴趣的读者可以自行丰富。

期待更多精彩…

发布了9 篇原创文章 · 获赞 71 · 访问量 4314

猜你喜欢

转载自blog.csdn.net/weixin_43894786/article/details/105252960