1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > arduino定时器pdf_Arduino基础入门篇18—数字时钟

arduino定时器pdf_Arduino基础入门篇18—数字时钟

时间:2018-11-04 22:18:27

相关推荐

arduino定时器pdf_Arduino基础入门篇18—数字时钟

Arduino不但有外部中断,还有定时器中断,不同Arduino开发板其定时器数量及性能也各不相同,这取决于开发板主控制器。Uno R3开发板有三个定时器,本篇通过使用定时器库「TimerOne」来更新数码管显示,制作一个数字时钟。

Arduino提供了丰富的库,关于定时器的库包括「TimerOne」、「MsTimer2」等,更多的支持库的信息可从官网获取Libraries for Arduino。

1. 定时器库安装

在IDE中点击「项目」—「加载库」—「管理库」,查找「TimerOne」进行安装。

安装库

2. 实验材料

Uno R3开发板

配套USB数据线

面包板及配套连接线

四位共阴极数码管

4个220Ω限流电阻

3. 实验步骤

1. 根据原理图搭建电路。

根据四位数码管的引脚图,a,b,c,d,e,f,g,dp引脚分别连接开发板的数字引脚7,6,5,10,11,8,9,4。数码管的1,2,3,4引脚分别串联220Ω限流电阻,电阻另一端分别连接开发板的数字引脚2,3,12,13。

实验原理图如下图所示:

实验原理图

实物连接图如下图所示:

实物连接图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/*

SevTimer

使用定时器驱动四位数码管实现数字时钟显示

*/

#include "TimerOne.h"

#include "SevSeg.h"

SevSeg sevseg;

int Fen = 0;

int Miao = 0;

byte numDigits = 4; //数码管位数

byte digitPins[] = {2, 3, 12, 13}; //数码管公共极连接Arduino的引脚

byte segmentPins[] = {7, 6, 5, 10, 11, 8, 9, 4}; //数码管a,b,c,d,e,f,g,dp对应引脚

byte hardwareConfig = COMMON_CATHODE ; // 共阴极数码管

void setup() {

sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins); //初始化数码管

Timer1.initialize(1000000);//初始化定时器为1s

Timer1.attachInterrupt( timerIsr );//设置中断回调函数

}

void loop() {

sevseg.setNumber(Fen * 100 + Miao, -1); //设置要显示的数据,不显示小数点

sevseg.refreshDisplay(); // 必须重复运行刷新数码管显示

}

void timerIsr()//定时器中断处理函数

{

Miao++;

if (Miao > 59)

{

Miao = 0;

Fen++;

if (Fen > 59)

Fen = 0;

}

}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

程序下载

4. 实验现象

数码管1秒计数一次,满60秒分钟加一,实现数字时钟效果。

实验现象

5. 实验分析

数码管驱动依旧使用「SevSeg」,具体使用方法在前面文章有所介绍。在setup()中使用 Timer1.initialize(1000000)来初始化定时器,括号内为定时周期,以微妙为单位,所以这里的1000000为1秒。然后使用Timer1.attachInterrupt( timerIsr )来设置中断回调函数。我们在程序中要实现timerIsr()函数,在里面实现分钟和秒数的控制。

有了定时器,有了数码管,我们可以很方便的实现一些跟时钟有关的制作,你可以结合数码管和蜂鸣器,来实现倒计时提示的制作。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。