|
示波器波形是按 (LCD_EN_1;delay_nus(10);)以下代碼測(cè)試的,
當(dāng)“LCD_EN_1;delay_nus(5);”這樣就會(huì)亂碼,但波形不明顯,按這個(gè)測(cè)試當(dāng)E=15uS時(shí)不可靠,見(jiàn)圖片顯示不完整。
/*********************************************************************
*功 能:寫(xiě)入LCD初始化時(shí)的命令,不可以檢測(cè)忙狀態(tài)
*********************************************************************/
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);
}
/*********************************************************************
*名 稱(chēng):LCD_Writecmd()
*功 能:寫(xiě)指令到LCD1602,指令數(shù)據(jù)占一個(gè)字節(jié)
*入口參數(shù):cmd:待寫(xiě)入的指令
*出口參數(shù):無(wú)
*********************************************************************/
void LCD_Writecmd(uchar cmd)
{
while(LCD_busy());
LCD_RS_0; //對(duì)同一個(gè)寄存器的兩次寫(xiě)入,中間延時(shí)一會(huì)
delay_nus(1);
LCD_RW_0;
delay_nus(1);
LCD_EN_0;
delay_nus(1);//產(chǎn)生脈沖
DATAOUTCLR;
DATAOUT |= cmd;
LCD_EN_1;
delay_nus(10);//必要的延時(shí)
LCD_EN_0; //下降沿,LCD1602開(kāi)始工作
delay_nus(1);
}
/*********************************************************************
*名 稱(chēng):LCD_Writedata()
*功 能:寫(xiě)一字節(jié)數(shù)據(jù)到LCD1602
*入口參數(shù):dat:無(wú)符號(hào)字節(jié)類(lèi)型,0~255 包括各個(gè)ASCII碼字符
*出口參數(shù):無(wú)
*********************************************************************/
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);
}
|
|