摘要:那么問題來了,單片機和之間的串口通信屬于哪種通信制式呢答案是全雙工,從單片機上有和兩個口就可以知道最后要講的一個重要的概念叫波特率。
????????對于剛剛接觸單片機的同學們來說,串口通信似乎是一個神秘感十足的東西,筆者在剛剛開始學習51單片機時,讀的是郭天祥先生的那本著名的《新概念51單片機教程》,賊厚的一本書,但是等讀完串口通信的內容之后,我突然覺得51單片機也就那回事,無非是各種中斷,定時器的運用,對外部設備的控制啊,例如ADC芯片,12864液晶屏,再或者就是今天我們所提到的串口通信的內容。
????????那么什么叫串口通信呢?我想有必要先來和大家討論一下什么叫做“通信”。
????????“通信,指人與人或人與自然之間通過某種行為或媒介進行的信息交流與傳遞,從廣義上指需要信息的雙方或多方在不違背各自意愿的情況下采用任意方法、任意媒質,將信息從某方準確安全地傳送到另方”(來源:百度百科)
????????從上面的定義我們可以知道,通信其實就是信息的傳遞。所以我們需要明白幾個重要的概念。第一個就是傳輸媒介,手機屏幕前的你和正在敲博客的我,今天聚焦在單片機這個話題上,所以我們主要討論以金屬導線為媒介的通信方式。其次,我們需要關注傳輸信息的內容,在微機系統中,微型計算機接受和處理的都是二進制碼,嗯,理所當然,咱們傳輸的信息便是0/1。最后便是通信的雙方,我們不可能對著空氣交流,這樣的交流是沒有意義的,我們今天聊的通信介于微機與微機之間,也就是你的PC與單片機間,或者一公一母的一對單片機之間,抑或是幸福的單片機家庭之間的信息交流。
????????那么你要問了,單片機之間要如何“聊天”呢?類似于咱們人類,單片機之間的交流也需要“嘴”(Transmit external data,簡稱TXD)和“耳”(RXD,英文自行補充),我們把這兩個接口稱作“串口”。
????????它們具體在51單片機上的位置如圖所示。這里我想要大家理解的除了RXD和TXD的作用之外,還要知道,我們在通信時總是“嘴”對“耳”進行傳輸的(即RXD和TXD連接),“嘴對嘴”(TXD接TXD)或者是“耳對耳”(RXD對RXD)的行為是不可取的,容易引起其他單身單片機的不適。
????????好了,說了這么多也沒聊到什么是串口通信,可能大半的同學都默默離開了我的博客,并且還留下了幾句“廢話真多”的評論,好嘛,各位看官不要急,好戲正式開演。
????????前面我們把單片機之間的通信比作我們人類之間的交流,這其實是非常恰當的(為我的聰明才智點個贊)。但是更聰明的同學肯定會提出來,如果單片機中出現了一個”啞巴“,它要如何與其他小伙伴進行交流呢?獨秀同學請坐下,讓我來說:當然是通過“視覺”交流!在微機中這種方法又叫“并行通訊”。
????????就像我們的眼睛一次性能看到一幅畫面一樣,并行通信通常是將數據的各位用多條數據線同時進行傳輸,這樣,瞬間咱們的單片機便可以接收到一個字節,或者多個字節的數據。這種傳輸方式的優點就是傳輸的速度非常快,但是其缺點也很明顯,那就是傳輸距離短、成本高,常用在集成電路芯片的內部、同一插件板上各部件之間、同一機箱內個插件板之間的數據傳輸,或者老式打印機與計算機連接等場合。
????????
????????那么與之對應什么又是串行通信(serial communication,簡稱SC)呢?大家仔細琢磨一下我們說話的過程就可以明白,通常咱們說一句話時總是一個字一個字往外蹦,無論你語速多快,后一個字總要等前一個字說完以后才能被說出口,類似的,在微機中就是使用一條數據線,將數據一位一位地依次傳輸,每一位數據占據一個固定的時間長度。只需要少數幾條線就可以在系統間交換信息,特別適用于計算機與計算機、計算機與外設之間的遠距離通信。很容易可以知道,相比于并行通信,串行通信所花費的時間更長,但其優點遠大于缺點,所以應用十分廣泛。?
????????正如不同人說話的語速不同,每句話之間的停頓也不同,串行通訊也被分為異步串行通信(synchronized serial port communication)與同步串行通信。我在這里想要提醒大家的是,無論是同步串行通信抑或是異步串行通信,在“說一句話”時每個“字”之間的時間是相同的,就像說話時快時慢會讓人感覺特別難受一樣,發送每位數據所占的時間要盡可能相同,并且要與接收者的速度相匹配。(就像說話速度太快,別人容易聽不清)。
????????那什么是異步串行通信和同步串行通信呢?前面我們說到,說話時要讓“語速”在發送者和接收者之間同步。在微機世界中,想要達成這個目的可以通過讓發送者和接收者共用一條時鐘線(你該不會連時鐘是什么都不明白吧?)來實現,這就是所謂的“同步串行通信”
????????但是呢,雖然同步串行通信的速度快,效率高,但接收者和發送者之間需要共用一條時鐘線,些許違背了我們串行通信的初衷,聰明的同學肯定會發出疑問:為什么不先告知雙方通信的速度,然后讓他們各自按照速度進行通信不就行了?非常正確!由此我們引出了重點:“異步串行通信”
????????什么叫異步通信呢?就是發送與接受設備都使用各自的時鐘,要求是這兩個時鐘要盡可能一致,發送的時間間隔可以不同(如圖所示),接收方通過數據的起始位和停止位來實現數據的同步。同步通信就好比起跑線上全神貫注的運動員,時刻等待發令槍響,而異步通信就像上課走神的你,老師轉過身去寫板書時你便開始走神,而當老師回過身來你又開始聽課。
????????所以異步串行通信的基本格式,專業術語叫“數據幀”。它的組成包括了四個部分:起始位,數據位,校驗位,和停止位。所謂的校驗位又稱奇偶校驗位,它的目的就是告訴接收者,這幀數據在傳輸過程中有沒有出錯。理所當然,它分為奇校驗和偶校驗。很多同學理解不了奇偶校驗的概念,這里我和大家簡要介紹一下:奇校驗時,這幀數據中“1”的個數之和為奇數,偶校驗與此類似。校驗位就像一個頑皮的孩子,在0和1之間反復橫跳,只為讓數據中“1”的個數為奇數或者偶數(奇數加一為偶,偶數加一為奇),以便讓接收者知道接收到的信息有沒有“變味”。
在串行通信中通信的方式根據時間和方向的不同可以分為:單工,半雙工,全雙工。
????????我們從圖中可以看出所謂單工就是數據的傳輸只能沿一個方向,不能實現反向傳輸。半雙工就是數據可以沿兩個方向傳輸了但是必須分時進行;全雙工是指數據可以同時進行雙向傳輸。
????????那么問題來了,51單片機和PC之間的串口通信屬于哪種通信制式呢?
????????(答案是全雙工,從單片機上有RXD和TXD兩個口就可以知道)
????????最后要講的一個重要的概念叫波特率。大家在做點亮第一個LED燈實驗時,就使用過程序燒錄軟件,在里面我們常常能看到所謂“波特率”,我們不知其意但又經常使用(例如程序燒錄失敗可以嘗試調低波特率解決)。其實咱們51單片機的程序燒錄方式采用了串行通信的方式,所謂波特率就是每秒鐘串行總線傳輸二進制代碼的位數,單位為bps(bit per second)簡稱波特。例如 1波特=1位/秒,也就是每秒鐘傳輸1位數據,所以常用的4800、9600等等就很好理解了。值得注意的是,數據在串行傳輸過程中波特率會隨著導線長度而衰減,所以串口通信并不適用于長距離的傳輸,(一般使用rs485通信或者can總線等等方式)。
????????講到這里,本篇博客應該就要結束了,很高興給大家分享了一些知識。本人機緣巧合接觸到單片機,之前常聽別人說學會了單片機保你前途光明遠大,此話是真是假暫且不論,我覺得學習的最高驅動力應該是興趣,這種興趣無謂功名純屬愛好,當然如果愛好能給人生帶來一些起色是最好不過的。作為一名電子愛好者,我們永遠忘記不了點亮第一顆LED燈時的喜悅,有時,銘記就是最好的證明,證明我們曾心動過,曾努力過,曾夢想過。
????????路漫漫其修遠兮,吾將上下而求索。與君共勉!
本博客所引圖片均援引自網絡,侵刪。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123454.html
摘要:單片機在一片集成電路芯片上集成微處理器存儲器接口電路,從而構成了單芯片微型計算機,即單片機。沒搞懂專欄咋弄的,慢慢摸索吧,本人純新手,讀書人的事沒啥要臉不要臉的,有問題隨便指出,隨便噴,歡迎來指點 2021-9-25 自己手繪的一張圖,算是簡單的介紹吧? 對照實圖看一下 ? ? ? ?...
摘要:觀看學習上官可編程陳立臣老師的樹莓派視頻,在其過程中所記錄的學習筆記一串口通信概念串口通信用于多機通信串口通信屬于全雙工通信,即雙方可以同時進行交流半雙工通信,一次只允許一方進行通信樹莓派進行串口通信一般要連接兩根線和 ...
摘要:異步通信與同步通信異步通信異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。同步通信同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。配置串口設置為異步通信基礎參數波特率為。 ...
閱讀 3916·2021-11-16 11:44
閱讀 3115·2021-11-12 10:36
閱讀 3373·2021-10-08 10:04
閱讀 1257·2021-09-03 10:29
閱讀 391·2019-08-30 13:50
閱讀 2605·2019-08-29 17:14
閱讀 1734·2019-08-29 15:32
閱讀 1081·2019-08-29 11:27