好久之前入手了一个高精度时钟模块DS3231,之后就一直闲置着。国庆实在是太闲,收拾东西的时候找出来了,就想着做一个电子时钟测试一下这个时钟模块准不准吧。

材料:Arduino Uno, 面包板, DS3231, 12864的OLED屏

原理什么的就不细讲了,很简单的。先初始化DS3231,这个时钟模块断电以后还可以计时,先用串口给一个精确的时间,然后加上OLED,每隔500ms(考虑到程序运行时间不能设置为1000ms,否则不一定每秒都会更新,不过还是会有一丢丢的显示误差)读取一次时间,并输出在OLED上。

DS3231的使用方法可见卖家的资料,在DS3231.c和DS3231.h上有会用到的函数,简单易懂。
OLED的使用方法网上很多的,而且这次只是显示字符而已,请自行查阅。

连线的话(OLED与DS3231接线相同):
5V —— VCC
GND —— GND
A4 —— SDA
A5 —— SCL

另:
本人使用的DS3231和OLED均使用IIC通信,IIC通信是可以串联多个设备的,但一定要保证各个设备的地址是不一样的。地址可以在对应的库文件里面找到,一般是一个名为 xxx_ADDRESS的宏定义。找不到的话可自行百度“Arduino IIC 地址扫描”。

代码如下

#include <DS3231.h>
#include "U8glib.h"DS3231  rtc(SDA, SCL);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);void Init(int y,int mmon,int d,int h,int mmin,int s)
{rtc.setTime(h,mmin,s);rtc.setDate(d,mmon,y);rtc.setDOW();
}
void draw()
{/*char data[10];char week[10];char t[8];data = rtc.getDateStr(FORMAT_LONG,FORMAT_BIGENDIAN,'.');week = rtc.getDOWStr(FORMAT_SHORT);t = rtc.getTimeStr(FORMAT_LONG);*/u8g.setFont(u8g_font_unifont);u8g.setFontPosTop();u8g.setPrintPos(0, 0); u8g.print(rtc.getDateStr(FORMAT_LONG,FORMAT_BIGENDIAN,'.') );u8g.setPrintPos(100, 0); u8g.print(rtc.getDOWStr(FORMAT_SHORT) );u8g.setPrintPos(35, 40); u8g.print(rtc.getTimeStr(FORMAT_LONG) );
}
void setup() {// put your setup code here, to run once:Serial.begin(115200);rtc.begin();// Init(2019,10,6,20,1,50);}
void loop() {u8g.firstPage();  do {draw();} while( u8g.nextPage() );delay(500);
}

最终运行效果如图:

Arduino_OLED电子时钟相关推荐

  1. 用easyx画电子钟_Canvas入门-利用Canvas绘制好玩的电子时钟

    在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...

  2. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc

    PAGE \* MERGEFORMAT 3 河海大学物联网工程学院 课程设计报告 题 目 基于LCD的电子时钟实验 专业.学号 电信 . 授课班号 完成时间 2013.07.05 课程设计(报告)任务 ...

  3. Canvas入门-利用Canvas绘制好玩的电子时钟

    在这之前 你需要了解一下方法的使用: beginPath() closePath() moveTo() lineTo() fill() stroke() fillRect() clearRect() ...

  4. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序

    本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...

  5. JavaBean网页电子时钟

    package com.bean;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date ...

  6. python数码时钟代码_Python+Pyqt实现简单GUI电子时钟

    本文实例为大家分享了Python+Pyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQ ...

  7. ntp如何确认与服务器偏差_LED电子时钟显示屏如何实现时间同步统一校时?

    LED电子时钟显示屏采用一体式铝合金边框设计,更坚固美观节能环保,更以其简单的操作和稳定的性能,广泛应用于学校.考场.医院.金融.移动通信.石油.电力.交通.工业以及国防等同步时钟系统的显示终端,LE ...

  8. C语言/C++程序员大神打造纯C的电子时钟(加图形库+源码)

    C语言/C++程序员大神打造纯C的电子时钟,每天看时间再也不麻烦了 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进 ...

  9. Web前端基础---JQuery的页面加载+选择器+电子时钟案例

    jQuery jQuery的页面加载 <!DOCTYPE html> <html><head><meta charset="UTF-8"& ...

最新文章

  1. iOs 自定义UIView 日历的实现 Swift2.1
  2. GIF Movie Gear V4.2.3 破解版
  3. 实验五 数据库完整性技术
  4. 牛客网 小白赛4 A三角形【贪心】
  5. boost::function_types::function_arity用法的测试程序
  6. 光学字符识别 android,基于Android的光学字符识别研究与实现
  7. c语言中代码参数太少,C语言不定参数探究
  8. android 实现 效果代码,Android实现雷达View效果的示例代码
  9. 小技巧 ----- 关于Java中的System.arraycopy()
  10. oracle报错ORA-01843: not a valid month
  11. Linux Sentaurus-Silvaco虚拟机使用方法
  12. 运维安全操作建议规范手册
  13. Java 编程要点之并发(Concurrency)详解
  14. 路由器上DHCP配置 及单臂路由
  15. 用计算机对视频进行剪裁和编辑,Win10系统剪裁视频功能怎么用?windows10剪裁视频功能使用方法介绍...
  16. 关于linux下的嵌入式文件系统以及flash文件系统选择(转)
  17. 手机信息采集 ——基于ebay网站Apple手机案例分析
  18. 项目系统设计与数据库设计(那周余嘉熊掌将得队)
  19. mac kendryte使用model-cmpiler运行kpu-demo
  20. Linux系统ORACLE 19C OEM监控管理

热门文章

  1. 华滋先生:互联网创业的优势和出路
  2. Linux内存比实际小,为什么Linux显示的内存比我实际安装的内存多?
  3. 客套话有时也不一定是本来的意思(21)
  4. 我们来做一个不可破解的验证码
  5. vscode 配置 Rust 运行环境
  6. 我相信心能到达的地方,脚步也可以踏至
  7. softmax sigmoid log softmax 辨析
  8. NLP 中损失函数对输入的求导的思考
  9. c语言逻辑代数常用公式证明,《数据结构C语言版》严蔚敏第二章逻辑代数基础...
  10. Python 新手杂谈(随便写写)