片機原理及應(yīng)用教程(c語言版)周國運 第7章 mcs 51單片機的串行口新_第1頁
片機原理及應(yīng)用教程(c語言版)周國運 第7章 mcs 51單片機的串行口新_第2頁
片機原理及應(yīng)用教程(c語言版)周國運 第7章 mcs 51單片機的串行口新_第3頁
片機原理及應(yīng)用教程(c語言版)周國運 第7章 mcs 51單片機的串行口新_第4頁
片機原理及應(yīng)用教程(c語言版)周國運 第7章 mcs 51單片機的串行口新_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及應(yīng)用教程(C語言版)第7章MCS51單片機的串行口主編周國運中國水利水電出版社2018/1/101第7章MCS51單片機串行口目錄71串行通信基本知識72串行口結(jié)構(gòu)及控制73串行口工作方式74串行口應(yīng)用舉例75單片機與PC機通信接口電路2018/1/102本章要點本章主要講述MCS51單片機串行口的結(jié)構(gòu)、工作原理以及應(yīng)用。主要內(nèi)容包括串行通信基本知識、MCS51單片機串行口結(jié)構(gòu)、串行口工作方式以及單片機與PC機通信的接口電路。2018/1/10371串行通信基本知識主要內(nèi)容711數(shù)據(jù)通信712異步通信和同步通信713波特率714通信方向715串行通信接口種類2018/1/104711數(shù)據(jù)通信計算機與外界的信息交換稱為通信?;镜耐ㄐ欧绞接胁⑿型ㄐ藕痛型ㄐ艃煞N。1并行通信單位信息(通常指一個字節(jié))的各位數(shù)據(jù)同時傳送的通信方法稱為并行通信。2串行通信單位信息的各位數(shù)據(jù)被分時一位一位依次順序傳送的通信方式稱為串行通信。2018/1/105711數(shù)據(jù)通信圖71并行通信示意圖兩種通信特點并行通信連線多,速度快,適合近距離通信;串行通信連線少,速度慢,適合遠(yuǎn)距離通信。圖71并行通信示意圖圖72串行通信示意圖RXDTXD89C52GNDTXDRXDGND外部設(shè)備2018/1/1061異步通信(時鐘不同,甚至頻率不同)異步通信中,傳送的數(shù)據(jù)可以是一個字符代碼或一個字節(jié)數(shù)據(jù),數(shù)據(jù)以幀的形式一幀一幀傳送。712異步通信和同步通信圖73異步通信的一幀數(shù)據(jù)格式10/10/10/100/10/10/10/10/10/118位數(shù)據(jù)第N幀00/1空閑位或停止位起始位停止位校驗位空閑位起始位2018/1/1072同步通信(用同一個時鐘)在同步通信中,每一數(shù)據(jù)塊發(fā)送開始時,先發(fā)送一個或兩個同步字符,使發(fā)送與接收取得同步,然后再順序發(fā)送數(shù)據(jù)。數(shù)據(jù)塊的各個字符間取消起始位和停止位,所以通信速度得以提高。712異步通信和同步通信圖74同步通信數(shù)據(jù)幀格式2018/1/108713波特率在串行通信中,對數(shù)據(jù)傳送速度有一定要求。波特率表示每秒傳送的位數(shù),單位為B/S(記作波特)。例如數(shù)據(jù)傳送速率為每秒鐘10個字符,若每個字符的一幀為11位,則傳送波持率為11B/字符10字符/S110B/S異步通信的傳送速率一般在5019200B/S之間。2018/1/109714通信方向單工方式一對傳輸線只允許單方向傳送數(shù)據(jù);半雙工方式一對傳輸線允許向兩個方向中的任一方向傳送數(shù)據(jù),但不能同時進行;全雙工方式用兩對傳輸線連接在發(fā)送器和接收器上,發(fā)送和接收能同時進行。2018/1/1010714通信方向圖75串行通信傳輸方式發(fā)送器發(fā)送器數(shù)據(jù)流(B)半雙工方式接收器接收器接收器發(fā)送器發(fā)送器發(fā)送器數(shù)據(jù)流(A)單工方式(C)全雙工方式接收器接收器2018/1/1011715串行通信接口種類根據(jù)串行通信格式及約定(如同步方式、通信速率、數(shù)據(jù)塊格式等)不同,形成了許多串行通信接口標(biāo)準(zhǔn),如常見的UART(通用異步串行通信接口)USB(通用串行總線接口)I2C(集成電路間的串行總線)SPI(同步串行外設(shè)總線)485總線、CAN總線接口等2018/1/101272串行口結(jié)構(gòu)及控制主要內(nèi)容721MCS51串行口結(jié)構(gòu)722特殊功能寄存器723波特率設(shè)計2018/1/1013721MCS51串行口結(jié)構(gòu)圖76串行口方式1、3內(nèi)部結(jié)構(gòu)示意簡圖分為三個部分時鐘、發(fā)送部分、接收部分16發(fā)送SBUF99H16輸入移位寄存器TXD寫SBUF發(fā)送程序讀SBUF接收程序RITI移位時鐘RXD裝載SBUF自動12TH1TL1FOSC2SMOD1SMOD0T1溢出率接收SBUF99HP30P312TH2TL2FOSCT2溢出率2018/1/1014722與串行口有關(guān)的特殊功能寄存器1控制狀態(tài)寄存器SCON功能設(shè)置串行口的工作方式和標(biāo)識串行口狀態(tài)。字節(jié)地址98H,可位尋址。復(fù)位值00000000B。格式如下D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI2018/1/1015LSM0和SM1(SCON7、SCON6)串行口工作方式選擇位。722與串行口有關(guān)的特殊功能寄存器SM0SM1工作方式功能說明波特率00方式0同步移位寄存器FOSC/1201方式110位異步通信可變,T1或T2提供10方式211位UART、可多機FOSC/64或FOSC/3211方式311位UART、可多機可變,T1或T2提供LSM2(SCON5)多機通信控制位,在方式2或3中使用。LREN(SCON4)允許接收控制位。設(shè)置1,允許接收;清0禁止接收。2018/1/1016LTB8(SCON3)發(fā)送數(shù)據(jù)的第9位。LRB8(SCON2)接收數(shù)據(jù)的第9位。LTI(SCON1)發(fā)送中斷標(biāo)志。LRI(SCON0)接收中斷標(biāo)志。722與串行口有關(guān)的特殊功能寄存器關(guān)于TI和RI串行發(fā)送中斷標(biāo)志TI和接收中斷RI是同一個中斷源,CPU不知道是發(fā)送中斷標(biāo)志TI還是接收中斷標(biāo)志RI產(chǎn)生的中斷請求,所以,在全雙工通信時,必須由軟件來判別。2018/1/1017多機通信實現(xiàn)的原理各個從機的SM2設(shè)置為1;主機TB8發(fā)送1表明是地址,選擇接收機;主機TB8發(fā)送0為數(shù)據(jù)。(1)實現(xiàn)的條件各個從機的SM2設(shè)置為1。當(dāng)SM21時RB81,則保留接收到的數(shù)據(jù);RB80則丟棄。(2)實現(xiàn)的方法主機先發(fā)送從機地址,并且TB8為1。這時各個從機均可接收此地址,目標(biāo)從機,則對自己的SM2清0;其它從機保留SM21。主機再發(fā)送數(shù)據(jù),并且TB8為0這時目標(biāo)從機正常接收數(shù)據(jù),其它從機均丟棄。722與串行口有關(guān)的特殊功能寄存器地址2018/1/10182電源控制寄存器PCON電源控制寄存器PCON地址為87H中只有SMOD位與串行口工作有關(guān)。D7D6D5D4D3D2D1D0SMODGF1GF0PDIDL722與串行口有關(guān)的特殊功能寄存器SMOD(PCON7)波特率倍增位。串行口工作于方式1、方式2和方式3時,SMOD1,串行口波特率加倍。復(fù)位值00000000B。不能進行位尋址。2018/1/1019723波特率設(shè)計方式0和方式2的波特率是固定的,方式1和方式3的波特率是由定時器T1的溢出率來決定的。在增強型單片機中,也可以使用T2作波特率發(fā)生器。1方式0的波特率方式0為同步移位寄存器方式。固定為振蕩頻率的1/12。并不受PCON寄存器中SMOD位的影響。方式0的波特率FOSC/122018/1/10202方式2的波特率方式2是波特率只有兩種(FOSC/64或FOSC/32)、11位的異步通信,可多機通信。時鐘接收與發(fā)送的時鐘直接來自振蕩頻率FOSC,是FOSC/2,并且還與PCON中SMOD位有關(guān)。其波特率為當(dāng)SMOD0時,波特率為FOSC的1/64;若SMOD1,則波特率為FOSC的1/32。即方式2的波特率2SMODFOSC/64723波特率設(shè)計2018/1/10213方式1和方式3的波特率(1)T1作波特率發(fā)生器在最典型應(yīng)用中,定時器T1選用模式2定時,此時N8,設(shè)定時器的初值為X于是,X256方式1、3的波特率(T1溢出速率)即波特率/(2N初值)723波特率設(shè)計2018/1/1022(2)T2作波特率發(fā)生器設(shè)寄存器T2CON的位TCLK1和(或)RCLK1時,允許串行口從T2獲得發(fā)送和(或)接收的波特率。串行口方式1、3的波特率T2溢出率/16定時器2作波特率發(fā)生器時,計數(shù)在每個狀態(tài)周期遞增。這樣方式1、3的波特率FBRCAP2H、RCAP2L65536FOSC/FB/32控制字、模式字T2CON00110100B34HT2MOD00H723波特率設(shè)計2018/1/1023主要內(nèi)容731串行口方式0732串行口方式1733串行口方式2和方式373串行口工作方式2018/1/1024731串行口方式0方式0為同步移位寄存器輸入/輸出方式,常用于擴展I/O口。RXD為數(shù)據(jù)輸入或輸出,TXD輸出移位時鐘,作為外接部件的同步信號。方式0下,收/發(fā)的僅8位數(shù)據(jù),無起始位、奇偶校驗位及停止位,低位在前、高位在后;波特率是固定的,為FOSC/12,即機器周期頻率。啟動發(fā)送TI0、寫SBUF啟動接收RI0、REN置12018/1/1025731串行口方式0方式方式0發(fā)送方式0接收2018/1/1026731串行口方式011621531441351261171089SH/LDCLKE并F入GH串出QGND74LS165VCC時鐘禁止DC并B入A串入QH串出并入/串出11621531441351261171089Q1Q2Q3Q4Q5Q6Q7GND74HC595串入/并出串入Q0DSOEST_CPSH_CPMRQ72018/1/1027731串行口方式0串A入BQAQBQCQDGNDVCCQHQGQFQECLRCLK114213312411510697874LS16411621531441351261171089Q1Q2Q3Q4Q5Q6Q7GND74HC595VCCQ0DSOEST_CPSH_CPMRQ7并出串入/并出串入/并出串入2018/1/1028用串行口方式0擴展并行輸出/輸入口731串行口方式0發(fā)送電路接收電路7SH/LD擴展并行輸出擴展并行輸入2018/1/1029732串行口方式1方式1真正用于串行發(fā)送或接收。TXD與RXD分別用于發(fā)送、接收數(shù)據(jù)。幀格式1位起始位、8位數(shù)據(jù)位(低位在前)、1位停止位,共10位。在接收時,停止位進入SCON的RB8此方式的波特率可調(diào),由T1或T2控制。SCON01010000B0X501、方式1發(fā)送TI0、寫SBUF啟動發(fā)送2018/1/1030731串行口方式0方式方式1接收方式1發(fā)送2018/1/1031732串行口方式12、方式1接收1)接收條件SCON中的REN置12)接收過程REN置1后,串行口對接收引腳RXD檢測,當(dāng)RXD由高變低時開始移位接收;接收完后將停止位裝入RB8中。3)接收的數(shù)據(jù)有效的條件兩條A、RI0;B、SM20,或者SM21并且RB81滿足以上2條,則將8位數(shù)據(jù)裝入SBUF,且RI置1。有以下情況之一則數(shù)據(jù)無效A)RI1;B)SM21并且RB80注意除了方式2、3的多機通信之外,SM2應(yīng)清02018/1/1032733串行口方式2和方式3串行口工作在方式2和方式3均為每幀11位異步通信格式,由TXD和RXD發(fā)送與接收。方式2和3的操作是完全一樣的,不同的只是特波率。每幀11位即1位起始位、8位數(shù)據(jù)位(低位在前)、1位可編程的第9數(shù)據(jù)位和1位停止位。發(fā)送時,第9數(shù)據(jù)位(TB8)可以設(shè)置為1或0,在校驗時可將奇偶位裝入TB8;接收時,第9數(shù)據(jù)位進入SCON的RB8。SCON10010000B0X90方式2接收SCON11010000B0XD0方式3接收2018/1/103374串行口應(yīng)用舉例主要內(nèi)容741同步方式應(yīng)用742異步方式應(yīng)用2018/1/1034741同步方式應(yīng)用MSC51單片機的串行口在方式0時,以同步方式操作。外接串入/并出或并入/串出器件,可實現(xiàn)I/O口的擴展。例72用89C52串行口外接74HC595串入/并出移位寄存器擴展8位并行輸出口,8位并行輸出口的每位都接一個發(fā)光二極管,要求8位發(fā)光二極管循環(huán)點亮。數(shù)據(jù)的輸出通過RXD發(fā)送,移位時鐘通過TXD送出,74HC595用于串/并轉(zhuǎn)換。2018/1/1035741同步方式應(yīng)用圖713方式0擴展輸出電路89C52RXDTXDP36DSOE74HC595SH_CPMRQ7ST_CP級聯(lián)輸出輸出清02018/1/1036C語言程序清單INCLUDEINCLUDESBITP1_0P10VOIDMAINUNSIGNEDCHARISCON0X00/串行口方式0初始化ES1EA1WHILE1FORI0ISBITLOAD165P10SBITKEYP112018/1/1046C語言程序清單INCLUDESBITLOAD165P10SBITKEYP11VOIDDELAY10XMSUNSIGNEDCHARX/設(shè)晶振為12MHZUNSIGNEDINTIWHILEXFORI0IUNSIGNEDCHARI0,ARRAY16_AT_0X50/數(shù)據(jù)區(qū)VOIDMAINSCON0XC0/置串口方式3,只發(fā)TMOD0X20/定時器初始化TL1250TH1250TR11ES1EA1/中斷初始化ACCARRAYI/發(fā)送第一個數(shù)據(jù)送TB8P/累加器,目的取P位SBUFACC/發(fā)送一個數(shù)據(jù)WHILE1/等待中斷742異步方式應(yīng)用2018/1/1052VOIDSERIAL_INTINTERRUPT4/串口中斷服務(wù)程序IFRIRI0ELSETI0/清發(fā)中斷標(biāo)志ACCARRAYI/取下一個數(shù)據(jù)TB8PSBUFACCIFI14/發(fā)送完畢,ES0/禁止串口中斷742異步方式應(yīng)用2018/1/1053匯編語言程序清單ORG0000HSJMPMAIN上電,轉(zhuǎn)主程序ORG0023HSJMPSERVER轉(zhuǎn)中斷服務(wù)程序MAINMOVSP,0DFH設(shè)置堆棧指針MOVSCON,0C0H設(shè)置串口方式3發(fā)送MOVTMOD,20HT1以模式2定時MOVTL1,0F4HMOVTH1,0F4HSETBTR1SETBES允許串行口中斷SETBEACPU開中斷MOVR0,50HMOVR7,15742異步方式應(yīng)用2018/1/1054MOVA,R0MOVC,PMOVTB8,C送奇偶標(biāo)志位到TB8MOVSBUF,A發(fā)送第一個數(shù)據(jù)SJMPSERVERJBCRI,ENDT清除發(fā)送中斷標(biāo)志CLRTIINCR0修改數(shù)據(jù)地址MOVA,R0MOVC,PMOVTB8,CMOVSBUF,A發(fā)送下一個數(shù)據(jù)DJNZR7,ENDT判斷數(shù)據(jù)塊是否發(fā)送完CLRES否則,禁止串行口中斷ENDTRETI中斷返回742異步方式應(yīng)用2018/1/1055例75編寫一單片機程序,將從串行口接收的16字節(jié)數(shù)據(jù)送入片內(nèi)RAM的50H5FH單元中。要求波特率為2400B/S,作奇偶校驗,設(shè)單片機的晶振頻率為110592MHZ。解RB8作奇偶校驗位,接收時,將接收到的數(shù)據(jù)的奇偶校驗位與RB8對比,以判斷正確與否。將串行口設(shè)置為方式3工作。用中斷方式接收。742異步方式應(yīng)用2018/1/1056C語言程序清單INCLUDEUNSIGNEDCHARUNSIGNEDCHARI0,ARRAY16_AT_0X50/定義數(shù)據(jù)VOIDMAINSCON0XD0/設(shè)置串口方式3,允許接收TMOD0X20/T1模式2定時TH10XF4TL10XF4TR11ES1EA1WHILE1742異步方式應(yīng)用2018/1/1057VOIDINT_SERINTERRUPT4IFTITI0/循環(huán)接收16個數(shù)據(jù)ELSERI0ACCSBUFIFRB8P/校驗正確ARRAYIACCIFI15ES0ELSE/校驗不正確F01ERR742異步方式應(yīng)用2018/1/1058C語言程序清單INCLUDEUNSIGNEDCHARIUNSIGNEDCHARARRAY16_AT_0X50/接收緩沖區(qū)VOIDMAINSCON0XD0/設(shè)置串口方式3,允許接收TMOD0X20/T1模式2定時TH10XF4TL10XF4TR11742異步方式應(yīng)用2018/1/1059FORI0IUNSIGNEDCHARBUFFER,KVOIDMAINSCON0XD0/置串口方式3,允許接收TMOD0X20/T1以模式2定時TL10XFDTH10XFDTR11ES1/開串行口中斷EA1/開總中斷742異步方式應(yīng)用2018/1/1064WHILE1KKEY/讀取按鍵值IFK0XFF/無鍵按下返回0XFFACCK/將鍵值送累加器,取P位TB8P/送TB8SBUFACC/發(fā)送DISPLAY/顯示程序742異步方式應(yīng)用2018/1/1065VOIDSERIAL_SERVERINTERRUPT4IFTI/發(fā)送引起,清TITI0ELSE/否則,接收引起RI0ACCSBUF/讀取接收數(shù)據(jù)IFRB8P/校驗正確,BUFFERACC/存入緩沖區(qū)742異步方式應(yīng)用2018/1/1066匯編語言程序清單ORG0000HSJMPMAIN跳轉(zhuǎn)到主程序ORG23HLJMPS_SERV跳轉(zhuǎn)到串口中斷服務(wù)程序MAINMOVSP,0DFH設(shè)置堆棧指針MOVSCON,0D0H串口初始化MOVTMOD,20HT1以模式2定時MOVTL1,0FDHMOVTH1,0FDH定時器1賦初值742異步方式應(yīng)用2018/1/1067SETBTR1啟動定時器1SETBES開中斷SETBEALOOPLCALLKEY讀取按鍵存于A中,有鍵按下返回鍵值,CJNEA,0FFH,SEND無鍵按下返回0FFH,有鍵按下轉(zhuǎn)發(fā)送NEXTLCALLDISPLAY調(diào)用顯示SJMPLOOP主程序循環(huán)742異步方式應(yīng)用2018/1/1068SENDMOVC,PMOVTB8,CMOVSBUF,A帶校驗位發(fā)送LJMPNEXT循環(huán)S_SERV;中斷服務(wù)程序JBCRI,RECV是接收中斷轉(zhuǎn)接收處理CLRTI是發(fā)送中斷,清TIRETI742異步方式應(yīng)用2018/1/1069RECV接收處理程序MOVA,SBUF取接收值送AJBP,ONE校驗位為1,轉(zhuǎn)JBRB8,I_END校驗錯,轉(zhuǎn)中斷返回SJMPRIGHT校驗正確,正確處理ONEJNBRB8,I_END校驗錯,轉(zhuǎn)中斷返回RIGHTMOVBUFFER,A接收數(shù)據(jù)送緩沖區(qū)I_ENDRETI中斷返回742異步方式應(yīng)用2018/1/107075單片機與PC機通信的接口電路主要內(nèi)容761MAX232芯片簡介762PC機與89C52串行通信的接口電路2018/1/1071利用PC機配置的異步通信適配器,可以很方便地完成PC機與單片機的數(shù)據(jù)通信。PC機與89C52單片機最簡單的連接是零調(diào)制3線經(jīng)濟型,這是進行全雙工通信所必須的最少數(shù)目的線路。75單片機與PC機通信的接口電路2018/1/1072串行通信電平89C52單片機為TTL電平PC機串行接口是RS232C標(biāo)準(zhǔn)數(shù)字值10TTL電平5V0V232電平5V15V5V15V串行通信電平轉(zhuǎn)換用MAX232等芯片75單片機與PC機通信的接口電路

溫馨提示

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

評論

0/150

提交評論