极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 111422|回复: 43

arduino学习笔记P-1 arduino lcd1602电子时钟

[复制链接]
发表于 2012-6-23 14:04:30 | 显示全部楼层 |阅读模式
此方法可以不用任何外接时钟芯片,即可实现1602显示当前年月日时间等信息。
但是如何通过加入按钮实现时间调节尚未实现。当前的代码在年份显示一项只显示2010,不知为何。
板子
http://arduino.cc/en/Main/arduinoBoardDuemilanove
lcd 1602 接线参照弘毅的教程
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=78&reltid=955&pre_thread_id=0&pre_pos=1&ext=




http://www.arduino.cc/playground/uploads/Code/DateTime.zip
代码如下
  1. #include <LiquidCrystal.h>
  2. #include <DateTime.h>
  3. #include <DateTimeStrings.h>

  4. #define dt_SHORT_DAY_STRINGS
  5. #define dt_SHORT_MONTH_STRINGS

  6. // simple sketch to display a digital clock on an LCD
  7. // see the LiquidCrystal documentation for more info on this

  8. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  9. int backLight = 13; // pin 13 will control the backlight

  10. void setup(){
  11. pinMode(backLight, OUTPUT);
  12. digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.

  13. DateTime.sync(DateTime.makeTime(30, 41, 12, 23, 06, 2012)); // sec, min, hour, date, month, year // Replace this with the most current time
  14. }

  15. void loop(){
  16. if(DateTime.available()) {
  17. unsigned long prevtime = DateTime.now();
  18. while( prevtime == DateTime.now() ) // wait for the second to rollover
  19. ;

  20. DateTime.available(); //refresh the Date and time properties
  21. digitalClockDisplay( ); // update digital clock
  22. }
  23. }

  24. void printDigits(byte digits){
  25. // utility function for digital clock display: prints preceding colon and leading 0
  26. lcd.print(":");
  27. if(digits < 10)
  28. lcd.print('0');
  29. lcd.print(digits,DEC);
  30. }



  31. void digitalClockDisplay(){
  32. lcd.clear();
  33. lcd.begin(16,2);
  34. lcd.setCursor(3,0);

  35. //lcd.print(DateTimeStrings.dayStr(DateTime.DayofWeek));
  36. if(DateTime.Day <10)
  37. lcd.print('0');
  38. lcd.print(DateTime.Day,DEC);
  39. lcd.print("/");

  40. //lcd.print(DateTimeStrings.monthStr(DateTime.Month));
  41. if(DateTime.Month <10)
  42. lcd.print('0');
  43. lcd.print(DateTime.Month,DEC);
  44. lcd.print("/");
  45. lcd.print((DateTime.Year,DEC)+2000);

  46. //lcd.print(" ");
  47. if(DateTime.Hour <10)
  48. lcd.setCursor(5,1);
  49. lcd.setCursor(4,1);

  50. // digital clock display of current time
  51. lcd.print(DateTime.Hour,DEC);
  52. printDigits(DateTime.Minute);
  53. printDigits(DateTime.Second);
  54. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-6-23 14:25:03 | 显示全部楼层
掉电不能保存时间吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-6-23 19:05:34 | 显示全部楼层
珜羽 发表于 2012-6-23 14:25
掉电不能保存时间吧?

是的~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2012-6-23 23:18:42 | 显示全部楼层
plantpark 发表于 2012-6-23 19:05
是的~~~~~~~

你多加一个EEprom进去就可以解决掉电的问题了!
回复 支持 反对

使用道具 举报

发表于 2012-6-24 00:00:09 | 显示全部楼层
Randy 发表于 2012-6-23 23:18
你多加一个EEprom进去就可以解决掉电的问题了!

哈哈~~thinkthink
回复 支持 反对

使用道具 举报

发表于 2012-6-24 00:05:20 | 显示全部楼层
飞翔的红猪 发表于 2012-6-24 00:00
哈哈~~thinkthink

不客气了,那天我也整一个完整的出来发上来一起学习一下!
回复 支持 反对

使用道具 举报

发表于 2012-6-24 12:41:06 | 显示全部楼层
额。  真正的时钟芯片也不贵,也就1元,国产的几毛钱。。带后备电池。。。单片机掉电了 这个还能计时。。

eerom是可以保存时间。但是你如果想要保存的时间误差不大的话,就要频繁的写。。。eerom是有寿命的,你还要改进算法,不要写在同一个地方。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-6 23:40:07 | 显示全部楼层
当前的代码在年份显示一项只显示2010,不知为何。

关键在这句,不明白是哪里设置的问题
回复 支持 反对

使用道具 举报

发表于 2012-7-8 10:06:36 | 显示全部楼层
话说arduino晶振准确度。。。。。一天能跑偏多少时间?我原来尝试过1小时能偏差4-5秒
回复 支持 反对

使用道具 举报

发表于 2012-9-3 19:47:58 | 显示全部楼层
怎么连线的啊,不管是用弘毅的连线,还是连你调用liquidcrysta库l时用的引脚(12,11,5,4,3,2)(对应的应该是rs ,e,,d0,d1,d2,d3吧),我的液晶屏上都没有显示。菜鸟求指教
回复 支持 反对

使用道具 举报

发表于 2012-10-10 18:26:41 | 显示全部楼层
而且我的datatime那个包 一运行就说那个错误啊
回复 支持 反对

使用道具 举报

发表于 2012-10-12 09:56:20 | 显示全部楼层
datetime的那个怎么弄呀
回复 支持 反对

使用道具 举报

发表于 2012-10-15 17:39:44 | 显示全部楼层
{:soso_e104:}我希望用一块DS1302/1307的,比较实用!
回复 支持 反对

使用道具 举报

发表于 2012-11-3 23:45:50 | 显示全部楼层
晶振用16M的?自己做板子也可以的哦!
回复 支持 反对

使用道具 举报

发表于 2012-12-12 21:00:21 | 显示全部楼层
编译过不了...用IDE 1.03/10.1都不行...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 14:01 , Processed in 0.056917 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表