欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > LCD1602液晶显示屏详解(STM32)

LCD1602液晶显示屏详解(STM32)

2025/4/28 16:13:31 来源:https://blog.csdn.net/qq_44016222/article/details/147519645  浏览:    关键词:LCD1602液晶显示屏详解(STM32)

目录

一、介绍

二、传感器原理

1.原理图​编辑

2.接口说明

三、程序设计

main文件

lcd1602.h文件

lcd1602.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

       LCD1602A字符型液晶显示模块是专门用于显示字母、数字元、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供5×7点阵+光标的显示模式,最初代模块采用HD44780控制器,在各厂家生产的LCD1602模块中,基本也都采用了与之兼容的IC,所以特性上基本上一样的,只是字符颜色和背光不同。

以下是LCD1602液晶显示屏的参数:

名称

LCD1602A

模块电压

DC:5V

工作电流

1.7mAMAX

背光电流

24mAMAX

驱动

HDD44780

显示

蓝底白字/黄底黑字

工作温度

-20~70

哔哩哔哩视频链接:

LCD1602液晶显示屏(STM32)

(资料分享见文末) 

二、传感器原理

1.原理图

2.接口说明

三、程序设计

1.使用STM32F103C8T6英文字符数字和显示在LCD1602液晶显示屏上

D0

PA0

D1

PA1

D2

PA2

D3

PA3

D4

PA4

D5

PA5

D6

PA6

D7

PA7

RS

PC13

RW

PC14

E

PC15

main文件

#include "delay.h"
#include "sys.h"
#include "lcd1602.h"
#include "led.h"/*****************辰哥单片机设计******************STM32* 项目			:	LCD1602液晶显示屏实验                     * 版本			: V1.0* 日期			: 2025.2.6* MCU			:	STM32F103C8T6* 接口			:	参看lcd1602.h							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/uint8_t Disp[]="HELLO";//后加4个空格int main(void)
{SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();LCD1602_Init();LCD1602_Write_String(0,0,"    HELLO!!!   ");//显示字符串LCD1602_Write_String(0,1,"                ");int i=0;while(1){LED_Toggle();i++;delay_ms(500);LCD1602_WriteCom(0xC6);LCD1602_WriteData(i+0x30);}
}

lcd1602.h文件

#ifndef __LCD1602_H
#define __LCD1602_H 
#include "sys.h"
#include "stdlib.h"	/*****************辰哥单片机设计******************STM32* 文件			:	LCD1602液晶显示屏h文件                     * 版本			: V1.0* 日期			: 2025.2.6* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************///----------------OLED端口定义----------------- 
/***************根据自己需求更改****************/
#define LCD1602_RS_GPIO_PORT				GPIOC
#define LCD1602_RS_GPIO_PIN					GPIO_Pin_13#define LCD1602_RW_GPIO_PORT				GPIOC
#define LCD1602_RW_GPIO_PIN					GPIO_Pin_14#define LCD1602_E_GPIO_PORT					GPIOC
#define LCD1602_E_GPIO_PIN					GPIO_Pin_15/*********************END**********************/#define LCD1602_RS_H   	GPIO_SetBits(LCD1602_RS_GPIO_PORT,LCD1602_RS_GPIO_PIN)
#define LCD1602_RS_L	 	GPIO_ResetBits(LCD1602_RS_GPIO_PORT,LCD1602_RS_GPIO_PIN)#define LCD1602_RW_H		GPIO_SetBits(LCD1602_RW_GPIO_PORT,LCD1602_RW_GPIO_PIN)
#define LCD1602_RW_L		GPIO_ResetBits(LCD1602_RW_GPIO_PORT,LCD1602_RW_GPIO_PIN)#define LCD1602_E_H   	GPIO_SetBits(LCD1602_E_GPIO_PORT,LCD1602_E_GPIO_PIN)
#define LCD1602_E_L  		GPIO_ResetBits(LCD1602_E_GPIO_PORT, LCD1602_E_GPIO_PIN)void LCD1602_Init(void);
void LCD1602_WriteCom(uint8_t com);
void LCD1602_WriteData(uint8_t dat);
void LCD1602_Write_String(unsigned char x,unsigned char y,unsigned char *s);
void LCD1602_Write_Char(unsigned char x,unsigned char y,unsigned char Data); 
void LCD1602_Clear(void); #endif

