这篇文章解释了如何使用Arduino和一个16 x 2液晶显示屏制作一个简单的数字时钟。
介绍
作为一个电子爱好者,我们在一个阶段会想到,如何制作一个数字时钟,尤其是谁对数字电子领域感兴趣。在这篇文章中,我们将看到如何制作一个数字时钟,它的设计非常简单,一个菜鸟在Arduino中就可以毫不费力地完成这个项目。
这个数字时钟只有两个主要组件,Arduino和液晶显示器.Arduino是时钟的大脑,它是数学和逻辑的功能每秒更新时钟。
原型形象:
LCD屏幕是标准的16针接口显示器。它有16行2列,这意味着它可以在一行中显示16个ASCII字符,它有两列,这就是为什么它被称为16x2显示。
LCD和Arduino之间的电线连接是标准的,我们可以在大多数基于Arduino-LCD项目中找到类似的连接。
电位器用来调整显示器的对比度。
用户必须进行最佳设置,以便在所有光照情况下都能正确地看到显示的数字/字符。
有背光,使用户在黑暗的情况下可以看到显示。arduino可以从7伏到12伏的直流插座外部供电。
线路图:
ARDUINO程序代码:
// --------由r.girish开发的程序------- //#include
LiquidCrystal液晶(12、11日5、4、3、2);
int h = 12;
int m;
int年代;
int国旗;
int时间;
Const Int HS = 8;
const int女士= 9;
int state1;
int state2;
void setup()
{
lcd.begin(16日2);
}
无效循环()
{
lcd.setCursor (0,0);
s = s + 1;
lcd.print(“时间:”);
lcd.print(h);
lcd.print(“:”);
lcd.print (m);
lcd.print(“:”);
lcd.print(年代);
if(标志<12)lcd.print(“am”);
if(flag == 12)lcd.print(“PM”);
如果(国旗> 12)lcd。打印(“点”);
如果(标志= = 24)标志= 0;
延迟(1000);
lcd.clear();
如果(= = 60){
s = 0;
m = m + 1;
}
如果(m = = 60)
{
m = 0;
H = H + 1;
标志=标志+ 1;
}
如果(h = = 13)
{
H = 1;
}
lcd.setCursor (0,1);
液晶显示器。print(“HAVE A NICE DAY”);
//----------- 时间设定 ----------//
State1 = DigitalRead(HS);
如果(state1 = = 1)
{
H = H + 1;
标志=标志+ 1;
if(标志<12)lcd.print(“am”);
if(flag == 12)lcd.print(“PM”);
如果(国旗> 12)lcd。打印(“点”);
如果(标志= = 24)标志= 0;
如果(h = = 13) h = 1;
}
state2 = digitalRead(女士);
如果(state2 = = 1) {
s = 0;
m = m + 1;
}
}
// --------由r.girish开发的程序------- //
注:以上程序经过验证,无错误。如果你收到任何警告或错误,请手动添加LiquidCrystal库。
时间设定:
设置有两个按钮,用于设置小时,另一个按钮设置分钟。按下任何一个将递增相应的数字。有关设置时间按HRS按钮直到正确显示正确的时间,同样分钟。
注意:
·在设置时间时,保持按钮抑制直到所需的时间达到。暂时按下按钮可能不会改变时间。
·每位数量仅递增次数,其次仅为第二个,这是因为程序的整个循环延迟了1秒钟。
·数秒钟从01到60开始,再次循环,不会显示“00”,因为传统的数字时钟。
老兄,每天的延迟时间大约是10分钟,所以一周的延迟时间大约是1小时……
嗨kaushik,
迟滞是由于ATmega328P中的陶瓷基谐振器,迟滞函数与晶体无关。它随环境温度的变化而变化,但我们可以通过在延迟函数中添加几毫秒来补偿它,例如try delay(1050);而不是延迟(1000);计算时间延迟并增加几毫秒。
如果您的时钟导致时间尝试减少延迟。
问候
谢谢GR的回复,由于时间延迟问题,我购买了一个RTC DS1307 IC,我仍然没有尝试。希望一切顺利…
先生,你可以向多功能LEDCHASE 12通道发送草图吗?
我想添加警报功能到这个项目。它的完整程序代码是什么?
设计定制代码需要为服务付费