news 2026/6/3 4:04:56

【免费开源】STM32_LCD12864液晶显示屏中文字库菜单驱动并行串行双模式完整工程项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【免费开源】STM32_LCD12864液晶显示屏中文字库菜单驱动并行串行双模式完整工程项目

【免费开源】STM32_LCD12864液晶显示屏中文字库菜单驱动并行串行双模式完整工程项目

一、项目背景

LCD12864 是 128×64 点阵液晶显示屏,自带 GB2312 中文字库(ST7920 控制器版本),是嵌入式入门最具性价比的图形显示屏。本项目"基于 STM32 的 LCD12864 显示屏驱动"实现并行(8080)与串行(SPI)双模式驱动、汉字与图形混合显示、菜单系统、动画刷新。

二、项目流程图

STM32 上电

GPIO/SPI 初始化

LCD12864 上电延时 100ms

发送基本指令集 0x30

显示 ON 0x0C

清屏 0x01

设置 DDRAM 地址

发送 GB2312 汉字双字节

需要图形?

切扩展指令 0x34

绘图位映射至 GDRAM

切回基本指令 0x30

继续刷新

菜单按键?

更新菜单状态

等待下一次刷新

三、硬件接线(串行 SPI 模式)

LCD12864STM32
RS(CS)PB12
RW(MOSI)PB15
EN(SCK)PB13
PSBGND
BLA3.3V
BLKGND

四、核心驱动代码

#include"main.h"externSPI_HandleTypeDef hspi2;#defineCS_HIGH()HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET)#defineCS_LOW()HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET)staticvoidSend(uint8_trs,uint8_td){uint8_thdr=0xF8|(rs?0x02:0x00);uint8_thi=d&0xF0;uint8_tlo=(d&0x0F)<<4;CS_HIGH();HAL_SPI_Transmit(&hspi2,&hdr,1,100);HAL_SPI_Transmit(&hspi2,&hi,1,100);HAL_SPI_Transmit(&hspi2,&lo,1,100);CS_LOW();HAL_Delay(1);}voidLCD_Cmd(uint8_tc){Send(0,c);}voidLCD_Data(uint8_tc){Send(1,c);}voidLCD12864_Init(void){HAL_Delay(100);LCD_Cmd(0x30);LCD_Cmd(0x0C);LCD_Cmd(0x01);HAL_Delay(2);LCD_Cmd(0x06);}staticconstuint8_taddr[4]={0x80,0x90,0x88,0x98};voidLCD_Show(uint8_trow,uint8_tcol,constchar*s){LCD_Cmd(addr[row]+col);while(*s)LCD_Data(*s++);}intmain(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_SPI2_Init();LCD12864_Init();LCD_Show(0,0,"你好 STM32!");LCD_Show(1,0,"LCD12864 测试");LCD_Show(2,0,"汉字 ABC 123");LCD_Show(3,0,"www.example.com");while(1)HAL_Delay(1000);}

五、关键技术

5.1 串行三字节协议

ST7920 串行模式每次传 3 个字节:起始字节(同步) + 数据高 4 位 + 数据低 4 位,不要忘了高低位拆分。

5.2 GDRAM 绘图

开启扩展指令集 0x34 后可以写入 GDRAM,每个字节代表横向 8 个像素,可显示 BMP 图像、波形。

5.3 中文显示

直接发送 GB2312 双字节即可(字库内置),无需自己写字模数组。

六、应用扩展

  • 配合 ADC 显示电压波形;
  • 多级菜单参数配置面板;
  • 中文 OLED-like 时钟项目;
  • 工业仪表显示。

七、调试经验

  1. PSB 引脚决定并/串模式:低电平为串行;
  2. 屏幕雪花/漏字通常是延时不够,发送命令后建议加 100us 延时;
  3. 部分屏幕背光接 5V,注意电压;
  4. 写 GDRAM 之前要切 0x34,写完文字之前要切 0x30。

八、总结

LCD12864 仍是嵌入式开发中"显示中文最经济"的方案。本工程提供完整的 SPI 驱动、并口驱动、菜单示例、波形显示,源码可直接用在毕设项目中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 3:56:56

3PEAK思瑞浦 TPA6581-DF0R DFN0.8X0.8-4 运算放大器

特性电源电压&#xff1a;2.7 V ~ 5.5 V偏移电压&#xff1a;1.5 mV&#xff08;最大值&#xff09;单位增益带宽&#xff1a;10 MHz压摆率&#xff1a;8 V/μs低功耗&#xff1a;每通道 1.2 mA轨到轨输入和输出低 1/f 噪声&#xff1a;在 1 kHz 频率下为 10 nV/√Hz在电源开启…

作者头像 李华
网站建设 2026/6/3 3:56:55

STM32学习笔记【11.蜂鸣器和按键模块】

蜂鸣器和按键 1.蜂鸣器模块如何让蜂鸣器鸣响&#xff1f;将I/O引脚拉低即可。 模块工作电压&#xff1a;3.3V 有源蜂鸣器与无源蜂鸣器的区别&#xff1a; 有源蜂鸣器内部带有震荡源&#xff0c;只要给它通电&#xff0c;它就会发出声音&#xff0c;但是声音音调是单一的&#x…

作者头像 李华