




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù)10遠(yuǎn)距離控制記分牌的設(shè)計(jì)10.1任務(wù)內(nèi)容與分析
10.2任務(wù)實(shí)施10.3任務(wù)相關(guān)知識(shí)
10.1任務(wù)內(nèi)容與分析
1.任務(wù)內(nèi)容
在很多比賽場(chǎng)合,如籃球比賽、知識(shí)競(jìng)賽等,需要實(shí)時(shí)顯示比賽成績(jī),一般采用數(shù)碼LED做為顯示牌,但往往顯示牌由一套從單片機(jī)系統(tǒng)控制,而成績(jī)的增減及顯示方式由另一套主單片機(jī)系統(tǒng)來(lái)控制,以達(dá)到遠(yuǎn)距離控制的目的。這種主、從機(jī)控制是通過(guò)串行通信來(lái)實(shí)現(xiàn)的。
2.任務(wù)分析
遠(yuǎn)程控制涉及遠(yuǎn)程通信,一般采用串行通信方式。一個(gè)通信系統(tǒng)需要發(fā)射電路和接收電路兩部分。發(fā)射電路發(fā)出信息給接收電路接收。發(fā)射和接收分別由兩套單片機(jī)系統(tǒng)控制,通常分別稱為甲機(jī)和乙機(jī)。本任務(wù)中,甲機(jī)的按鍵操作控制乙機(jī)LED數(shù)碼管的顯示。甲乙機(jī)狀態(tài)信息如表10-1所示。記分牌電路如圖10-1所示。圖中,S1為增分按鍵,S2為減分按鍵,且每按一次均為1分。在此假設(shè)成績(jī)不超過(guò)99分,故只用兩位LED數(shù)碼管顯示。8051單片機(jī)有一個(gè)全雙工的串行通信口,對(duì)應(yīng)的發(fā)射引腳為TXD、接收引腳為RXD。甲機(jī)接收到按鍵信號(hào)后通過(guò)TXD發(fā)射端送出,乙機(jī)RXD端接收到信號(hào)后控制LED數(shù)碼管的顯示。圖10-1遠(yuǎn)距離控制記分牌電路示意圖10.2任務(wù)實(shí)施
步驟1:繪制電路圖如圖10-2所示。
步驟2:根據(jù)任務(wù)分析,繪出程序流程圖。
程序設(shè)計(jì)的思路:雙機(jī)通信的收、發(fā)雙方必須按照約定好的方式和速率來(lái)傳輸信息,故在程序中應(yīng)有最基本的通信協(xié)議。甲機(jī)發(fā)送的數(shù)據(jù)就是兩個(gè)按鍵的狀態(tài),因此甲機(jī)在發(fā)送數(shù)據(jù)前必須檢測(cè)按鍵的狀態(tài)。如果有鍵按下,則將所按下鍵的狀態(tài)標(biāo)志位發(fā)送至乙機(jī)。為了避免接收信息丟失,乙機(jī)必須一直處于等待接收狀態(tài),一旦接收到標(biāo)志位數(shù)據(jù),就根據(jù)標(biāo)志狀態(tài)位來(lái)決定是增分還是減分,接著進(jìn)行顯示。
為了便于對(duì)占用資源的總體調(diào)配,現(xiàn)列出程序所占用單片機(jī)存儲(chǔ)資源分配列表,如表10-2所示。圖10-2遠(yuǎn)距離控制記分牌電路原理圖由于串行口的發(fā)送指令只能為“MOVSBUF,A”,串行口的接收指令只能為“MOVA,SBUF”,所以甲機(jī)需要發(fā)送的位標(biāo)志FLAG1和FALG2通過(guò)位累加器C分別傳送到ACC.0和ACC.1位。乙機(jī)接收時(shí),若判斷ACC.0為1,則標(biāo)志FLAG1為1;同理若判斷ACC.1為1,則標(biāo)志FLAG2為1。
甲機(jī)、乙機(jī)的程序流程如圖10-3所示。圖10-3甲機(jī)、乙機(jī)的程序流程圖步驟3:根據(jù)程序流程圖,編寫(xiě)源程序。
;******遠(yuǎn)距離控制體育比賽記分牌的設(shè)計(jì)*****
;甲機(jī)發(fā)送程序,程序名SEND.A
;程序功能:檢測(cè)按鍵的狀態(tài),將按鍵狀態(tài)標(biāo)志位發(fā)送至乙機(jī)
FLAG1BIT00H ;定義單片機(jī)地址
FLAG2BIT01H
RESULTEQU30H
S1BITP2.0
S2BITP2.1
ORG0000H
LJMPMAIN
ORG0030H
MAIN: MOVSCON,#40H
;串行口為方式1,10位為一幀
MOVTMOD,#20H ;定時(shí)器T1為方式2
MOVTH1,#0FDH ;實(shí)現(xiàn)9600bps的波特率 MOVTL1,#0FDH
SETBTR1;開(kāi)定時(shí)器T1
CLRFLAG1;清標(biāo)志位
CLRFALG2
LOOP: JNBS1,S1KEY;判斷S1鍵是否按下
JBS2,LOOP;判斷S2鍵是否按下
JNBS2,$;等待S2鍵釋放 SETBFALG2;?S2鍵標(biāo)志位置1
MOVC,FLAG2
MOVACC.1,C;?S2鍵標(biāo)志位傳送至ACC.1
AJMPSEND
S1KEY: JNBS1,S1KEY;等待S1鍵釋放
SETBFLAG1;?S1鍵標(biāo)志位置1
MOVC,FLAG1
MOVACC.0,C;?S1鍵標(biāo)志位傳送至ACC.0
SEND:
MOVSBUF,A ;發(fā)送數(shù)據(jù)
JNBTI,$ ;等待發(fā)送數(shù)據(jù)
CLRTI ;發(fā)送完,清標(biāo)志TI
MOVA,#00H
;清標(biāo)志位FLAG1和FLAG2
AJMPLOOP
END
;*******遠(yuǎn)距離控制體育比賽記分牌的設(shè)計(jì)*******
;乙機(jī)接收程序,程序名RECEIVE.A
;程序功能:根據(jù)接收到的狀態(tài)標(biāo)志位,判斷是增分還是減分并進(jìn)行顯示。
RESULTEQU30H ;定義單片機(jī)地址
BITSEQU31H
TENEQU32H
ORG0000H
LJMPMAIN
ORG0030H
MAIN: MOVSCON,#40H
;串行口為方式1,10位為一幀
MOVTMOD,#20H ;定時(shí)器T1為方式2
MOVTH1,#0FDH ;實(shí)現(xiàn)9600bps的波特率
MOVTL1,#0FDH
SETBTR1 ;開(kāi)定時(shí)器T1
LOOP: JNBRI,$ ;等待接收數(shù)據(jù)
CLRRI ;接收完,清標(biāo)志RI
JBACC.0,ZENFEN ;判斷是否為S1鍵的標(biāo)志
JBACC.1,JIANFEN ;判斷是否為S2鍵的標(biāo)志
AJMPLOOP
ZENFEN:INCRESULT
ACALLDISPLAY
JIANFEN:DECRESULT
ACALLDISPLAY
AJMPLOOP
;********顯示子程序****************
DISPLAY:MOVA,RESULT;拆字,將記分值分成個(gè)
位和十位
MOVB,#10
DIVAB
MOVBITS,B ;保存?zhèn)€位
MOVTEN,A ;保存十位
MOVDPTR,#TAB
;DPTR指向字型碼表首地址
CLRP2.1 ;開(kāi)個(gè)位顯示
MOVA,BITS
;取個(gè)位數(shù)
MOVCA,@A+DPTR ;查表取字型碼
MOVP1,A
;送顯示字型碼
SETBP2.1
;關(guān)個(gè)位顯示
CLRP2.0
;開(kāi)個(gè)位顯示
MOVA,TEN
;取十位數(shù)
MOVCA,@A+DPTR ;查表取字型碼 MOVP1,A ;送顯示字型碼
SETBP2.0 ;關(guān)十位顯示
RET
TAB:DB3FH,06H,5BH,4FH,66H,6DH
;“0~9”共陰極字型碼
DB7DH,07H,7FH,6FH
END
10.3任務(wù)相關(guān)知識(shí)
10.3.1串行通信概述
在通信領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信。隨著計(jì)算機(jī)網(wǎng)絡(luò)化和微機(jī)分級(jí)分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來(lái)越重要。通信是指計(jì)算機(jī)與外界的信息傳輸,既包括計(jì)算機(jī)與計(jì)算機(jī)之間的傳輸,也包括計(jì)算機(jī)與外部設(shè)備(如終端、打印機(jī)等設(shè)備)之間的傳輸。
1.并行通信和串行通信
(1)并行通信:是將數(shù)據(jù)字節(jié)的每一位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送,如圖10-4(a)所示。
并行通信的特點(diǎn)是:各數(shù)據(jù)位同時(shí)傳輸,傳輸速度快、效率高,多用在實(shí)時(shí)、快速的場(chǎng)合。并行傳輸?shù)臄?shù)據(jù)寬度可以是1~128位,甚至更寬,通常多少數(shù)據(jù)位就需要多少根數(shù)據(jù)線,因此傳輸?shù)某杀据^高。在集成電路芯片的內(nèi)部、同一插件板上各部件之間、同一機(jī)箱內(nèi)個(gè)插件板之間的數(shù)據(jù)傳輸都是并行的。并行數(shù)據(jù)傳輸只適用于近距離的通信,通常傳輸距離小于30m,如微機(jī)與并行接口打印機(jī)。
(2)串行通信:是指使用一條數(shù)據(jù)線將數(shù)據(jù)一位一位地依次傳輸,如圖10-4(b)所示。圖10-4并行通信和串行通信
【例10-1】串行通信與并行通信的比較。
傳送一個(gè)字節(jié),并行通信只需要1T的時(shí)間,而串行通信至少需要8T的時(shí)間。串行通信適合于遠(yuǎn)距離傳送,可以從幾米到數(shù)百萬(wàn)米。對(duì)于長(zhǎng)距離、低速率的通信,串行通信往往是唯一的選擇。并行通信適合于短距離、高速率的數(shù)據(jù)傳送,通常傳輸距離小于30m。特別值得一提的是,現(xiàn)成的公共電話網(wǎng)是通用的長(zhǎng)距離通信介質(zhì),它雖然是為傳輸聲音信號(hào)設(shè)計(jì)的,但利用調(diào)制解調(diào)技術(shù),可使它為串行數(shù)據(jù)通信提供方便、實(shí)用的通信線路。
2.異步通信和同步通信
(1)同步通信:其基本特征是發(fā)送與接收保持嚴(yán)格的同步。由于串行傳送是逐位順序進(jìn)行的,為了約定數(shù)據(jù)是由哪一位開(kāi)始傳送,需要設(shè)定同步字符。這種方式速度快,但是硬件復(fù)雜。由于51單片機(jī)中沒(méi)有同步串行通信的方式,故在此不詳細(xì)介紹。
(2)異步通信:其方式規(guī)定了傳送格式,每個(gè)數(shù)據(jù)均以相同的幀格式傳送。一幀數(shù)據(jù)的格式如圖10-5所示。圖10-5幀格式每幀數(shù)據(jù)由4部分組成:起始位(占1位)、字符代碼數(shù)據(jù)位(占5~8位)、奇偶校驗(yàn)位(占1位,也可以沒(méi)有校驗(yàn)位)、停止位(占1或兩位),一幀長(zhǎng)度常為8位、10位、11位等。
異步通信是一幀一幀地進(jìn)行傳送的,幀與幀之間的間隙不固定;間隙處用空閑位(高電平)填補(bǔ);每幀傳送總是以邏輯0(低電平)狀態(tài)的起始位開(kāi)始,停止位結(jié)束。信息傳送可隨時(shí)或不間斷地進(jìn)行,不受時(shí)間的限制,因此異步通信簡(jiǎn)單、靈活。
發(fā)送端和接收端可以由各自的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。接收端檢測(cè)到傳輸線上發(fā)送過(guò)來(lái)的低電平邏輯“0”(即字符幀起始位)時(shí),確定發(fā)送端已開(kāi)始發(fā)送數(shù)據(jù)。
3.串行通信波特率
波特率是串行通信中的一個(gè)重要概念。波特率(bitpersecond)是指單位時(shí)間里傳輸?shù)臄?shù)據(jù)位數(shù),即波特率=1bit/s。例如:數(shù)據(jù)傳輸?shù)乃俾适敲棵腌?40字符,而每個(gè)字符如上述規(guī)定包含10位數(shù),則傳輸波特率為2400?b/s。波特率的倒數(shù)就是傳輸每位數(shù)據(jù)所需要的時(shí)間。
相互通信的雙方必須具有相同的波特率,否則無(wú)法成功地完成數(shù)據(jù)通信。異步通信速度較慢,一般適用于50~9600?b/s的波特率。
4.串行通信的傳輸方向
串行通信依數(shù)據(jù)傳輸?shù)姆较蚣皶r(shí)間關(guān)系可分為單工通信、半雙工通信與全雙工通信,如圖10-6所示。圖10-6串行通信的三種傳輸方向
(1)單工通信:只支持?jǐn)?shù)據(jù)在一個(gè)方向上傳輸,又稱為單向通信,如無(wú)線電廣播和電視廣播。
(2)半雙工通信:允許數(shù)據(jù)在兩個(gè)方向上傳輸,但在同一時(shí)刻只允許數(shù)據(jù)在一個(gè)方向上傳輸,實(shí)際上是一種可切換方向的單工通信,即通信雙方都可以發(fā)送信息,但不能雙方同時(shí)發(fā)送,當(dāng)然也不能同時(shí)接收。這種方式一般用于計(jì)算機(jī)網(wǎng)絡(luò)的非主干線路中。
(3)全雙工通信:允許數(shù)據(jù)同時(shí)在兩個(gè)方向上傳輸,又稱為雙向同時(shí)通信,即通信的雙方可以同時(shí)發(fā)送和接收數(shù)據(jù),如現(xiàn)代電話通信。這種通信方式主要用于計(jì)算機(jī)與計(jì)算機(jī)之間的通信。
5.串行通信中的錯(cuò)誤校驗(yàn)
串行數(shù)據(jù)在傳輸過(guò)程中,由于干擾可能引起信息的出錯(cuò)。例如:傳輸字符“E”,其ASCII碼為0100?0101=45H,由于干擾可能使位變?yōu)?,這種情況我們稱為出現(xiàn)了“誤碼”。我們把如何發(fā)現(xiàn)傳輸中的錯(cuò)誤叫“檢錯(cuò)”。發(fā)現(xiàn)錯(cuò)誤后,如何消除錯(cuò)誤叫“糾錯(cuò)”。常用的檢錯(cuò)方法有奇偶校驗(yàn)和代碼校驗(yàn)。
(1)奇偶校驗(yàn):在傳送字符的各位之外,再傳送1位奇/偶校驗(yàn)位,即在每一字節(jié)(8位)之外又增加了一位作為錯(cuò)誤檢測(cè)位。奇偶校驗(yàn)是最簡(jiǎn)單的檢錯(cuò)方法。
①奇校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為奇數(shù),如00110,0101,00110,0001。②偶校驗(yàn):所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中,“1”的個(gè)數(shù)為偶數(shù),如10100,0101,00100,0001。
奇偶校驗(yàn)?zāi)軌驒z測(cè)出信息傳輸過(guò)程中的部分誤碼(1位誤碼能檢出,2位及2位以上誤碼不能檢出),同時(shí),它不能糾錯(cuò)。在發(fā)現(xiàn)錯(cuò)誤后,只能要求重發(fā)。但由于其實(shí)現(xiàn)簡(jiǎn)單,仍得到了廣泛使用。
(2)代碼和校驗(yàn):發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對(duì)數(shù)據(jù)塊(除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗(yàn)和”進(jìn)行比較。若相符則無(wú)差錯(cuò),否則即認(rèn)為傳送過(guò)程中出現(xiàn)了差錯(cuò)。
6.串行通信接口標(biāo)準(zhǔn)
串行接口標(biāo)準(zhǔn)指的是計(jì)算機(jī)或終端(數(shù)據(jù)終端設(shè)備(DTE))的串行接口電路與調(diào)制解調(diào)器MODEM(數(shù)據(jù)通信設(shè)備(DCE))之間的連接標(biāo)準(zhǔn)。
RS-323C標(biāo)準(zhǔn)是美國(guó)EIA(電子工業(yè)聯(lián)合會(huì))與Bell等公司一起開(kāi)發(fā),并于1969年公布的通信協(xié)議。
RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(ElectronicIndustryAssociation)代表美國(guó)電子工業(yè)協(xié)會(huì),RS(RecommendedStandard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS-232的最新一次修改(1969),在這之前有RS-232B、RS-232A。本標(biāo)準(zhǔn)規(guī)定了連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程。常用物理標(biāo)準(zhǔn)還有RS-232C、RS-422A、RS-423A、RS-485,這里只介紹RS-232C。
1)?RS-232C機(jī)械特性
由于RS-232C并未定義連接器的物理特性,因此出現(xiàn)DB-25、DB-15和DB-9各種類型的連接器,其引腳的定義也各不相同。下面介紹連接器DB-9。
(1)連接器:D型插座,采用25芯引腳。由于絕大多數(shù)設(shè)備只使用其中9個(gè)信號(hào),所以就有了9針連接器,如圖10-7所示。圖10-79針連接器
(2)電纜長(zhǎng)度:在通信速率低于20kb/s時(shí),RS-232C所直接連接的最大物理距離為15m(相當(dāng)于50ft)。
(3)最大直接傳輸距離:由RS-232C標(biāo)準(zhǔn)規(guī)定,若不使用MODEM,在碼元畸變小于4%的情況下,DTE和DCE之間最大傳輸距離為15m。
2)?RS-232C功能特性
9針RS-232C連接器的主要信號(hào)線的功能如表10-3所示。
3)?RS-232C電氣特性
RS-232C采用負(fù)邏輯電平,規(guī)定DC(-3~-15V)為邏輯1,DC(+3~+15V)為邏輯0,-3~+3V為過(guò)渡區(qū),不作定義。RS-232C是用正負(fù)電壓來(lái)表示邏輯狀態(tài)的,與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。
MAX232是一個(gè)電平轉(zhuǎn)換裝置,它將電腦的串行口RS-232C信號(hào)電平(-12V,+12V)轉(zhuǎn)換為單片機(jī)所用到的TTL信號(hào)電平(0,+5V),只要+5V電源與4~5個(gè)小電容(容值為10μF即可)就能同時(shí)提供雙向的電平調(diào)整。MAX232芯片接線圖及其引腳見(jiàn)圖10-8和圖10-9。圖10-8MAX232芯片接線圖
圖10-9MAX232芯片引腳圖
4)?RS-232C接口的連接
通信距離較近(小于15m)時(shí),可以用電纜線直接連接標(biāo)準(zhǔn)RS-232C端口;若距離較遠(yuǎn),則需附加調(diào)制解調(diào)器MODEM。
(1)微機(jī)利用RS-232C接口連接調(diào)制解調(diào)器,用于實(shí)現(xiàn)通過(guò)電話線路的遠(yuǎn)距離通信,如圖10-10所示。圖10-10遠(yuǎn)程RS-232C通信連接方式
(2)微機(jī)利用RS-232C接口直接連接進(jìn)行短距離通信,如圖10-11所示。因這種連接不使用調(diào)制解調(diào)器,故被稱為零調(diào)制解調(diào)器(NullMODEM)連接。最為簡(jiǎn)單且常用的是三線制接法,因?yàn)椴皇褂脤?duì)方的傳送控制信號(hào),只需三條接口線,即“發(fā)送數(shù)據(jù)”、“接收數(shù)據(jù)”和“信號(hào)地”,所以采用DB-9的9芯插頭座,傳輸線采用屏蔽雙絞線。圖10-11近程RS-232C通信連接方式
5)?RS-232C接口存在的問(wèn)題
由于RS-232C接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):
(1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因其與TTL電平不兼容,故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。
(2)傳輸速率較低,在異步傳輸時(shí)波特率為20kb/s。
(3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,故抗噪聲干擾性弱。
(4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50m,實(shí)際上也只能用在15m左右。
針對(duì)RS-232的不足,一些新的接口標(biāo)準(zhǔn)不斷出現(xiàn)。
(1)?RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(2~6)?V表示;邏輯“0”以兩線間的電壓差為?-(2~6)V表示。其接口信號(hào)電平比RS-232C降低了,因此不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。
(2)?RS-485的數(shù)據(jù)最高傳輸速率為10Mb/s。
(3)?RS-485接口采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性好。
(4)?RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為1219m。另外,RS-232C接口在總線上只允許連接1個(gè)收發(fā)器,即只具有單站能力;而RS-485接口在總線上允許連接多達(dá)128個(gè)收發(fā)器,即具有多站能力,這樣方便用戶利用單一的RS-485接口建立起設(shè)備網(wǎng)絡(luò)。
因RS-485接口具有良好的抗噪聲干擾性、長(zhǎng)距離傳輸和多站能力等優(yōu)點(diǎn),故成為首選的串行接口。10.3.2單片機(jī)的串行接口
51系列單片機(jī)上有一個(gè)可編程的全雙工串行通信口,可作為通用異步接收/發(fā)送器UART,通過(guò)引腳RXD[P3.0]和TXD[P3.1]可與外部電路進(jìn)行全雙工的串行異步通信,發(fā)送數(shù)據(jù)時(shí)由TXD端輸出,接收數(shù)據(jù)時(shí)由RXD端輸入。
51單片機(jī)串行端口基本特點(diǎn)如下:
(1)有4種基本工作方式,通過(guò)編程設(shè)置可使其工作在任一方式,以滿足不同場(chǎng)合的需要。
(2)有兩個(gè)控制寄存器SCON和PCON,用于設(shè)置工作方式及發(fā)送、接收的狀態(tài)等。
(3)有一個(gè)數(shù)據(jù)寄存器SBUF,該寄存器為發(fā)送和接收所共用。
(4)串行端口的波特率可用程序來(lái)控制。
1.串行接口的結(jié)構(gòu)
51單片機(jī)串行接口的內(nèi)部簡(jiǎn)化結(jié)構(gòu)如圖10-12所示。
圖10-12中有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們?cè)谔厥夤δ芗拇嫫髦械淖止?jié)地址均為99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫(xiě)入,不能讀出;接收緩沖器只能讀出,不能寫(xiě)入。圖10-12串行接口簡(jiǎn)化結(jié)構(gòu)
(1)發(fā)送數(shù)據(jù):執(zhí)行MOVSBUF,A指令。一幀數(shù)據(jù)先裝載到發(fā)送緩沖器SBUF,然后開(kāi)始由TXD引腳向外發(fā)送,發(fā)送完后使發(fā)送中斷標(biāo)志TI=1。
(2)接收數(shù)據(jù):執(zhí)行MOVA,SBUF指令。在串行接口接收中斷標(biāo)志RI=0的條件下,置允許接收位REN(SCON.4)=1就會(huì)啟動(dòng)接收過(guò)程,一幀數(shù)據(jù)進(jìn)入輸入移位寄存器,并裝載到接收緩沖器SBUF中,同時(shí)使RI=1。
2.串口控制寄存器
1)特殊功能寄存器SCON
SCON用于定義串行口的工作方式,即實(shí)施接收和發(fā)
送控制。其字節(jié)地址為98H,可進(jìn)行位尋址。其格式如圖10-13所示。圖10-13SCON的格式
(1)?SM0、SM1:串行口工作方式選擇位,其定義如表10-4所示。
(2)?SM2:多機(jī)通信控制位,僅用于方式2和方式3。當(dāng)發(fā)送數(shù)據(jù)時(shí),SM2必須由軟件設(shè)置為1。接收數(shù)據(jù)時(shí),如果SM2=1,只有接收到的第9位數(shù)據(jù)為1時(shí),RI才置位;如果SM2=0只要接收第9位數(shù)據(jù),RI就置位。另外,在方式0時(shí),SM2一定要等于0。
(3)?REN:接收允許控制位。由軟件置位(REN=1)才允許接收,又由軟件清0(REN=0)來(lái)禁止接收。
(4)?TB8:是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如:可約定作為奇偶校驗(yàn)位或在多機(jī)通信中作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)志位。
(5)?RB8:是接收數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1中,若SM2=0,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數(shù)據(jù)。
(6)?TI:發(fā)送中斷標(biāo)志。發(fā)送數(shù)據(jù)前必須將軟件清0,發(fā)送過(guò)程中TI一直為0,當(dāng)發(fā)送完一幀數(shù)據(jù)后,由硬件自動(dòng)置1。如果要再發(fā)送,必須用軟件再清0。在編寫(xiě)串行通信程序時(shí),可以使用軟件查詢TI的方法獲得數(shù)據(jù)是否已發(fā)送完畢。
(7)?RI:接收中斷標(biāo)志。接收數(shù)據(jù)前必須將軟件清0,接收過(guò)程中RI一直為0,當(dāng)接收完一幀數(shù)據(jù)后,由硬件自動(dòng)置1。如果要再接收,必須用軟件再清0。在編寫(xiě)串行通信程序時(shí),可以使用軟件查詢RI的方法獲得數(shù)據(jù)是否已接收完畢。
2)特殊功能寄存器PCON
PCON的字節(jié)地址為87H,其第7位SMOD是與串口的波特率設(shè)置有關(guān)的選擇位。PCON格式見(jiàn)圖10-14。圖10-14PCON格式
SMOD:波特率加倍位。在計(jì)算串行方式1、2、3的波特率時(shí),若SMOD=0則波特率不加倍;若SMOD=1則波特率加倍。復(fù)位時(shí),SMOD=0。
3.串行口工作方式
1)方式0
方式0時(shí),串行口為同步移位寄存器的輸入/輸出方式,主要用于擴(kuò)展并行I/O口。8位串行數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,TXD(P3.1)引腳用來(lái)輸出同步脈沖。波特率固定為fosc/12,其中fosc為晶振頻率。
(1)方式0輸出:RXD引腳輸出串行數(shù)據(jù),TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF,立即啟動(dòng)發(fā)送,將8位數(shù)據(jù)以fosc/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位。如要再發(fā)送下一字節(jié)數(shù)據(jù),必須用軟件先將TI清0。
(2)方式0輸入:RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(dāng)RI=0和REN=1時(shí),開(kāi)始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收緩沖器,并由硬件置位RI。如要再接收數(shù)據(jù),必須用軟件將RI清0。
(3)方式0應(yīng)用:圖10-15和圖10-16分別是方式0的發(fā)送電路和接收電路。74LS164/74LS165是移位寄存器,其作用是將單片機(jī)輸出的串行數(shù)據(jù)變?yōu)?位并行數(shù)據(jù),將外部輸入的8位并行數(shù)據(jù)變成串行數(shù)據(jù)。圖10-15方式0發(fā)送電路圖10-16方式0接收電路
【例10-2】請(qǐng)?jiān)囍捎么锌诳刂埔恢粩?shù)碼管顯示。
解(1)電路設(shè)計(jì)與制作。電路如圖10-17所示。在電路中,單片機(jī)與數(shù)碼管之間連接了一個(gè)串入并出移位寄存器74LS164。串行數(shù)據(jù)從單片機(jī)串行輸出口P3.0(RXD)加至74LS164的串行輸入端,在單片機(jī)P3.1(TXD)輸出的時(shí)鐘脈沖控制下,8位并行數(shù)據(jù)從并行輸出端Q0~Q7輸出,控制數(shù)碼管顯示。圖10-17利用串口控制一只LED顯示串口通過(guò)外接串并轉(zhuǎn)換器74LS164(串行輸入/并行輸出移位寄存器),可擴(kuò)展并行的I/O。
74LS164有兩個(gè)串行數(shù)據(jù)A、B輸入端,使用時(shí)一般把它們連在一起。
為清零輸入端,低電平有效。當(dāng)該端加入低電平時(shí),寄存器輸出Q0~Q7全為低電平。在正常工作情況下,清零輸入端接高電平。當(dāng)CP信號(hào)上升沿到來(lái)時(shí),數(shù)據(jù)從A、B端輸入并右移一位,Q0~Q7為并行數(shù)據(jù)輸出端,同時(shí)Q7端也是串行數(shù)據(jù)輸出端。對(duì)于串行輸入的數(shù)據(jù),最先輸入的從Q7輸出,最后進(jìn)入的從Q0輸出。而單片機(jī)串行口輸出的數(shù)據(jù)是低位在先,高位在后。因此,74LS164的高位輸出Q應(yīng)與數(shù)碼管的a端相連,并依次類推。
(2)編寫(xiě)在數(shù)碼管上依次顯示8個(gè)數(shù)字的程序。
//*******串行口控制一只數(shù)碼管程序**********//
;程序功能:在數(shù)碼管上依次顯示8個(gè)數(shù)
;入口參數(shù):在內(nèi)存20H處存放8個(gè)0~9任意排列的整數(shù)
ORG0000H
AJMPMAIN ;跳轉(zhuǎn)到主程序
ORG0030H
MAIN: MOVSCON,#00H ;設(shè)串行口工作在方式0
MOVR0,#20H;確定數(shù)據(jù)存放起始單元地址
MOVR2,#8
;確定數(shù)據(jù)長(zhǎng)度
AGIN: MOVA,@R0
;取第一個(gè)數(shù)送A
MOVDPTR,#TAB ;取表頭地址送DPTR
MOVCA,@A+DPTR ;查數(shù)據(jù)
MOVSBUF,A ;送段碼
JNBTI,$ ;判斷是否發(fā)送完畢
CLRTI ;清標(biāo)志位
ACALLDELAY_1MS ;顯示延時(shí)
INCR0 ;地址指針加1
DJNZR2,AGIN ;判斷顯示到否
SJMP$
DELAY_1MS: MOVR7,#02H;延時(shí)1ms子程序
DL1: MOVR6,#0FFH
DL2: DJNZR6,DL2
DJNZR7,DL1
RET
TAB: DB3FH,06H,5BH,4FH,66H,6DH;
“0~9”共陰極字型碼
DB7DH,07H,7FH,6FH
END
2)方式1
方式1為波特率可變的10位異步通信接口方式。可以發(fā)送或接收一幀信息,一幀信息包括1位起始位0,8位數(shù)據(jù)位,1位停止位1。其中的起始位和停止位在發(fā)送時(shí)自動(dòng)插入。圖10-18為串行口方式1的數(shù)據(jù)格式。圖10-18串行口方式1的數(shù)據(jù)格式
(1)方式1輸出:當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF且TI=0時(shí),就啟動(dòng)發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后就由硬件置位TI。
(2)方式1輸入:在REN=1時(shí),串行口采樣RXD引腳。當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是串行發(fā)送來(lái)的一幀數(shù)據(jù)的開(kāi)始位0,從而開(kāi)始接收一幀數(shù)據(jù)。只有當(dāng)8位數(shù)據(jù)接收完,而且(RI)=0、(SM2)=0或接收到的第9位數(shù)據(jù)為1時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收緩沖器,并由硬件置位中斷標(biāo)志RI;否則信息會(huì)丟失。因此,在方式1接收時(shí),應(yīng)先用軟件清零RI和SM2標(biāo)志。
3)方式2
方式2為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。圖10-19為串行口方式2的數(shù)據(jù)格式。圖10-19串行口方式2的數(shù)據(jù)格式
(1)方式2輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息,該幀信息為11位。附加的第9位來(lái)自SCON寄存器的TB8位,用軟件置位或復(fù)位,它可作為多機(jī)通信中地址/數(shù)據(jù)信息的標(biāo)志位,也可作為數(shù)據(jù)的奇偶校驗(yàn)位。
當(dāng)CPU執(zhí)行一條指令將數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF且TI=0時(shí),就啟動(dòng)發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。
(2)方式2輸入:在REN=1時(shí),串行口采樣RXD引腳。當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是串行發(fā)送來(lái)的一幀數(shù)據(jù)的開(kāi)始位0,從而開(kāi)始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù),而且(RI)=0、(SM2)=0或接收到的第9位數(shù)據(jù)為1時(shí),第9位數(shù)據(jù)才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收緩沖器,并由硬件置位中斷標(biāo)志RI。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,將繼續(xù)搜索RXD引腳的負(fù)跳變。
4)方式3
方式3為波特率可變的11位UART方式。
4.波特率的選擇
在串行通信中,收發(fā)雙方的數(shù)據(jù)傳送速率(波特率)要有一定的約定。在51單片機(jī)串行口的四種工作方式中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定(如表10-5所示)。
1)方式0
方式0的波特率固定為fosc/12。
2)方式2
方式2的波特率由PCON中的選擇位SMOD來(lái)決定,可表示為
方式2的波特率=(2SMOD/64)×fosc
也就是當(dāng)SMOD=1時(shí),波特率為(1/32)×fosc;當(dāng)SMOD=0時(shí),波特率為(1/64)×fosc。
3)方式1和方式3
方式1的波特率=(2SMOD/32)×(T1溢出率)
??方式3的波特率=(2SMOD/32)×(T1溢出率)
因?yàn)槎〞r(shí)器方式2為自動(dòng)重裝入初值的8位定時(shí)器/計(jì)數(shù)器模式,所以用它來(lái)做波特率發(fā)生器最恰當(dāng)。這種方式下,T1的溢出率計(jì)算式可以表示為T1溢出率=在單片機(jī)的應(yīng)用中,常用的晶振頻率為12MHz和11.0592MHz。因此,選用的波特率也相對(duì)固定。而當(dāng)晶振頻率選用11.0592MHz時(shí),最易獲得標(biāo)準(zhǔn)的波特率,故很多單片機(jī)系統(tǒng)選用這個(gè)看起來(lái)“怪”的晶振就是這個(gè)道理。表10-5列出了定時(shí)器T1工作于方式2常用波特率及初始值。10.3.3單片機(jī)與PC機(jī)的通信
IBMPC是國(guó)內(nèi)目前應(yīng)用最廣泛的微機(jī),在與單片機(jī)進(jìn)行串行接口后,可以方便地構(gòu)成主從分布式多微機(jī)系統(tǒng)。從機(jī)作數(shù)據(jù)采集或?qū)崟r(shí)控制,主機(jī)作數(shù)據(jù)處理和中央管理等。這種多微機(jī)系統(tǒng)在過(guò)程控制、儀器儀表、生產(chǎn)自動(dòng)化和企業(yè)管理等方面都有廣泛應(yīng)用。
PC機(jī)和單片機(jī)通信時(shí),兩者一般都有一定的距離。為了克服線路上的電損耗,避免信息出錯(cuò),常采用RS-232C電平實(shí)現(xiàn)信號(hào)之間的傳輸。而RS-232C電平采用負(fù)邏輯,單片機(jī)TTL電平是正邏輯,因此單片機(jī)與PC機(jī)之間必須外接電路
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衢州學(xué)院《安裝工程計(jì)量》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南理工學(xué)院《地下空間利用》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)沙南方職業(yè)學(xué)院《短視頻創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都東軟學(xué)院《新聞發(fā)布理論與實(shí)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黃河水利職業(yè)技術(shù)學(xué)院《地籍測(cè)量》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海應(yīng)用技術(shù)大學(xué)《有限元分析及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州理工學(xué)院《現(xiàn)代加工技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江工貿(mào)職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)圖形學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 黃河交通學(xué)院《大型軟件系統(tǒng)設(shè)計(jì)與體系結(jié)構(gòu)》2023-2024學(xué)年第二學(xué)期期末試卷
- 必修6 項(xiàng)目二 設(shè)計(jì)制作交通信號(hào)燈 教學(xué)設(shè)計(jì)-滬科版(2019)信息技術(shù)教材選擇性
- 四則混合運(yùn)算100道(專項(xiàng)訓(xùn)練)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 智慧燃?xì)獍踩O(jiān)管平臺(tái)整體解決方案
- 《鴻門宴》優(yōu)教課件1
- 工廠用電安全培訓(xùn)課件(課件)
- 風(fēng)電項(xiàng)目施工進(jìn)度計(jì)劃
- 急性呼吸窘迫綜合征-課件
- DB14∕T 1319-2016 公路工程標(biāo)準(zhǔn)工程量清單及計(jì)量規(guī)范
- 2024年吉林省中考語(yǔ)文真題版有答案
- 如何在小學(xué)語(yǔ)文教學(xué)中落實(shí)單元語(yǔ)文要素
- 《人類起源的演化過(guò)程》閱讀測(cè)試題及答案
- 2024年知識(shí)競(jìng)賽-競(jìng)彩知識(shí)筆試參考題庫(kù)含答案
評(píng)論
0/150
提交評(píng)論