娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月28日(星期六)

2021年09月28日 | 51單片機之串口通信詳解

發布者:MysticDreamer 來源: eefocus關鍵字:51單片機  串口通信  通信方式 手機看文章 掃描二維碼
隨時隨地手機看文章

一、串口通信概念

1、串口通信的作用

串口通信主要用于單片機與外部設備的通信。51單片機自身有圈雙工的異步通信串口。


2、串口通信的通信方式

串口通信基本通信方式有兩種:并行通信和串行通信。

串行通信:傳送數據的各位按順序一位一位發送或者接收


并行通信:傳送數據各位同時發送或接收


3、串行通信的通信方式

串行通信根據幀信息的格式分為異步通信和同步通信


異步通信:一幀數據先用一個起始位“0”表字符開始,然后是5~8位數據,即該字符的代碼,規定低位在前,高位在后,接下來是奇偶校驗位(可以省略),最后一個停止位“1”表示字符結束。


同步通信:發送方在數據或字符前面用1~2字節同步字符指示一幀的開始,同步字符是雙方約定好的,接收方檢測到與規定的同步字符符合時,開始接收數據,發送方按順序連續傳送N個數據,N個數據傳完后,發送1-2字節的校驗碼。


接收端和發送端的同步由時鐘實現。


同步通信省去了字符開始和結束的標志,一幀可以連續傳送若干個數據,所以速度高于異步傳送。


4、通信方向

串口通信的通信方向分為單工、半雙工、全雙工三種。


單工傳送:通信接口只能發送或者接收。


半雙工傳送:通信接口可以接收也可以發送,但是發送和接收不能同時進行。


全雙工傳送:兩機的發送和接收可以同時進行


一般情況下,我們的51單片機采用的為全雙工,通過TXD,RXD兩個通信接口同時進行數據的發送和接收。


需要注意的是,51單片機在實物連線上要反接,一機的TXD應接另一機的RXD,RXD接另一機的TXD。而一些特殊型號的單片機會標注正接,即RXD接RXD,TXD接TXD。


5、串行通信接口的作用

我們單片機內部的CPU只能處理并行數據,要進行串行通信,就必須要接我們的串行接口,按串行通信協議,進行數據的處理。具體的有


A:實現數據格式化

按串行數據格式,對CPU的并行數據進行處理。


B:進行串行數據和并行數據的轉換

發送端,并行轉串行送接收端;

接收端,串行轉并行送CPU;


C:控制數據的傳輸速率

