1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: STM32驅(qū)動(dòng)1602顯示屏,E引腳產(chǎn)生高脈沖問題? [打印本頁]

作者: liuhong213218    時(shí)間: 2019-12-12 08:46
標(biāo)題: STM32驅(qū)動(dòng)1602顯示屏,E引腳產(chǎn)生高脈沖問題?
(1)STM32驅(qū)動(dòng)1602液晶顯示屏,需要使1602的E引腳為高脈沖,才能寫指令和數(shù)據(jù)進(jìn)1602顯示屏。

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

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

(4)使STM32產(chǎn)生高脈沖要用到通用定時(shí)器,使其計(jì)時(shí),然后產(chǎn)生一個(gè)脈沖嗎?

需要你們指導(dǎo)一下。


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

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

示波器波形是按 (LCD_EN_1;delay_nus(10);)以下代碼測(cè)試的,
當(dāng)“LCD_EN_1;delay_nus(5);”這樣就會(huì)亂碼,但波形不明顯,按這個(gè)測(cè)試當(dāng)E=15uS時(shí)不可靠,見圖片顯示不完整。
       

/*********************************************************************
*功    能:寫入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);
}
/*********************************************************************
*名    稱:LCD_Writecmd()
*功    能:寫指令到LCD1602,指令數(shù)據(jù)占一個(gè)字節(jié)
*入口參數(shù):cmd:待寫入的指令
*出口參數(shù):無
*********************************************************************/
void LCD_Writecmd(uchar cmd)
{  
       
        while(LCD_busy());
        LCD_RS_0;           //對(duì)同一個(gè)寄存器的兩次寫入,中間延時(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開始工作
        delay_nus(1);
       
}
/*********************************************************************
*名    稱:LCD_Writedata()
*功    能:寫一字節(jié)數(shù)據(jù)到LCD1602
*入口參數(shù):dat:無符號(hào)字節(jié)類型,0~255  包括各個(gè)ASCII碼字符
*出口參數(shù):無
*********************************************************************/

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, 下載次數(shù): 52)

lcd_20191212172320_NG.jpg

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

E_RS.jpg





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