我用串口助手給51單片機發送一個數字,然后單片機接收到這個數字,并把這個數字發送給電腦并在串口助手上顯示出來,但是在電腦上顯示的數字和我發送的數字不一樣。比如我發送的是1,電腦上顯示的是81。發送的是2,顯示的是82。請問這是咋回事呀,求大佬解答!
uj5u.com熱心網友回復:
(1)確定串口除錯助手是以十六進制還是字符發送;(2)用示波器捕捉串口RX引腳一個字符的資料,確定發送下來的是0x01還是0x31;(3)用示波器捕捉串口TX引腳一個字符的資料,確定發送出去的資料是多少。
還有你的串口是通過RS232收發器發送出去的嗎?如果是就還要用示波器測量串口發送的資料和經過RS232收發器后的資料是不是一致,可以用示波器兩個探頭測量后對比。接收也一樣。
uj5u.com熱心網友回復:
樓主串口除錯助手發送是ASCII碼字符1,轉成十進制就是81。uj5u.com熱心網友回復:
試下發0到255,看看接收到的是什么,有沒有規律檢查下波特率設定
uj5u.com熱心網友回復:
你好,我是用TTL發送的,必須用示波器嗎,我這里沒有示波器
uj5u.com熱心網友回復:
好的,我再看看,謝謝!
uj5u.com熱心網友回復:
波特率有影響嗎,我設定的是9600
uj5u.com熱心網友回復:
你用的是USB轉TTL吧,那樣的話就省去了RS232收發器的問題。那你用的51芯片能不能在線除錯呢?如果能就直接進除錯模式看接收到的資料。如果不能在線除錯,就打開設備管理器看看USB轉串口的默認波特率是多少,應該是波特率的問題。如果改除錯助手的波特率還是顯示的不對,你就得確認一下是不是硬體上51芯片的晶振不是11.0592M,導致51芯片的波特率出現偏差。
uj5u.com熱心網友回復:
看串口除錯助手是以十六進制還是字符發送uj5u.com熱心網友回復:
應該就是樓上說說的字符進制問題了,編碼顯示方式的不同,做下轉換應該就可以了。uj5u.com熱心網友回復:
atoi 函式用一下轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129180.html
標籤:單片機/工控
下一篇:急求
