/*********带参数延时子程序(t:ms数)*************/
void delay(uchar t)
{uchar i,j;
for(i=0;i<t;i++) for(j=0;j<100;j++) _nop_();
}
/*********廷时5ms*************/
void Delay5Ms(void)
{uchar j; uint i;
for(j=0;j<10;j++) for(i=0;i<500;i++) _nop_();
}
/**********廷时1ms*****************/
void delay1ms(void)
{int i=100;
while(i--);
}
/***************液晶写命令字************************/
void LcdCommand( uchar CMD)
{delay1ms();
RS = 0;
RW = 0;
Elcm = 0;
SBUF = CMD; // 送控制字子程序
while(TI==0);
TI=0;
Elcm = 1;_nop_();Elcm = 0; // 操作允许脉冲信号
}
/***********液晶写字符串数据子程序**************/
void LcdData( uchar *dataW )
{uchar temp;
while(*dataW) //用于显示字符串,和转换过来的数字
{temp=*dataW++;
delay1ms();
RS = 1;
RW = 0;
Elcm = 0;
SBUF = temp;
while(TI==0);
TI=0;
Elcm = 1;_nop_(); Elcm = 0; // 操作允许脉冲信号
}
}
/*************液晶写单个字符数据子程序*******************/
void LcdWrite( uchar idate )
{uchar temp; //用于显示字符串,和转换过来的数字
temp=idate;
delay1ms();
RS = 1;
RW = 0;
Elcm = 0;
SBUF = temp;
while(TI==0);
TI=0;
Elcm = 1;_nop_(); Elcm = 0; // 操作允许脉冲信号
}
/********液晶写3个字符数据子程序************/
void LcdWrite1(uchar *Dwrite) //一般用于查表法显示二维数组中的对应的某几个字符
{uchar temp1,i;
for(i=0;i<3;i++)
{temp1=*Dwrite++;
delay(1);
RS=1;
RW=0;
Elcm=0;
SBUF=temp1;
while(TI==0);
TI=0;
Elcm=1;_nop_();Elcm=0;
}
}
/************显示初始化程序***********************/
void LcdReset( void )
{LcdCommand( 0x38); // 显示模式设置(不检测忙信号)
delay1ms();
LcdCommand( 0x38);//
//LcdCommand( 0x08, 1); // 显示模式设置(以后均检测忙信号)
LcdCommand( 0x01);// //清除显示器
LcdCommand( 0x06);// //指针加1,屏不移 // 显示光标移动设置
LcdCommand( 0x0e); //开显示器,不出现光标
}