- 嵌入式 MCGS 串口通信快速入門及編程實例
- 張輝
- 1479字
- 2019-11-15 19:12:04
第5章 萬能通信之只收不發——轉速測量
只收不發是指下位機定時向上位機發送數據,無須上位機下發指令,這種情況多限于價格低廉、成本僅十幾元到幾十元之間的變送器系列,例如,溫度變送器、濕度變送器、溫濕度變送器、速度變送器、流量變送器、位移變送器等。本章介紹從單片機上傳數據給上位機的案例。
LKSC_A測速表是利用霍爾元件對磁場感應進行測速的傳感器,采用的霍爾元件為AH201,當磁鐵靠近霍爾元件時,輸出高電平;磁鐵遠離霍爾元件時,輸出低電平。電平的高低可以通過計數器記錄,輸出到數碼管,如圖5-1所示。該測速表將測得的值通過TTL電平傳給上位機,傳感器上電后,LKSC_A便始終通過TTL串口向上位機上傳數據,而上位機不需要向單片機發送指令,對于上位機而言,屬于只收不發的一種通信狀態。數據傳輸采用ASCII方式,接下來,按步驟進行連接與調試。

圖5-1 LKSC_A測速表實物圖
(1)LKSC_A測速表檢測 給LKSC_A測速表供直流電12V,正、負極性不能接反,用磁鐵在AH201探頭附近反復靠近與遠離,交替產生和消隱磁場,使AH201以一定頻率產生高電平與低電平,模擬轉速?;蛘邔⒋盆F粘貼在轉輪上,使轉輪旋轉,磁鐵會周期性地經過AH201探頭,代表輪子的轉速,此時數碼管會顯示轉速值,如圖5-1所示。LKSC_A測速表工作正常后,接下來建立與臺式機的通信。
(2)物理通信線路連接 為了獲得數據通信格式及通信協議,首先應正確連接物理通信線路,如圖5-2所示,臺式機的串口輸出為公頭,通過“RS-232轉TTL接口”將RS-232電平轉為TTL電平,此時僅留下發送、接收與地三根引腳,即只能傳輸數據,省去了控制信號針。在本例中,臺式機TTL的TxD與單片機的TxD相連、RxD與單片機的RxD相連、GND與單片機的GND相連。讀者可能感到奇怪,為什么不是臺式機的TxD與單片機的RxD相連,這主要取決于廠家單片機內部結構與設置,本例中使用的LKSC_A測速表經過測試發現只有這樣連接才能進行通信??蓞⒖级S碼視頻講解。

圖5-2 LKSC_A測速表與臺式機連接示意圖
(3)設定串口號與串口參數 根據廠家給定的說明文檔,其通信電平為TTL,即電平為3.3~5.0V,通信波特率為4800,無奇偶校驗位,8個數據位,1個停止位,串口參數的完整設置為“4800,N,8,1”。通信協議相當于臺式機與單片機的一種約定,雙方按相同的通信頻道、數據傳輸方式進行交流,與人與人之間的對話一樣,中國人與中國人可以互相交流,但是中國人與美國人就無法溝通,需要一個翻譯,兩者不在一個通信信道內。
(4)確定通信數據格式 這個過程要借助串口調試工具,如圖5-3所示,本例采用“串口助手”軟件,與臺式機通信,使用COM1串口,按“4800,N,8,1”設置串口通信參數,在串口助手中點擊“串口配置”按鈕,在彈出的對話框中按條件進行設置,如圖5-4所示。

圖5-3 LKSC_A測速表上傳數據實時顯示器

圖5-4 串口參數設置界面
串口參數設好后,點擊圖5-3中的“打開串口”按鈕,此時發現圖中出現字符,“接收”標簽后面的計數值會不斷增加,說明單片機一直向臺式機通過串口上傳數據。如果“HEX顯示”前面不勾選“√”,則顯示為ASCII碼;如果勾選“√”,則顯示為十六進制編碼,其數據格式如圖5-5所示,轉速為569.0轉/分,十六進制顯示時為35 36 39 2E 30 2C,每組數據之間都以逗號分隔。如果數據位數不同,例如,3.5,24.6,108.6,1492.0等,在數碼管中最多只能顯示四位。因此,1492.0僅能顯示整數部分的1492。如果轉速低于四位數,則可以顯示小數點后一位,但是,上傳的數據格式卻是統一的,即無論數大數小,小數點后保留一位,小數點前最少一位,數大了,向前擴展,而且,數與數之間是以逗號分開的。這樣,在后續腳本編寫中可以根據數據格式采集逗號分隔的不定長數據。數據每次上傳,總是先有逗號,然后是數據,緊跟著又是逗號。可參考二維碼視頻講解。

圖5-5 數據格式分解圖
