YFROBOT创客社区
标题: Arduino入门教程—拓展实验篇十三 驱动4位数码管 [打印本页]
作者: AllBlue 时间: 2013-7-23 20:42
标题: Arduino入门教程—拓展实验篇十三 驱动4位数码管
本帖最后由 AllBlue 于 2013-9-2 08:30 编辑
驱动4位数码管
之前教大家使用过数码管显示0~9数字,今天我们要使用一个4位数码管做个实验。
所使用的实验元件:
UNO控制板 一块
4位数码管 一个
限流电阻 220欧姆 八个
导线若干
首先,我们要认识一下4位数码管,我手中的数码管标的是XD3641BS,可以参照一下下面的引脚含义图(图为佳美光电电子有限公司数码管命名规则,适用于大部分数码管,但是由于厂商太多命名规则也相对杂乱。):
[attach]460[/attach]
由上图可知,我手中的数码管为4位共阳极数码管的,其他参数对我们来说不太重要,大家有兴趣可以看下。
下面我们就了解下数码管的引脚功能,我们看下图:
[attach]461[/attach]
图中我们可以知道,将数码管正对着我们,左下角为第一脚,逆时针分别为1~12引脚,其中12、9、8、6为公共脚。
为了更方便的控制4位数码管,我们从网上找到了数码管的库文件:
[attach]462[/attach]
连接示意图:
[attach]491[/attach]
连接方法我列出了如下表格:
公共极:
Arduino引脚号 | 数码管引脚号 |
5 | 6(个位) |
4 | 8(十位) |
3 | 9(百位) |
2 | 12(千位) |
其他引脚(要使用限流电阻):
Arduino引脚号 | 数码管引脚号 |
6 | A (11) |
7 | B (7) |
8 | C (4) |
9 | D (2) |
10 | E (1) |
11 | F (10) |
12 | G (5) |
13 | DP (3) |
将电路连接好之后,运行如下程序:
- #include "SevSeg.h"
- //Create an instance of the object.
- SevSeg sevseg;
- //Create global variables
- unsigned long timer;
- int CentSec=0;
- void setup() {
- //I am using a common anode display, with the digit pins connected
- //from 2-5 and the segment pins connected from 6-13
- sevseg.Begin(1,2,3,4,5,6,7,8,9,10,11,12,13);
- timer=millis();
- }
- void loop() {
- //Produce an output on the display
- sevseg.PrintOutput();
- //Check if 10ms has elapsed
- unsigned long mils=millis();
- if (mils-timer>=10) {
- timer=mils;
- CentSec++;
- if (CentSec==10000) { // Reset to 0 after counting for 100 seconds.
- CentSec=0;
- }
- //Update the number to be displayed, with a decimal
- //place in the correct position.
- sevseg.NewNum(CentSec,(byte) 2);
- }
- }
复制代码运行程序后,显示效果为秒表,能计数99秒!!!用户还可以使用按钮来控制秒表~~~
作者: tiantianyouyou 时间: 2019-5-5 07:50
学习学习,谢谢分享
作者: xfsss 时间: 2019-10-3 18:14
学习学习,谢谢分享
欢迎光临 YFROBOT创客社区 (http://82.157.198.105/) |
Powered by Discuz! X3.1 |