【藍橋杯單片機10】串行接口的進階與實戰應用


【藍橋杯單片機10】串行接口的進階與實戰應用

廣東職業技術學院 歐浩源

      串行接口作為51單片機的重要外設,編程操作並不復雜,但在實際的項目應用中,由於數據結構和通信規約的不同,其程序邏輯也有各種變化,不會像“【藍橋杯單片機09】串行接口的基本原理與應用”中說的那么簡易。
      一般情況下,上位機的命令可能不是一個字節,而是多個字節組成的命令幀,有的長度固定,有的長度變化;而且要求返回的數據可能也不是一個字節,可能是一個數組,也有可能是一個字符串等。在藍橋杯的比賽中,也不可能讓你只是收發一個字節而已,因此,在串口這一個單元中,必須多加一個強化環境,掌握多字節的數據幀收發應用。
      具體的實現有不同的思路,主要還是通過實戰案例來理解和強化。

1、單元實訓題目

2、程序設計思路與框架
      首先要認真閱讀通信規約,在閱讀的過程中,頭腦中就應該逐漸將文字信息抽象成為數據結構,該定義多少變量,需要多大的數組,程序大致要安排那幾個函數,怎么把它們搭建成程序框架...在動手敲代碼之前都應該有一個大概而清晰的輪廓。
     就本題來講,通信規約中明確指導命令幀的長度為4個字節,而且有固定的幀頭和幀尾,一個用於接收數據的4字節數組是肯定需要的。
     什么時候才是命令幀接收完成呢,這就需要一個全局的標志來通知主函數了。
     當然你還需要,串口初始化函數、字符串發送函數、串口數據接收函數、和命名解析執行函數。
     因此,你可以得到下面的程序框架結構:

      

3、關鍵代碼的實現
      教程到了這個階段,如果你細心觀察的話,你就會發現很多代碼塊是可以重用的,直接拷貝來,一個字母都不用該就能用。例如,串口初始化函數Init_Uart()和單字節發送函數SendByte()就不需要修改,拷過來就能用。
      其他的代碼實現起來也不難,幾個關鍵的代碼實現,大家可以參考:
      <1> 字符串發送函數

      

      <2> 串口數據接收函數

      

      <3> 命令幀解析執行函數

      

*************藍橋杯單片機視頻教程(永久免費)*************

************************************************** 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM