#define uchar unsigned char
#define uint unsigned int
///////数据端口接 P0
sbit lcdrs=P2^7;//端口定义
sbit lcdrw=P2^6;//端口定义
sbit lcden=P2^5;//端口定义
uchar num;
uchar code table[]={
0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一 0x00
0x00,0x04,0x1f,0x15,0x15,0x1f,0x04,0x04,//中 0x01
0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,//下 0x02
0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,//雨 0x03
0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,//"叶1653"左上半部分代码 0x04
0x04,0x04,0x04,0x04,0x04,0x04,0x1f,0x04,//"叶"右上半部分代码 0x05
0x12,0x12,0x12,0x1e,0x00,0x00,0x00,0x00,//"叶"左下半部分代码 0x06
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,//"叶"右下半部分代码 0x07
//
};
uchar code table1[]={0x00,0x01,0x10,0x10,0x04,0x05,0x10,0x10,0x00,0x01,0x02,0x03,};//自定义字符数据地址
uchar code table2[]={0x02,0x03,0x10,0x10,0x06,0x07,};
/******************************
ms延时函数
******************************/
void delay(uchar z)///延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
/******************************
lcd1602写命令函数
******************************/
void write_cmd(uchar cmd)
{
P0=cmd; //写了命令
lcdrs=0;
lcdrw=0; //选择指令寄存器
lcden=1;
delay(5);
lcden=0; //使能拉低
lcden=1;
}
/******************************
lcd1602写数据函数
******************************/
void write_date(uchar date)
{
lcdrs=1;
lcdrw=0; //选择数据寄存器
lcden=1;
P0=date; //写了命令
delay(5);
lcden=0; //使能拉低
lcden=1;
}
/******************************
lcd1602初始化
******************************/
void init_lcd1602()
{
write_cmd(0x01); //清屏
write_cmd(0x38); //功能设置
write_cmd(0x0c); //显示设置
write_cmd(0x06); //输入方式从左到右
delay(1);
}
/******************************
主函数
******************************/
void main()
{
uchar i;
init_lcd1602();//1602显示初始化
delay(1);
while(1)
{
write_cmd(0x40); //开始写入你要显示的自定义字符、汉字代码
for(i=0;i<64;i++)
{
write_date(table[i]);
delay(5);
}
write_cmd(0x80); //从第一行第一列开始显示
for(i=0;i<12;i++) //显示自定义字符
{
write_date(table1[i]);
delay(5);
}
write_cmd(0xc0); //显示第二行
for(i=0;i<6;i++)
{
write_date(table2[i]);
delay(5);
}
}
}