arduino tm1637 制作数码时钟

arduino tm1637 制作数码时钟,第1张

前言:在医院看到一个大个的电子数码时钟,看了好一会,回家翻了翻自己的东西,发现了一个arduino 模块 tm1637 4位数码管,于是研究起来制作一个数码时钟,先列举:uno 一个,tm1637 一个。

1.安装库,搜索tm1637选择Grove - 4-Digit Display,不要选第二个!!!

2.库中提供了三个示例

分别为:ClockDisplay、NumberFlow、Stopwatch,其中:

ClockDisplay:时钟显示示例,显示小时和分钟。

NumberFlow:循环显示数组内容示例

Stopwatch:这个是个秒表的示例

这里使用ClockDisplay

5.扩展:RTC模块DS1307

RTC模块电路可以准确地保持当前时间。它具有两个功能,它与微控制器和微处理器通信以提供当前时间,以及充当备用电路,以便在发生电源故障时保持时间,因为它具有内置电池备份系统。

我们可以在任何电子设备中找到RTC,其中时间是小工具的重要功能。例如,即使在断电或取出电池后,我们的计算机或笔记本电脑仍能保持时间。在计算机的主板上,我们都可以找到一块CMOS电池,为RTC电路供电。我们将在这个项目中使用类似的电路。

这个简单:做显示表的时候除了做0~9之外,再做一个不显示的,比如,数码管对应0不显示,那就把0x00也加在表中的第10位,当秒表小于10(为0001~0009)时,前面的000都以tab[10]来查表,不就不会显示了吗。如此类推0010~0099,0100~0999也是一样

//设置控制各段的数字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=7j<=11j++)//熄灭其余段

digitalWrite(j,HIGH)

digitalWrite(dp,HIGH)//熄灭小数点DP段

}

//显示数字2

void digital_2(void)

{

unsigned char j

digitalWrite(b,LOW)

digitalWrite(a,LOW)

for(j=9j<=11j++)

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=5j<=7j++)

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=7j<=9j++)

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=7j<=11j++)

digitalWrite(j,LOW)

digitalWrite(c,LOW)

digitalWrite(dp,HIGH)

digitalWrite(b,HIGH)

}

//显示数字7

void digital_7(void)

{

unsigned char j

for(j=5j<=7j++)

digitalWrite(j,LOW)

digitalWrite(dp,HIGH)

for(j=8j<=11j++)

digitalWrite(j,HIGH)

}

//显示数字8

void digital_8(void)

{

unsigned char j

for(j=5j<=11j++)

digitalWrite(j,LOW)

digitalWrite(dp,HIGH)

}

void setup()

{

int i//定义变量

for(i=4i<=11i++)

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)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11684201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存