可乐丸子 发表于 2017-12-16 20:54:35

树莓派3B使用LCD1602打造数字日历

下面介绍在树莓派3B上使用LCD1602液晶屏打造数字日历的方法
树莓派3B的GPIO排针定义如下
https://github.com/yfgeek/rpi-TempRuntime/raw/master/images/2.png
LCD1602使用I2C连接方式连接到树莓派3B,SDA SCL VCC GND分布连接到树莓派3B的Pin3 Pin5 Pin3 Pin6
然后给树莓派3B上电,输入下面命令安装所需组件sudo apt-get install i2c-tools python-smbus
然后使用查看I2C设备是否显示ls /dev
可知没有发现I2C设备,但是硬件连接又正确,原因是Raspbian固件默认关闭了I2C接口,输入下面命令sudo raspi-config按下面选择打开I2C接口



再次查看i2c设备ls /dev可以看到i2c-1设备了

查看地址码i2cdetect -y 1可知为3f

创建一个python脚本lcd-clock.pyvi lcd-clock.py加入下面代码import smbus
import time
import os
from time import gmtime, strftime, localtime

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

bus = smbus.SMBus(1)
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 lcd-clock.py
数字日历效果如下



可乐丸子 发表于 2017-12-20 09:52:28

噗噗熊 发表于 2017-12-20 09:49 static/image/common/back.gif
可乐早上好,顶!

早上好 噗噗熊

噗噗熊 发表于 2017-12-20 09:49:07

可乐早上好,顶!
页: [1]
查看完整版本: 树莓派3B使用LCD1602打造数字日历

Baidu
map