欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STM32驅動1602顯示屏,E引腳產生高脈沖問題? [打印本頁]

作者: liuhong213218    時間: 2019-12-12 08:46
標題: STM32驅動1602顯示屏,E引腳產生高脈沖問題?
(1)STM32驅動1602液晶顯示屏,需要使1602的E引腳為高脈沖,才能寫指令和數據進1602顯示屏。

(2)51單片機和STM32單片機產生高脈沖所寫的程序不一樣。

(3)我用示波器在STM32驅動1602上電后檢驗其每個引腳的波形,其它15個引腳波形都符合我寫的程序,就E引腳始終是高電平。

(4)使STM32產生高脈沖要用到通用定時器,使其計時,然后產生一個脈沖嗎?

需要你們指導一下。


作者: pcbboy    時間: 2019-12-12 14:12
用LED點燈程序看看那個引腳是否有問題,給個200U脈沖給哪個引腳出用示波器看看如果波形正常就沒問題的。
作者: pcbboy    時間: 2019-12-12 14:41
補充一下。細看了你說的E引腳波形,哪些延時需要調整一下,比如下面兩個延時里面,一個5uS,有人用到1uS,這個確實算高速脈沖,但這樣做可靠性不高,建議給到10US左右,另外一個延時大約380uS,調整一下再試一試。
/*********************************************************************
*功    能:寫入LCD初始化時的命令,不可以檢測忙狀態
*********************************************************************/
void LCD_WriteInitcmd(uchar cmd)
{                          
        LCD_RS_0;
        delay_nus(5);
        LCD_RW_0;
        delay_nus(5);
        DATAOUTCLR;
        DATAOUT |= cmd;
        LCD_EN_0;
        delay_nus(300);
        LCD_EN_1;
        delay_nus(300);
        LCD_EN_0;
        delay_nms(5);
}
/*********************************************************************
*名    稱:LCD_Writecmd()
*功    能:寫指令到LCD1602,指令數據占一個字節
*入口參數:cmd:待寫入的指令
*出口參數:無
*********************************************************************/
void LCD_Writecmd(uchar cmd)
{  
       
        while(LCD_busy());
        LCD_RS_0;           //對同一個寄存器的兩次寫入,中間延時一會
        delay_nus(5);
        LCD_RW_0;
        delay_nus(5);
        LCD_EN_0;
        delay_nus(300);//產生脈沖
        DATAOUTCLR;
        DATAOUT |= cmd;
        LCD_EN_1;
        delay_nus(300);//必要的延時
        LCD_EN_0;           //下降沿,LCD1602開始工作
        delay_nus(5);
       
}
/*********************************************************************
*名    稱:LCD_Writedata()
*功    能:寫一字節數據到LCD1602
*入口參數:dat:無符號字節類型,0~255  包括各個ASCII碼字符
*出口參數:無
*********************************************************************/
void LCD_Writedata(uchar dat)
{                        
        while(LCD_busy());//等待LCD1602空閑
        LCD_RS_1;
        delay_nus(5);
        LCD_RW_0;
        delay_nus(5);
        DATAOUTCLR;
        DATAOUT |= dat;
        LCD_EN_1;                //先拉高
        delay_nus(300);        //很重要的延時,經調試,延時300us以上才可以
        LCD_EN_0;       //下降沿,開始寫入有效數據
        delay_nus(5);
}

作者: wulin    時間: 2019-12-12 15:21
將1602的E引腳使能端拉高是為制造有效的下降沿做準備,不是高電平或低電平有效,是陡峭的下降沿才有效。
作者: 李澤訓    時間: 2019-12-12 15:54
用示波器抓一下波
作者: pcbboy    時間: 2019-12-12 17:24
李澤訓 發表于 2019-12-12 15:54
用示波器抓一下波

示波器波形是按 (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);
         
       
}


lcd_20191212172320_NG.jpg (792.01 KB, 下載次數: 52)

lcd_20191212172320_NG.jpg

E_RS.jpg (1.08 MB, 下載次數: 48)

E_RS.jpg





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1