接口應具備對數據傳輸速率----波特率的控制選擇能力(具有波特率發生器


D:進行傳送錯誤檢測

發送時,接口對傳送數據在的生成奇偶校驗位或校驗碼;在接收時接口檢查校驗位或校驗碼,以確定傳送中是否有誤碼。


51單片機內含的通信接口:

51單片機內含一個全雙工的異步通信接口,通過對串行接口寫控制字可以選擇其數據格式,內含波特率發生器,提供可選波特率,可完成雙機通信或多機通信。


二、串行口的結構和工作原理

1、串行口結構

串行口主要由兩個數據緩沖寄存器SBUF和一個輸入移位寄存器組成,內部還有一個串行控制寄存器SCON和一個波特率發生器(T1定時器或內部時鐘及分頻器組成)


我們串行口發送的數據先逐位進入接收端移位寄存器,再送入接收端SBUF。移位寄存器和SBUF采用了雙緩沖結構,避免兩幀數據發送混亂。


2、串行口工作原理

A:發送機CPU向SBUF寫入數據,啟動發送過程


B:按SCON設定好的控制方式和設定的波特率,由低位到高位一位一位的按移位時鐘發送到電纜線上


C:數據通過電纜線到達接收機


D:接收機按照設定的波特率,按移位時鐘一位一位的由低到高移入SBUF


因此我們的發送機,接收機波特率必須保持一致,才可以正常的收發數據,即發送機移出的剛好被接收機移入。


E:發送機發完一幀數據(發送緩沖器空),硬件置位發送中斷標志位TI(SCON.1)位可作為查詢標志,如果設置為允許中斷,將引起中斷,發送機可再發送下一幀數據。(先發后查)


F:接收機,預先置位REN(SCON.4)即允許接收,再按波特率由低到高進入接收機移位寄存器,數據收齊后(接收緩存器滿),硬件置位RI(SCON.0),可作為查詢標志,如果設置為允許中斷,將引起接收中斷,CPU方可從SBUF中讀入這幀數據。(先查后收)


總結:

① 查詢方式發送的過程:發送一個數據→查詢TI→發送下一個數據(先發后查)

查詢方式接收的過程:查詢RI→讀入一個數據→查詢RI→讀入下一個數據(先查后收)

②通信雙方波特率必須相同


3、波特率的設定

第一種方式:

系統時鐘分頻值


第二種方式:

定時器T1提供(針對基礎51來講)


波特率計算:

當串口工作在工作方式0和2時,波特率固定。

方式0時 fosc / 12

方式2時 SMOD=0 fosc / 32 或 SMOD=1 fosc / 64


方式1時

波特率=(2^SMOD/32)*(單片機時鐘頻率/(256-X)) //X是初值

但一般情況下,我們是先確定波特率,再確定定時計數器初值

三、串行口的控制寄存器

1、串口工作方式寄存器SCON

在這里插入圖片描述
在這里插入圖片描述

2、電源控制寄存器PCON

四、串行口的具體應用編程

1、定好波特率

串行口波特率有兩種方式:固定波特率和可選波特率

當使用可變波特率時,應先計算T1的計數初值,并對T1初始化

當使用固定波特率時,選擇方式0、2


2、填寫控制字

對SCON寄存器設置工作方式,若為接受程序,需置為REN=1(允許接收),同時將TI、RI置零(串口中斷標志位)

3、選擇串行通信方式

串行通信可采用兩種方式:查詢方式和中斷方式

TI和RI是一幀數據發送或接收完的標志,可用于查詢;如果允許中斷,可引起中斷。


查詢方式:

發送一個數據→查詢TI→發送下一個數據(先發后查)

查詢RI→讀入一個數據→查詢RI→讀入下一個數據(先查后收)


中斷方式:

發送程序:發送一個數據→等待中斷,在中斷中發送下一個數據

接受程序:等待中斷,在中斷中再接受一個數據


注意:兩種方式中,都要軟件請TI、RI標志位,即用程序語句清0


4、約定標志字符


為了收發雙方的協調,除了兩邊的波特率要保持一致,也可以約定標志字符作為發送數據的起始,先發送標志字符,待對方收到并回應之后,再正式發數據。

當我們采用多機通信時,標志字符就相當于是各個分機的地址


五、查詢方式和中斷方式詳細流程

1、查詢方式

2、中斷方式

六、例程

#include "reg52.h"


typedef unsigned int u16;   

typedef unsigned char u8;


void UsartInit()

{

SCON=0X50; //  0101 0000  設置為工作方式1  

TMOD=0X20; //  0010 0000  設置計數器工作方式2

PCON=0X80; //  1000 0000波特率加倍

TH1=0XF3; //計數器初始值設置,波特率9600

TL1=0XF3;

ES=1; //打開接收中斷

EA=1; //打開總中斷

TR1=1; //打開計數器

}


void main()

{

UsartInit();  //串口初始化

while(1);

}


void Usart() interrupt 4  //串行口中斷

{

u8 receiveData;

receiveData=SBUF;//出去接收到的數據

RI = 0;//清除接收中斷標志位 軟件清零

SBUF=receiveData;//將接收到的數據放入到發送寄存器

while(!TI); //等待發送數據完成

TI=0; //清除發送完成標志位

}

關鍵字:51單片機  串口通信  通信方式 引用地址:51單片機之串口通信詳解

上一篇:51單片機之晶振與定時器
下一篇:基于51單片機的直流電機調速設計

推薦閱讀

9月27日,優必選在上海當代藝術館舉行了2018年度發布會。發布會中,已多次亮相會展的便攜式智能機器人“悟空”正式發布。 同時,優必選發布了全球首個大規模商用的服務機器人操作系統ROSA,并與上海當代藝術館達成戰略合作。本次發布會上,日本Robi機器人之父高橋智隆先生也宣布加入優必選。 優必選創始人兼CEO周劍:優必選有一群瘋子聚集在一起 優必...
配合《STM32F4xx 中文參考手冊》 RCC 章節一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。 RCC : reset clock control 復位和時鐘控制器。本章我們主要講解時鐘部分,特別是要著重理解時鐘樹,理解了時鐘樹, F429 的一切時鐘的來龍去脈都會了如指掌。13.1 RCC 主要作用—時鐘部分: 設置系統時鐘 SYSCL...
上個月,華為發布了 MateBook X 2020,這是 2017 年推出型號的新機型。這款新筆記本電腦是第一款帶有壓感觸控板的 Windows 筆記本電腦,保持了該系列輕巧纖薄的設計。近日一臺新的華為筆記本電腦出現在跑分網站上,可能是新的 MateBook X / MateBook X Pro。該設備被爆料者@_rogame 發現,并顯示它搭載了 Intel 的第 11 代的 Core i7-...
前幾日剛看到這個方向的投資潛在機會,寶馬就來了一把大的:GaN Systems與寶馬簽訂了產能協議,為寶馬汽車提供GaN功率晶體管,合作金額為1億美元。從這個意義上來看,GaN在汽車上的應用可能如Yole所預期的一樣,在將來的2-3年落地。從2021年開始,隨著大多數車企開始準備800V系統,SiC的用量馬上要進入爆發期,接下來的GaN的使用估計很快能在DCDC和OBC上...

史海拾趣

問答坊 | AI 解惑

半導體三極管

一:三極管的結構及類型   通過工藝的方法,把兩個二極管背靠背的連接起來級組成了三極管。按PN結的組合方式有PNP型和NPN型,它們的結構示意圖和符號圖分別為:如圖(1)、(2)所示   不管是什麼樣的三極管,它們均包含 ...…

查看全部問答∨

dxf文件中LWPOLYLINE和POLYLINE有什么區別

dxf文件中LWPOLYLINE和POLYLINE有什么區別?另外,POLYLINE部分是否只有由VERTEX連成的線段?…

查看全部問答∨

VGA to RGB

請問有誰做過VGA 轉 RGB的系統沒? 電腦顯卡出來的VGA顯示信號,轉變為RGB數字信號,24位的最好, 就是想用480x272的LCD液晶來顯示電腦輸出的顯示信號呀 ,各位高 手請指點一下,用哪個芯片好?…

查看全部問答∨

誰有 Windows CE實用開發技術 或者哪里能下?

誰有 Windows CE實用開發技術 或者哪里能下? 多謝了!!!…

查看全部問答∨

DNW v0.50L版本中UBOOT下載的問題

請問DNW v0.50L版本中UBOOT功能怎么使用? 我將三星帶USB下載功能的Eboot.nbo下到RAM后,進入main menu,然后按U選中USB下載項,再選DNW的USB Port->uboot,選中待下載的NK.BIN ,但下載進度條出來 后沒有任何反應。 請問這是什么原因? …

查看全部問答∨

全局變量和局部變量存儲有何區別?

C430將全局變量從0x200開始分配,而C430將void main()中的一般 局部變量分配到哪里去了呢?是不是在Flash中???…

查看全部問答∨

MSP430與AMBE

現在我們設計的是DSP與AMBE-2000連接并進行通信,但由于項目需要,資源緊張,所以可能要改成MCU與AMBE-2000連接。我用的MCU是TI的MSP430系列。 我想問您這樣的話應該怎么實現連接?因為DSP是可以通過McBSP與AMBE相連的,而MCU沒有McBSP的功能 ...…

查看全部問答∨

我手上有顆USB芯片PDIUSBD12不知道怎么用?

你們誰用個USB芯片D12,用它做了什么呀? 我手上有一顆 , 當初拿到準備做雨刮系統的,   但現在不需要了   我不知道拿它來做什么了 ?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 钦州市| 读书| 岐山县| 武宁县| 图片| 读书| 离岛区| 枝江市| 巢湖市| 大宁县| 盐池县| 和平区| 怀宁县| 前郭尔| 开阳县| 漳浦县| 洪湖市| 德化县| 容城县| 怀集县| 盘山县| 盐源县| 海盐县| 肥西县| 昂仁县| 新安县| 隆尧县| 沂南县| 正定县| 宣汉县| 宁波市| 广南县| 双城市| 宾川县| 虎林市| 佛山市| 澳门| 郧西县| 湟源县| 繁昌县| 上高县|