#include<reg51.h>
#include<define.h>
#include<lcm.h>
void lcm_reset(void);
void lcm_command(BYTE);
void lcm_initial(void);
void lcm_set_add(BYTE);
void lcm_set_acg(BYTE);
void lcm_set_data(BYTE);
void lcm_fill_all(BYTE *);
void lcm_waitting(void);
void lcm_reset(void)
{
BYTE i;
LCM_RS=0;
LCM_W_R=0;
LCM_COM=0x01;
for(i=0;i<250;i++)
;
for(i=0;i<250;i++)
;
for(i=0;i<250;i++)
;
}
void lcm_command(BYTE i)
{
LCM_RS=0;
LCM_W_R=0;
LCM_COM=i;
lcm_waitting();
}
void lcm_set_add(BYTE i)
{
LCM_RS=0;
LCM_W_R=0;
LCM_COM=i;
LCM_COM|=0x80;
lcm_waitting();
}
void lcm_set_acg(BYTE i)
{
LCM_RS=0;
LCM_W_R=0;
LCM_COM=i;
LCM_COM|=0X40;
LCM_COM&=0X7F;
lcm_waitting();
}
void lcm_set_data(BYTE i)
{
LCM_RS=1;
LCM_W_R=0;
LCM_COM=i;
lcm_waitting();
}
void lcm_waitting(void)
{
LCM_CS=1;
LCM_CS=0;
LCM_RS=0;
LCM_W_R=1;
LCM_COM=0XFF;
do
{
LCM_CS=1;
ACC =LCM_COM;
LCM_CS=0;
}
while(LCM_BUSY);
Address=ACC;
}
void lcm_initial(void)
{
BYTE temp;
//(8 bit ,2 rows and 5*10) if (8 bit ,2 rows and 5*7 com=0x38)
lcm_command(0X3C);
//increase and all display not shift
lcm_command(0x06);
//open all display and curssor close,not flash curssor
lcm_command(0X0C);
//DD RAM ADDRESS = 0 AND DISPLAY TO ORIGEN
lcm_command(0X01);
for(temp=0;temp<8;temp++)
{ lcm_set_acg(temp|0x08);
lcm_set_data(CHAR_UP[temp]);// disp address equ 0x00
}
for(temp=0;temp<8;temp++)
{ lcm_set_acg(temp|0x0F);
lcm_set_data(CHAR_DOWN[temp]);// disp address equ 0x01
}
}
void lcm_fill_all(BYTE *pDisp_Array)
{
//fill all to lcm buffer
BYTE idata i;
lcm_set_add(0x00);
for(i=0;i<20;i++)
lcm_set_data(*(pDisp_Array+i));
lcm_set_add(0x40);
for(i=20;i<40;i++)
lcm_set_data(*(pDisp_Array+i));
}