本文作者:豆面

HDG12864F3显示屏如何接线?

豆面 2025-01-21 11:14:25 60
HDG12864F3显示屏如何接线?摘要: 一、引脚定义与功能HDG12864F-3液晶显示模块采用ST7920控制IC,其引脚定义如下: 引脚编号 引脚名称 功能描述 1 VSS 接地端 2 VDD 电源正,接+5V 3...

一、引脚定义与功能

HDG12864F3液晶显示模块采用ST7920控制IC,其引脚定义如下:

引脚编号 引脚名称 功能描述
1 VSS 接地端
2 VDD 电源正,接+5V
3 VO 对比度调整,一般接+5V
4 D/I(CS*) 片选,也叫使能,接+5V
5 R/W(SID*) 数据输入端,用于选择指令或数据寄存器
6 E(SCLK*) 时钟输入端,上升沿有效
7~14 DB0 ~ DB7 并行数据总线,用于传输数据
15 PSB 串并模式选择,串行模式下接地,并行模式下接+5V
16 NC 空引脚,不需要连接
17 RSTB 复位端,低电平有效,一般接+5V
18 VEE 空引脚,不需要连接
19 BLA 背光正极,接+5V
20 BLK 背光负极,接地

二、接线步骤

1. 确定接口方式

根据实际需求,可以选择串行或并行接口方式,本文以并行接口为例进行说明。

2. 连接电源和地

将模块的VSS引脚连接到系统的地(GND),将VDD引脚连接到系统的+5V电源。

3. 连接数据和控制线

RS(寄存器选择):连接到系统的一个GPIO引脚,用于选择指令或数据寄存器。

RW(读写选择):连接到系统的一个GPIO引脚,用于选择读或写操作,在写操作时,该引脚应接地(GND)。

E(时钟):连接到系统的一个GPIO引脚,用于提供时钟信号,在上升沿时数据被读取或写入。

D0D7(数据总线):连接到系统的并行数据总线,用于传输数据。

PSB(模式选择):在并行模式下,该引脚应接+5V;在串行模式下,该引脚应接地(GND)。

RST(复位):连接到系统的一个GPIO引脚,用于复位模块,低电平有效。

4. 示例接线表

假设使用单片机的P0口作为数据总线,P2^6作为RS,P2^5作为RW,P2^7作为E,P3^2作为RST,接线如下:

模块引脚 单片机引脚 描述
VSS GND 接地
VDD +5V 接电源正
VO +5V 对比度调整
D/I(CS*) +5V 片选
R/W(SID*) P2^5 读写选择
E(SCLK*) P2^7 时钟输入
DB0 ~ DB7 P0^0 ~ P0^7 并行数据总线
PSB +5V 串并模式选择
NC NC 空引脚
RSTB P3^2 复位端
VEE NC 空引脚
BLA +5V 背光正极
BLK GND 背光负极

三、代码示例

以下是一个简单的代码示例,用于初始化HDG12864F3液晶屏并在指定位置显示字符:

#include <reg52.h>
// 定义LCD端口
sbit A0 = P2^6; // 指令OR数据选择
sbit RW = P2^5; // 读写选择
sbit EN = P2^7; // (时钟)使能选择
sfr LCD = 0x80; // 定义LCD地址
// 延时函数
void delay(uint x) {
    uint i, j;
    for (i = x; i > 0; i)
        for (j = 110; j > 0; j);
}
// 写命令到LCD
void lcd_write_cmd(uint8_t cmd) {
    A0 = 0;
    RW = 0;
    LCD = cmd;
    EN = 1;
    delay(5);
    EN = 0;
}
// 写数据到LCD
void lcd_date(uint8_t dat) {
    A0 = 1;
    RW = 0;
    LCD = dat;
    EN = 1;
    delay(5);
    EN = 0;
}
// 初始化LCD
void init() {
    lcd_write_cmd(0xaf); // 打开基本指令集
    lcd_write_cmd(0xa1); // 整体显示关闭
    lcd_write_cmd(0xc0); // 设置DDRAM地址计数法为从左上开始
    lcd_write_cmd(0xb0); // 功能设定,显示状态为整体显示,不显示光标,光标自动右移
    lcd_write_cmd(0xc8); // 设定数据RAM起始地址为DDRAM地址计数器加1后的地址
    lcd_write_cmd(0x0f); // 设定显示开/关及光标是否闪烁
    lcd_write_cmd(0x38); // 设定8位资料接口,使用基本指令集
}
void display(int a, int b, char *buf1) {
    int n;
    for (n = 0; n <= 15; n++) {
        lcd_write_cmd(a);
        lcd_write_cmd(b);
        lcd_write_cmd(0x00 + n);
        lcd_date(buf1[n]);
        lcd_write_cmd(a + 1);
        lcd_write_cmd(b);
        lcd_write_cmd(0x00 + n);
        lcd_date(buf1[n + 16]);
    }
}
void main() {
    init(); // 初始化LCD
    display(0xB0, 0x00, "Hello World!"); // 在指定位置显示字符串"Hello World!"
    while (1); // 循环保持程序运行
}

四、常见问题FAQs

1. HDG12864F3液晶模块如何初始化?

答:初始化过程包括设置显示模式、光标移动方式、显示开关等,具体步骤可以参考上述代码示例中的init函数。

2. HDG12864F3液晶模块支持哪些显示模式?

答:支持文本显示模式和图形显示模式,在文本模式下,可以显示字母、数字和中文字库中的汉字;在图形模式下,可以自定义绘制图形。

3. 如果LCD屏幕无法正常显示,可能是什么原因?

答:可能原因包括接线错误、电源电压不足、控制信号不正确等,请检查接线图和代码是否正确。

4. HDG12864F3液晶模块的背光如何控制?

答:背光正极(BLA)接+5V,负极(BLK)接地,通过控制BLK引脚的电平可以控制背光的开关。

5. HDG12864F3液晶模块适用于哪些应用场景?

答:广泛应用于需要显示文本或图形信息的场合,如嵌入式系统、智能仪表、工业控制等,其高分辨率和灵活的接口方式使其成为这些应用的理想选择。

文章版权及转载声明

作者:豆面本文地址:https://www.jerry.net.cn/articals/19620.html发布于 2025-01-21 11:14:25
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司

阅读
分享