版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/6/21項(xiàng)目6單片機(jī)的串行口及其應(yīng)用串行口的結(jié)構(gòu)串行口控制寄存器單片機(jī)串行口的設(shè)計(jì)方法本章主要內(nèi)容:?jiǎn)纹瑱C(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第1頁(yè)。本章目錄6.1任務(wù)1認(rèn)識(shí)串行通信與串行口6.2任務(wù)2單片機(jī)的雙機(jī)通信6.3任務(wù)3單片機(jī)與PC串行通信6.4任務(wù)4遠(yuǎn)程控制交通燈的設(shè)計(jì)
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第2頁(yè)。2023/6/236.1任務(wù)1認(rèn)識(shí)串行通信與串行口
6.1.1串行通信的概念通信的基本方式分為并行通信和串行通信兩種。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第3頁(yè)。并行通信是構(gòu)成數(shù)據(jù)信息的各位同時(shí)進(jìn)行傳送的通信方式。例如8位數(shù)據(jù)或16位數(shù)據(jù)并行傳送。優(yōu)點(diǎn)是傳輸速度快。缺點(diǎn)是需要多條傳輸線,當(dāng)距離較遠(yuǎn)、位數(shù)又多時(shí),導(dǎo)致通信線路復(fù)雜且成本高。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第4頁(yè)。串行通信是數(shù)據(jù)一位接一位地順序傳送。特點(diǎn)是通信線路簡(jiǎn)單,只要一對(duì)傳輸線就可以實(shí)現(xiàn)通信(如電話線),從而大大地降低了成本,特別適用于遠(yuǎn)距離通信。缺點(diǎn)是傳送速度慢。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第5頁(yè)。串行通信可分為異步傳送和同步傳送兩種基本方式。1.串行通信的分類(1)異步通信異步傳送的特點(diǎn)是數(shù)據(jù)在線路上的傳送不連續(xù),在傳送時(shí),數(shù)據(jù)是以字符為單位組成字符幀進(jìn)行傳送的。在異步通信中,接收端是依靠字符幀(CharacterFrame)格式來(lái)判斷發(fā)送端是何時(shí)開始發(fā)送,何時(shí)結(jié)束發(fā)送的。字符幀格式是異步通信的一個(gè)重要指標(biāo),是CPU與外設(shè)之間事先的約定。字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位4個(gè)部分組成。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第6頁(yè)。圖6-2串行異步傳送的字符格幀式在串行通信中,兩相鄰字符幀之間,可以沒(méi)有空閑位,也可以有若干空閑位,這由用戶來(lái)決定。圖6-2(a)為無(wú)空閑位的字符幀,圖6-2(b)表示有3個(gè)空閑位的字符幀格式。
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第7頁(yè)。(2)同步通信同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,1次通信只傳輸一幀信息,即1次傳送1組數(shù)據(jù)。這里的信息幀和異步通信的字符幀不同,通常有若干個(gè)數(shù)據(jù)字符,如圖6-3所示。圖6-3(a)為單同步字符幀結(jié)構(gòu),圖6-3(b)為雙同步字符幀結(jié)構(gòu)圖6-3同步通信的字符幀格式單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第8頁(yè)。2.串行通信的制式在串行通信中數(shù)據(jù)是在兩個(gè)站之間進(jìn)行傳送的,按照數(shù)據(jù)傳送方向,串行通信可分為單工、半雙工和全雙工三種制式。
(1)單工制式:在這種制式下,通信線的一端接發(fā)送器,另一端接接收器,數(shù)據(jù)只能按照一個(gè)固定的方向傳送。(2)半雙工制式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行。(3)全雙工制式:全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,可以同時(shí)發(fā)送和接收。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第9頁(yè)。3.串行通信的接口電路串行接口電路的種類和型號(hào)很多。能夠完成異步通信的硬件電路稱為UART,即通用異步接收器/發(fā)送器;能夠完成同步通信的硬件電路稱為USRT;既能夠完成異步又能同步通信的硬件電路稱為USART.從本質(zhì)上說(shuō),所有的串行接口電路都是以并行數(shù)據(jù)形式與CPU接口,以串行數(shù)據(jù)形式與外部邏輯接口。它們的基本功能都是從外部邏輯接收串行數(shù)據(jù),轉(zhuǎn)換成并行數(shù)據(jù)后傳送給CPU,或從CPU接收并行數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù)后輸出到外部邏輯。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第10頁(yè)。6.1.2串行通信的接口異步串行通信接口標(biāo)準(zhǔn)主要有三類:RS-232C接口RS-449、RS-422和RS-485接口20mA電流環(huán)1.RS-232C接口
(1)RS-232C信息格式標(biāo)準(zhǔn)單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第11頁(yè)。(2)RS-232C總線規(guī)定及其電平轉(zhuǎn)換器RS-232C采用的是負(fù)邏輯,即:
邏輯“0”:+5V~+15V邏輯“1”:-5V~-15V因此,RS-232C不能和TTL電平直接相連,使用時(shí)必須進(jìn)行電平轉(zhuǎn)換。常用的電平轉(zhuǎn)換集成電路是傳輸線驅(qū)動(dòng)器MC1488和傳輸線接收器MC1489。圖6-6接收器和發(fā)送器電平轉(zhuǎn)換集成電路單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第12頁(yè)。(3)RS-232C總線規(guī)定RS-232C標(biāo)準(zhǔn)總線為25根,采用標(biāo)準(zhǔn)的DB-25或DB-9的D形插頭座。目前計(jì)算機(jī)上只保留有兩個(gè)DB-9插頭,即COM1和COM2兩個(gè)串行接口。圖6-8RS-232C引腳圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第13頁(yè)。表6-1DB-9連接器各引腳各引腳定義引腳名稱功能引腳名稱功能1DCD載波檢測(cè)6DSR數(shù)據(jù)準(zhǔn)備完成2RXD發(fā)送數(shù)據(jù)7RTS發(fā)送請(qǐng)求3TXD接收數(shù)據(jù)8CTS發(fā)送清除4DTR數(shù)據(jù)終端準(zhǔn)備完成9RI振鈴指示5SG(GND)信號(hào)地線在最簡(jiǎn)單的全雙工系統(tǒng)中,僅用發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和信號(hào)地三根線即可,對(duì)于MCS-51單片機(jī),利用其RXD(串行數(shù)據(jù)接收端)線、TXD(串行數(shù)據(jù)發(fā)送端)線和一根地線,就可以構(gòu)成符合RS-232C接口標(biāo)準(zhǔn)的全雙工通信口。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第14頁(yè)。在遠(yuǎn)距離通信時(shí),一般要加MODEM(調(diào)制解調(diào)器),當(dāng)計(jì)算機(jī)與MODEM連接時(shí),只要將編號(hào)相同的引腳連接起來(lái)即可。圖6-9RS-232-C(DB9)與調(diào)制解調(diào)器的連接圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第15頁(yè)。在距離較近(小于15m)的情況下進(jìn)行通信時(shí),不需要使用MODEM,兩個(gè)計(jì)算機(jī)的RS-232-C接口可以直接互連。圖6-10兩個(gè)RS-232C(DB9)終端設(shè)備的連接圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第16頁(yè)。2.RS-449、RS-422A、RS-485標(biāo)準(zhǔn)接口RS-449標(biāo)準(zhǔn)除了與RS-232C兼容外,在提高傳輸速率,增加傳輸距離,改善電氣性能等方面有了很大改進(jìn)。
(1)RS-449標(biāo)準(zhǔn)接口RS-449在很多方面可以代替RS-232C使用。RS-449與RS-232C的主要差別在于信號(hào)在導(dǎo)線上的傳輸方法不同:RS-232C是利用傳輸信號(hào)與公共地的電壓差,RS-449是利用信號(hào)導(dǎo)線之間的信號(hào)電壓差,在1219.2m的24-AWG雙鉸線上進(jìn)行數(shù)字通信。RS-449規(guī)定了兩種接口標(biāo)準(zhǔn)連接器,一種為37腳,一種為9腳。RS-449可以不使用調(diào)制解調(diào)器,它比RS-232C傳輸速率高,通信距離長(zhǎng),且由于RS-449系統(tǒng)用平衡信號(hào)差傳輸高速信號(hào),所以噪聲低,又可以多點(diǎn)或者使用公共線通信,故RS-449通信電纜可與多個(gè)設(shè)備并聯(lián)。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第17頁(yè)。(2)RS-422A接口RS-422A輸出驅(qū)動(dòng)器為雙端平衡驅(qū)動(dòng)器,如圖6-11所示。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅(qū)動(dòng)對(duì)電壓的放大倍數(shù)大一倍。RS-422A傳輸速率(90Kbps)時(shí),傳輸距離可達(dá)1200米。圖6-11RS-422A接口單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第18頁(yè)。(2)RS-485接口RS-485的信號(hào)傳輸采用兩線間的電壓來(lái)表示邏輯1和邏輯0,如圖6-12所示。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動(dòng)信道,所以它的干擾抑制性極好,又因?yàn)樗淖杩沟?,無(wú)接地問(wèn)題,所以傳輸距離可達(dá)1200米,傳輸速率可達(dá)1Mbps。圖6-12RS-485接口
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第19頁(yè)。6.1.3單片機(jī)串行口的結(jié)構(gòu)與控制寄存器MCS-5l單片機(jī)的串行口主要由兩個(gè)獨(dú)立的數(shù)據(jù)緩沖器SBUF、一個(gè)輸入移位寄存器PCON(9位)、一個(gè)串行控制寄存器SCON和一個(gè)波特率發(fā)生器T1等組成。其結(jié)構(gòu)見(jiàn)圖6-13。
圖6-13串行口結(jié)構(gòu)框圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第20頁(yè)。1.串行口數(shù)據(jù)緩沖器SBUFSBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送寄存器,是可以直接尋址的專用寄存器。一個(gè)用于存放接收到的數(shù)據(jù),另一個(gè)用于存放欲發(fā)送的數(shù)據(jù),可同時(shí)發(fā)送和接收數(shù)據(jù)。兩個(gè)緩沖器共用一個(gè)地址99H,通過(guò)對(duì)SBUF的讀、寫指令來(lái)區(qū)別是對(duì)接收緩沖器還是發(fā)送緩沖器進(jìn)行操作。CPU在寫SBUF時(shí),就是修改發(fā)送緩沖器;讀SBUF,就是讀接收緩沖器的內(nèi)容。接收或發(fā)送數(shù)據(jù),是通過(guò)串行口對(duì)外的兩條獨(dú)立收發(fā)信號(hào)線RXD(P3.0)、TXD(P3.1)來(lái)實(shí)現(xiàn)的,因此可以同時(shí)發(fā)送、接收數(shù)據(jù),其工作方式為全雙工制式。串口的接收/發(fā)送端具有緩沖的功能,由SBUF特殊功能寄存器實(shí)現(xiàn)該功能。接收緩沖器是雙緩沖的,發(fā)送緩沖器為單緩沖。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第21頁(yè)。2.串行口控制寄存器SCON該專用寄存器的主要功能是選擇串行口的工作方式、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志指示等,可以位尋址,字節(jié)地址為98H。收發(fā)雙方都有對(duì)SCON的編程,單片機(jī)復(fù)位時(shí),SCON的所有位全為0。SCON的各位含義如圖6-14所示。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第22頁(yè)。(1)SM0、SM1(SCON.7、SCON.6)
串行口的工作方式選擇位。其定義如表6-2所示。SM0SM1工作方式功能波特率00方式08位同步移位寄存器fosc/120l方式l10位UART可變10方式211位UARTfosc/64或fosc/3211方式311位UART可變表6-2串行方式的定義單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第23頁(yè)。(2)SM2多機(jī)通信控制位,用于方式2和方式3中。在方式2和方式3處于接收時(shí),若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0時(shí),則不激活RI;若SM2=1,且RB8=1時(shí),則置RI=1;若SM2=0,不論接收到第9位RB8為0還是為1,TI、RI都以正常方式被激活。在方式1處于接收時(shí),若SM2=1,則只有當(dāng)收到有效的停止位后,RI才置1。在方式0中,SM2應(yīng)為0。(3)REN允許串行接收控制位。由軟件置位或清零。REN=1時(shí),允許接收;REN=0時(shí),禁止接收。(4)TB8發(fā)送數(shù)據(jù)的第9位。在方式2和方式3中,由軟件置位或復(fù)位,一般用做奇偶校驗(yàn)位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識(shí)位,一般約定地址幀時(shí)TB8為1,數(shù)據(jù)幀時(shí)TB8為0。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第24頁(yè)。(5)RB8接收數(shù)據(jù)的第9位。功能同TB8。(6)TI發(fā)送中斷標(biāo)志位。在方式0中,發(fā)送完8位數(shù)據(jù)后,由硬件置位;在其它方式中,在發(fā)送停止位之初由硬件置位。因此TI是發(fā)送完一幀數(shù)據(jù)的標(biāo)志,可以用指令來(lái)查詢是否發(fā)送結(jié)束。TI=1時(shí),也可向CPU申請(qǐng)中斷,響應(yīng)中斷后必須由軟件清除TI。(7)RI接收中斷標(biāo)志位。在方式0中,接收完8位數(shù)據(jù)后,由硬件置位;在其它方式中,在接收停止位時(shí)由硬件置位。因此RI是接收完一幀數(shù)據(jù)的標(biāo)志,也可以通過(guò)指令來(lái)查詢是否接收完一幀數(shù)據(jù)。RI=1時(shí),也可向CPU申請(qǐng)中斷,響應(yīng)中斷后也必須由軟件清除RI。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第25頁(yè)。3.電源和波特率控制寄存器PCONPCON是一個(gè)特殊功能寄存器,其字節(jié)地址為87H,只能進(jìn)行字節(jié)尋址,不能按位尋址。其格式如下圖6-15所示。PCON的最高位D7位作為SMOD,是串行口波特率的選擇位。在工作方式1、2、3時(shí),串行通信的波特率與SMOD有關(guān)。當(dāng)SMOD=1時(shí),波特率加倍,當(dāng)SMOD=0時(shí),波特率不變。系統(tǒng)復(fù)位后,SMOD位為0。其他各位用于電源管理。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第26頁(yè)。6.1.4單片機(jī)串行口的工作方式MCS-51的串行口有4種工作方式,通過(guò)SCON中的SM1、SM0位來(lái)決定。1.方式0在方式0下,串行口作同步移位寄存器用,以8位數(shù)據(jù)為一幀。無(wú)起始位和停止位。其波特率固定為fosc/12。串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出。這種方式常用于擴(kuò)展I/O口,外接移位寄存器實(shí)現(xiàn)數(shù)據(jù)并行輸入或輸出。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第27頁(yè)。2.方式1當(dāng)SM0=0、SM1=1時(shí),串行口被定義為方式1。在方式1下,串行口為波特率可調(diào)的10位通用異步接口UART,發(fā)送或接收的一幀信息,包括1位起始位0,8位數(shù)據(jù)位和1位停止位1。圖6-18方式1下10位數(shù)據(jù)幀格式單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第28頁(yè)。3.方式2當(dāng)SM0=1、SM1=0時(shí),串行口被定義為方式2。方式2下,串行口為11位通用異步接口UART,這種方式可接收或發(fā)送11位數(shù)據(jù),傳送波特率與PCON的最高位SMOD有關(guān)。發(fā)送或接收的一幀數(shù)據(jù)包括1位起始位0,8位數(shù)據(jù)位,1位可編程位(D8)和1位停止位1,共11位。第9個(gè)數(shù)據(jù)位即D8位可以通過(guò)軟件來(lái)控制它。圖6-19方式2下11位數(shù)據(jù)幀格式單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第29頁(yè)。4.方式3方式3為波特率可變的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。串行口工作于方式2和方式3時(shí),與方式1不同之處是,進(jìn)入RB8的是第9位數(shù)據(jù),而不是停止位。接收到的停止位的值與SBUF、RB8或RI是無(wú)關(guān)的。這一個(gè)特點(diǎn)可用于多機(jī)通信。注意:?jiǎn)纹瑱C(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第30頁(yè)。6.1.5串行口的波特率串行口通過(guò)編程可以有4種工作方式,其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可變,由定時(shí)器1的溢出率決定。1.方式0和方式2在方式0中,波特率為時(shí)鐘頻率的1/12,即,固定不變。在方式2中,波特率取決于PCON中的SMOD值,當(dāng)SMOD=0時(shí),波特率為;當(dāng)SMOD=1時(shí),波特率為,即波特率單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第31頁(yè)。2.方式1和方式3在方式1和方式3下,波特率由定時(shí)器T1的溢出率和SMOD共同決定。即:波特率單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第32頁(yè)。表6-3定時(shí)器T1產(chǎn)生的常用波特率波特率(b/s)SMOD定時(shí)器T1方式初始值方式0:1M12××××方式2:375K121×××方式1、3:62.5K12102FFH19.2K11.0592102FDH9.6K11.0592002FDH4.8K11.0592002FAH2.4K11.0592002F4H1.2K11.0592002E8H137.5K11.9860021DH110600272H11012001FEEBH單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第33頁(yè)。6.2任務(wù)2單片機(jī)的雙機(jī)通信采用兩臺(tái)AT89C51單片機(jī)甲和乙進(jìn)行雙機(jī)串行通信設(shè)計(jì)。單片機(jī)甲的按鍵K1產(chǎn)生控制碼,通過(guò)串行口TXD端將控制碼以方式1的方式發(fā)送至單片機(jī)乙的RXD端,乙機(jī)再利用該控制碼分別實(shí)現(xiàn)LED1閃爍、LED2閃爍、LED1和LED2同時(shí)閃爍、關(guān)閉所有LED功能。通過(guò)本任務(wù)的學(xué)習(xí),使讀者掌握MCS-51系列單片機(jī)串行通信的基本原理及控制方法、波特率設(shè)計(jì)等串行口應(yīng)用知識(shí)。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第34頁(yè)。6.2.1硬件電路與軟件程序設(shè)計(jì)1.硬件電路設(shè)計(jì)根據(jù)單片機(jī)雙機(jī)通信距離、抗干擾性等要求,可以選擇直接TTL電平傳輸、RS-232-C、RS-422A等串行接口方法。本設(shè)計(jì)采用標(biāo)準(zhǔn)RS-232接口芯片MAX232進(jìn)行通信,硬件電路如圖6-20所示。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第35頁(yè)。圖6-20單片機(jī)串行口雙機(jī)通信硬件電路單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第36頁(yè)。2.程序設(shè)計(jì)程序設(shè)計(jì)時(shí),首先需要進(jìn)行串口初始化,主要任務(wù)是設(shè)置定時(shí)器1,串口控制和中斷控制等。本任務(wù)中,兩片單片機(jī)的串口均工作在方式1下,所以甲機(jī)程序中設(shè)置SCON=0X40,乙機(jī)程序中設(shè)SCON=0X50,兩者都設(shè)為方式1,但乙機(jī)還將REN位設(shè)為1以允許接收。需要說(shuō)明的是,本例甲機(jī)不接收數(shù)據(jù),因此兩機(jī)的SCON都設(shè)成0X50也不影響運(yùn)行結(jié)果;程序中設(shè)TH1=TL1=0XFD(即253),PCON=0X00(PCON的最高位SMOD=0,波特率不倍增);本例中兩單片機(jī)均使用查詢方式,甲機(jī)通過(guò)循環(huán)查詢TI標(biāo)志判斷是否發(fā)送完畢,乙機(jī)通過(guò)查詢RI判斷是否接收到數(shù)據(jù)。每一次收發(fā)前都需要通過(guò)程序?qū)I和RI清零。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第37頁(yè)。甲機(jī)程序代碼:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P0^0;sbitLED2=P0^3;sbitK1=P1^0;//延時(shí)voidDelayMS(uintms){uchari;while(ms--)for(i=0;<120;i++);}//向串口發(fā)送字符voidPutc_to_SerialPort(ucharc){SBUF=c;while(TI==0);TI=0;}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第38頁(yè)。//主程序voidmain(){ucharOperation_No=0;SCON=0x40;//串口模式1TMOD=0x20;//T1工作模式2PCON=0x00;//波特率不倍增TH1=0xfd;TL1=0xfd;TI=0;TR1=1;//啟動(dòng)T1while(1){if(K1==0)//按下K1時(shí)選擇操作代碼0,1,2,3{while(K1==0);Operation_No=(Operation_No+1)%4;}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第39頁(yè)。switch(Operation_No)//根據(jù)操作代碼發(fā)送A/B/C或停止發(fā)送{case0:LED1=LED2=1; break;case1:Putc_to_SerialPort('A'); LED1=~LED1;LED2=1;
break;case2:Putc_to_SerialPort('B'); LED2=~LED2;LED1=1;
break;case3:Putc_to_SerialPort('C'); LED1=~LED1;LED2=LED1; break;}DelayMS(100);}}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第40頁(yè)。乙機(jī)程序代碼:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitLED1=P0^0;sbitLED2=P0^3;//延時(shí)voidDelayMS(uintms){uchari;while(ms--)for(i=0;i<120;i++);}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第41頁(yè)。//主程序voidmain(){SCON=0x50;//串口模式1,允許接收TMOD=0x20;//T1工作模式2PCON=0x00;//波特率不倍增TH1=0xfd;//波特率9600TL1=0xfd;RI=0;TR1=1;LED1=LED2=1;while(1){if(RI)//如收到則LED閃爍{ RI=0;單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第42頁(yè)。switch(SBUF)//根據(jù)所收到的不同命令字符完成不同動(dòng)作{case'A':LED1=~LED1;LED2=1; //LED1閃爍 break;case'B':LED2=~LED2;LED1=1;//LED2閃爍 break;case'C':LED1=~LED1;LED2=LED1;//雙閃爍}}elseLED1=LED2=1;//關(guān)閉LEDDelayMS(100);}}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第43頁(yè)。6.2.2調(diào)試與仿真運(yùn)行圖6-21單片機(jī)串行口雙機(jī)通信仿真圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第44頁(yè)。6.3任務(wù)3單片機(jī)與PC串行通信6.3.1任務(wù)與計(jì)劃(1)單片機(jī)接收PC機(jī)發(fā)來(lái)的數(shù)字串,并逐個(gè)顯示在數(shù)碼管上,為了顯示接收到的數(shù)據(jù),在單片機(jī)的P0口連接數(shù)碼管。(2)當(dāng)按下單片機(jī)系統(tǒng)的按鍵時(shí),會(huì)有一串中文字符由單片機(jī)串口發(fā)送給PC機(jī),并顯示在接收窗口。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第45頁(yè)。6.3.2硬件電路與軟件程序設(shè)計(jì)1.硬件電路設(shè)計(jì)圖6-22單片機(jī)與PC之間串行通信硬件電路單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第46頁(yè)。2.程序設(shè)計(jì)(1)PC機(jī)控制程序PC主機(jī)的通信程序可以采用TurboC、VC、VB、Delphi等高級(jí)語(yǔ)言編寫,也可以直接借助于現(xiàn)有的“串口調(diào)試助手”應(yīng)用軟件完成,用戶要由PC機(jī)向單片機(jī)發(fā)送數(shù)據(jù),只要把波特率參數(shù)設(shè)置好就行了,無(wú)須自己編程。(2)單片機(jī)串口通信程序使用Keil軟件建立“receive”工程項(xiàng)目,建立源程序文件“receive.c”,輸入如下源程序:?jiǎn)纹瑱C(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第47頁(yè)。#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharReceive_Buffer[101];//接收緩沖ucharBuf_Index=0;//緩存空間//數(shù)碼管編碼ucharcodeDsy_code[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};//延時(shí)voidDelay(uintx){
uchari;
while(--x)for(i=0;i<120;i++);}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第48頁(yè)。voidmain()//主函數(shù){ uchari; P0=0x00; Receive_Buffer[0]=-1; SCON=0x50;//串口模式1,允許接收
TMOD=0x20;//T1方式2 PCON=0x00; TH1=TL1=0xFD;//波特率=9600EA=1;EX0=1;IT0=1;//允許外部中斷0,下降沿觸發(fā)
ES=1;
//允許串口中斷
IP=0x01;
//外部中斷0為高優(yōu)先級(jí)
TR1=1;//啟動(dòng)定時(shí)器
while(1) {
for(i=0;i<100;i++) {
if(Receive_Buffer[i]==-1)break;//有-1結(jié)束顯示
P0=Dsy_code[Receive_Buffer[i]]; Delay(200); } Delay(200); }}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第49頁(yè)。//接收中斷函數(shù)
voidSerial_INT()interrupt4{ ucharc;
if(RI==0)return; ES=0;//關(guān)閉串口中斷
RI=0;//清除接收標(biāo)志位
c=SBUF;//讀字符
if(c>=‘0’&&c<=’9’) {
//接收每個(gè)字符后存放-1為結(jié)束標(biāo)志
Receive_Buffer[Buf_Index]=c–‘0’; Receive_Buffer[Buf_Index+1]=-1; Buf_Index=(Buf_Index+1)%100; } ES=1;//允許串口中斷}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第50頁(yè)。//外部中斷0
voidEX_INT0()interrupt0{ uchar*s=“單片機(jī)發(fā)送的字符串!\r\n”; uchari=0;
while(s[i]!=‘\0’) { SBUF=s[i];
while(TI==0); TI=0; i++; }}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第51頁(yè)。6.3.3調(diào)試與仿真運(yùn)行圖6-23單片機(jī)與PC通信仿真圖單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第52頁(yè)。圖6-24串口調(diào)試助手單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第53頁(yè)。6.4任務(wù)4遠(yuǎn)程控制交通燈的設(shè)計(jì)6.4.1任務(wù)要求設(shè)計(jì)并實(shí)現(xiàn)單片機(jī)交通燈控制系統(tǒng),實(shí)現(xiàn)以下三種情況下的交通燈控制。(1)正常情況下雙方向輪流點(diǎn)亮,交通燈的狀態(tài)如表6-4所示。(2)特殊情況時(shí)A道運(yùn)行。(3)有緊急車輛通行時(shí),AB道均為紅燈。緊急情況優(yōu)先級(jí)高于特殊情況。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第54頁(yè)。表6-4交通燈顯示狀態(tài)東西方向(簡(jiǎn)稱A方向)南北方向(簡(jiǎn)稱B方向)狀態(tài)說(shuō)明紅燈黃燈綠燈紅燈黃燈綠燈滅滅亮亮滅滅A方向通行,B方向禁行滅滅閃爍亮滅滅A方向警告,B方向禁行滅亮滅亮滅滅A方向警告,B方向禁行亮滅滅滅滅亮A方向禁行,B方向通行亮滅滅滅滅閃爍A方向禁行,B方向警告亮滅滅滅亮滅A方向禁行,B方向警告單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第55頁(yè)。本任務(wù)實(shí)現(xiàn)用PC作為控制主機(jī)、單片機(jī)控制信號(hào)燈為從機(jī)的遠(yuǎn)程控制系統(tǒng)。主、從機(jī)雙方除了要有統(tǒng)一的數(shù)據(jù)格式、波特率外,還要約定一些握手應(yīng)答信號(hào),即通信協(xié)議,如表6-5所示。表6-5交通燈控制系統(tǒng)PC與單片機(jī)通信協(xié)議主機(jī)(PC)從機(jī)(單片機(jī))發(fā)送命令接收應(yīng)答信息接收命令回發(fā)應(yīng)答信息01H01H01H01H命令含義:緊急情況,要求所有方向均為紅燈,直到解除命令02H02H02H02H命令含義:解除命令,恢復(fù)正常交通指示燈狀態(tài)單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第56頁(yè)。6.4.2電路及元器件表6-6交通燈控制端口線分配及控制狀態(tài)
P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P1端口數(shù)據(jù)狀態(tài)說(shuō)明無(wú)關(guān)無(wú)關(guān)A紅燈A黃燈A綠燈B紅燈B黃燈B綠燈000011000CH狀態(tài)1:A通行,B禁行00000、1交替10004H或0CH狀態(tài)2:A綠燈閃,B禁行0001010014H狀態(tài)3:A警告,B禁行0010000121H狀態(tài)4:A禁行,B通行00100000、1交替20H或21H狀態(tài)5:A禁行,B綠燈閃0010001022H狀態(tài)6:A禁行,B警告單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第57頁(yè)。單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第58頁(yè)。表6-7交通燈控制電路元器件清單單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第59頁(yè)。6.4.3程序設(shè)計(jì)1.程序設(shè)計(jì)流程圖①①②②圖6-27正常情況程序流程
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第60頁(yè)。圖6-28中斷情況下交通狀態(tài)流程單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第61頁(yè)。圖6-29通信程序流程
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第62頁(yè)。2.源程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintucharled[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
ucharDispX[]={0x04,0x0c,0x04,0x0c,0x14,0x20,0x21,0x20,0x21,0x22};
voidAFangXing(void); //函數(shù)聲明
voidShanShuo(uchar*PTR);
voidJingGao(uchar*PTR);
voidBFangXing(void);
單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第63頁(yè)。voiddelay_5ms(void)//5ms定時(shí)
{ uchari;
for(i=0;i<5;i++)//T0方式1,定時(shí)1毫秒,循環(huán)5次即實(shí)現(xiàn)5毫秒定時(shí)
{ TH0=0xfc; TL0=0x18; TR0=1; //T/C0開始工作
while(!TF0); TF0=0;}}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第64頁(yè)。voidint_0()interrupt0{ uinti,x,y,l,m; EA=0;//關(guān)中斷
i=P1;l=TH1;m=TL1; EA=1;P1=0x24;
for(x=10;x>0;x--) {
for(y=100;y>0;y--) { P2=0x01; P0=led[x%10]; delay_5ms(); P2=0x02; P0=led[x/10];//緊急情況倒計(jì)時(shí)
delay_5ms();}} EA=0;P1=i;TH1=l;TL1=m; EA=1;}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第65頁(yè)。voidint_1()interrupt2//特殊情況中斷{ uinti,l,m,x,y; EA=0;//關(guān)中斷
i=P1;l=TH1;m=TL1; EA=1;P1=0x21;
for(x=10;x>0;x--) {
for(y=100;y>0;y--) { P2=0x01; P0=led[x%10];delay_5ms(); P2=0x02; P0=led[x/10];//特殊情況倒計(jì)時(shí)
delay_5ms();}} EA=0;P1=i; TH1=l;TL1=m; EA=1;}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第66頁(yè)。voidmain()//主函數(shù){ uchar*PTR=&DispX; TMOD=0x21; //工作方式寄存器TMOD用于選擇定時(shí)器/計(jì)數(shù)器的工作模式和工作方式
TH1=0xf4;//由波特率為2400kb/s,晶振為11.0592MHz,//可知定時(shí)器T1的初值,T1采用方式2,8位初值自動(dòng)重裝入
TL1=0xf4; TR0=1; TR1=1; SCON=0x50;
//SCON為串行口控制寄存器,采用方式1,允許串行接收
PCON=0x00; //設(shè)置波特率SMOD IE=0x95;//IE為中斷允許寄存器,允許串行口中斷,//允許外部中斷1中斷,允許外部中斷0中斷
IP=0x11;//串行口中斷、外部中斷0設(shè)定為高優(yōu)先級(jí)中斷
IT0=1;//外部中斷0的中斷請(qǐng)求信號(hào)為邊沿觸發(fā)單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第67頁(yè)。
IT1=1;//外部中斷1的中斷請(qǐng)求信號(hào)為邊沿觸發(fā)
while(1){ AFangXing();//A道綠燈,B道紅燈(計(jì)時(shí)55秒)
ShanShuo(PTR);//A綠燈閃爍4次(2秒),B道紅燈
ShanShuo(++PTR); ShanShuo(++PTR);ShanShuo(++PTR); JingGao(++PTR);//A道黃燈(2秒),B道紅燈
BFangXing(); //B道綠燈,A道紅燈(計(jì)時(shí)55秒)
ShanShuo(++PTR);//B綠燈閃爍4次(2秒),A道紅燈
ShanShuo(++PTR); ShanShuo(++PTR);ShanShuo(++PTR); JingGao(++PTR);//B道黃燈(2秒),A道紅燈
PTR=&DispX;//重新給PTR指針賦值,開始新的一輪
}}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第68頁(yè)。voidAFangXing(void)//A向通行函數(shù){ uchari,j; P1=0x0c;//A道綠燈B道紅燈
for(i=55;i>0;i--) {
for(j=50;j>0;j--) { P2=0x01; P0=led[i%10];//顯示A方向秒個(gè)位
delay_5ms();P2=0x02; P0=led[i/10];//顯示A方向秒十位
delay_5ms();P2=0x04; P0=led[(i)%10];//顯示B方向秒個(gè)位
delay_5ms(); P2=0x08; P0=led[(i)/10];//顯示B方向秒十位
delay_5ms(); } }}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第69頁(yè)。voidShanShuo(uchar*PTR)//綠燈閃爍函數(shù){
uchari,j;
for(i=1;i>0;i--) { P1=*PTR;
for(j=25;j>0;j--) { P2=0x01; P0=led[i%10];//顯示A方向秒個(gè)位
delay_5ms();P2=0x02; P0=led[i/10];//顯示A方向秒十位
delay_5ms();P2=0x04; P0=led[i%10];//顯示B方向個(gè)位
delay_5ms();P2=0x08; P0=led[i/10];//顯示B方向十位
delay_5ms(); } }}單片機(jī)的串行口及其應(yīng)用全文共76頁(yè),當(dāng)前為第70頁(yè)。voidJingGao(uchar*PTR)//黃燈警告函數(shù){ uchari,j; P1=*PTR;
for(i=2;i>0;i--) {
for(j=50;j>0;j--) { P2=0x01; P0=led[i%10];//顯示A方向秒個(gè)位
delay_5ms();P2=0x02; P0=led[i/10];//顯示A方向秒十位
delay_5ms();P2=0x04; P0=led[i%10];//顯示B方向個(gè)位
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學(xué)校實(shí)驗(yàn)室設(shè)備更新及維修服務(wù)合同3篇
- 2024店鋪轉(zhuǎn)讓協(xié)議書
- 2024模具智能制造技術(shù)研發(fā)合同
- 2024標(biāo)準(zhǔn)版兩居室房車短期租賃合同版
- 2024服裝工裝定制合同
- 2024青島運(yùn)動(dòng)會(huì)官方用車租賃服務(wù)協(xié)議3篇
- 2024年行車設(shè)備安裝與維護(hù)合同3篇
- 2024年版城市供水項(xiàng)目特許經(jīng)營(yíng)權(quán)協(xié)議
- 2024運(yùn)營(yíng)總監(jiān)國(guó)際業(yè)務(wù)拓展與跨國(guó)合作合同3篇
- 2025年度網(wǎng)絡(luò)安全技術(shù)股權(quán)合作與轉(zhuǎn)讓合同3篇
- 兒童ERCP的應(yīng)用及技巧課件
- 《低壓電工技術(shù)》課程標(biāo)準(zhǔn)
- 22G101系列圖集常用點(diǎn)全解讀
- (國(guó)家基本公共衛(wèi)生服務(wù)項(xiàng)目第三版)7高血壓患者健康管理服務(wù)規(guī)范
- 12 富起來(lái)到強(qiáng)起來(lái) 精神文明新風(fēng)尚(說(shuō)課稿)-部編版道德與法治五年級(jí)下冊(cè)
- (43)-7.2羊肚菌高效栽培
- 中級(jí)消防維保理論考試試題題庫(kù)及答案
- 讀書會(huì)熵減華為活力之源
- 竣工圖繪制規(guī)范及標(biāo)準(zhǔn)
- 二年級(jí)上學(xué)期數(shù)學(xué)
- GB/T 37433-2019低功率燃油燃燒器通用技術(shù)要求
評(píng)論
0/150
提交評(píng)論