




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第七章89C51串行口及串行通信技術
本書前幾章涉及的數據傳送都是采用并行方式,如8051與存儲器,存儲器與存儲器,8051與并行打印機之間的通信。89C51處理8位數據,若以并行傳送方式一次傳送一個字節的數據,至少需要8條數據線。當89C51與打印機連接時,除8條數據線外,還需要狀態、應答等控制線。一些微機系統,如IBM-PC系列機,由于磁盤機、CRT、打印機與主機系統的距離有限,所以,使用多條電纜線以提高數據傳送速度還是合算的。但是,計算機之間、計算機與其終端之間的距離有時非常遠,此時,電纜線過多是不經濟的2/6/20231第七章89C51串行口及串行通信技術串行通信只用一位數據線傳送數據的位信號,即使加上幾條通信聯絡控制線,也用不了很多電纜線。因此,串行通信適合遠距離數據傳送,如大型主機與其遠程終端之間、處于兩地的計算機之間采用串行通信就非常經濟。當然,串行通信要求有轉換數據格式、時間控制等邏輯電路,這些電路目前已被集成在大規模集成電路中(稱為可編程串行通信控制器),使用很方便。2/6/20232第七章89C51串行口及串行通信技術本章將介紹89C51串行口的結構及應用,PC機與89C51間的雙機通信,一臺PC機控制多臺89C51前沿機的分布式系統,以及通信接口電路和軟件設計,并給出設計實例,包括接口電路、程序框圖、主程序和接收/發送子程序。2/6/20233第七章89C51串行口及串行通信技術7.1串行通信基本知識7.2串行口及應用7.3RS-232C標準接口總線及串行通信硬件設計7.489C51與89C51點對點異步通信7.589C51與PC機間通信軟件的設計7.6PC機與多個單片機間的通信7.7思考題與習題返回2/6/202347.1串行通信基本知識7.1.1數據通信7.1.2串行通信的傳輸方式7.1.3異步通信和同步通信7.1.4串行通信的過程及通信協議返回2/6/202357.1.1數據通信在實際工作中,計算機的CPU與外部設備之間常常要進行信息交換,一臺計算機與其他計算機之間也往往要交換信息,所有這些信息交換均可稱為通信。通信方式有兩種,即并行通信和串行通信。通常根據信息傳送的距離決定采用哪種通信方式。例如,在IBM-PC機與外部設備(如打印機等)通信時,如果距離小于30m,可采用并行通信方式;當距離大于30m時,則要采用串行通信方式。89C51單片機具有并行和串行二種基本通信方式。返回2/6/202367.1.1數據通信并行通信是指數據的各位同時進行傳送(發送或接收)的通信方式。其優點是傳送速度快;缺點是數據有多少位,就需要多少根傳送線。例如,89C51單片機與打印機之間的數據傳送就屬于并行通信。圖7-1(a)所示為89C51與外設間8位數據并行通信的連接方法。并行通信在位數多、傳送距離又遠時就不太合適了。返回2/6/202377.1.1數據通信串行通信指數據是一位一位按順序傳送的通信方式。它的突出優點是只需一對傳輸線(利用電話線就可作為傳輸線),這樣就大大降低了傳送成本,特別適用于遠距離通信;其缺點是傳送速度較低。假設并行傳送N位數據所需時間位T,那么串行傳送的時間至少為NT,實際上總是大于NT的。圖7-1(b)所示為串行通信方式的連接方法。返回2/6/20238圖7-1數據通信方式返回2/6/202397.1.2串行通信的傳輸方式串行通信的傳送方向通常有三種:單向(或單工)配置,只允許數據向一個方向傳送;半雙向(或半雙工)配置,允許數據向兩個方向中的任一方向傳送,但每次只能有一個站點發送;全雙向(全雙工)配置,允許同時雙向傳送數據,因此,全雙工配置是一對單向配置,它要求兩端的通信設備都具有完整和獨立的發送和接受能力。圖7-2所示為串行通信中的數據傳送方式。返回2/6/202310圖7-2串行通信中的數據傳送方式返回2/6/2023117.1.3異步通信和同步通信串行通信有兩種基本通信方式,即異步通信和同步通信。1、異步通信在異步通信中,數據是一幀一幀(包括一個字符代碼或一字節數據)傳送的,每一幀的數據格式如圖7-3所示返回2/6/202312圖7-3異步通信數據格式返回2/6/2023131、異步通信在幀格式中,一個字符由四個部分組成:起始位、數據位、奇偶校驗位和停止位。首先是一個起始為(0),然后是5位--8位數據(規定低位在前,高位在后),接下來是奇偶校驗位(可省略),最后是停止位(1)。返回2/6/2023141、異步通信
起始位(0)信號只占用一位,用來通知接收設備一個待接收的字符開始到達。線路上在不傳送字符時應保持為1。接收端不斷檢測線路的狀態,若連續為1以后又測到一個0,就知道發來一個新字符,應馬上準備接收。字符的起始位還被用作同步接收端的時鐘,以保證以后的接收能正確進行。起始位后面緊接著是數據位,它可以是5位(D0--D4)、6位、7位或8位(D0--D7)。奇偶校驗(D8)只占一位,但在字符中也可以規定不用奇偶校驗位,則這一位就可省去。也可用這一位(1/0)來確定這一幀中的字符所代表信息的性質(地址/數據等)。停止位用來表征字符的結束,它一定是高電位(邏輯1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時,也為接收下一個字符做好準備--只要再接收到0,就是新的字符的起始位。若停止位以后不是緊接著傳送下一個字符,則使線路電平保持為高電平(邏輯1)。返回2/6/202315圖7-3(a)表示一個字符緊接一個字符傳送的情況,上一個字符的停止位和下一個字符的起始位是緊鄰的;圖7-3(b)則是兩個字符間有空閑位的情況,空閑位為1,線路處于等待狀態。存在空閑位正是異步通信的特征之一。例如,規定用ASCII編碼,字符為七位,加一個奇偶校驗位、一個起始位、一個停止位,則一幀共十位。1、異步通信返回2/6/2023162、同步通信
同步通信中,在數據開始傳送前用同步字符來指示(常約定1個--2個),并由時鐘來實現發送端和接收端同步,即檢測到規定的同步字符后,下面就連續按順序傳送數據,直到通信告一段落。同步傳送時,字符與字符之間沒有間隙,也不用起始位和停止位,僅在數據塊開始時用同步字符SYNC來指示,其數據格式如圖7-4所示。返回2/6/202317圖7-4異步通信數據格式返回2/6/2023182、同步通信
同步字符的插入可以是單同步字符方式或雙同步字符方式,如圖7-4所示,然后是連續的數據塊。同步字符可以由用戶約定,當然也可以采用ASCII碼中規定的SYNC代碼,即16H。按同步方式通信時,先發送同步字符,接收方檢測到同步字符后,即準備接收數據。
在同步傳送時,要求用時鐘來實現發送端與接收端之間的同步。為了保證接收正確無誤,發送方除了傳送數據外,還要同時傳送時鐘信號。同步傳送可以提高傳輸速率(達56kb/s或更高),但硬件比較復雜。返回2/6/2023193、波特率(Baudrate)波特率,即數據傳送速率,表示每秒鐘傳送二進制代碼的位數,它的單位是b/s。波特率對于CPU與外界的通信是很重要的。假設數據傳送速率是120字符/s,而每個字符格式包含1個代碼位(1個起始位、1個終止位、8個數據位)。這時,傳送的波特率為:
10b/字符×120字符/s=1200b/s返回2/6/2023203、波特率(Baudrate)每一位代碼的傳送時間Td為波特率的倒數。
Td=1b/(1200bs-1)=0.833ms異步通信的傳送速率在50b/s--19200b/s之間,常用于計算機到終端機和打印機之間的通信、直通電報以及無線電通信的數據發送等。返回2/6/2023217.1.4串行通信的過程及通信協議1、串←→并轉換與設備同步兩個通信設備在串行線路上成功地實現通信必須解決兩個問題:
一是串←→并轉換,即如何把要發送的并行數據串行化,把接收的串行數據并行化;
二是設備同步,即同步發送設備與接收設備的工作節拍,以確保發送數據在接收端被正確讀出。返回2/6/2023221、串←→并轉換與設備同步(1)串←→并轉換串行通信是將計算機內部的并行數據轉換成串行數據,將其通過一根通信線傳送;并將接收的串行數據再轉換成并行數據送到計算機中。返回2/6/2023231、串←→并轉換與設備同步在計算機串行發送數據之前,計算機內部的并行數據被送入移位寄存器并一位一位地輸出,將并行數據轉換成串行數據。如圖7-5所示。在接收數據時,來自通信線路的串行數據被壓入移位寄存器,滿8位后并行送到計算機內部。如圖7-6所示。在串行通信控制電路中,串--并、并--串轉換邏輯被集成在串行異步通信控制器芯片中。89C51單片機的串行口和IBM-PC相同。返回2/6/202324圖7-5返回2/6/202325圖7-6返回2/6/202326(2)設備同步進行串行通信的兩臺設備必須同步工作才能有效地檢測通信線路上的信號變化,從而采樣傳送數據脈沖。設備同步對通信雙方有兩個共同要求:一是通信雙方必須采用統一的編碼方法;二是通信雙方必須能產生相同的傳送速率。返回2/6/202327(2)設備同步采用統一的編碼方法確定了一個字符二進制表示值的位發送順序和位串長度,當然還包括統一的邏輯電平規定,即電平信號高低與邏輯1和邏輯0的固定對應關系。通信雙方只有產生相同的傳送速率,才能確保設備同步,這就要求發送設備和接收設備采用相同頻率的時鐘。發送設備在統一的時鐘脈沖上發出數據,接收設備才能正確檢測出與時鐘脈沖同步的數據信息。返回2/6/2023282、串行通信協議
通信協議是對數據傳送方式的規定,包括數據格式定義和數據位定義等。通信雙方必須遵守統一的通信協議。串行通信協議包括同步協議和異步協議兩種。在此只討論異步串行通信協議和異步串性協議規定的字符數據的傳送格式。返回2/6/2023292、串行通信協議(1)起始位通信線上沒有數據被傳送時處于邏輯1狀態。當發送設備要發送一個字符數據時,首先發出一個邏輯0信號,這個邏輯低電平就是起始位。起始位通過通信線傳向接收設備,接收設備檢測到這個邏輯低電平后,就開始準備接收數據位信號。起始位所起的作用就是設備同步,通信雙方必須在傳送數據位前協調同步。返回2/6/2023302、串行通信協議(2)數據位
當接收設備收到起始位后,緊接著就會收到數據位。數據位的個數可以是5、6、7或8。IBM-PC中經常采用7位或8位數據傳送,89C51串行口采用8位或9位數據傳送。這些數據位被接收到移位寄存器中,構成傳送數據字符。在字符數據傳送過程中,數據位從最低有效位開始發送,依次順序在接收設備中被轉換為并行數據。返回2/6/2023312、串行通信協議(3)奇偶校驗位
數據位發送完之后,可以發送奇偶校驗位。奇偶校驗用于有限差錯檢測,通信雙方需約定已知的奇偶校驗方式。如果選擇偶校驗,那么組成數據位和奇偶位的邏輯1的個數必須是偶數;如果選擇奇校驗,那么邏輯1的個數必須是奇數。返回2/6/2023322、串行通信協議(4)停止位約定
在奇偶位或數據位(當無奇偶校驗時)之后發送的是停止位。停止位是一個字符數據的結束標志,可以是1位,1.5位或2位的高電平。接收設備收到停止位之后,通信線路上便又恢復邏輯1狀態,直至下一個字符數據的起始位到來。返回2/6/2023332、串行通信協議(5)波特率設置
通信線上傳送的所有位信號都保持一致的信號持續時間,每一位的信號持續時間都由數據傳送速度確定,而傳送速度是以每秒多少個二進制位來衡量的,這個速度叫波特率。如果數據以300個二進制位每秒在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。返回2/6/2023342、串行通信協議(6)掛鉤(握手)信號約定
(見本章7.4節實例)返回2/6/2023357.2串行口及應用
89C51單片機除具有4個8位并行口外,還具有串行接口。此串行接口是一個全雙工串行通信接口,即能同時進行串行發送和接收數據。它可以作UATR(通用異步接收和發送器)用,也可以作同步移位寄存器用。使用串行接口可以實現89C51單片機系統之間點對點的單機通信和89C51與系統機(如IBM-PC機等)的單機或多機通信。返回2/6/2023367.2串行口及應用7.2.189C51串行口7.2.289C51串行口的工作方式及應用返回2/6/2023377.2.189C51串行口1、結構2、串行口控制字及控制寄存器3、串行通信工作方式4、波特率設計返回2/6/2023381、結構
89C51通過引腳RXD(P3.0,串行數據接收端)和引腳TXD(P3.1,串行數據發送端)與外界進行通信。其內部結構簡化示意圖如圖7-7所示。圖中有兩個物理獨立的接收、發送緩沖器SBUF,它們占用同一低值99H,可同時發送、接收數據。發送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。串行發送與接收的速率與移位時鐘同步。89C51用定時器T1作為串行通信的波特率發生器,T1溢出率經2分頻(或不分頻)后又經16分頻作為串行發送或接收的移位脈沖。移位脈沖的速率即是波特率。返回2/6/202339圖7-7串行口內部結構示意簡圖返回2/6/2023401、結構從圖中可看出,接收器是雙緩沖結構,在前一個字節被從接收緩沖器SBUF讀出之前,第二個字節即開始被接收(串行輸入至移位寄存器),但是,在第二個字節接收完畢而前一個字節CPU未讀取時,會丟失前一個字節。串行口的發送和接收都是以特殊功能寄存器SBUF的名義進行讀或寫的。當向SBUF發“寫”命令時(執行“MOVSBUF,A”指令),即是向發送緩沖器SBUF裝載并開始由TXD引腳向外發送一幀數據,發送完便使發送中斷標志位TI=1。在滿足串行口接收中斷標志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會接收一幀數據進入移位寄存器,并裝載到接收SBUF中,同時使RI=1。當發讀SBUF命令時(執行“MOVA,SBUF”命令),便由接收緩沖器(SBUF)取出信息通過89C51內部總線送CPU。
對于發送緩沖器,因為發送時CPU是主動的,不會產生重疊錯誤,一般不需要用雙緩沖器結構來保持最大傳送速率。返回2/6/2023412、串行口控制字及控制寄存器
89C51串行口是可編程接口,對它初始化編程只用兩個控制字分別寫入特殊功能寄存器SCON(98H)和電源控制寄存器PCON(87H)中即可。(1)SCON(98H)
89C51串行通信的方式選擇、接收和發送控制以及串行口的狀態標志等均由特殊功能寄存器SCON控制和指示,其控制字格式如圖7-8所示。返回2/6/202342圖7-8串行口控制寄存器SCON返回2/6/2023432、串行口控制字及控制寄存器①SM0和SM1(SCON.7,SCON.6)——串行口工作方式選擇位。兩個選擇位對應4種通信方式,如表7-1所示。其中,fosc是振蕩頻率。返回2/6/2023442、串行口控制字及控制寄存器②SM2(SCON.5)——多機通信控制位,主要用于方式2和方式3。
若置SM2=1,則允許多機通信。當一片89C51(主機)與多片89C51(從機)通信時,所有從機的SM2位都置1。主機首先發送的一幀數據為地址,即從機機號,其中第9位為1,所有的從機接收到數據后,將其中第9位裝入RB8中。各個從機根據收到的第9位數據(RB8中)的值來決定從機可否再接收主機的信息。若(RB8)=0,說明是數據幀,則使接收中斷標志位RI=0,信息丟失;若(RB8)=1,說明是地址幀,數據裝入SBUF并置RI=1,中斷所有從機,被尋址的目標從機清除SM2以接收主機發來的一幀數據。其他從機仍然保持SM2=1。若SM2=0,即不屬于多機通信情況,則接收一貞數據后,不管第九位數據是0還是1,都制RI=1,接收到的數據裝入SBUF。根據SM2這個功能,可實現多個89C51應用系統的串行通信。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才制1,以便接收下一貞數據。在方式0時,SM2必須是0。返回2/6/2023452、串行口控制字及控制寄存器③REN(SCON.4)——允許接收控制位。由軟件置1或清0,只有當REN=1時才允許接收,相當于串行接收的開關;若REN=0,則禁止接收。在串行通信接收控制過程中,如果滿足RI=0和REN=1(允許接收)的條件,就允許接收,一幀數據就裝載入接收SBUF中。④TB8(SCON.3)——發送數據的第9位(D8)裝入TB8中。在方式2或方式3中,根據發送數據的需要由軟件置位或復位。在許多通信協議中可用作奇偶校驗位,也可在多機通信中作為發送地址幀或數據幀的標志位。對于后者,TB8=1,說明該幀數據為地址;TB8=0,說明該幀數據為數據字節。在方式0或方式1中,該為未用。返回2/6/2023462、串行口控制字及控制寄存器⑤RB8(SCON.2)——接收數據的第9位。在方式2或方式3中,接收到的第9位數據放在RB8位。它或是約定的奇/偶校驗位,或是約定的地址/數據標識位。在方式2和方式3多機通信中,若SM2=1,如果RB8=1,說明收到的數據為地址幀。在方式1中,若SM2=0(即不是多機通信情況),RB8中存放的是已接收到的停止位。在方式0中,該位未用。⑥TI(SCON.1)——發送中斷標志。在一幀數據發送完時被置位。在方式0串行發送第8位結束或其他方式串行發送到停止位的開始時由硬件置位,可用軟件查詢。它同時也申請中斷,TI置位意味著向CPU提供“發送緩沖器SBUF已空”的信息,CPU可以準備發送下一幀數據。串行口發送中斷被響應后,TI不會自動清0,必須由軟件清0。返回2/6/2023472、串行口控制字及控制寄存器⑦RI(SCON.0)——接收中斷標志。在節收到一幀有效數據后由硬件置位。在方式0中,第8位數據發送結束時,由硬件置位;在其他三種方式中,當接收到停止位中間時由硬件置位。RI=1,申請中斷,表示一幀數據接收結束,并已裝入接收SBUF中,要求CPU取走數據。CPU響應中斷,取走數據。RI也必須由軟件清0,清除中斷申請,并準備接收下一幀數據。串行發送中斷標志TI和接收中斷標志RI是同一個中斷源,CPU事先不知道是發送中斷TI還是接收中斷RI產生的中斷請求,所以,在全雙工通信時,必須由軟件來判別。復位時,SCON所有位均清0。返回2/6/2023482、串行口控制字及控制寄存器(2)PCON(87H)
電源控制寄存器PCON中只有SMOD位與串行口工作有關,如圖7-9所示。圖7-9電源控制寄存器PCON返回2/6/2023492、串行口控制字及控制寄存器
SMOD(PCON.7)——波特率倍增位。在串行口方式1、方式2和方式3時,波特率和SMOD成正比,亦即當SMOD=1時,波特率提高一倍。復位時,SMOD=0。返回2/6/2023503、串行通信工作方式根據實際需要,89C51串行口可設置4種工作方式,可有8位、10位或11位幀格式。
方式0以8位數據為一幀,不設起始位和停止位,先發送或接收最低位。其幀格式如下:返回2/6/2023513、串行通信工作方式方式1以10位為一幀傳輸,設有1個起始位(0),8個數據位和1個停止位(1)。其幀格式為:返回2/6/2023523、串行通信工作方式方式2和方式3以11位為1幀傳輸,設有1個起始位(0),8個數據位,1個附加第9位和1個停止位(1)。其幀格式為:附加第9位(D8)由軟件置1或清0。發送時在TB8中,接收時送RB8中。返回2/6/2023533、串行通信工作方式(1)串行口方式0
方式0為同步移位寄存器輸入/輸出方式,常用于擴展I/O口。串行數據通過RXD輸入或輸出,而TXD用于輸出移位時鐘,作為外接部件的同步信號。圖7-10(a)為發送電路,圖7-11(a)為接收電路。這種方式不適用于兩個89C51之間的直接數據通信,但可以通過外接移位寄存器來實現單片機的接口擴展。返回2/6/202354圖7-10方式0發送電路及時序返回2/6/202355圖7-11方式0接收電路及時序返回2/6/2023563、串行通信工作方式例如,74LS164可用于擴展并行輸出口,74LS165可用于擴展輸入口。在這種方式下,收/發的數據為8位,低位在前,無起始位、奇偶校驗位及停止位,波特率是固定的。返回2/6/2023573、串行通信工作方式發送過程中,當執行一條將數據寫入發送緩沖器SBUF(99H)的指令時,串行口把SBUF中8位數據以fosc/12的波特率從RXD(P3.0)端輸出,發送完畢置中斷標志TI=1。方式0發送時序如圖7-10(b)所示。寫SBUF指令在S6P1處產生一個正脈沖,在下一個機器周期的S6P2處數據的最低位輸出到RXD(P3.0)腳上;再在下一個機器周期的S3,S4,S5輸出移位時鐘為低電平,而在S6級下一個機器周期的S1,S2為高電平,就這樣講8位數據由低位至高位一位一位順序通過RXD線輸出,并在TXD腳上輸出fosc/12的移位時鐘,在“寫SBUF”有效后的第10個機器周期的S1P1將發送中斷標志TI置位。圖中,74LS164是TTL“串入并出”移位寄存器。返回2/6/2023583、串行通信工作方式
接收時,用軟件置REN=1(同時,RI=0),即開始接收。接收時序如圖7-11(b)所示。當使SCON中的REN=1(RI=0)時,產生一個正脈沖,在下一個機器周期的S3P1~S5P2,從TXD(P3.1)腳上輸出低電平的移位時鐘,在此機器周期的S5P2對P3.0腳采樣,并在本機器周期的S6P2通過串行口內的輸入移位寄存器將采樣值移位接收;在同一個機器的S6P1到下一個機器周期的S2P2,輸出移位時鐘為高電平。于是,講述句字節從地位至高位一位一位地接收下來病狀如SBUF中,在啟動接收過程(即寫SCON,清RI位)將SCON中的RI清0之后的第10個機器周期的S1P1,RI被置位。這一幀數據接收完畢,可進行下一幀接收。圖7-11(b)中,74LS165是TTL“并入串出”移位寄存器,QH端為74LS165的串行輸出端,經P3.0輸入至89C51。返回2/6/2023593、串行通信工作方式(2)串行口方式1方式1真正用于串行發送或接收,為10位通用異步接口。TXD與RXD分別用于發送與接收數據。收發一幀數據的格式為1位起始位、8位數據位(低位在前)、1位停止位,共10位。在接收時,停止位進入SCON的RB8,此方式的傳送波特率可調。串行口方式1的發送和接收時序如圖7-12(a)和(b)所示返回2/6/202360圖7-12方式1發送和接收時序返回2/6/2023613、串行通信工作方式方式1發送時,數據從引腳TXD(P3.1)端輸出。當執行數據寫入發送緩沖器SBUF的命令時,就啟動了發送器開始發送。發送時的定時信號,也就是發送移位時鐘(TX時鐘),是由定時器T1(見圖7-7)送來的溢出信號經過16分頻或32分頻(取決于SMOD的值)而得到的,TX時鐘就是發送波特率。可見,方式1的波特率是可變的。發送開始的同時,SEND變為有效,將起始位向TXD輸出;此后每經過一個TX時鐘周期(16分頻計數器溢出一次為一個時鐘周期,因此,TX時鐘頻率由波特率決定。)產生一個移位脈沖,并由TXD輸出一個數據位;8位數據位全部發送完后,置為位TI,并申請中斷置TXD為1作為停止位,再經一個時鐘周期,SEND失效。返回2/6/2023623、串行通信工作方式
方式1接收時,數據從引腳RXD(P3.0)端輸入。接收是在SCON寄存器中REN位置1的前提下,并檢測到起始位(RXD上檢測到1→0的跳變,即起始位)而開始的。接收時,定時信號有兩種(如圖7-12(b)所示):一種是接收移位時鐘(RX時鐘),它的頻率和傳送波特率相同,也是由定時器T1的溢出信號經過16或32分頻而得到的;另一種是位檢測器采樣脈沖,它的頻率是RX時鐘的16倍,亦即在一位數據期間有16位檢測器采樣脈沖,為完成檢測,以16倍于波特率的速率對RXD進行采樣。返回2/6/2023633、串行通信工作方式為了接受準確無誤,在正式接受數據之前,還必須判定這個1→0跳變是否是干擾引起的。為此,在這位中間(即一位時間分成16等份,在第7,第8及第9等份)連續對RXD采樣三次,取其中兩次相同的值進行判斷。這樣能較好地消除干擾的影響。當確認是真正的起始位(0)后,就開始接受一幀數據。當一幀數據接受完畢后,必須同時滿足以下兩個條件,這次接受才真正有效。返回2/6/2023643、串行通信工作方式①RI=0,即上一幀數據接收完成時,RI=1發出的中斷請求已被響應,SBUF中數據已被取走。由軟件使RI=0,以便提供“接收SBUF已空”的信息。②SM2=0或收到的停止位為1(方式1時,停止位進入RB8),則將接收到的數據裝入串行口的SBUF和RB8(RB8裝入停止位),并置位RI;如果不滿足,接收到的數據不能裝入SBUF,這意味著該幀信息將會丟失。
值得注意的是,在整個接收過程中,保證REN=1是一個先決條件。只有當REN=1時,才能對RXD進行檢測。返回2/6/2023653、串行通信工作方式(3)串行口方式2和方式3
串行口工作在方式2和方式3均為每幀11位異步通信格式,由TXD和RXD發送與接收(兩種方式操作是完全一樣的,所不同的只是波特率)。每幀11位,即1位起始位,8位數據位(低位在前),1位可編程的第9數據位和1位停止位。發送時,第9數據位(TB8)可以設置為1或0,也可將奇偶位裝入TB8,從而進行奇偶校驗;接收時,第9數據位進入SCON的RB8。方式2和方式3的發送、接收時序如圖7-13所示。其操作與方式1類似。返回2/6/202366圖7-13方式2、方式3發送和接收時序返回2/6/2023673、串行通信工作方式發送前,先根據通信協議由軟件設置TB8(如作奇偶校驗位或地址/數據標志位),然后將要發送的數據寫入SBUF,即可啟動發送過程。串行口能自動把TB8取出,并裝入到第9位數據位的位置,再逐一發送出去。發送完畢,使TI=1。
接收時,使SCON中的REN=1,允許接收。當檢測到RXD(P3.0)端有1→0的跳變(起始位)時,開始接收9位數據,送入移位寄存器(9位)。當滿足RI=0且SM2=0,或接收到的第9位數據為1時,前8位數據送入SBUF,附加的第9位數據送入SCON中的RB8,置RI為1;否則,這次接收無效,也不置位RI。返回2/6/2023684、波特率設計在串行通信中,收發雙方對發送或接收的數據速率有一定的約定,通過軟件對89C51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應著三種波特率。由于輸入的移位時鐘來源不同,因此,各種方式的波特率計算公式也不同。返回2/6/2023694、波特率設計(1)方式0的波特率由圖7-14可見,方式0時,發送或接收一位數據的移位時鐘脈沖由S6(即第6個狀態周期,第12個節拍)給出,即每個機器周期產生一個移位時鐘,發送或接收一位數據。因此,波特率固定為振蕩頻率的1/12,并不受PCON寄存器中SMOD位的影響。圖7-14串行口方式0波特率的產生返回2/6/2023704、波特率設計方式0波特率≌fosc/12注意,符號“≌”表示左面的表達式只是引擁右面表達式的數值,即右面的表達式是提供了一種計算的方法。返回2/6/2023714、波特率設計(2)方式2的波特率串行口方式2波特率的產生與方式0不同,即輸入的時鐘源不同,其時鐘輸入部分入圖7-15所示。控制接收與發送的移位時鐘由振蕩頻率fosc的第二節拍P2時鐘(即fosc/2)給出,所以,方式2波特率取決于PCON中SMOD位的值:SMOD=0時,波特率為fosc的1/64;SMOD=1時,波特率為fosc的1/32。即方式2波特率≌2SMOD/64×fosc圖7-15串行口方式2波特率的產生返回2/6/2023724、波特率設計(3)方式1和方式3的波特率方式1和方式3的移位時鐘脈沖由定時器T1的溢出率決定,如圖7-16所示。因此,89C51串行口方式1和方式3的波特率由定時器T1的溢出率與SMOD值同時決定。即方式1、方式3波特率≌T1溢出率/n圖7-16串行口方式1、方式3波特率的產生返回2/6/2023734、波特率設計
當SMOD=0時,n=32;SMOD=1時,n=16。所以,可用下式確定方式1和方式3的波特率:方式1、方式3波特率≌2SMOD/32×(T1溢出速率)其中,T1溢出速率取決于T1的計數速率(計數速率≌fosc/12)和T1預置的處置。若定時器T1采用模式1時,波特率公式如下:串行方式1、方式3波特率≌2SMOD/32×(fosc/12)/(216-初值)返回2/6/2023744、波特率設計表7-2列出了串行口方式1、方式3常用波特率及其初值。定時器T1用作波特率發生器時,通常選用定時器模式2(自動重裝初值定時器)比較實用。要設置定時器T1為定時方式(使C/T=0),讓T1計數內部振蕩脈沖,即計數速率為fosc/12(注意應禁止T1中斷,以免溢出而產生不必要的中斷)。先設定TH1和TL1定時即輸初值為X,那么每過“28-X”個機器周期,定時器T1就會產生一次溢出。返回2/6/202375表7-2常用波特率與其他參數選取關系返回2/6/2023764、波特率設計因此,T1溢出速率為T1溢出速率≌(fosc/12)/(28-X)于是,可得出定時器T1模式2的初始值X:返回2/6/2023774、波特率設計例7-1:89C51單片機時鐘振蕩頻率為11.0592MHz,選用定時器T1工作模式2作為波特率發生器,波特率為2400b/s,求初值。解:設置波特率控制為(SMOD)=0所以,(TH1)=(TL1)=F4H。返回2/6/2023784、波特率設計
系統晶體振蕩頻率選為11.0592MHz就是為了使初值為整數,從而產生精確的波特率。如果串行通信選用很低的波特率,可將定時器T1置于模式0或模式1,即13位或16位定時方式;但在這種情況下,T1溢出時,需要中斷服務程序重裝初值。中斷響應時間和執行指令時間會使波特率產生一定的誤差,可用改變初值的辦法加以調整。返回2/6/2023797.2.289C51串行口的工作方式及應用
如前所述,89C51串行口的工作主要受串行口控制寄存器SCON的控制,另外,也和電源控制寄存器PCON有些關系。SCON寄存器用來控制串行口的工作方式,還有一些其他的控制作用。89C51單片機串行口的四種工作方式傳送的數據位數敘述如下:返回2/6/2023807.2.289C51串行口的工作方式及應用①方式0:移位寄存器輸入/輸出方式。串行數據通過RXD線輸入或輸出,而TXD線專用于輸出時鐘脈沖給外部移位寄存器。方式0可用來同步輸出或接收8位數據(最低位首先輸出),波特率固定為fosc/12,其中,fosc為單片機的時鐘頻率。②方式1:10位異步接收/發送方式。一幀數據包括1位起始位(0),8位數據位和1位停止位(1)。串行接口電路在發送時能自動插入起始位和停止位;在接收時,停止位進入特殊功能寄存器SCON的RB8位。方式1的傳送波特率是可變的,可通過改變內部定時器的定時值來改變波特率。③方式2:11位異步接收/發送方式。除了1位起始位、8位數據位、1位停止位之外,還可以插入第9位數據位。④方式3:同方式2,只是波特率可變。返回2/6/2023811、串行口方式0的應用89C51單片機串行口基本上是異步通信接口,但在方式0時是同步操作。外接串入——并出或并入——串出器件,可實現I/O的擴展。串行口方式0的數據傳送可以采用中斷方式,也可以采用查詢方式。無論哪種方式,都要借助于TI或RI標志。在串行口發送時,或者靠TI置位后引起中斷申請,在中斷服務程序中發送下一組數據;或者通過查詢TI的值,只要TI為0就繼續查詢,直到TI為1后結束查詢,進入下一個字符的發送。在串行口接收時,由RI引起中斷或對RI查詢來決定何時接收下一個字符。無論采用什么方式,在開始串行通信前,都要先對SCON寄存器初始化,進行工作方式的設置。在方式0中,SCON寄存器的初始化只是簡單地把00H送入SCON就可以了。返回2/6/2023821、串行口方式0的應用例7-2:用89C51串行口外接164串入——并出移位寄存器擴展8位并行口;8位并行口的每位都接一個發光二極管,要求發光二極管從左到右以一定延遲輪流顯示,并不斷循環。設發光二極管為共陰極接法,如圖7-17所示。解:設數據串行發送采用中斷方式,顯示的延遲通過調用延遲程序DELAY來實現。圖7-17返回2/6/2023831、串行口方式0的應用程序清單:
ORG0023H ;串行口中斷入口
AJMPSBR ;轉入串行口中斷服務程序
ORG2000H ;主程序起始地址
MOVSCON,#00H ;串行口方式0初始化
MOVA,#88H ;最左一位發光二極管先亮
CLRP1.0 ;關閉并行輸出
MOVSBUF,A ;開始串行輸出LOOP: SJMP$ ;等待中斷SBR: SETBP1.0 ;啟動并行輸出
ACALLDELAY ;顯示延遲一段時間
CLRTI ;清發送中斷標志
RRA ;準備右邊一位顯示
CLRP1.0 ;關閉并行輸出
MOVSBUF,A ;再一次串行輸出
RETI ;中斷返回返回2/6/2023841、串行口方式0的應用
用方式0外加移位寄存器來擴展8位輸出口時,要求移位寄存器帶有輸出控制,否則串行移位過程也會反映到并行輸出口;另外,輸出口最好再接一個寄存器或鎖存器,以免在輸出門關閉使(STB=0)輸出又發生變化。
用方式0加上并入——串出移位寄存器可擴展一個8位并行輸入口。移位寄存器必須帶有預置/移位的控制端,由單片機的一個輸出端子加以控制,以實現先由8位輸入口置數到移位寄存器,然后再串行移位從單片機的串行口輸入到接收緩沖器,最后再讀入到CPU中。返回2/6/2023851、串行口方式0的應用例7-3:用89C51串行口外加移位寄存器165或166擴展8位輸入口,輸入數據由8個開關提供,另有一個開關K提供聯絡信號。當K=0時,表示要求輸入數據,輸入的8位為開關量,提供邏輯模擬子程序的輸入信號。如圖7-18所示。圖7-18返回2/6/2023861、串行口方式0的應用解:串行口方式0的接收要用SCON寄存器中的REN位作為開關來控制。因此,初值化時,除了設置工作方式之外,還要使REN位為1,其余各位仍然為0。對RI采用查詢方式來編寫程序,當然,先要查詢開關K是否閉合。程序清單:START:MOVSCON,#10H;串行口方式0初始化
JBP1.1,$ ;開關K未閉合,等待
SETBP1.0 ;P/S=1,并行置入數據
CLRP1.0 ;PS=0,開始串行移位
JNBRI,$ ;查詢RI CLRRI ;查詢結束,清RI MOVA,SBUF ;讀數據到累加器
ACALLLOGSIM ;進行邏輯模擬
SJMPSTART ;準備下一次模擬返回2/6/2023872、串行口方式1的發送和接收例7-4:89C51串行口按雙工方式收發ASCII字符,最高位用來作奇偶校驗位,采用可校驗方式,要求傳送的波特率為1200b/s。編寫有關的通信程序。解:7位ASCII碼加1位奇校驗共8位數據,故可采用串行口方式1。
89C51單片機的奇偶校驗位P是當累加器A中1的數目為奇數時,P=1。如果直接把P的值放入ASCII碼的最高位,恰好成了奇偶校驗,與要求不符。因此,要把P的值取反以后放入ASCII碼最高位,才是要求的奇校驗。返回2/6/2023882、串行口方式1的發送和接收
雙工通信要求收、發能同時進行。實際上,收、發操作主要是在串行接口進行,CPU只是把數據從接收緩沖器讀出和把數據寫入發送緩沖器。數據傳送用中斷方式進行,響應中斷以后,通過檢測是RI置位還是TI置位來決定CPU是進行發送操作還是接收操作。發送和接收都通過調用子程序來完成,設發送數據區的首地址為20H,接收數據區的首地址為40H,fosc為6MHz,通過查波特率初值(表7-2)可知定時器的初裝值為F3H。定時器T1采用工作模式2,可以避免計數溢出后用軟件重裝定時初值的工作。返回2/6/2023892、串行口方式1的發送和接收程序清單:主程序
MOVTMOD,#20H;定時器1設為模式2MOVTL1,#0F3H;定時器初值
MOVTH1,#0F3H;8位重裝值
SETBTR1;啟動定時器1MOVSCON,#50H;設置為方式1,
;REN=1MOVR0,#20H;發送數據區首址
MOVR1,#40H;接收數據取首址
ACALLSOUT;先輸出一個字符
SETBESSETBEASJMP$;等待中斷
中斷服
ORG0023H;串行口中斷入口
AJMPSBR1;轉至中斷服務程序
ORG0100HSBR1:JNBRI,SEND;TI=1,為發送中斷
ACALLSIN;RI=1,為接收中斷
SJMPNEXT;轉至統一的出口SEND:ACALLSOUT;調用發送子程序NEXT:RETI;中斷返回返回2/6/2023902、串行口方式1的發送和接收發送子程序
SOUT:CLRTIMOVA,@R0;取發送數據到AMOVC,P;奇偶標識賦予CCPLC;奇校驗
INCR0;修改發送數據指針
MOVSBUF,A;發送ASCII碼
RET;返回接收子程序
SIN:CLRRI MOVA,SBUF;讀出接收緩沖區內容
MOVC,P;取出校驗位
CPLC;奇校驗
ANLA,#7FH;刪去校驗位
MOV@R1,A;讀入接收緩沖區
INCRI;修改接收數據指針
RET;返回返回2/6/2023912、串行口方式1的發送和接收在主程序中已初始化REN=1,則允許接收。以上程序基本上具備了全雙工通信的能力,但不能說很完善。例如,再接收子程序中,雖然檢驗了奇偶校驗位,但沒有進行出錯處理;另外,發送和接收數據區的范圍都很有限,也不能滿足實際需要。但有了一個基本的框架之后,逐漸完善還是可以做到的。返回2/6/2023922、串行口方式1的發送和接收例7-5:采用查詢方式由串行口發送帶奇偶校驗位的數據塊。解:本理由內部RAM單元20H-3FH取出ASCII碼數據,在最高位上加奇偶校驗位后由串行口發出。采用8位異步通信方式,波特率為1200b/s,fosc=11.059MHz。由要求可知,應把串行口設置為方式1,采用定時器1模式2作為波特率發生器,預置值(TH1)=0E8H。返回2/6/2023932、串行口方式1的發送和接收程序清單:主程序;
MOVTMOD,#20H ;設置定時器1為模式2 MOVTL1,#0E8H ;初值,波特率為1200b/s MOVTH1,#0E8H SETBTR1 ;啟動T1運行
MOVSCON,#01000000B ;設置串行口為方式1 MOVR0,#20H MOVR7,#32 ;數據塊長度LOOP: MOVA,@R0ACALLSP-OUTJNBP,ERROR;傳輸出錯處理,由SP-OUT中“CPLC”結果決定
INCR0DJNZR7,LOOP ……返回2/6/2023942、串行口方式1的發送和接收串行口發送子程序(奇校驗);SP-OUT:MOVC,PSW.0;設置奇校驗位,校驗位P=1為奇校驗
CPLC;奇校驗(無此指令位偶校驗)
MOVACC.7,C;ACC.7補0或1MOVSBUF,A;啟動串行口發送過程
CLRTI;清TI標志,允許在發送
RETERROR:(略)返回2/6/2023952、串行口方式1的發送和接收例7-6:由串行口接收帶奇偶校驗位的數據塊。解:采用查詢方式,本例與上例相呼應,接收器把接收到的32B數據存放在20H-30H單元內,波特率同上,若奇偶校驗出錯則置進位位為1。程序清單:返回2/6/2023962、串行口方式1的發送和接收主程序;
MOVSCON,#01010000B;設串口方式1,允許接收
MOVTMOD,#20H ;設置定時器T1為模式2 MOVTL1,#0E8H ;初值,波特率為1200b/s MOVTH1,#0E8H SETBTR1 ;啟動T1運行
MOVR0,#20H MOVR7,#32 ;數據塊長度LOOP: ACALLSP-IN ;調接收一幀子程序
JCERROR ;由SP-IN中“CPLC”結果決定
MOV@R0,A ;存放接收的數據
INCR0DJNZR7,LOOP……返回2/6/2023972、串行口方式1的發送和接收接收一幀子程序;
SP-IN: JNBRI,$ ;RI由硬件置位
CLRRI ;軟件清除RI MOVA,SBUF MOVC,P ;檢查奇校驗位
CPLC ;置C為主程序“JCERROR”用
ANLA,#7FH ;去掉奇校驗位
RETERROR: (略)返回2/6/2023982、串行口方式1的發送和接收例7-7:利用串行口和堆棧技術發送字符串常量。解:上面兩個例子中,發送和接收的都是一些變量數據,且存放在內部RAM單元中。現說明如何利用堆棧技術發送存放在程序存儲器內的字符串常量。下面的例子中,這些字符串是發送給CRT終端的,以回車符(CR)和換行符(LF)開始,以換碼符(ESC)為結尾。下面是程序片斷:返回2/6/2023992、串行口方式1的發送和接收CREQU0DH;ASCII回車符LFEQU0AH;ASCII換行符ESCEQU1BH;ASCII換碼符……MOVTMOD,#20H;設置定時器T1為模式2MOVTL1,#0FDH;設波特率位9600b/s
;(fosc=11.059MHz)MOVTH1,#0FDH
SETBTR1;啟動T1運行MOVSCON,#01000000B;設置串行口方式1ACALLXSTRINGDBCR,LFDB‘NU&BIAA’;字符串常量DBESC……XSTRING:
POPDPH;把第1個字符的地址裝入DPTRPOPDPLXSTR-1:
CLRA;設偏移量為零
MOVCA,@A+DPTR;取第1個字符XSTR-2:MOVSBUF,A;啟動一幀發送過程
JNBTI,$;等待發送一幀完
CLRTIINCDPTR;指向下一字符
CLRA;偏移量為0MOVCA,@A+DPTR;取下一字符
CJNEA,#ESC,XSTR-2;讀到ESC符時,;停止發送
MOVA,#1JMP@A+DPTR;返回執行ESC符后;的一條指令,即接著;執行背景程序返回2/6/20231002、串行口方式1的發送和接收說明:程序中采用了“ACALLXSTRING”指令,而實際上由XSTRING開始的程序段形式上并不構成一個子程序,因為子程序,因為子程序應由RET作為結尾。采用ACALL指令的目的在于利用子程序調用協議,即執行調用指令后,把一個單元(存放常量CR)的地址壓入了堆棧。這樣,XSTRING段的第1,2條指令執行后,就把放置字符常量CR的單元地址置入DPTR了。ESC后一個單元應是背景程序中送完字符串后要執行的那條指令,故執行完XSTRING程序段的最后2條指令,將繼續執行背景程序。返回2/6/20231013、串行口方式2、方式3的發送和接收串行口方式2與方式3基本一樣(只是波特率設置不同),接收/發送11位信息:開始為l位起始位(0),中間8位數據位,數據位之后為1位程控位(由用戶置SCON的TB8決定),最后是1位停止位(1)。只比方式l多了一位程控位。返回2/6/20231023、串行口方式2、方式3的發送和接收例7-8:用第9個數據位作奇偶校驗位,編制串行口方式2的發送程序。解:設計一個發送程序,將片內RAM50H~5FH中的數據串行發送;串行口設定為方式2狀態,TB8作奇偶校驗位。在數據寫入發送緩沖器之前,先將數據的奇偶位P寫入TB8,這時,第9位數據作奇偶校驗用。方式2發送程序流程圖如圖7-19所示。圖7-18返回2/6/20231033、串行口方式2、方式3的發送和接收程序清單如下:TRT: MOVSCON,#80H;方式2設定
MOVPCON,#80H;取波特率為fosc/32 MOVR7,#10H ;數據長度10H→R7LOOP: MOVA,@R0;取數據→A MOVC,PSW.0;P→TB8 MOVTB8,C MOVSBUF,A;數據→SBUF,啟動發送WAIT: JBCTI,CONT;判斷發送中斷標志
SJMPWAITCONT: INCR0 DJNZR7,LOOP RET返回2/6/20231043、串行口方式2、方式3的發送和接收例7-9編制一個串行口方式2接收程序,并核對奇偶校驗位。解:根據上面介紹的特點,在方式2、方式3的發送過程中,將數據和附加在TB8中的奇偶位一塊發向對方。因此,作為接收的一方應設法取出該奇偶位進行核對,相應的接收程序段為:返回2/6/20231053、串行口方式2、方式3的發送和接收RRR:
MOVSCON,#90H;選方式2,并允許接收(REN=1)LOOP:
JBCRI,RECEIV
;等待接收數據并清RI
SJMPLOOPRECEIV:MOVA,SBUF
;將接收到的字符取出后,送到ACC。注意,
;傳送指令影響PSW,產生接收端的奇偶值
JBPSW.0,ONE
;判斷接收端的奇偶值
JBRB8,ERR
;判斷發送端的奇偶值
SJMPRIGHTONE:
JBRB8,ERRRIGHT:
……
;接收正確
……ERR:
……
;接收有錯當接收到一個字符時,從SBUF轉移到ACC中時會產生接收端的奇偶值,而保存在RB8中的值為發送端的奇偶值,兩個奇偶值應相等,否則接收字符有錯。發現錯誤要及時通知對方重發。返回2/6/20231063、串行口方式2、方式3的發送和接收例7-10:編制一個發送程序,將片內RAM中50H—5FH的數據串行發送。串行口設定為工作方式2,TB8作奇偶校驗位。解:在數據寫入發送SBUF之前,先將數據的奇偶標志P寫入TB8,此時,第9位數據便可作奇偶校驗用。可采用查詢和中斷兩種方式發送。返回2/6/20231073、串行口方式2、方式3的發送和接收(1)采用查詢方式的程序段
ORG0000H AJMPMAIN ;上電,轉向主程序
ORG0100H ;主程序MAIN: MOVSCON,#80H ;設工作方式2 MOVPCON,#80H ;取波特率為fosc/32 MOVR0,#50H ;首址50H送R0 MOVR7,#10H ;數值長度送R7LOOP: MOVA,@R0 ;取數據
MOVC,PSW.0 ;P→C MOVTB8,C ;奇偶標志送TB8 MOVSBUF,A ;發送數據WAIT: JBCTI,CONT AJMPWAIT ;等待中斷標志TI=1CONT: INCR0 DJNZR7,LOOP ;數值尚未發送完,繼續發送下一個數據
SJMP$ END返回2/6/20231083、串行口方式2、方式3的發送和接收(2)采用中斷方式的程序段
ORG0000HAJMPMAIN;上電,轉向主程序
ORG0023H;串行口的中斷入口地址
AJMPSERVE;轉向中斷服務程序
ORG0100H;主程序MAIN:
MOVSCON,#80HMOVPCON,#80HMOVR0,#50HMOVR7,#0FHSETBES;允許串行口中斷
SETBEA;CPU允許中斷
MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;發送第一個數據
SJMP$SERVE:
CLRTI;清除發送中斷標志
INCR0;修改數據地址
MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;發送數據
DJNZR7,ENDT;判斷數據塊發送完否;若未發送完,則轉ENDTCLRES;若發送完,則禁止串行口中斷ENDT:RETI;中斷返回
END返回2/6/20231093、串行口方式2、方式3的發送和接收例7-11:編制一個接收程序,將接收的16B數據送入片內RAM的5OH—5FH單元中。設串行口工作于方式3,波特率為2400b/s。解:方式3為11位異步通信方式,波特率取決于TI的溢出率。查表7-2可知,當晶振為11.059MHz,波特率為2400b/s時,可取SMOD=0。返回2/6/20231103、串行口方式2、方式3的發送和接收源程序如下:MAIN: MOVTMOD,#20H ;設TI工作于模式2 MOVTH1,#0F4H ;賦循環計數初值
MO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶葉代銷合作協議書
- 鋼管扣件保管協議書
- 運維改造合同協議書
- 閱文合同霸王協議書
- 駐場開發保密協議書
- 酒店入股經營協議書
- 修腳店合伙開店協議書
- 養雞合伙人合同協議書
- 菜園開荒租賃協議書
- 車輛交付違約協議書
- 黑龍江牡丹江旅游介紹PPT模板
- 六、回顧整理-總復習2.圖形的認識與測量(二)-平面圖形的周長和面積(課件)青島版六年級下冊數學
- 中醫養生(靈源萬應茶)
- 追索子女撫養費起訴狀
- 六年級數學質量分析PPT
- 土地平整、池塘推土、雜草灌木叢及樹木清除施工方案
- 眼鏡鏡架的整形專業培訓2課件
- 下線儀式串詞策劃
- 通用長期供銷合同范本
- 《社區治理研究國內外文獻綜述(1900字)》
- 2023浙江省學生藝術特長測試A級理論復習資料
評論
0/150
提交評論