本文记录如何使用单片机直接驱动LCD1602显示屏。
为节省单片机管脚,采用4位数据模式驱动,含控制脚共需6个管脚,MCU与LCD各脚连接如下:
LCD1620 MCU(STC8或其它)
RS - P35
RW - P36(可直接接地)
EN - P37
D4 - P10
D5 - P11
D6 - P12
D7 - P13
代码如下:
void LCD1602_Write (u8 rs,u8 dat){
LCD_RS = rs;
LCD_RW = 0;
//写数据高四位
LCD_EN = 1;
P10 = ((dat&0x10)? 1:0);
P11 = ((dat&0x20)? 1:0);
P12 = ((dat&0x40)? 1:0);
P13 = ((dat&0x80)? 1:0);
delayus(50);
LCD_EN = 0; //下降沿写入
//写数据低四位
LCD_EN = 1;
P10 = ((dat&0x01)? 1:0);
P11 = ((dat&0x02)? 1:0);
P12 = ((dat&0x04)? 1:0);
P13 = ((dat&0x08)? 1:0);
delayus(50);
LCD_EN = 0; //下降沿写入
}
//
void LCD1602_Init()
{
//4-bit mode initialization
LCD1602_Write(0,0x03);
delayus(4500);
LCD1602_Write(0,0x03);
delayus(200);
LCD1602_Write(0,0x03);
delayus(200);
LCD1602_Write(0,0x02); //归位(返回)
// display initialization
LCD1602_Write(0,0x2B); //4>DL=0(4位数据),3>N=(2行),2>F=0(5x7字符)
//delayms(20);
LCD1602_Write(0,0x08); //显示开关控制:2>D=1(打开显示),1>C=0(关闭光标),0>B=0(光标不闪烁)
LCD1602_Write(0,0x0C); // Display on /off control --> D = 1, C = 1, B = 0
}
void main(void)
{
LCD1602_Init();
LCD1602_Set_Cursor(0,0);
LCD1602_Send_String("1234567890ABCDEF");
LCD1602_Set_Cursor(1,0);
LCD1602_Send_String("1234567890ABCDEF");
while(1)
{
}
}