查看: 2017|回复: 0

BPI-M2 Berry网络时间同步与使用LCD1602显示时间和日期

[复制链接]
  • TA的每日心情
    奋斗
    2019-10-1 12:54
  • 签到天数: 313 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2017-10-11 08:49:59 | 显示全部楼层 |阅读模式
    分享到:
    笔者在上面一个帖子里面介绍了LCD1602显示文字的方法,接下来笔者介绍使用LCD1602显示时间和日期做一个数字日历的方法,硬件连接方法可以查看笔者上面一个帖子【BPI-M2 Berry试用】使用LCD1602显示文字
    使用数字日历显示时间需要时间是准确时间,首先使用下面命令设置时区

    • tzselect
    按下图设置


    然后修改hosts文件

    • sudo vi /etc/hosts
    将最后一行改成

    • 127.0.1.1 pi
    然后安装时间同步服务并同步时间

    • sudo apt-get install ntp ntpdate
    • sudo ntpdate update
    • sudo service ntp restart
    经过上面处理就可以自动同步网络时间了
    下面介绍脚本创建方法,打开终端输入下面命令创建一个lcd1602.py脚本

    • vi lcd1602.py
    输入下面代码

    • import smbus
    • import time
    • import os
    • from time import gmtime, strftime, localtime
    • os.environ['TZ'] = 'Asia/Shanghai'
    • time.tzset()
    • bus = smbus.SMBus(2)
    • addr = 0x3f
    • def writeCommand(command):
    •    bus.write_byte(addr, 0b1100 | command << 4)
    •    time.sleep(0.005)
    •    bus.write_byte(addr, 0b1000 | command << 4)
    •    time.sleep(0.005)
    • def writeWord(word):
    •    for i in range(0,len(word)):
    •      asciiCode = ord(word)
    •      bus.write_byte(addr, 0b1101 |(asciiCode >> 4 & 0x0F) << 4)
    •      time.sleep(0.0005)
    •      bus.write_byte(addr, 0b1001 |(asciiCode >> 4 & 0x0F) << 4)
    •      time.sleep(0.0005)
    •      bus.write_byte(addr, 0b1101 |(asciiCode & 0x0F) << 4)
    •      time.sleep(0.0005)
    •      bus.write_byte(addr, 0b1001 | (asciiCode & 0x0F) << 4)
    •      time.sleep(0.0005)
    • # init
    • writeCommand(0b0010)
    • # 4-byte mode, 2 line code
    • writeCommand(0b0010)
    • writeCommand(0b1111)
    • # set cursor mode
    • writeCommand(0b0000)
    • writeCommand(0b1100)
    • # cursor shift mode
    • writeCommand(0b0000)
    • writeCommand(0b0110)
    • writeWord("Welcome")
    • clear = True
    • time.sleep(1)
    • while(1):
    •    # first line first column
    •    writeCommand(0b1000)
    •    writeCommand(0b0000)
    •    writeWord(strftime("%Y-%m-%d, %a ", localtime()))
    •    # second line first column
    •    writeCommand(0b1100)
    •    writeCommand(0b0000)
    •    writeWord(strftime("%H:%M:%S", localtime()))
    •    time.sleep(0.2)
    保存修改后退出,输入下面命令运行脚本

    • sudo python lcd1602.py
    数字日历显示效果如下图
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 18:51 , Processed in 0.121226 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.