文章导读
大家好,我是林译川。今天我们来聊聊STM32如何轻松使用LCD12864显示屏。LCD12864是一款常见的图形点阵液晶模块,通过串行方式与STM32通信,可以实现丰富的显示效果。本文将带你一步步了解其原理和配置方法,让你轻松上手。
LCD12864简介
LCD12864是一款4位/8位并行、2线或3线接口方式的图形点阵液晶模块。它内置了丰富的中文字库和ASCII字符集,显示分辨率为128x64,非常适合用于各种嵌入式项目中。
串口通讯引脚
- CS片选信号:用于选择液晶屏。
- SID数据传输引脚:用于数据传输。
- CLK时钟:用于同步数据传输。
- PSB(低电平表示串行通讯):用于选择串行或并行通讯方式。
- VSS、VDD电源脚:提供电源。
串行时序图
在操作液晶屏前,需要将CS片选信号拉高。SID前8位是控制字符,其中1-5位固定为1。RW为0时表示写操作,RS为1时表示写数据,RS为0时表示写指令。写指令CMD固定为0xF8,写数据DAT固定为0xFA。发送数据分为两组,将发送的8位数据截取成两段,第一段发送给1byte的高4位,第二段发送给2byte的高4位。
基本指令说明
- 功能设定:使用0x30表示8位MPU控制,选择基本指令集。
- 显示开关设置:使用0x0C表示设定显示开,关闭光标,正常显示。
- 进入设定点:使用0x06表示显示数据的读写时,设定游标方向右移,DDRAM地址计数器加1。
- 清楚显示:使用0x01表示清除显示。
- 设定DDRAM地址:使用0x80表示设置启动位置到地址计数器。
代码配置
#ifndef __LCD12864_H
#define __LCD12864_H
#include "stm32f10x.h"
#include "Delay.h"
#define CS GPIO_Pin_0 //片选信号
#define SID GPIO_Pin_1 //数据传输
#define CLK GPIO_Pin_2 //时钟
#define PSB GPIO_Pin_3 //串并选择 低电平为串行
#define CMD_PROT GPIOC //GPIO分组
#define CS_HIGH GPIO_SetBits(CMD_PROT,CS)
#define CS_LOW GPIO_ResetBits(CMD_PROT,CS)
#define SID_HIGH GPIO_SetBits(CMD_PROT,SID)
#define SID_LOW GPIO_ResetBits(CMD_PROT,SID)
#define CLK_HIGH GPIO_SetBits(CMD_PROT,CLK)
#define CLK_LOW GPIO_ResetBits(CMD_PROT,CLK)
#define PSB_HIGH GPIO_SetBits(CMD_PROT,PSB)
#define PSB_LOW GPIO_ResetBits(CMD_PROT,PSB)
#define CMD 0xF8 //写指令
#define DAT 0xFA //写数据
typedef struct{
uint8_t com; //地址
uint8_t num; //长度
uint8_t *dat; //数据
}LCD_InitTypeDef; //定义写文字用的结构体
void LCD12864_UserConfig(void);/*用户配置*/
void LCD12864_Write_Init(void);/*LCD12864上电初始化流程*/
void LCD12864_Write_CMD_Data(uint8_t cmd,uint8_t data);/*LCD12864写函数 传入指令写指令,传入数据写数据*/
void LCD12864_Write_Word(LCD_InitTypeDef LCD_InitStructure);/*LCD12864写文字*/
void LCD12864_Write_Number(uint8_t com,uint8_t num);/*LCD12864写数字*/
void LCD12864_Open(void);/*屏幕开显示*/
void LCD12864_Shut(void);/*屏幕关显示,进入睡眠*/
#endif
小结与拓展
通过本文的学习,相信大家对STM32使用LCD12864显示屏有了更深入的了解。LCD12864的应用非常广泛,可以用于显示文字、图形、图表等。接下来,我们可以尝试将LCD12864与其他传感器、模块进行结合,实现更复杂的嵌入式应用。
我是林译川,感谢大家的阅读。如果您对编程思维和技术有更多的疑问,欢迎关注「新派编程网」(www.xjpbg.com)了解更多内容。
