亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 437|回復: 0
打印 上一主題 下一主題
收起左側

第10章 UART串口通信和指針基礎10.1 10.2

[復制鏈接]
跳轉到指定樓層
樓主
通信,按照傳統的理解就是信息的傳輸與交換。對于單片機來說,通信則與傳感器、存儲芯片、外圍控制芯片等技術緊密結合,成為整個單片機系統的“神經中樞”。沒有通信,單片機所實現的功能僅局限于單片機本身,就無法通過其它設備獲得有用信息,也無法將自己產生的信息告訴其它設備。如果單片機通信沒處理好的話,它和外圍器件的合作程度就受到限制,最終整個系統也無法完成強大的功能,由此可見單片機通信技術的重要性。UARTUniversal Asynchronous Receiver/Transmitter,即通用異步收發器)串行通信是單片機最常用的一種通信技術,通常用于單片機和電腦之間以及單片機和單片機之間的通信。
本章除了介紹單片機的UART通信外, C語言的學習也逐步開始進入深水區。幾乎每一C語言教材都會強調指針是C語言的靈魂。由此可見,能不能靈活應用指針是判斷是否真正學會C語言的重要指標之一,本章將開始介紹指針相關的內容。
10.1 串行通信的初步認識
通信按照基本類型可以分為并行通信和串行通信。并行通信數據的各個位同時傳送,可以實現字節為單位通信,通信線多占用資源多,成本高。前邊用到的P0 = 0xFE;一次給P08I/O口賦值,同時進行信號輸出,類似于有8個車道同時可以過去8輛車,這種形式就是并行的,習慣上還稱P0P1P2P351單片機的4組并行總線。
串行通信是一條車道,一次只能一輛車通過。0xFE單字節要傳輸,假如低位在前高位在后,發送方式0-1-1-1-1-1-1-1-1,一位一位的發送出去,要發送8次才能發送完一個字節。
STC89C52有兩個引腳是專門用來做UART串行通信的,一個是P3.0一個是P3.1,它們還分別有另外的名字叫做RXDTXD,由它們組成的通信接口就叫做串行接口,簡稱串口。兩個單片機進行UART串口通信基本的演示圖如圖10-1所示。

10-1  單片機之間UART通信示意圖
圖中GND表示單片機系統電源的參考地,TXD是串行發送引腳,RXD是串行接收引腳。兩個單片機之間要通信,首先電源基準得一樣,所以要把兩個單片機的GND相互連接起來,然后單片機1TXD引腳接到單片機2RXD引腳上,即此路為單片機1發送而單片機2接收的通道,單片機1RXD引腳接到單片機2TXD引腳上,即此路為單片機2發送而單片機1接收的通道。這個示意圖就體現了兩個單片機相互收發信息的過程。
當單片機1想給單片機2發送數據時,比如發送一個0xE4這個數據,用二進制形式表示就是0b11100100,在UART通信過程中,是低位先發,高位后發的原則,那么就讓TXD首先拉低電平,持續一段時間,發送一位0,然后繼續拉低,再持續一段時間,又發送了一位0,然后拉高電平,持續一段時間,發了一位1……一直到把8位二進制數字0b11100100全部發送完畢。這里就涉及到了一個問題,就是持續的這“一段時間”到底是多久?由此便引入了通信中的一個重要概念——波特率,也叫做比特率。
波特率就是發送二進制數據位的速率,習慣上用baud表示,即發送一位二進制數據的持續時間=1/baud在通信之前,單片機1和單片機2首先要明確的約定好它們之間的通信波特率大小,并且必須保持一致,收發雙方才能正常實現通信。
約定好速度后,還要考慮第二個問題,數據什么時候是起始,什么時候是結束呢?不管是提前接收還是延遲接收,數據都會接收錯誤。在UART通信的時候,一個字節是8位,規定當沒有通信發生時,線路保持高電平,當要發送數據之前,先發一位0表示起始位,然后發送8位數據位,數據位是先低后高,數據位發完后再發一位1表示停止位。這樣本來要發送8位數據,實際一共發送10位,多出來的兩位一位起始位,一位停止位。而接收方原本一直保持的高電平,一旦檢測到一位低電平,就知道要開始準備接收數據了,接收8位數據位后,然后檢測到停止位,再準備下一個數據的接收如圖10-2所示。

10-2  串口數據發送示意圖
10-2串口數據發送示意圖,實際上是一個時域示意圖,就是信號隨著時間變化的對應關系。比如在單片機的發送引腳上,左邊的是先發生的,右邊的是后發生的,數據位的切換時間就是波特率分之一秒。
10.2 USB轉串口通信
早期的電腦,尤其是臺式機通常有一個9針的串行接口,叫做RS232串口。隨著技術的發展,工業上還有RS232串口通信的大量使用,但是商業技術的應用上,已經慢慢的使用USBUART技術取代了RS232串口
在電路上添加一個USB轉串口芯片,就可以實現USB通信協議和標準UART串行通信協議的轉換,Kinst51開發板上使用的是CH340這個芯片,如圖10-3所示。

10-3  USB轉串口電路
10-3中,CH340電路比較簡單,根據數據手冊,把電源、晶振接好后,1腳和2腳的DPDM分別接USB口的2個數據引腳,6腳和7腳接到了單片機的RXDTXD上去。
CH3406腳位置加了4148二極管,是STC89C52RC這個單片機下載程序的特殊需求。這個單片機下載程序需要冷啟動,即軟件上先點下載后給電路上電,上電的瞬間單片機通過串口檢測是否需要下載程序。雖然單片機的VCC是由開關控制,但是由于CH3406腳是輸出引腳,如果此處沒有二極管的話,開關沒有打開之前,由于6腳默認是高電平,電流會從CH3406腳灌入單片機的P3.0引腳,給后級的電容進行充電,造成后級有一定幅度的電壓。這個電壓值雖然只有兩三伏左右,但是可能會影響到正常的冷啟動。加了二極管后,可以消除這種不良影響,此外也不影響通信。串口通信時,CH3406腳輸出高電平時,單片機的RXD也是高電平;當CH340輸出低電平時,單片機的RXD為二極管的壓降值約0.7V,依然會被單片機識別成為低電平。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表