2回答

1收藏

[原创] 树莓派3B使用LCD1602打造数字日历

Raspberry Pi Raspberry Pi 6295 人阅读 | 2 人回复 | 2017-12-16

下面介绍在树莓派3B上使用LCD1602液晶屏打造数字日历的方法
树莓派3B的GPIO排针定义如下

LCD1602使用I2C连接方式连接到树莓派3B,SDA SCL VCC GND分布连接到树莓派3B的Pin3 Pin5 Pin3 Pin6
然后给树莓派3B上电,输入下面命令安装所需组件
  1. sudo apt-get install i2c-tools python-smbus
复制代码

然后使用查看I2C设备是否显示
  1. ls /dev
复制代码

可知没有发现I2C设备,但是硬件连接又正确,原因是Raspbian固件默认关闭了I2C接口,输入下面命令
  1. sudo raspi-config
复制代码
按下面选择打开I2C接口



再次查看i2c设备
  1. ls /dev
复制代码
可以看到i2c-1设备了

查看地址码
  1. i2cdetect -y 1
复制代码
可知为3f

创建一个python脚本lcd-clock.py
  1. vi lcd-clock.py
复制代码
加入下面代码
  1. import smbus
  2. import time
  3. import os
  4. from time import gmtime, strftime, localtime

  5. os.environ['TZ'] = 'Asia/Shanghai'
  6. time.tzset()

  7. bus = smbus.SMBus(1)
  8. addr = 0x3f

  9. def writeCommand(command):
  10.    bus.write_byte(addr, 0b1100 | command << 4)
  11.    time.sleep(0.005)
  12.    bus.write_byte(addr, 0b1000 | command << 4)
  13.    time.sleep(0.005)

  14. def writeWord(word):
  15.    for i in range(0,len(word)):
  16.       asciiCode =  ord(word[i])
  17.       bus.write_byte(addr, 0b1101 |(asciiCode >> 4 & 0x0F) << 4)
  18.       time.sleep(0.0005)
  19.       bus.write_byte(addr, 0b1001 |(asciiCode >> 4 & 0x0F) << 4)
  20.       time.sleep(0.0005)
  21.       bus.write_byte(addr, 0b1101 |(asciiCode & 0x0F) << 4)
  22.       time.sleep(0.0005)
  23.       bus.write_byte(addr, 0b1001 | (asciiCode & 0x0F) << 4)
  24.       time.sleep(0.0005)

  25. # init
  26. writeCommand(0b0010)

  27. # 4-byte mode, 2 line code
  28. writeCommand(0b0010)
  29. writeCommand(0b1111)

  30. # set cursor mode
  31. writeCommand(0b0000)
  32. writeCommand(0b1100)

  33. # cursor shift mode
  34. writeCommand(0b0000)
  35. writeCommand(0b0110)

  36. writeWord("Welcome")
  37. clear = True
  38. time.sleep(1)

  39. while(1):
  40.    # first line first column
  41.    writeCommand(0b1000)
  42.    writeCommand(0b0000)
  43.    writeWord(strftime("%Y-%m-%d, %a ", localtime()))

  44.    # second line first column
  45.    writeCommand(0b1100)
  46.    writeCommand(0b0000)
  47.    writeWord(strftime("%H:%M:%S", localtime()))
  48.    time.sleep(0.2)
复制代码

保存后运行
  1. sudo python lcd-clock.py
复制代码

数字日历效果如下



分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

噗噗熊

发表于 2017-12-20 09:49:07 | 只看该作者

可乐早上好,顶!
板凳

可乐丸子

发表于 2017-12-20 09:52:28 | 只看该作者

噗噗熊 发表于 2017-12-20 09:49
可乐早上好,顶!

早上好 噗噗熊
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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