單片機(jī)串口市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第1頁
單片機(jī)串口市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第2頁
單片機(jī)串口市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第3頁
單片機(jī)串口市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第4頁
單片機(jī)串口市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第6章MCS-51串行口1單片機(jī)串口第1頁2內(nèi)容介紹:通信方式:串行口與并行口串行通訊方式:異步通信和同時(shí)通信§1串行口結(jié)構(gòu)§2串行口工作方式§3多機(jī)通訊§4波特率制訂方法§5串行口編程和應(yīng)用

單片機(jī)串口第2頁3串行口與并行口并行通信:8位數(shù)據(jù)同時(shí)發(fā)送或接收。8051外部設(shè)備并行通信串行通信:數(shù)據(jù)一位一位次序發(fā)送或接收。80518051TXDTXDRXDRXD串行通信單片機(jī)串口第3頁4異步通信:它用一個(gè)起始位表示字符開始,用停頓位表示字符結(jié)束。

其每幀格式以下:在一幀格式中,先是一個(gè)起始位0,然后是8個(gè)數(shù)據(jù)位,要求低位在前,高位在后,接下來是奇偶校驗(yàn)位(能夠省略),最終是停頓位1。用這種格式表示字符,則字符能夠一個(gè)接一個(gè)地傳送。

在異步通信中,CPU與外設(shè)之間必須有兩項(xiàng)要求,即字符格式和波特率。

字符格式要求是雙方能夠在對(duì)同一個(gè)0和1串了解成同一個(gè)意義。標(biāo)準(zhǔn)上字符格式能夠由通信雙方自由制訂,但從通用、方便角度出發(fā),普通還是使用一些標(biāo)準(zhǔn)為好,如采取ASCII標(biāo)準(zhǔn)。

波特率即數(shù)據(jù)傳送速率,其定義是每秒鐘傳送二進(jìn)制數(shù)位數(shù)。比如,數(shù)據(jù)傳送速率是120字符/s,而每個(gè)字符如上述要求包含10數(shù)位,則傳送波特率為1200波特。單片機(jī)串口第4頁5同時(shí)通信:

在異步通信中,每個(gè)字符要用起始位和停頓位作為字符開始和結(jié)束標(biāo)志,占用了時(shí)間;所以在數(shù)據(jù)塊傳遞時(shí),為了提升速度,常去掉這些標(biāo)志,采取同時(shí)傳送。因?yàn)閿?shù)據(jù)塊傳遞開始要用同時(shí)字符來指示,同時(shí)要求由時(shí)鐘來實(shí)現(xiàn)發(fā)送端與接收端之間同時(shí),故硬件較復(fù)雜。單片機(jī)串口第5頁6通信方向:單工傳送:在串行通訊中,把通訊接口只能發(fā)送或接收單向傳送方法叫單工傳送;雙工傳送:而把數(shù)據(jù)在甲乙兩機(jī)之間雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。

1、半雙工傳送:是兩機(jī)之間不能同時(shí)進(jìn)行發(fā)送和接收,任一時(shí)該,只能發(fā)或者只能收信息。

2、全雙工傳送:是兩機(jī)之間能同時(shí)進(jìn)行發(fā)送和接收。單片機(jī)串口第6頁7§6.1串行口結(jié)構(gòu)

MCS-51單片機(jī)內(nèi)部有一個(gè)功效很強(qiáng)全雙工串行口,該串行口有四種工作方式,波特率可用軟件設(shè)置,由片內(nèi)定時(shí)器/計(jì)數(shù)器產(chǎn)生。串行口接收、發(fā)送數(shù)據(jù)均可觸發(fā)中止系統(tǒng),使用十分方便。

MCS-51單片機(jī)內(nèi)部串行口,有兩個(gè)物理上獨(dú)立地接收、發(fā)送緩沖器SBUF,可同時(shí)發(fā)送、接收數(shù)據(jù),發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,兩個(gè)緩沖器共用一個(gè)字節(jié)地址(99H)。

控制MCS-51單片機(jī)串行口控制存放器共有兩個(gè):

串行口控制存放器SCON

特殊功效存放器PCON單片機(jī)串口第7頁8§6.1.1串行口控制存放器SCONSCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98H

SM0、SM1:串行口4種工作方式選擇位。

SM2:多機(jī)通訊控制位。

REN:允許串行接收控制位。TB8:是工作在方式2和3時(shí),要發(fā)送第9位數(shù)據(jù)。RB8:當(dāng)工作在方式2和3時(shí),為收到第9位數(shù)據(jù)。

TI:發(fā)送中止標(biāo)志位。

RI:接收中止標(biāo)志位。單片機(jī)串口第8頁9SM0、SM1:串行口4種工作方式選擇位SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HSM0SM1方式 功效