lcd1602.c文件

#include "lcd1602.h"
#include "stdlib.h" 	 
#include "delay.h"/*****************辰哥单片机设计******************STM32* 文件			:	LCD1602液晶显示屏c文件                     * 版本			: V1.0* 日期			: 20245.2.6* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************//*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能		 : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/		void LCD1602_Init(void)
{		/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
//LCD_RS引脚初始化GPIO_InitStructure.GPIO_Pin = LCD1602_RS_GPIO_PIN;	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);	//LCD_RW引脚初始化GPIO_InitStructure.GPIO_Pin = LCD1602_RW_GPIO_PIN;GPIO_Init(GPIOC, &GPIO_InitStructure);//LCD_E引脚初始化GPIO_InitStructure.GPIO_Pin = LCD1602_E_GPIO_PIN;GPIO_Init(GPIOC, &GPIO_InitStructure);//D0-D7引脚初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_Init(GPIOA, &GPIO_InitStructure); LCD1602_WriteCom(0x38);  //开显示LCD1602_WriteCom(0x0c);  //开显示不显示光标LCD1602_WriteCom(0x06);  //写一个指针加1LCD1602_WriteCom(0x01);  //清屏LCD1602_WriteCom(0x80);  //设置数据指针起点}void LCD1602_DATAPINS(uint8_t Date)
{uint16_t dat_buf;dat_buf=GPIO_ReadOutputData(GPIOA);dat_buf=dat_buf&0xFF00;dat_buf=dat_buf|Date;GPIO_Write(GPIOA, dat_buf);}void LCD1602_WriteCom(uint8_t com)	  //写入命令
{LCD1602_RS_L;	   //选择发送命令LCD1602_RW_L;	   //选择写入LCD1602_E_L;     //使能LCD1602_DATAPINS(com);     //放入命令delay_ms(1);		//等待数  据稳定LCD1602_E_H;	          //写入时序delay_ms(5);		  //保持时间LCD1602_E_L;}/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能		   : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/		   void LCD1602_WriteData(uint8_t dat)			//写入数据
{LCD1602_RS_H;	   //选择发送命令LCD1602_RW_L;	   //选择写入LCD1602_E_L;     //使能LCD1602_DATAPINS(dat);  //写入数据delay_ms(1);LCD1602_E_H;   //写入时序delay_ms(5);   //保持时间LCD1602_E_L;}/*------------------------------------------------写入字符函数
------------------------------------------------*/void LCD1602_Write_Char(unsigned char x,unsigned char y,unsigned char Data) 
{     if (y == 0) {     LCD1602_WriteCom(0x80 + x);    //第一行    }    else {     LCD1602_WriteCom(0xC0 + x);  //第二行     }        LCD1602_WriteData( Data); //显示字符      
}/*------------------------------------------------写入字符串函数
------------------------------------------------*/void LCD1602_Write_String(unsigned char x,unsigned char y,unsigned char *s) {     if (y == 0) {     LCD1602_WriteCom(0x80 + x);  //第一行   }else {     LCD1602_WriteCom(0xC0 + x);  //第二行   }        while (*s) //判断是否检测到结尾符{     LCD1602_WriteData( *s);//显示字符     s ++;  //指针加1   }}/*------------------------------------------------清屏函数
------------------------------------------------*/void LCD1602_Clear(void) 
{ LCD1602_WriteCom(0x01); delay_ms(5);
}

四、实验效果 

五、资料获取

项目分享

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词