LCD1602驱动程序
简单几步配置即可驱动LCD1602 LCD1602的几个可编程的引脚为RS RW E DB0-DB7 MCU的引脚配置输入输出参考自己使用的规格书
只需要了解如下规则就行
- RW — 读写控制,RW = 0时,对DB0-DB7写数据,RW = 1时,可读DB0-DB7的数据,一般是写数据并显示,RW=0。
- RS — 此位表明写的数据是 指令(0)或者数据(1)(两者作用不同),写指令时候,LCD1602内部的IC会进行配置,写数据时,会显示数据。
- E — Enable 脚,上升沿表示开始传输数据,下降沿表示传输结束
- 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);
}
|