#include"lcd1602.h"
uchar code table1[]=" 2013-07-29 ";
uchar code table2[]=" "; // 00:00:00 00.0 C
uchar code table3[]="THANKS FOR LUQIN";
uchar code table4[]="MADE BY XUPENGHU";
uchar code table5[]="ALARM CLACK";
uchar code table6[]="00:00 || 00:00";
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=0;y<110;y++) ;
}
void write_lcd1602_com(uchar com) // 写命令函数
{
lcdrs=0; // 选择写命令模式
P0=com; // 将要写的命令送到数据总线上
delay(5); // 稍做延时 待数据稳定 时序图里要求
lcden=1; // 使能一个高脉冲 将数据送到
delay(5); //
lcden=0; // 完成高脉冲
}
void write_lcd1602_data(uchar dat) //写数据函数
{
lcdrs=1; //写数据模式
P0=dat;
delay(5) ;
lcden=1;
delay(5);
lcden=0;
}
void lcd1602_init() //初始化函数
{
uchar i;
dula=0; // 防止数码管显示
wela=0; // 防止数码管显示
lcden=0; // 使能端先置0
write_lcd1602_com(0x38); // 设置16*2显示 5*7点阵 8位数据接口
write_lcd1602_com(0x0c); // 设置开显示 开显示光标
write_lcd1602_com(0x06); // 写一个字符后地址指针自动加1
write_lcd1602_com(0x01); // 显示清0 数据指针清0
write_lcd1602_com(0x80);
for(i=0;i<16;i++)
{
write_lcd1602_data(table3[i]);
delay(100);
}
write_lcd1602_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_lcd1602_data(table4[i]);
delay(100);
}
write_lcd1602_com(0x80);
for(i=0;i<16;i++)
{
write_lcd1602_data(table1[i]);
delay(20);
}
write_lcd1602_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_lcd1602_data(table2[i]);
delay(20);
}
write_lcd1602_com(0x80+0x4e);
write_lcd1602_com(0x80+0X10);
for(i=0;i<16;i++)
{
write_lcd1602_data(table5[i]);
}
write_lcd1602_com(0x80+0x50);
for(i=0;i<16;i++)
{
write_lcd1602_data(table6[i]);
}
}
void lcd1602_display(uchar add,uchar qin)
{
write_lcd1602_com(0x80+add);
write_lcd1602_data(0x30+qin);
}