![]() |
LCD1602不亮且L298N的IN口都處于高電平,可能有以下幾種可能的原因: 供電問題:確保LCD1602和L298N都接收到正確的電源供電。檢查它們的電源連接,確保電壓穩定且符合規格要求。 引腳連接問題:檢查LCD1602和L298N的引腳連接是否正確。確保連接正確地與單片機相連,并且對應的引腳設置正確。 初始化問題:確保LCD1602在程序中正確初始化。確保正確設置LCD1602的工作模式、行數、字符大小等,并發送正確的初始化命令。 程序邏輯錯誤:檢查程序中有關LCD1602和L298N的代碼邏輯。確保發送正確的數據和命令到LCD1602,以及正確設置L298N的IN口狀態。 |
LDC1602初始化程序有問題 |
應該是你的電路引腳設定的有問題 |
你的程序卡在下邊的讀LCD狀態函數里了,建議把LCD_E = 0;兩句都刪除,按手冊不應該有。 如果你不使用這個函數,那在使用這個函數的位置要加延遲函數,特別在清屏的時候。好多人不用它是因為實際用時,經常出現通過率低,但你是模擬啊,還是盡量用唄。 建議改成下邊這樣,函數是忙就等待到不忙,所以沒必要返回值。 /**************************讀狀態函數***************************/ void ReadStatusLCD(void) //讀液晶狀態函數 { LCD_Data = 0xFF; //給液晶1602的數據口置0xff LCD_RS = 0; //控制液晶的RS管腳為低電平 LCD_RW = 1; //控制液晶的RW管腳為高電平 LCD_E = 1; while (LCD_Data & Busy); //檢測忙信號 LCD_E = 0; } |
然后在寫名令和數據后加些延時 ![]() ![]() ![]() |
各端口都是高位,顯示剛開機,默認高位,一定是你初始化的程序出現死循環,我通過搜索while,發現應該發生在79行。別的沒仔細看啊。 |
lkc8210 發表于 2022-4-20 11:06 注釋了以后L298N甚至低電了 |
lkc8210 發表于 2022-4-20 11:06 還是不對 |
把85和97行注釋掉看看 |
電路沒有問題,修改液晶驅動代碼吧,看仿真圖,RW為高,這肯定不對的。 |
程序是借鑒的話,程序問題不大,主要檢查硬件和接線問題。 |