![]() |
發布時間: 2018-4-28 15:53
正文摘要:請問想實現獨立鍵盤k4(sbit k4=P1^3)按下,會從“歡迎使用”畫面進入“IC”數據畫面,但是在燒寫程序時,單片機不會等待按鍵按下或者按鍵按下TFT屏幕出錯。請問是哪里錯了。 |
可能是語法錯誤吧 |
無法進入while(1)這個循環,說明問題出在前面的語句,你需要把你的顯示語句welcome()檢查一下。不過正常來說,編譯通過的話應該不是一些死循環這種邏輯錯誤 |
sacredyy 發表于 2018-5-3 10:39 那就要分析了,按鍵檢測模塊沒有問題,但是按鍵沒有反應,說明你這個延時模塊有問題。Delay(1000)這句有問題 |
進不了判斷程序 |
許三少天 發表于 2018-5-1 12:14 請問,歡迎界面放在了循環外邊,但是按鍵按下,沒有反應,一直是歡迎界面。是什么問題 |
wenzedong 發表于 2018-5-1 11:59 網上說消抖時間一般是10-20ms,那如果是按下松開應該怎么寫程序 |
while(1) { welcome(); Delay(1000); judge1(); if(start==1) break; } clear(); Ic(); Delay(1000); 如果把welcome放在while(1)里面,就算是start=1也會顯示welcome |
因為你延時之后馬上又繼續循環,那就會在沒有清屏的時候直接出現歡迎這個語句,導致屏幕出錯 |
你發出來的都沒問題啊,歡迎界面如果能顯示的話,按鍵按下去再出錯說明錯誤有沖突,你把歡迎放在清屏語句后面,不放在循環里面試試看 |
我來說一下為什么單片機不會等待按鍵按下,你在鍵值按下前有個延時1000,就會對按鍵判斷產生影響,而且軟件延時消抖根本用不了那么長時間,10~20us就可以了,如果你是按下就松開,不建議你設置成這樣,除非你是按下后直到執行了相應功能再松開 |
cj52 發表于 2018-4-29 14:37 先調用welcome,然后等待子函數,按鍵按下會讓start=1,再判斷start==1,調用IC函數 |
devcang 發表于 2018-4-28 16:26 那請問應該怎么改 |
welcome放到按鍵函數里去 |
等待按鍵按下之前就調用welcom ()了 |
等待按鍵按下前不就調用了welcom()嗎 |
子函數是一直等待的,主函數中,怎么能判斷得到start==1呢 ~~~~~~~~~~ |