树莓派通过 I2C 驱动 LCD1602 液晶屏

前一阵用废旧的树莓派做了一个NAS服务器,手里还要一块闲置的LCD 1602 液晶屏模块,可以用来实时显示IP,作为NAS的服务器输出显示。

在树莓派上LCD 1602 液晶屏模块的使用非常简单,可以用 I2C 方式的驱动,只要使能0,5V,tx,tf四根线就可实现使能,屏幕上自带调压电阻可以调整亮度对比度。极大的简化LED接线和驱动使用。带 I2C 模块的 1602 屏幕背面如图所示。
在这里插入图片描述
第一步,线序超级简单,不要接错了。

GND — GND
VCC — 接树莓派 5V
SDA — I2C 数据
SCL — I2C 时钟

第二步,启用树莓派的I2C功能。

sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools

第三步,使能I2C
sudo raspi-config
选择I2C

第四步,用 Python 控制 LCD1602 显示需要的信息。

平时用来显示时间的程序代码例 测试程序test.py:

import smbus
import time
import sys
import LCD1602 as LCDif __name__ == '__main__':  LCD.init_lcd()time.sleep(1)LCD.print_lcd(2, 0, '测试程序test')for x in xrange(1, 4):LCD.turn_light(0)LCD.print_lcd(4, 1, 'LIGHT OFF')time.sleep(0.5)LCD.turn_light(1)LCD.print_lcd(4, 1, 'LIGHT ON ')time.sleep(0.5)LCD.turn_light(0)while True:now = time.strftime('%m/%d %H:%M:%S', time.localtime(time.time()))LCD.print_lcd(1, 1, now)time.sleep(0.2)

注意1,LCD1602模块不显示可以调整一下电阻,亮度太高也不行的。
注意2,LCD1602驱动在程序里作为一个python导入模块使用。找不到的,用我下面共享的,保存为LCD1602.py作为驱动和程序放在同目录即可。怎么样开机自动运行参考我的另一篇文章:树莓派Python程序开机自启动(Linux下Python程序开机自启动)

LCD1602.py驱动程序代码

import time
import smbus
BUS = smbus.SMBus(1)
LCD_ADDR = 0x27
BLEN = 1 #turn on/off background lightdef turn_light(key):global BLENBLEN = keyif key ==1 :BUS.write_byte(LCD_ADDR ,0x08)else:BUS.write_byte(LCD_ADDR ,0x00)def write_word(addr, data):global BLENtemp = dataif BLEN == 1:temp |= 0x08else:temp &= 0xF7BUS.write_byte(addr ,temp)def send_command(comm):# Send bit7-4 firstlybuf = comm & 0xF0buf |= 0x04               # RS = 0, RW = 0, EN = 1write_word(LCD_ADDR ,buf)time.sleep(0.002)buf &= 0xFB               # Make EN = 0write_word(LCD_ADDR ,buf)# Send bit3-0 secondlybuf = (comm & 0x0F) << 4buf |= 0x04               # RS = 0, RW = 0, EN = 1write_word(LCD_ADDR ,buf)time.sleep(0.002)buf &= 0xFB               # Make EN = 0write_word(LCD_ADDR ,buf)def send_data(data):# Send bit7-4 firstlybuf = data & 0xF0buf |= 0x05               # RS = 1, RW = 0, EN = 1write_word(LCD_ADDR ,buf)time.sleep(0.002)buf &= 0xFB               # Make EN = 0write_word(LCD_ADDR ,buf)# Send bit3-0 secondlybuf = (data & 0x0F) << 4buf |= 0x05               # RS = 1, RW = 0, EN = 1write_word(LCD_ADDR ,buf)time.sleep(0.002)buf &= 0xFB               # Make EN = 0write_word(LCD_ADDR ,buf)def init_lcd():try:send_command(0x33) # Must initialize to 8-line mode at firsttime.sleep(0.005)send_command(0x32) # Then initialize to 4-line modetime.sleep(0.005)send_command(0x28) # 2 Lines & 5*7 dotstime.sleep(0.005)send_command(0x0C) # Enable display without cursortime.sleep(0.005)send_command(0x01) # Clear ScreenBUS.write_byte(LCD_ADDR ,0x08)except:return Falseelse:return Truedef clear_lcd():send_command(0x01) # Clear Screendef print_lcd(x, y, str):if x < 0:x = 0if x > 15:x = 15if y <0:y = 0if y > 1:y = 1# Move cursoraddr = 0x80 + 0x40 * y + xsend_command(addr)for chr in str:send_data(ord(chr))if __name__ == '__main__':init_lcd()print_lcd(0, 0, 'Hello, world!')```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314911.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sift 图片匹配

