您的位置:首页 > 产品设计 > UI/UE

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

2020-04-22 16:56 686 查看

目录

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的段选数据,有兴趣的读者可以自行丰富。

期待更多精彩…

  • 点赞 11
  • 收藏
  • 分享
  • 文章举报
菜小涛 发布了18 篇原创文章 · 获赞 193 · 访问量 1万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