版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
項目3單片機與PC機通信系統(tǒng)設計3.1項目要求
3.2理論知識
3.3項目分析及實施
3.4項目小結
習題
3.1項目要求
單片機與外部PC機進行數(shù)據(jù)通信可以通過并行接口和串行接口兩種方式來實現(xiàn)。通常,單片機與外圍芯片之間,如與存儲器、I/O接口等之間常采用并行通信方式;而單片機與外部系統(tǒng)之間,如單片機與單片機、單片機與PC機等之間常采用串行通信方式。
本項目實現(xiàn)的就是單片機與PC機之間的雙向串行數(shù)據(jù)通信,利用單片機的串行口工作,連接單片機和PC機,使雙方可以進行數(shù)據(jù)傳輸和交換。通過這個項目要求掌握單片機串行口的工作方式,以及如何實現(xiàn)單片機與PC機之間的數(shù)據(jù)交換。項目重難點:
(1)串行通信的基本知識;
(2)串行通信接口標準RS-232C;
(3)51單片機串行通信接口的組成;
(4)51單片機的串行口工作原理;
(5)51單片機與外設通信的軟件編寫。
技能培養(yǎng):
(1)掌握51單片機串行口工作原理及應用;
(2)掌握51單片機串行口工作電路的分析與設計方法;
(3)熟練編寫單片機串行口通信的發(fā)送和接收數(shù)據(jù)程序;
(4)掌握PC機與單片機串行口通信的工作方法。
3.2理論知識
3.2.1串行通信
1.串行通信的分類
按照串行數(shù)據(jù)的時鐘控制方式,串行通信可分為同步通信和異步通信兩類。
1)異步通信
在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀也稱數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位等4部分組成,異步通信的字符幀格式如圖3-1所示。圖3-1串行異步通信的字符幀格式
(1)起始位:位于字符幀開頭,只占1位,為邏輯低電平“0”,用來通知接收設備,發(fā)送端開始發(fā)送數(shù)據(jù)。線路上在不傳送字符時應保持為“1”。接收端不斷檢測線路的狀態(tài),若連續(xù)為“1”,以后又測到1個“0”,就知道將要發(fā)來1個新字符,應馬上準備接收。
(2)數(shù)據(jù)位:數(shù)據(jù)位(D0~D7)緊接在起始位后面,通常為5~8位,依據(jù)數(shù)據(jù)位由低到高的順序依次傳送。
(3)奇偶校驗位:奇偶校驗位只占1位,緊接在數(shù)據(jù)位后面,表征串行通信中采用奇校驗還是偶校驗,也可用這1位(I/O)來確定這一幀中的字符所代表信息的性質(zhì)(地址/數(shù)據(jù)等)。
(4)停止位:位于字符幀的最后,表征字符的結束,它一定是高電平(邏輯“1”)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳完,同時也為接收下一字符作好準備(只要再收到“0”就是新的字符的起始位)。若停止位以后不是緊接著傳送下一個字符,則讓線路上保持為“1”。圖3-1(a)表示1個字符緊接1個字符傳送的情況,上一個字符的停止位和下一個字符的起始位是緊相鄰的;圖3-1(b)則是2個字符間有空閑位的情況,空閑位為“1”,線路處于等待狀態(tài)。存在空閑位正是異步通信的特征之一。在異步通信中,字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)均是低位在前,高位在后,通過傳輸線被接收端一幀一幀地接收。一幀字符與一幀字符之間可以是連續(xù)的,也可以是間斷的,這完全由發(fā)送方根據(jù)需要來決定。在進行異步傳送時,發(fā)送端和接收端可以有各自獨立的時鐘脈沖控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘彼此獨立,互不同步。由于發(fā)送端不需要傳送同步時鐘到接收端,因此異步通信對硬件要求較低,實現(xiàn)起來比較簡單、靈活,適用于數(shù)據(jù)的隨機發(fā)送/接收。但因其每個字節(jié)都要建立一次同步,即每個字符都要額外附加兩位,所以傳輸速度較低。在單片機中主要采用異步通信方式。
2)同步通信
同步通信時,發(fā)送設備和接收設備采用同步時鐘頻率,發(fā)送設備先發(fā)送串行通信數(shù)據(jù)同步信號給接收設備,接收設備接收到同步信號后,開始進行串行數(shù)據(jù)塊的傳送,當串行數(shù)據(jù)塊傳送完畢時,發(fā)送設備發(fā)送結束串行通信同步數(shù)據(jù),停止串行通信。同步通信的數(shù)據(jù)塊格式如圖3-2所示。同步串行通信一次發(fā)送的數(shù)據(jù)量大,但需要發(fā)送和接收設備的串行控制時鐘頻率保持嚴格同步,這在實際系統(tǒng)中較難實現(xiàn)也不經(jīng)濟。圖3-2串行同步通信的數(shù)據(jù)塊格式
2.串行通信的波特率
在串行通信中,數(shù)據(jù)是按位進行傳送的,每秒內(nèi)傳送的二進制數(shù)的位數(shù)就是波特率。單位是位/秒,用b/s表示。例如,某串行通信系統(tǒng)的波特率為9600b/s,就是說該串行通信系統(tǒng)每秒傳送9600個二進制位。如果每個字符格式包含10個代碼位(個起始位和1個停止位、8個數(shù)據(jù)位),則該串行通信系統(tǒng)每秒傳送960個字符。
波特率是串行通信的重要指標,用于表征數(shù)據(jù)傳輸?shù)乃俣?。波特率越高,?shù)據(jù)的傳輸速度越快。異步傳送方式的波特率一般為50~9600b/s,同步傳送方式的波特率可達56kb/s或更高。
3.串行通信方式
串行通信根據(jù)數(shù)據(jù)傳送的方向及時間關系可分為單工、半雙工和全雙工三種制式,如圖3-3所示。圖3-3串行通信的三種制式
4.串行通信協(xié)議
通信協(xié)議是指單片機之間進行信息傳輸時的一些約定,包括通信方式、波特率、雙機之間握手信號的約定等。為了保證單片機之間能準確、可靠地通信,相互之間必須遵循統(tǒng)一的通信協(xié)議,在通信之前一定要設置好。
串行通信的格式及約定(如同步方式、通信速率、數(shù)據(jù)塊格式、信號電平等)不同,就形成了多種不同的串行通信的協(xié)議與接口標準。其中常見的有通用異步收發(fā)器(UART)、通用串行總線(USB)、I2C總線、CAN總線、SPI總線、RS-485,RS-232C,RS-449,RS-422A標準等。通用異步收發(fā)器UART(UniversalAsynchronousReceiver/Transmitter)是串行接口的核心部件,同步通信的接口電路稱為USRT(UniversalSychronousReceiver/Transmitter),異步和同步通信共用的接口電路稱為USART(UniversalSychronousAsychronousReceiver/Transmitter)。
3.2.2串行通信接口標準RS-232C
1.RS-232C信息格式標準
RS-232C采用串行格式。其標準規(guī)定:信息的開始為起始位,信息的結束為停止位;信息本身可以是5、6、7、8位再加一位奇偶校驗位。如果兩個信息之間無信息,則為“1”,表示空,如圖3-4所示。圖3-4
RS-232C信息格式
2.RS-232C引腳定義
RS-232C接口規(guī)定使用25針“D”型口連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。在微型計算機通信中,常常使用的有9根信號引腳,所以常用9針“D”型接口(DB9)連接器替代25針連接器。連接器引腳定義如圖3-5所示。RS-232C接口的主要信號線的功能定義如表3-1所示。圖3-5
DB9型連接器定義表3-1
RS-232C標準接口主要引腳定義
3.RS-232C電器特性
RS-232C采用單端連接方式,所以接口電路采用一條信號地線。由于通過地線的串音干擾大,為了提高該標準的抗干擾能力,規(guī)定了較高的信號電平。標準規(guī)定驅(qū)動器的輸出電壓為±5V~±15V,接收器的輸入門限電壓為-3V~+3V。
RS-232C標準規(guī)定信號電平采用負邏輯,規(guī)定邏輯“1”為-5V~-15V,負載端要小于-3V,一般選用-12V。規(guī)定邏輯“0”為+5V~+15V,負載端要大于+3V,一般選用+12V。
RS-232電平與TTL電平不兼容。因此,當計算機通過RS-232C與外設進行通信時,必須經(jīng)過相應的電平轉(zhuǎn)換電路。MC1488和MC1489芯片可以完成這種功能。
MC1488是總線驅(qū)動器(發(fā)送器),內(nèi)部有三個與非門和一個反相器,可將輸入的TTL電平轉(zhuǎn)換為RS-232C標準電平;MC1489是總線接收器,內(nèi)部有4個反相器,可將RS-232C電平轉(zhuǎn)換為TTL電平。而目前使用較多的電平轉(zhuǎn)換電路是MAX232、MAX202、HIN232等芯片,它們同時集成了RS-232電平與TTL電平之間的互換。如圖3-6所示。其第一部分是電荷泵電路,由1、2、3、4、5、6腳和4只電容構成,功能是產(chǎn)生+12V和-12V兩個電源,提供給RS-232串口電平的需要;第二部分是數(shù)據(jù)轉(zhuǎn)換通道,由7、8、9、10、11、12、13、14腳構成兩個數(shù)據(jù)通道,其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道,8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道,TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭,DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出;第三部分是供電,15腳DNG、16腳VCC(+5V)。圖3-6
RS-232C電平轉(zhuǎn)換芯片由MAX232組成的通信接口電路如圖3-7所示。圖3-7
MAX232通信接口電路3.2.3
51單片機內(nèi)部串行口
51單片機內(nèi)部有一個可編程全雙工異步串行通信接口,它通過數(shù)據(jù)接收引腳RXD(P3.0)和數(shù)據(jù)發(fā)送引腳TXD(P3.1)與外設進行串行通信,可以同時發(fā)送和接收數(shù)據(jù)。這個串行口既可以實現(xiàn)異步通信,又可以用于網(wǎng)絡通信,還可以作為同步移位寄存器使用。其幀格式有8位、10位和11位,并能設置各種波特率。
1.串行口內(nèi)部結構
51單片機內(nèi)部有兩個獨立的接收、發(fā)送緩沖器SBUF。SBUF屬于特殊功能寄存器。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,二者共用一個字節(jié)地址(99H)。51單片機串行口的結構如圖3-8所示。圖3-8串行口結構框圖
1)串行口數(shù)據(jù)緩沖器SBUF
SBUF是一個特殊功能寄存器,有2個在物理上獨立的接收緩沖器與發(fā)送緩沖器。發(fā)送緩沖器只能寫入不能讀出,寫入SBUF的數(shù)據(jù)存儲在發(fā)送緩沖器中,用于串行發(fā)送;接收緩沖器只能讀出不能寫入。2個緩沖器共用1個地址99H,通過對SBUF的讀、寫指令來區(qū)別是對接收緩沖器還是發(fā)送緩沖器進行操作。接收或發(fā)送數(shù)據(jù)是通過串行口對外的2條獨立收發(fā)信號線RXD(P3.0)、TXD(P3.1)來實現(xiàn)的。
發(fā)送時,只需將發(fā)送數(shù)據(jù)輸入SBUF,CPU將自動啟動和完成串行數(shù)據(jù)的發(fā)送:
SBUF=0xFF;//啟動一次數(shù)據(jù)發(fā)送,可向SBUF再發(fā)送下一個數(shù)接收時,CPU將自動把接收到的數(shù)據(jù)存入SBUF,用戶只需從SBUF中讀出接收數(shù)據(jù):
P1=SBUF;//完成一次數(shù)據(jù)接收,SBUF可再接收下一個數(shù)
2)串行口控制寄存器SCON
SCON用來控制串行口的工作方式和狀態(tài),其字節(jié)地址為98H,可以位尋址,位地址為9FH~98H。單片機復位時,SCON的所有位全為0。SCON的格式如表3-2所示。表3-2
SCON的各位定義
SM0、SM1——串行方式選擇位,其定義如表3-3所示。表3-3串行口方式選擇位的定義
SM2——多機通信控制位,用于方式2和方式3中。在方式2、3處于接收方式時,若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0,則不激活RI;若SM2=1,且RB8=1,則置RI=1。在方式2、3處于接收或發(fā)送方式時,若SM2=0,則不論接收到的第9位RB8為0還是為1,TI、RI都以正常方式被激活。在方式1處于接收時,若SM2=1,則只有當收到有效的停止位后,RI才置1。在方式0中,SM2應為0。
REN——允許串行接收位。它由軟件置位或清零。REN=1時,允許接收;REN=0時,禁止接收。
TB8——發(fā)送數(shù)據(jù)的第9位。在方式2和方式3下,TB8由軟件置位或復位,可用做奇偶校驗位。在多機通信中,TB8可作為區(qū)別地址幀或數(shù)據(jù)幀的標識位:地址幀時TB8為1;數(shù)據(jù)幀時TB8為0。
RB8——接收數(shù)據(jù)的第9位。功能同TB8,在方式2和方式3中,RB8是第9位接收數(shù)據(jù)。
TI——發(fā)送中斷標志位。在方式0下,發(fā)送完8位數(shù)據(jù)后,TI由硬件置位;在其他方式中,TI在發(fā)送停止位之初由硬件置位。TI是發(fā)送完一幀數(shù)據(jù)的標志,可以用指令查詢是否發(fā)送結束。TI=1時,也可向CPU申請中斷,響應中斷后,必須由軟件清除TI。
RI——接收中斷標志位。在方式0下,接收完8位數(shù)據(jù)后,RI由硬件置位;在其他方式中,RI在接收停止位的中間由硬件置位。同TI一樣,也可以通過指令查詢是否接收完一幀數(shù)據(jù)。RI=1時,也可申請中斷,響應中斷后,必須由軟件清除RI。接收/發(fā)送數(shù)據(jù)時,無論是否采用中斷方式工作,每接收/發(fā)送一幀數(shù)據(jù)都必須用指令對RI/TI清0,以備下一次收/發(fā)。
3)電源及波特率選擇寄存器PCON
PCON主要是為CHMOS型單片機的電源控制而設置的專用寄存器,不可以位尋址,字節(jié)地址為87H。在HMOS的8051單片機中,PCON除了最高位以外,其他位都是虛設的。其定義如表3-4所示。表3-4
PCON寄存器各位定義
2.串行口工作方式
1)串行口方式0
在方式0下,串行口作為同步移位寄存器使用。移位數(shù)據(jù)的發(fā)送和接收以8位數(shù)據(jù)為一幀,不設起始位和停止位,無論輸入/輸出,均低位在前高位在后,每個機器周期發(fā)送或接收一位數(shù)據(jù),所以方式0的波特率是固定的,為晶振頻率的1/12。波特率計算公式為:波特率=fosc/12。
式中的fosc為晶振頻率。若fosc=12MHz,則波特率=fosc/12=12/12=1Mb/s。
在方式0下串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出。這種方式常用于擴展I/O口。串行口擴展并行輸出口時,要有“串入并出”的移位寄存器配合(如74LS164或CD4094);串行口擴展并行輸入口時,要有“并入串出”的移位寄存器配合(如74LS165)。
(1)方式0用于擴展輸出口。方式0的輸出時序如圖3-9所示。方式0用于擴展I/O口輸出的電路如圖3-10所示。當一個數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時,串行口TXD引腳輸出的移位脈沖將8位數(shù)據(jù)以fosc/12的波特率從RXD引腳輸出,數(shù)據(jù)(低位在前)逐位移入74LS164。發(fā)送完置中斷標志TI為1,請求中斷。在再次發(fā)送數(shù)據(jù)之前,必須由軟件清TI為0。74LS164為串入并出移位寄存器(SIPO)。圖3-9方式0輸出時序圖3-10方式0擴展輸出口電路
【例1】用單片機的串行口外接74LS164,控制八只LED滾動顯示,用Protus繪制的電路如圖3-11所示。圖3-11例1電路
(2)方式0用于擴展輸入口。方式0的輸入時序如圖3-12所示。方式0用于擴展I/O口輸入,其電路如圖3-13所示。在滿足REN=1和RI=0的條件下,串行口即開始從RXD端以fosc/12的波特率輸入數(shù)據(jù)(低位在前),當接收完8位數(shù)據(jù)后,置中斷標志RI為1,請求中斷。在再次接收數(shù)據(jù)之前,必須由軟件清RI為0。其中,74LS165為并入串出移位寄存器(PISO)。圖3-12方式0的輸入時序圖3-13方式0擴展輸入口電路
【例2】用74LS165連接的8位撥碼開關從單片機串行口輸入控制八只LED的顯示,用Protus繪制的電路如圖3-14所示。圖3-14例2電路
2)串行口方式1
串行口定義為方式1時,為波特率可調(diào)的10位數(shù)據(jù)的異步通信口UART。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖3-15所示。一幀信息包括1位起始位,8位數(shù)據(jù)位和1位停止位。圖3-15串行方式1的數(shù)據(jù)格式
(1)發(fā)送。發(fā)送時,數(shù)據(jù)從TXD端輸出,當數(shù)據(jù)寫入發(fā)送緩沖器SBUF后,啟動發(fā)送器發(fā)送。當發(fā)送完一幀數(shù)據(jù)后,置中斷標志TI為1。方式1所傳送的波特率取決于定時器1的溢出率和PCON中的SMOD位。方式1的發(fā)送時序如圖3-16所示。圖3-16方式1的發(fā)送時序
(2)接收。接收時,由REN置1,允許接收,串行口采樣RXD,當采樣由1到0跳變時,確認是起始位“0”,開始接收一幀數(shù)據(jù)。當RI=0,且停止位為1或SM2=0時,停止位進入RB8位,同時置中斷標志RI;否則信息將丟失。所以,采用方式1接收時,應先用軟件清除RI或SM2標志。方式1的接收時序如圖3-17所示。圖3-17方式1的接收時序
(3)波特率。方式1波特率可變,由定時/計數(shù)器T1的計數(shù)溢出率來決定:
設計數(shù)初始值為x,那么每過256-x個機器周期,定時器溢出一次。為了避免因溢出而產(chǎn)生不必要的中斷,此時應禁止T1中斷。溢出周期為 ,溢出率為溢出周期的倒數(shù),所以
在實際使用時,通常是先確定波特率,再計算定時器T1的計數(shù)初值(常在這種場合稱其為時間常數(shù)):
然后進行定時器的初始化。
定時器T1產(chǎn)生的常用波特率如表3-5所示。表3-5定時器T1產(chǎn)生的常用波特率
3)串行口方式2
在方式2下,串行口為11位UART,傳送波特率與SMOD有關。發(fā)送或接收的一幀數(shù)據(jù)包括1位起始位0,9位數(shù)據(jù)位(含1位附加的第9位,發(fā)送時為SCON中的TB8,接收時為RB8),1位停止位,數(shù)據(jù)格式如圖3-18所示。圖3-18方式2的數(shù)據(jù)格式
(1)數(shù)據(jù)輸出。CPU向SBUF寫入數(shù)據(jù)時,就啟動了串行口的發(fā)送過程。SCON中的TB8寫入輸出移位寄存器的第9位,8位裝入SBUF。方式2的發(fā)送時序如圖3-19所示。圖3-19方式2的發(fā)送時序
(2)數(shù)據(jù)輸入。軟件將接收允許位REN置為1后,接收器就以所選頻率的16倍速率開始采樣RXD引腳的電平狀態(tài)。當檢測到RXD引腳發(fā)生負跳變時,說明起始位有效,將其移入輸入移位寄存器,開始接收這一幀數(shù)據(jù)。方式2的接收時序如圖3-20所示。圖3-20方式2的接收時序
(3)波特率。方式2波特率固定,為fosc/32或fosc/64。如用公式表示則為
3)串行口方式3
方式3為波特率可變的11位UART通信方式。除了波特率不同以外,方式3和方式2工作過程完全相同。方式3的波特率與方式1完全相同。
4)串行口四種工作方式的比較
四種工作方式的區(qū)別主要表現(xiàn)在幀格式及波特率兩個方面,如表3-6所示。表3-6串行口四種工作方式的比較
3.串行口的初始化
51單片機的串行口需初始化后,才能完成數(shù)據(jù)的輸入、輸出。其初始化過程如下:
(1)按選定串行口的工作方式設定SCON的SM0、SM1兩位二進制編碼。
(2)對于工作方式2或3,應根據(jù)需要在TB8中寫入待發(fā)送的第9位數(shù)據(jù)。
(3)若選定的工作方式不是方式0,還需設定接收/發(fā)送的波特率。
(4)設定SMOD的狀態(tài),以控制波特率是否加倍。
(5)若選定工作方式1或3,則應對定時器T1進行初始化以設定其溢出率。
【例3】
51單片機的晶振頻率為11.059MHz,波特率為1200b/s,要求串口發(fā)送數(shù)據(jù)為8位,編寫它的初始化程序。
解假設SMOD=1,T1工作在方式2。初始化程序如下:3.2.4
51單片機之間的通信
1.雙機通信
距離較近的兩個51單片機系統(tǒng)可以將它們的串行口直接相連,實現(xiàn)雙機通信,如圖3-21所示。為了增加通信距離,減少通道和電源干擾,可以在通信線路上利用RS-232C等標準接口進行雙機通信。實用的接口電路如實驗板連接方法。圖3-21單片機雙機通信系統(tǒng)
2.多機通信
51單片機串行口的方式2和方式3有一個專門的應用領域,即多機通信。所謂多機通信是指一臺主機和多臺從機之間的通信,構成主從式多機分布通信系統(tǒng)。主機發(fā)送的信息可以傳輸?shù)礁鱾€從機,各從機只能向主機發(fā)送信息,從機之間不能進行相互通信。圖3-22為一種多機通信連接示意圖。圖3-22單片機多機通信系統(tǒng)多機通信的實現(xiàn),主要是依靠主、從機之間正確設置與判斷SM2和發(fā)送或接收的第9位數(shù)據(jù)(TB8或RB8)來完成的。多機通信過程如下:
(1)使所有從機的SM2置1,處于只接收地址幀的狀態(tài)。
(2)主機發(fā)送一幀地址信息,與所需從機聯(lián)絡。主機應置RB8為1,表示發(fā)送的是地址。
(3)各從機接收到地址信息后,因RB8為1,置中斷標志RI,向CPU申請中斷。中斷后,將所接收地址與本從機的地址相比較,對于地址相符的從機,使SM2清0以接收主機隨后發(fā)來的所有信息;對于地址不相符的從機,仍保持SM2為1的狀態(tài),對從機隨后發(fā)送的數(shù)據(jù)不予接收,直至發(fā)送新的地址幀。
(4)主機發(fā)送控制命令和數(shù)據(jù)信息給被尋址的從機。此時,主機置RB8為0,表示發(fā)送的是數(shù)據(jù)或控制命令。對于沒選中的從機,因為SM2=1,RB8=0,所以不會產(chǎn)生中斷,不接收主機發(fā)送的信息。
3.PC機和單片機之間的通信
單片機具有控制能力強的優(yōu)點,但不適于做大量的數(shù)據(jù)處理、查詢等。實際應用中常將單片機作為下位機使用,主要實現(xiàn)數(shù)據(jù)采集、檢測與控制等功能。PC機通常作為上位機接收下位機采集的各種數(shù)據(jù),并進行數(shù)據(jù)運算、處理與管理等功能,同時向下位機發(fā)出各種指令。因此,實現(xiàn)PC機與用單片機間數(shù)據(jù)通信是十分重要的。通常PC機工作于查詢方式,而51單片機既可以工作于查詢方式,也可以工作于中斷方式。
PC機與單片機之間可以由RS-232C、RS-422A或RS-423等標準接口相連。
在PC機系統(tǒng)內(nèi)都裝有異步通信適配器,利用它可以實現(xiàn)異步串行通信。該適配器的核心元件是可編程的Intel8250芯片,它使PC機有能力與其他具有標準的RS-232C接口的計算機或設備進行通信。而51單片機本身具有一個全雙工的串行口,因此只要配以電平轉(zhuǎn)換的驅(qū)動電路、隔離電路,就可組成一個簡單可行的通信接口。同樣,PC機和單片機之間的通信也分為雙機通信和多機通信。 3.3項目分析及實施
3.3.1任務1-51單片機雙機串行通信
1.任務要求和分析
1)任務要求
甲機發(fā)送,乙機接收,甲機的S20按鍵通過串口控制乙機的LED燈D4和D5閃爍:
(1)甲機發(fā)送“A”,甲機和乙機的D4都閃爍;
(2)甲機發(fā)送“B”,甲機和乙機的D5都閃爍;
(3)甲機發(fā)送“C”,甲機和乙機的D4、D5都閃爍;
(4)甲機停止發(fā)送,甲機和乙機的D4、D5都停止閃爍。
2)任務分析
首先根據(jù)任務的要求將兩機串行口工作的方式和其中的參數(shù)設置好。
兩機的串行口采用相同的工作方式1,采用22.1184MHz晶體。甲機在本任務中只要發(fā)送數(shù)據(jù),所以甲機的SCON=0x40,而乙機要求接收數(shù)據(jù),所以乙機的SCON=0x50,定時器T1作波特率發(fā)生器使用,工作在方式2,其初值TH1=TL1=0xFA(250),PCON=0x00(SMOD=0)。
2.器件及設備選擇
要實現(xiàn)51單片機之間的雙機通信,可以采用兩個51單片機系統(tǒng),這里運用我們的兩塊實驗板,其上的單片機采用的是STC89C52。為了適應兩機間不同的距離,利用RS-232C標準進行雙機通信,所以兩只單片機的串行通信線都經(jīng)過MAX232的電平轉(zhuǎn)換互相連接。因此本任務中使用的主要器件就是STC89C52和MAX232。另外為了檢驗通信成功,我們要用按鍵控制發(fā)光二極管點亮。雙機通信的原理框圖如圖3-23所示。圖3-23雙機通信的框圖
3.任務實施
1)硬件原理圖設計
根據(jù)任務要求,將兩塊實驗板的串口相連接就可以了。實驗板的串行接口電路如圖3-24所示,U5是電平轉(zhuǎn)換芯片MAX232,其中的RXD和TXD兩線分別與單片機STC89C52的RXD和TXD連接,J2是DB9的串行接口。用串行通信線將兩機的DB9接口連接起來,就可以進行雙機通信了,但注意甲機的TXD要和乙機的RXD相連,而甲機的RXD要和乙機的TX相連。另外,參見書后附錄中的實驗板電路圖,S20按鍵是由P3.7控制,D4和D5分別由P1.0和P1.1控制。圖3-24實驗板的串行接口電路
2)軟件程序設計
雙機工作的軟件由甲機發(fā)送軟件和乙機接收軟件組成。
甲機發(fā)送源程序:程序分析:
(1)putc_to_SerialPort()是串口發(fā)送數(shù)據(jù)的子函數(shù),這里采用查詢方式發(fā)送數(shù)據(jù)。語句“SBUF=c;”是將變量C的值送向SBUF寄存器發(fā)送出去。當一個字節(jié)發(fā)送完成后硬件將自動置TI為1,所以語句“while(TI==0);”是查詢TI的狀態(tài),若TI=0,說明數(shù)據(jù)未發(fā)送完,程序繼續(xù)查詢。若TI=1,說明數(shù)據(jù)已經(jīng)發(fā)送完畢,循環(huán)條件不成立,繼續(xù)執(zhí)行下面的語句。由于串行口中斷標志位必須軟件清除,所以當查詢到TI=1之后,緊接著要清除中斷標志位,以便后面繼續(xù)發(fā)送數(shù)據(jù)。
(2)主程序首先完成甲機串行口工作方式和定時器T1工作方式的初始化,TI清0,開啟定時器T1,由于要求的四種類型操作是要能反復執(zhí)行的,所以放入while無限循環(huán)中。S20(P3.7)按鍵一旦為0,表明按鍵按下,檢測Operation_NO的值是幾按鍵就是第幾次按下。Operation_NO初始化為0,按鍵第一次按下時Operation_NO為1,執(zhí)行第一種操作:甲機的D4和D5燈都熄滅;Operation_NO為2,執(zhí)行第二種操作:調(diào)用putc_to_SerialPort子函數(shù),串口發(fā)送‘A’字符,甲機的D4燈閃爍,D5燈熄滅;Operation_NO為3,執(zhí)行第三種操作:調(diào)用putc_to_SerialPort子函數(shù),串口發(fā)送‘B’字符,甲機的D5燈閃爍,D4燈熄滅;Operation_NO為4,執(zhí)行第四種操作:調(diào)用putc_to_SerialPort子函數(shù),串口發(fā)送‘B’字符,甲機的D4和D5燈都閃爍。甲機燈設置的與乙機要求一致是為了檢驗甲機的發(fā)送和乙機的接收數(shù)據(jù)是否正確。乙機接收源程序:程序分析:
乙機在本任務中是接收數(shù)據(jù)。首先對乙機的串行口工作方式和定時器T1工作方式的初始化,RI清0,開啟T1,先將乙機的D4和D5燈熄滅。查詢RI為1則表明接收完一字節(jié)數(shù)據(jù),將RI清0,檢查SBUF接收的數(shù)據(jù)是什么,SBUF為‘A’,則乙機的D4燈閃爍,D5燈熄滅;SBUF為‘B’,則乙機的D5燈閃爍,D4燈熄滅;SBUF為‘C’,則乙機的D4和D5燈都閃爍;串行口沒有接收到數(shù)據(jù)則將D4和D5燈熄滅??梢姴僮骷讬C的按鍵S20,乙機的D4和D5燈如果與甲機工作情況一致,表明乙機通過串行口正確地接收到了甲機發(fā)送的數(shù)據(jù),兩機通信成功。3.3.2任務2——單片機與PC機的串行通信
1.任務要求和分析
1)任務要求
完成PC機與單片機之間的數(shù)據(jù)通信,要求單片機發(fā)送一個字符給PC機,PC機將收到的字符回送給單片機,表示它已經(jīng)收到了這個字符。
通信協(xié)議:波特率為9600b/s,無奇偶校驗位,8位數(shù)據(jù)位,1位停止位。
2)任務分析
在硬件設計方面:由于PC機串行口使用的是RS-232電平,而單片機的電平是TTL電平,兩者不兼容,所以在硬件設計上要使用電平轉(zhuǎn)換芯片,將單片機送出TTL電平轉(zhuǎn)換成RS-232電平之后送給PC機,同理,PC機送出RS-232電平轉(zhuǎn)換成TTL電平之后再送給單片機。
在軟件程序方面:不但要寫單片機發(fā)送和接收數(shù)據(jù)的程序,還要寫PC機發(fā)送和接收數(shù)據(jù)的程序。先根據(jù)任務的要求將單片機串行口的工作方式和參數(shù)設置好。單片機的串行口采用工作方式1,采用22.1184MHz晶體;單片機在本任務中要發(fā)送數(shù)據(jù)也要接收數(shù)據(jù),所以REN=1;定時器T1作波特率發(fā)生器使用,工作在方式2,由于采用9600b/s波特率,其初值TH1=TL1=0xFA(250)。對于PC機方面的程序,可以使用“串口調(diào)試助手”來完成數(shù)據(jù)的發(fā)送和接收,免去自己開發(fā)PC機端程序的麻煩。
2.器件及設備選擇
PC機系統(tǒng)內(nèi)部裝有異步通信適配器,該適配器的核心元件是可編程的Intel8250芯片,能夠與具有標準RS-232C、RS-422、RS-485等接口的計算機或設備進行通信。51單片機本身具有全雙工的串行口,當配以電平轉(zhuǎn)換電路后就可以與PC機組成一個簡單可行的通信接口。通常PC機工作于查詢方式,而51單片機既可以工作于查詢方式,也可以工作于中斷方式。
將實驗板的串口與PC機使用RS-232串行線連接好,安裝“串口調(diào)試助手”軟件并運行。
3.任務實施
1)硬件原理圖設計
本任務采用一塊單片機實驗板和一臺PC機。實驗板上的串行口通信電路如圖3-24所示,用RS-232串口線將實驗板的DB9串行接口與PC機的DB9串行接口連接好即可。
2)軟件程序設計
在進行實驗板與PC機通信時,PC機上的程序就用SComAssistantV2.1串口調(diào)試助手的成熟軟件,而實驗板上要給STC89C52編寫接收PC機發(fā)送過來的數(shù)據(jù)和發(fā)送數(shù)據(jù)到PC機的程序。
STC89C52串口通信源程序如下:程序分析:
(1)對T1和串口的初始化由函數(shù)init()完成,程序采用中斷方式接收PC機發(fā)送來的數(shù)據(jù)。當單片機接收完一幀數(shù)據(jù)后,硬件置位接收中斷標志位RI。在接收中斷服務函數(shù)中,將接收到的數(shù)據(jù)從SBUF中取走,并放入事先定義好的數(shù)據(jù)中第11個元素位置。
(2)主函數(shù)中,“if(RI=〖KG-1mm〗=1)”是查詢接收中斷標志位,當RI=1時,清除接收中斷標志位,并調(diào)用發(fā)送子函數(shù)。
(3)在send()發(fā)送函數(shù)中,由于采用的是查詢方式發(fā)送數(shù)據(jù),所以首先需要關掉串行口中斷。然后將放在數(shù)組str[]中的字符串逐字送給SBUF,由單片機的TXD引腳發(fā)送給PC機
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度護校與養(yǎng)老機構合作服務合同3篇
- 女生節(jié)活動策劃方案(3篇)
- 中小學校實驗室內(nèi)部管理制度范文(二篇)
- 2025年度物流運輸安全環(huán)保服務協(xié)議范本3篇
- 液壓銑床課程設計摘要
- 財務分析圖表課程設計
- 平路機安全操作規(guī)程范文(2篇)
- 二零二五年度房地產(chǎn)租賃權包銷合同3篇
- 2025年上半年安全員工作總結(3篇)
- 2024年滬教版高三歷史上冊階段測試試卷
- 河南省鄭州市鄭州經(jīng)濟技術開發(fā)區(qū)2023-2024學年七年級上學期期末歷史試題(無答案)
- 2024年新奧集團股份有限公司招聘筆試參考題庫含答案解析
- 工作述職評分表
- 新疆大學新疆數(shù)字經(jīng)濟研究院:2023新疆平臺經(jīng)濟發(fā)展調(diào)研報告
- 酒店預訂確認函
- 小學課愛國主義教育教案
- 會計師事務所審計工作底稿
- 內(nèi)科抗菌藥物合理使用優(yōu)秀課件
- 觸摸一體機整機檢驗標準?1.0
- 關于人員的處置方案
- 2023年社區(qū)體育研究報告5篇
評論
0/150
提交評論