我正在使用Winstar顯示器LCD(WH2004A-YYK-CP)和STM32處理器,代碼是用C編寫的。我需要用4位模式運行它。我運行它並寫下了我想要的東西。帶C代碼的4位LCD
如你所知,4位模式發送2位4位的8位數據。問題是,當我在兩個半字節之間重置時,會打印出奇怪的字符,無論我重置了多少字符,它都無法正常工作。我提出的唯一解決方案是多次重置它。
爲了弄清楚發生了什麼,我在2個半字節(每個4位)之間添加了2秒延遲,並打印出一個長句。因此無論何時我重置它,處理器等待發送第二個半字節。
我正在重置它,它會打印一些奇怪的東西,第二次重置後不會打印任何內容,第三次後它會再次正確打印。第四次重置它再次打印一些奇怪的東西,第五次打印什麼都沒有,第六次再次打印正確......並繼續這樣。 因此,我現在確定問題是這些分割的字節。
類似的代碼在8位模式下工作得很好。
我在問: 我怎麼能確定:「當我重置STM32處理器時,LCD不會等待第一個半字節在前一個會話中發送的一些數據的第二個半字節。通過使用C代碼?
UPDATE:
我也把我的代碼在這裏:http://pastebin.com/kHQQEqjx
LCD命令也正在於此:http://imgur.com/mfDlj
任何示例代碼? – 2012-08-14 11:54:10
看我如何接近4位模式(不同的處理器 - 雖然我是AVR的傢伙):https://github.com/H2CO3/libavrutil/blob/master/src/lcd.c – 2012-08-14 11:57:02
@tuğrulbüyükışık我添加了我的代碼。 @ h2co3當你移除零件時會發生什麼變化:'/ *設置8位模式3次(!)* /',你有沒有試過,或者你可以試試嗎?我會嘗試實施類似的。 – aemre 2012-08-15 08:55:35