|
示波器波形是按 (LCD_EN_1;delay_nus(10);)以下代码测试的,
当“LCD_EN_1;delay_nus(5);”这样就会乱码,但波形不明显,按这个测试当E=15uS时不可靠,见图片显示不完整。
/*********************************************************************
*功 能:写入LCD初始化时的命令,不可以检测忙状态
*********************************************************************/
void LCD_WriteInitcmd(uchar cmd)
{
LCD_RS_0;
delay_nus(1);
LCD_RW_0;
delay_nus(1);
DATAOUTCLR;
DATAOUT |= cmd;
LCD_EN_0;
delay_nus(1);
LCD_EN_1;
delay_nus(10);
LCD_EN_0;
delay_nms(1);
}
/*********************************************************************
*名 称:LCD_Writecmd()
*功 能:写指令到LCD1602,指令数据占一个字节
*入口参数:cmd:待写入的指令
*出口参数:无
*********************************************************************/
void LCD_Writecmd(uchar cmd)
{
while(LCD_busy());
LCD_RS_0; //对同一个寄存器的两次写入,中间延时一会
delay_nus(1);
LCD_RW_0;
delay_nus(1);
LCD_EN_0;
delay_nus(1);//产生脉冲
DATAOUTCLR;
DATAOUT |= cmd;
LCD_EN_1;
delay_nus(10);//必要的延时
LCD_EN_0; //下降沿,LCD1602开始工作
delay_nus(1);
}
/*********************************************************************
*名 称:LCD_Writedata()
*功 能:写一字节数据到LCD1602
*入口参数:dat:无符号字节类型,0~255 包括各个ASCII码字符
*出口参数:无
*********************************************************************/
void LCD_Writedata(uchar dat)
{
while(LCD_busy());
LCD_RS_1;
delay_nus(1);
LCD_RW_0;
delay_nus(1);
DATAOUTCLR;
DATAOUT |= dat;
delay_nus(1);
LCD_EN_1;
delay_nus(10);
LCD_EN_0;
delay_nus(1);
}
|
|