久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2854|回復: 5
打印 上一主題 下一主題
收起左側

STM32驅動1602顯示屏,E引腳產生高脈沖問題?

[復制鏈接]
跳轉到指定樓層
樓主
(1)STM32驅動1602液晶顯示屏,需要使1602的E引腳為高脈沖,才能寫指令和數據進1602顯示屏。

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

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

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

需要你們指導一下。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:25310 發表于 2019-12-12 14:12 | 只看該作者
用LED點燈程序看看那個引腳是否有問題,給個200U脈沖給哪個引腳出用示波器看看如果波形正常就沒問題的。
回復

使用道具 舉報

板凳
ID:25310 發表于 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);
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:213173 發表于 2019-12-12 15:21 | 只看該作者
將1602的E引腳使能端拉高是為制造有效的下降沿做準備,不是高電平或低電平有效,是陡峭的下降沿才有效。
回復

使用道具 舉報

5#
ID:416239 發表于 2019-12-12 15:54 | 只看該作者
用示波器抓一下波
回復

使用道具 舉報

6#
ID:25310 發表于 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
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产美女久久 | 在线看免费| 97热在线| 久久影院一区 | 亚洲视频a| 亚洲精品一区二区在线 | 韩日免费视频 | 国产蜜臀97一区二区三区 | 五月天国产在线 | 国产第一区二区 | 成人av一区| 中文字幕一区二区三区不卡在线 | 久久久久久亚洲精品 | 国产成人叼嘿视频在线观看 | 久久久久久久综合色一本 | 国产第一页在线观看 | 国产精品免费看 | 久草.com | www.夜夜骑 | 国产精品自拍视频网站 | 久久精品亚洲精品 | 91在线观看网址 | 一级黄色毛片a | 91资源在线| 91av视频在线播放 | 国产精品久久久av | 成人免费视频在线观看 | 国产午夜精品理论片a大结局 | 性一爱一乱一交一视频 | 色网在线看| 成人精品一区二区 | 亚洲一区二区在线播放 | 久久免费大片 | 国产精品久久 | 日本激情视频中文字幕 | 911影院| 在线免费激情视频 | 亚洲一区二区久久久 | 视频在线一区二区 | 99在线播放 | 免费av一区二区三区 |