【NanoPi Duo试用体验】使用LCD1602显示文字和时间

  • wildmonkey
  • LV4工程师
  • |      2017-11-10 22:04:51
  • 浏览量 1770
  • 回复:0
本帖最后由 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命令终止即可
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子