1. 模式匹配结果 2. 结果的可视化 3. 基于我们找到的匹配猜测仿射变换 4. 调整findHomo的参数&#xff0c;寻找最好的一堆参数 5. 带着新的仿射变换的信息&#xff0c;筛选我们的匹配

电脑回收站删除的照片怎么找回来?选对方法很关键

在当今数字化时代&#xff0c;照片已成为我们珍贵的记忆载体。然而&#xff0c;有时候我们会因为误操作或清理空间的需要&#xff0c;不小心删除了电脑回收站里的照片。这些照片可能包含着我们的快乐时光、亲朋好友的聚会、重要的纪念日等&#xff0c;那么&#xff0c;电脑回收…

一文读懂代码签名证书:保护你的数字世界!

代码签名证书在数字世界中扮演着至关重要的角色&#xff0c;它是一种数字证书&#xff0c;用于确认软件或文件的真实性和完整性。通过为代码签名提供身份验证&#xff0c;代码签名证书有助于保护用户免受潜在的恶意软件和篡改风险。本文将深入解析代码签名证书&#xff0c;揭示…

【快速全面掌握 WAMPServer】12.WAMPServer 故障排除经验大总结

网管小贾 / sysadm.cc 众所周知&#xff0c;搞开发需要先搭建相应的编程和调试环境。 对于 PHPer 来说&#xff0c;很多像我一样的新手小白们入门的时候&#xff0c;通常会选择一些集成开发环境包&#xff0c;其中就有 WampServer 。 集成环境包被许多人所诟病&#xff0c;说…

CRM客户关系管理系统

系统开发环境以及版本 操作系统&#xff1a; Windows_7集成开发工具&#xff1a; Eclipse EE_4.7编译环境&#xff1a;JDK_1.8Web服务器&#xff1a;Tomcat_9.0数据库&#xff1a;MySQL_5.7.23 系统框架 spring框架springmvc框架mybatis框架Logback日志框架安全验证框架maven框…

Gin 集成 prometheus 客户端实现注册和暴露指标

前言 当我们构建一个 Web 应用程序时&#xff0c;了解应用程序的性能和行为是非常重要的。Prometheus 是一个流行的开源监控系统&#xff0c;它提供了强大的指标收集和查询功能&#xff0c;可以帮助我们监控应用程序的各个方面。 在 Gin 中集成 Prometheus 可以让我们更方便地监…

UE5.1_Gameplay Debugger启用

UE5.1_Gameplay Debugger启用 重点问题&#xff1a; Gamplay Debugger启用不知道&#xff1f; Apostrophe、Tilde键不知道是哪个&#xff1f; Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger

leetcode链表小练(1.反转链表2.链表的中间节点3.合并两个有序链表4.环形链表①5.环形链表②)详解 (୨୧• ᴗ •͈)◞︎ᶫᵒᵛᵉ ♡

目录 一.反转链表 思路一反转指针反向&#xff1a; 思路二头插法&#xff1a; 二.链表的中间节点&#xff1a; 三.合并两个有序数组: 思路一&#xff1a;从头开始&#xff0c;取两个链表中小的那个尾插到新链表。定义指针head,tail指向空&#xff0c;代表新链表的头结点。…

新手卖家如何入局独立站?看这一篇就够了

作为卖家如果有心入局跨境独立站&#xff0c;先要了解清楚什么是独立站&#xff1f;优势是什么&#xff1f;再去思考如何入局独立站&#xff1f; 一、什么是独立站&#xff1f; 独立站&#xff0c;顾名思义&#xff0c;就是一个独立的网站&#xff0c;它不受限于任何平台&#…

2024年最火爆的前端技术:虚拟DOM让页面性能飞升!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 前言 正文 &#x1f4d8; 一、什么是虚拟D…

PE解释器之PE文件结构

PE文件是由许许多多的结构体组成的&#xff0c;程序在运行时就会通过这些结构快速定位到PE文件的各种资源&#xff0c;其结构大致如图所示&#xff0c;从上到下依次是Dos头、Nt头、节表、节区和调试信息(可选)。其中Dos头、Nt头和节表在本文中统称为PE文件头(因为SizeOfHeaders…

SQL之CASE WHEN用法详解

目录 一、简单CASE WHEN函数&#xff1a;二、CASE WHEN条件表达式函数三、常用场景 场景1&#xff1a;不同状态展示为不同的值场景2&#xff1a;统计不同状态下的值场景3&#xff1a;配合聚合函数做统计场景4&#xff1a;CASE WHEN中使用子查询场景5&#xff1a;经典行转列&am…