LCD1602简易驱动程序

LCD1602驱动程序

简单几步配置即可驱动LCD1602
LCD1602的几个可编程的引脚为RS RW E DB0-DB7
LCD1602简易驱动程序_第1张图片MCU的引脚配置输入输出参考自己使用的规格书

只需要了解如下规则就行

  1. RW — 读写控制,RW = 0时,对DB0-DB7写数据,RW = 1时,可读DB0-DB7的数据,一般是写数据并显示,RW=0。
  2. RS — 此位表明写的数据是 指令(0)或者数据(1)(两者作用不同),写指令时候,LCD1602内部的IC会进行配置,写数据时,会显示数据。
  3. E — Enable 脚,上升沿表示开始传输数据,下降沿表示传输结束
  4. BD0-DB7 — 并行传输数据口
//=========写数据部分
//指令一般在配置时使用
void LcdWriteCmd(unsigned char Data)  //写命令
{
	#if 1
	//LcdReady();			//可等待lcd准备好再传输数据,简化代码先不添加
	LCD_RS = 0;
	LCD_RW = 0;
	
	LCD_DATA = Data;
	delay_ms(1);		//此处需要延时给LCD处理时间
	LCD_EN = 1;
	delay_ms(10);  
	LCD_EN = 0;
	#endif
}

void LcdWriteData(unsigned char Data)	//写数据
{
	#if 1
	LCD_RS = 1;
	LCD_RW = 0;
	
	LCD_DATA = Data;
	delay_ms(1);			//此处需要延时给LCD处理时间
	LCD_EN = 1;
	delay_ms(10);
	LCD_EN = 0;
	#endif
}
//=======初始化LCD1602
void Lcd1602Init(void)
{
	LcdWriteCmd(0X01);		//清屏
	LcdWriteCmd(0X38);		//显示模式
	LcdWriteCmd(0X0C);		//显示开,光标设置
	LcdWriteCmd(0X06);		//光标移动设置
}
//========设置LCD1602显示的位置
void LcdSetCursor(unsigned char x,unsigned char y)
{
	if(y == 0)
		LcdWriteCmd(x | 0x80);
	else if(y == 1)
		LcdWriteCmd(x | 0x80 | 0x40);
}

//显示字符串
void LcdShowStr(unsigned char *Data,unsigned x,unsigned y)
{
	LcdSetCursor(x,y);
	
	while(*Data != '\0')
		LcdWriteData(*Data++);
}

最后调用

void main()
{
	unsigned char *str = "hello";
	
	Lcd1602Init();
	LcdShowStr(str,3,0);
	LcdShowStr("hahahaha",2,1);
	
	while(1);
}

你可能感兴趣的:(单片机,stm32,c语言)