欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: LCD12864串行接法使用單片機串口亂碼問題 [打印本頁]

作者: 夢園心田    時間: 2019-2-6 00:12
標題: LCD12864串行接法使用單片機串口亂碼問題
為啥給單片機發送包好+CI就會引發顯示亂碼,不管+CI前面后面是否有字符,都能引起顯示亂碼。
還有一種情況 單獨CI一直發送也會一起亂碼。其他字符均不會引起亂碼,包括中文。只有單片機接收到+CI或者單獨CI才會亂碼(要發很多很多次)。c51優化關閉也是一樣的結果。只要碰到這兩種組合,就會引起亂碼。
有人遇到過這種問題嗎。求指教一下,因為我使用esp8266的tcp協議發送數據后就會返回AT+CIPSEND.....
單片機接收到這個就會顯示亂碼。當然單片機工作是正常的。




作者: 夢園心田    時間: 2019-2-6 01:54
這是我編寫的串口接收代碼。
作者: 夢園心田    時間: 2019-2-6 01:57
這是我編寫的串口接收代碼。這個代碼有個問題,就是上位機發送兩次,才能接收到一次。
希望代碼大神指教一下,感激不盡

Screenshot_2019-02-06-01-53-43-638_com.tencent.mobileqq.png (113.55 KB, 下載次數: )

Screenshot_2019-02-06-01-53-43-638_com.tencent.mobileqq.png

作者: yzwzfyz    時間: 2019-2-7 01:44
把你的程序畫成流程圖看看,邏輯上有何不妥?
寫程序的習慣不好,記住要領:
1、串行中斷只接收數據,并存入緩沖區,做個收到的標記就好。盡可能不要在中斷中做其它任何事情。
2、數據處理,如顯示等等地,在主程序中進行。
道理如下:串行數據是一個個串來的,一個數據到來后,你收到了,但處理它可能需要花一些時間,如顯示中的硬件等待...,如果執行時間超過的一個字節的串行時間,則下一個串行數據就能丟失,因為這時你的串行中斷還未退出,新的數據來了無法再次進入中斷,如此就可以丟失后面的串行數據!所以中斷服務程序要盡可能的用時短!
作者: 夢園心田    時間: 2019-2-8 12:57
yzwzfyz 發表于 2019-2-7 01:44
把你的程序畫成流程圖看看,邏輯上有何不妥?
寫程序的習慣不好,記住要領:
1、串行中斷只接收數據,并存 ...

就是串口接收到+I就開始接收數據,遇到#就結束接收。如果是+開頭與者I開頭就存入緩沖區(數據幀頭)。不是就不接收,如果遇到#(
數據幀尾)
就停止接收。
顯示亂碼,跟接收的esp返回值代碼有關,跟我數據代碼無關。還有數據丟失一次,跟跟覆蓋沒有關系,因為只要我發送第一次,第二次不管多久間隔都能接收到,你連續發送多次,也是會每兩次接收到一次。
應該問題出在解析代碼上,但是我也沒有發現有啥不對。

作者: yaoji123    時間: 2019-2-8 15:11
LCD12864串口通訊對接收數據有處理時間的,用單片機串口通訊給它傳送數據要注意間隔時間,不能連續不斷的摶。最好做好應答機制。便于LCD2864處理數據。
作者: 夢園心田    時間: 2019-2-8 18:37
yaoji123 發表于 2019-2-8 15:11
LCD12864串口通訊對接收數據有處理時間的,用單片機串口通訊給它傳送數據要注意間隔時間,不能連續不斷的摶 ...

這個我明白,現在的問題不在這。問題是+cI會引起我屏幕顯示亂碼。
你說我不可能每發送兩三次,就重新初始化LCD吧。
當然也沒這個必要,因為除了+CI外其他字符,包括中文也不會導致顯示亂碼,哪怕我5ms向單片機發送數據,也不會引起任何問題。



.




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