00方式0同時(shí)移位存放器方式01方式18位串行口(波特率可變)10方式29位串行口(波特率固定)11方式39位串行口(波特率可變)單片機(jī)串口第9頁10SM2:允許方式2和3多機(jī)通訊控制位。SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98H(1)方式2,方式3下,SM2=1,接收到第9位RB8=0時(shí),不激活RI,不能向CPU申請(qǐng)中止如接收到第9位RB8=1時(shí),激活RI,將RI=1,向CPU申請(qǐng)中止(2)方式2,方式3下,SM2=0,不論RB8=0或RB8=1,都激活RI=1。(3)方式1,當(dāng)SM2=1時(shí),只有接收到有效停頓位時(shí),才激活RI當(dāng)SM2=0時(shí),正常接收。(4)方式0,SM2必須清0,即SM2=0。單片機(jī)串口第10頁11REN:允許串行接收控制位SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HREN:允許串行接收控制位,由軟件置位或清零。REN=1,允許串行口接收數(shù)據(jù)。REN=0,禁止串行口接收數(shù)據(jù)。單片機(jī)串口第11頁12TB8和RB8:SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HTB8:當(dāng)串行口工作在方式2、方式3,要發(fā)送第9位數(shù)據(jù)時(shí)放在TB8中(D8=第9位),需要時(shí)由軟件置1或清0。在許多通訊協(xié)議中該位是奇偶校驗(yàn)位。在多機(jī)通訊中用來表示是地址幀還是數(shù)據(jù)幀,TB8=1為地址幀,TB8=0為數(shù)據(jù)幀。RB8:方式2、方式3下,要接收第9位數(shù)據(jù)。可能是奇偶校驗(yàn)位或在多機(jī)通訊中為地址幀或數(shù)據(jù)幀標(biāo)識(shí)位。

方式1時(shí),SM2=0,RB8是已接收停頓位。

方式0時(shí),不使用RB8。單片機(jī)串口第12頁13TI和RISCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HTI:發(fā)送中止標(biāo)志 由硬件在方式0串行發(fā)送第8位結(jié)束時(shí)置位或其它方式串行發(fā)送停頓位開始時(shí)置位。必須由軟件清零TI。RI:接收中止標(biāo)志:由硬件在方式0串行接收到第8位結(jié)束時(shí)置位或其它方式下串行接收停頓位中間時(shí)置位,必須由軟件清零RI。單片機(jī)串口第13頁14§6.1.2特殊功效存放器PCONPCONSMODD7D6D5D4D3D2D1D087HPCON:電源控制存放器 SMOD:串行口波特率系數(shù)控制位

SMOD=1

波特率加倍

SMOD=0

波特率不加倍D0~D6:掉電方式控制位。單片機(jī)串口第14頁15§6.2串行口工作方式SM0SM1方式

功效

00方式0

同時(shí)移位存放器方式01方式1

8位串行口(波特率可變)10方式2

9位串行口(波特率固定)11方式3

9位串行口(波特率可變)單片機(jī)串口第15頁16§6.2.1方式0

方式0為移位存放器輸入/輸出方式。可外接移位存放器以擴(kuò)展I/O口,也能夠外接同時(shí)輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD輸入或輸出,TXD用來輸出同時(shí)脈沖。

方式0輸出方式0輸入單片機(jī)串口第16頁17方式0輸出

數(shù)據(jù)從RXD引腳串行輸出,TXD引腳輸出移位脈沖。

當(dāng)一個(gè)數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),串行口即將8位數(shù)據(jù)以fosc/12固定波特率從RXD引腳輸出,低位在先。發(fā)送完8位數(shù)據(jù)置“1”中止標(biāo)志位TI。CPU響應(yīng)TI中止,標(biāo)志位必須由用戶程序清0。單片機(jī)串口第17頁18方式0輸入:

REN為串行口接收器允許接收控制位,REN=0,禁止接收,REN=1,允許接收。當(dāng)串行口置為方式0,并置“l(fā)”REN位,串行口處于方式0輸入。引腳RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號(hào)輸出端,接收器也以fosc/12固定波特率采樣RXD引腳數(shù)據(jù)信息,當(dāng)接收器接收到8位數(shù)據(jù)時(shí)置“l(fā)”中止標(biāo)志RI。CPU響應(yīng)RI中止,標(biāo)志位必須由用戶程序清0。單片機(jī)串口第18頁19方式1:串行口被控制為波特率可變8位異步通信接口。

波特率=(2SMOD/32)×T1溢出率式中SMOD為PCON存放器最高位值(0或1)。

一幀信息包含10位:1位起始位(低電平0)+8位數(shù)據(jù)位(低位在先)+1位停頓位(高電平1)方式1發(fā)送:TXD-發(fā)送端方式1接收:RXD-接收端單片機(jī)串口第19頁20方式1發(fā)送

