本帖最后由 wildmonkey 于 2017-11-10 22:09 编辑
NanoPi Duo开发板底板的9*2排针上有I2C接口,可以尝试驱动I2C接口的LCD1602液晶屏
I2C接口LCD1602液晶屏成品如下
用四根杜邦线连接液晶屏的VCC GND SDA SCL到开发板底板5V GND SDA SCL然后给开发板通电,使用ls命令和i2cdetect命令确定设备i2c地址
可知smbus为0 address为3f
首先测试一下显示两排文字“NanoPi Duo LCD”和“
www.ickey.cc”,创建一个python程序lcdtext.py
import smbus
import time
bus = smbus.SMBus(0)
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("Hello World")
clear = True
time.sleep(1)
while(1):
# first line first column
writeCommand(0b1000)
writeCommand(0b0000)
writeWord("NanoPi Duo LCD")
# second line first column
writeCommand(0b1100)
writeCommand(0b0000)
writeWord("www.ickey.cc")
time.sleep(0.2)
运行
sudo python lcdtext.py
显示如图
然后试试显示时间,创建一个脚本lcddate.py
import smbus
import time
import os
from time import gmtime, strftime, localtime
os.environ = 'Asia/Shanghai'
time.tzset()
bus = smbus.SMBus(0)
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 lcddate.py
显示如下
运行下面命令可以在后台运行,创建的进程可以使用kill命令终止
sudo python lcddate.py &
使用ps命令查看后使用kill命令终止即可
本帖最后由 wildmonkey 于 2017-11-10 22:09 编辑
NanoPi Duo开发板底板的9*2排针上有I2C接口,可以尝试驱动I2C接口的LCD1602液晶屏
I2C接口LCD1602液晶屏成品如下
用四根杜邦线连接液晶屏的VCC GND SDA SCL到开发板底板5V GND SDA SCL然后给开发板通电,使用ls命令和i2cdetect命令确定设备i2c地址
可知smbus为0 address为3f
首先测试一下显示两排文字“NanoPi Duo LCD”和“
www.ickey.cc”,创建一个python程序lcdtext.py
import smbus
import time
bus = smbus.SMBus(0)
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("Hello World")
clear = True
time.sleep(1)
while(1):
# first line first column
writeCommand(0b1000)
writeCommand(0b0000)
writeWord("NanoPi Duo LCD")
# second line first column
writeCommand(0b1100)
writeCommand(0b0000)
writeWord("www.ickey.cc")
time.sleep(0.2)
运行
sudo python lcdtext.py
显示如图
然后试试显示时间,创建一个脚本lcddate.py
import smbus
import time
import os
from time import gmtime, strftime, localtime
os.environ = 'Asia/Shanghai'
time.tzset()
bus = smbus.SMBus(0)
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 lcddate.py
显示如下
运行下面命令可以在后台运行,创建的进程可以使用kill命令终止
sudo python lcddate.py &
使用ps命令查看后使用kill命令终止即可