1602的第1个管脚为VSS,VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。
15管脚为背光电源正极,为防止加5v电压烧坏背光灯,通常串接1个10Ω电阻限流。
/* 1602静态显示 基本程序 */
#include <reg51.h>
#define LCD1602_DATAPINS P0
#define uchar unsigned char
#define uint unsigned int
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
unsigned char table[]=" Lululu";
void Lcd1602_Delay1ms(uint c);
void LcdWriteCom(uchar com);
void LcdInit();
void LcdWriteData(uchar dat);
void main(void)
{
unsigned char i;
LcdInit();
LcdWriteCom(0x80+0x06); //定位数据指针,若从第一行第一位开始显示,可删去此句。(0x80+0x40):定位至第二行
for(i=0;i<7;i++)
{
LcdWriteData(table[i]);
}
while(1)
{
}
}
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //选择发送命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择输入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //写入数据
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}