CPU執(zhí)行寫入SBUF指令后,開啟串行口發(fā)送數(shù)據(jù),數(shù)據(jù)從發(fā)送端發(fā)送出去,發(fā)送完成后,將TI置位,向CPU申請(qǐng)中止,再次發(fā)送之前必須由軟件清0。單片機(jī)串口第20頁21方式1接收

當(dāng)REN=1且采樣到RXD引腳負(fù)跳變,而且接收到有效起始位時(shí),才開始接收本幀其余信息。當(dāng)滿足RI=0且SM2=0或接收到停頓位為1時(shí),接收數(shù)據(jù)有效,裝入SBUF,停頓位裝入RB8中,同時(shí)置位RI=1,向CPU申請(qǐng)中止。若有一個(gè)條件不滿足,則信息丟失。單片機(jī)串口第21頁22

方式2

9位異步通信接口(固定波特率)波特率:(2SMOD/64)×fOSC

一幀信息11位:1位起始位+8位數(shù)據(jù)位+1位可編程位+1位停頓位1位可編程位:接收時(shí)放到RB8中,發(fā)送時(shí)放到TB8中,奇偶校驗(yàn)位可放到可編程位中作為校驗(yàn)。方式2發(fā)送:方式2接收:單片機(jī)串口第22頁23方式2發(fā)送方式2發(fā)送:先把可編程位放到TB8中,然后CPU執(zhí)行一條寫入發(fā)送緩沖區(qū),當(dāng)發(fā)送數(shù)據(jù)到停頓位時(shí),將TI置位,當(dāng)要送到下一幀時(shí),先將TI清0。單片機(jī)串口第23頁24方式2接收方式2接收:與方式1相同,當(dāng)REN=1且采樣到RXD引腳負(fù)跳變,而且接收到有效起始位時(shí),才開始接收本幀其余信息。當(dāng)滿足RI=0且SM2=0或接收到第9數(shù)據(jù)位為1時(shí),接收數(shù)據(jù)有效,裝入SBUF,第9位數(shù)據(jù)裝入RB8中,同時(shí)置位RI=1,向CPU申請(qǐng)中止。若有一個(gè)條件不滿足,則信息丟失。單片機(jī)串口第24頁25

方式39位異步通信接口波特率=(2SMOD/32)×T1溢出率(同方式1算法相同)

一幀信息11位:1位起始位+8位數(shù)據(jù)位+1位可編程位+1位停頓位1位可編程位:接收時(shí)放到RB8中,發(fā)送時(shí)放到TB8中,奇偶校驗(yàn)位可放到可編程位中作為校驗(yàn)。除波特率不一樣,其它同方式2發(fā)送一樣:除波特率不一樣,其它同方式2接收一樣:單片機(jī)串口第25頁26§6.3多機(jī)通信

串行口控制存放器SCON中SM2為方式2或方式3多機(jī)通信控制位,當(dāng)串行口以方式2或方式3工作時(shí),若SM2程控為l,此時(shí)只有當(dāng)串行口接收到第9位數(shù)據(jù)RB8=1時(shí),才置1中止標(biāo)志RI,若接收到RB8=0,則不產(chǎn)生中止標(biāo)志,信息被丟失。應(yīng)用MCS-51串行口這個(gè)特征,便可實(shí)現(xiàn)多機(jī)通訊。

多機(jī)通信舉例:有一個(gè)主機(jī)(MCS-5l或其它含有串行接口微機(jī))和三個(gè)由8031組成從機(jī)系統(tǒng)。單片機(jī)串口第26頁27多機(jī)通信

設(shè)在一個(gè)多機(jī)系統(tǒng)中有一個(gè)主機(jī)(MCS-5l或其它含有串行接口微機(jī))和三個(gè)由8031組成從機(jī)系統(tǒng),從機(jī)地址分別為00H、0lH和02H。(地址=1,數(shù)據(jù)=0)。1、發(fā)送地址TB8=1:當(dāng)SM2=1且RB8=1,激活RI,進(jìn)入中止服務(wù)子程序,進(jìn)行地址比較。如地址相同,則SM2=0,不然SM2=1。2、發(fā)送數(shù)據(jù)TB8=0:當(dāng)SM2=1且RB8=0,不能激活RI。

當(dāng)SM2=0且RB8=0,能夠激活RI。

能夠進(jìn)入中止服務(wù)子程序,接收數(shù)據(jù)。單片機(jī)串口第27頁28§6.4波特率制訂方法波特率定義:串行口每秒鐘發(fā)送(或接收)位數(shù)稱為波特率。

