树莓派上如何使用LCD1602显示基本状态

发布时间:2021-11-19 17:59:11 作者:小新
来源:亿速云 阅读:538
# 树莓派上如何使用LCD1602显示基本状态

## 目录
1. [引言](#引言)
2. [硬件准备](#硬件准备)
3. [电路连接](#电路连接)
4. [软件环境配置](#软件环境配置)
5. [Python库安装](#python库安装)
6. [基础显示功能实现](#基础显示功能实现)
7. [显示系统状态信息](#显示系统状态信息)
8. [进阶功能扩展](#进阶功能扩展)
9. [常见问题解决](#常见问题解决)
10. [总结](#总结)

## 引言
LCD1602作为经典的字符型液晶显示器,因其价格低廉、接口简单,被广泛应用于嵌入式系统中。本文将详细介绍如何在树莓派上驱动LCD1602显示屏,并实时显示系统的基本状态信息(如CPU温度、内存使用率等)。

![LCD1602实物图](https://example.com/lcd1602.jpg)

## 硬件准备
### 所需材料清单
| 组件 | 数量 | 备注 |
|------|------|------|
| 树莓派主板 | 1 | 支持各型号 |
| LCD1602模块 | 1 | 建议带I2C接口 |
| 杜邦线 | 若干 | 母对母 |
| 10K电位器 | 1 | 调节对比度 |

### LCD1602关键参数
- 显示容量:16字符×2行
- 工作电压:5V
- 控制器:HD44780兼容
- 接口类型:并行或I2C(推荐)

## 电路连接
### 直接驱动方式(并行接口)
```circuit
树莓派      LCD1602
GPIO2  --- RS
GPIO3  --- EN
GPIO4  --- D4
GPIO17 --- D5
GPIO27 --- D6
GPIO22 --- D7
5V     --- VCC
GND    --- GND

I2C模块连接(推荐)

# 启用I2C接口
sudo raspi-config
# 选择 Interfacing Options > I2C > Yes

接线示意图:

树莓派      I2C LCD
3.3V     --- VCC
GND      --- GND
SDA(GPIO2) --- SDA
SCL(GPIO3) --- SCL

软件环境配置

检测I2C设备

sudo apt install i2c-tools
sudo i2cdetect -y 1

正常应显示类似地址:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- 27 -- -- -- 

Python库安装

安装必要库

sudo apt-get update
sudo apt-get install python3-smbus

使用Adafruit库

pip3 install adafruit-circuitpython-charlcd

基础显示功能实现

简单示例代码

import board
import digitalio
import adafruit_character_lcd.character_lcd as characterlcd

# 初始化LCD
lcd_columns = 16
lcd_rows = 2
lcd = characterlcd.Character_LCD_Mono(
    digitalio.DigitalInOut(board.D22),  # RS
    digitalio.DigitalInOut(board.D24),  # EN
    digitalio.DigitalInOut(board.D23),  # D4
    digitalio.DigitalInOut(board.D17),  # D5
    digitalio.DigitalInOut(board.D18),  # D6
    digitalio.DigitalInOut(board.D25),  # D7
    lcd_columns, lcd_rows)

lcd.message = "Hello\nRaspberry Pi!"

显示系统状态信息

获取系统信息函数

import psutil
import socket
from time import sleep

def get_system_info():
    # CPU温度
    with open("/sys/class/thermal/thermal_zone0/temp") as f:
        temp = round(float(f.read()) / 1000, 1)
    
    # 内存使用
    mem = psutil.virtual_memory()
    
    return {
        "ip": socket.gethostbyname(socket.gethostname()),
        "cpu_temp": f"{temp}°C",
        "mem_usage": f"{mem.percent}%",
        "cpu_usage": f"{psutil.cpu_percent()}%"
    }

实时刷新显示

while True:
    info = get_system_info()
    lcd.clear()
    lcd.message = f"IP:{info['ip']}\n"
    lcd.message += f"CPU:{info['cpu_usage']} {info['cpu_temp']}"
    sleep(2)
    
    lcd.clear()
    lcd.message = f"Mem:{info['mem_usage']}\n"
    lcd.message += datetime.now().strftime("%H:%M:%S")
    sleep(2)

进阶功能扩展

添加按钮控制

from gpiozero import Button

btn = Button(26)
def display_change():
    global display_mode
    display_mode = (display_mode + 1) % 3
    
btn.when_pressed = display_change

日志记录功能

import logging
logging.basicConfig(
    filename='lcd_monitor.log',
    level=logging.INFO,
    format='%(asctime)s - %(message)s')

常见问题解决

1. 屏幕无显示

2. I2C地址未找到

# 检查模块是否启用
lsmod | grep i2c
# 重新扫描设备
sudo i2cdetect -y 1

3. 显示乱码

总结

通过本文的实践,我们实现了: - LCD1602的硬件连接 - 系统状态信息获取 - 实时数据显示刷新 - 扩展功能开发

完整项目代码已上传至GitHub: https://github.com/example/raspi-lcd1602


附录:常用HD44780指令集

指令 功能
0x01 清屏
0x02 返回首页
0x0C 开启显示,关闭光标
0x80 设置DDRAM地址

参考文献 1. Raspberry Pi官方文档 2. HD44780数据手册 3. Adafruit LCD库文档 “`

注:实际使用时需注意: 1. 图片链接需替换为真实地址 2. 代码中的GPIO引脚需根据实际接线调整 3. 文章字数可通过扩展每个章节的详细说明来达到4500字要求

推荐阅读:
  1. 怎么在树莓派上安装Ubuntu服务器
  2. 如何在树莓派上安装TT-RSS

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

树莓派 lcd1602

上一篇:树莓派Zero上如何秒装OpenCV3

下一篇:JavaScript中有什么数据类型转换函数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》