當(dāng)串行口工作于方式1和方式3時(shí),波特率是可變,由SMOD位和定時(shí)器溢出率確定,允許用戶所取波特率范圍比較大。一、定時(shí)器T1工作于方式0波特率求法:二、定時(shí)器T1工作于方式1波特率求法:二、定時(shí)器T1工作于方式2波特率求法:單片機(jī)串口第28頁29一、定時(shí)器T1工作于方式0

波特率求法:

當(dāng)串行口工作于方式1和方式3時(shí),波特率是可變,由SMOD位和定時(shí)器溢出率確定,允許用戶所取波特率范圍比較大。一、定時(shí)器T1工作于方式0波特率求法:

方式0相當(dāng)于定時(shí)器T1是一個(gè)13位定時(shí)器/計(jì)數(shù)器,它采取TH1八位和TL1低五位組成一個(gè)13位計(jì)數(shù)器,它波特率按下式計(jì)算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出時(shí)間)T1溢出時(shí)間=(213-a+執(zhí)行置13位定時(shí)器值中止處理程序機(jī)器周期數(shù))*12/晶振頻率

注意:a是定時(shí)器計(jì)數(shù)初值,就是我們所要求值。單片機(jī)串口第29頁30二、定時(shí)器T1工作于方式1

波特率求法:

當(dāng)串行口工作于方式1和方式3時(shí),波特率是可變,由SMOD位和定時(shí)器溢出率確定,允許用戶所取波特率范圍比較大。一、定時(shí)器T1工作于方式1波特率求法:

方式1相當(dāng)于定時(shí)器T1是一個(gè)16位定時(shí)器/計(jì)數(shù)器,它波特率按下式計(jì)算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出時(shí)間)T1溢出時(shí)間=(216-a+執(zhí)行置16位定時(shí)器值中止處理程序機(jī)器周期數(shù))*12/晶振頻率

注意:a是定時(shí)器計(jì)數(shù)初值,就是我們所要求值。單片機(jī)串口第30頁31二、定時(shí)器T1工作于方式2

波特率求法:

當(dāng)串行口工作于方式1和方式3時(shí),波特率是可變,由SMOD位和定時(shí)器溢出率確定,允許用戶所取波特率范圍比較大。一、定時(shí)器T1工作于方式2波特率求法:

方式2是8位自動(dòng)裝入初值定時(shí)器,它波特率按下式計(jì)算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出時(shí)間)T1溢出時(shí)間=(28-a)*12/晶振頻率

注意:a是定時(shí)器計(jì)數(shù)初值,就是我們所要求值。

普通來講,定時(shí)器方式2用來確定波特率是比較理想,它不需要中止服務(wù)程序來置數(shù),且算出波特率比較準(zhǔn)確,提議使用定時(shí)器T1方式2來確定波特率。單片機(jī)串口第31頁

三、波特率計(jì)算在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)速率要有約定。經(jīng)過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2波特率是固定,而方式1和方式3波特率是可變,由定時(shí)器T1溢出率來決定。串行口四種工作方式對(duì)應(yīng)三種波特率。因?yàn)檩斎胍莆粫r(shí)鐘起源不一樣,所以,各種方式波特率計(jì)算公式也不相同。方式0波特率=fosc/12方式2波特率=(2SMOD/64)·fosc方式1波特率=(2SMOD/32)·(T1溢出率)方式3波特率=(2SMOD/32)·(T1溢出率)單片機(jī)串口第32頁

當(dāng)T1作為波特率發(fā)生器時(shí),最經(jīng)典使用方法是使T1工作在自動(dòng)再裝入8位定時(shí)器方式(即方式2,且TCONTR1=1,以開啟定時(shí)器)。這時(shí)溢出率取決于TH1中計(jì)數(shù)值。

T1溢出率=fosc/{12×[256-(TH1)]}

在單片機(jī)應(yīng)用中,慣用晶振頻率為:12MHz和11.0592MHz。所以,選取波特率也相對(duì)固定。慣用串行口波特率以及各參數(shù)關(guān)系如表所表示。單片機(jī)串口第33頁

串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率定時(shí)器1、串行口控制和中止控制。詳細(xì)步驟以下:確定T1工作方式(編程TMOD存放器);計(jì)算T1初值,裝載TH1、TL1;開啟T1(編程TCON中TR1位);確定串行口控制(編程SCON存放器);串行口在中止方式工作時(shí),要進(jìn)行中止設(shè)置(編程IE、IP存放器)。單片機(jī)串口第34頁35練習(xí)1-串行口波特率設(shè)串行口工作在方式1,定時(shí)器T1工作方式2,波特率=2400bit/sfOSC=6MHZSMOD=0,求計(jì)數(shù)初值a。(若SMOD=1呢?)。解:波特率=(2SMOD/32)*T1溢出率=(2SMOD/32)*{1/[(28-a)*(12/fOSC)]}2400=(1/32)*{1/[(28-a)*[12/(6*106)]}256-a=(6*106)/(240

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論