




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、與計算機接口設計第1頁,共59頁,2022年,5月20日,1點2分,星期日是時間上還需要額外的開銷。而串行通信的突出的優(yōu)點是僅僅需要數量很少的傳輸線,特別適合遠距離傳輸。此外,對于PIC單片機而言,串行通信的另一個優(yōu)點就是,需要占用的引腳的資源較少。 PIC16F87X單片機內部集成了兩個類型不同的串行通信模塊,即通用同步/異步收發(fā)器USART(Universal Synchronous/Asynchronous Receiver Transmitter)模塊和主控同步串行端口MSSP(Master Synchronous Serial Port)模塊。前者的主要應用目標是系統之間的遠距離串行
2、通信,此項技術的應用歷史比較久遠。而后者的主要應用目標是系統內部近距離的串行擴展。 串行通信的實現,在制式、種類、形式、規(guī)范、標準、編碼、檢錯、糾錯、幀結構、組網方式、調制方式等方面,存在著多種類型、變化、選擇和解決方案。例如,Philips公司發(fā)明的I2C總線,Intel等公司提出的SMBUS總線,Freescale公司首先應用的SPI接口,美國國家半導體公司(NSC)公司首先應用的MicroWire接口,達拉斯公司推出的1-Wire總線,美國電子工業(yè)協會推薦標準RS-232、RS433、RS-485接口,Intel等公司提出的USB總線,蘋果公司提出的IEEE-1394總線,博世公司提出的
3、CAN總線,現場總線基金推出的FF總線,Motorola公司聯合東芝公司共同開發(fā)的LONworks總線等,都是用來實現與串行通信功能相關的技術和規(guī)范。 第2頁,共59頁,2022年,5月20日,1點2分,星期日8.1 標準串行接口RS-232C接續(xù) 串行通信是指單片機或者計算機和外設之間使用一根數據信號線,數據在一個數據信號線上一位一位地進行傳輸,每一位數據都占據一個固定地時間長度,串行通信的特點是使用的數據線少,其傳輸的速度比較慢。串行通信的優(yōu)點也正體現在遠程通信和上下位機通信中,隨著新的串行數據協議的誕生,速度和距離都有了較大提高。 一個完整的串行通信系統如圖8.1所示,該通信系統包括數據
4、終端設備(DTE)和數據通信設備(DCE)。 1數據通信設備DTE:DTE是產生二進制信號的數據源,也是接收信息的目的,是由數據發(fā)送器或接收器或兼具兩者組成的設備,它可以是一臺計算機。 2數據通信設備DCE:DCE是一個使傳輸信號符合線路要求,或者滿足DTE要求的信號匹配器,它是提供數據終端設備與通信線路之間通信的建立、維持和終止連接等功能的設備,同時執(zhí)行信號變換與編碼,它可以是一個MODEM。第3頁,共59頁,2022年,5月20日,1點2分,星期日圖8.1 串行通信系統 在數據通信、計算機網絡以及分布式工業(yè)控制系統中,經常采用串行通信來交換數據和信息。1969年,美國電子工業(yè)協會(EIA)
5、公布了RS-232C作為串行通信接口的電氣標準,該標準定義了數據終端設備(DTE)和數據通信設備(DCE)間按位串行傳輸的接口信息,合理安排了接口的電氣信號和機械要求,在世界范圍內得到了廣泛的應用。但它采用單端驅動非差分接收電路,因而存在著傳輸距離不太遠(最大傳輸距離15m)和傳送速率不太高(最大位速率為20Kb/s)的問題。遠距離串行通信必須使用Modem,增加了成本。在分布式控制系統和工業(yè)局部網絡中,傳輸距離常介于近距離(20m)和遠距離(2km)之間的情況,這時RS-232C(25腳連接器)不能采用,用Modem又不經濟,因而需要制定新的串行通信接口標準。第4頁,共59頁,2022年,5
6、月20日,1點2分,星期日 1977年EIA制定了RS-449。它除了保留與RS-232C兼容的特點外,還在提高傳輸速率,增加傳輸距離及改進電氣特性等方面作了很大努力,并增加了10個控制信號。與RS-449同時推出的還有RS-422和RS-423,它們是RS-449的標準子集。另外,還有RS-485,它是RS-422的變形。RS-422、RS-423是全雙工的,而RS-485是半雙工的。 RS-422標準規(guī)定采用平衡驅動差分接收電路,提高了數據傳輸速率(最大位速率為10Mb/s),增加了傳輸距離(最大傳輸距離1200m)。 RS-423標準規(guī)定采用單端驅動差分接收電路,其電氣性能與RS-232
7、C幾乎相同,并設計成可連接RS-232C和RS-422。它一端可與RS-422連接,另一端則可與RS-232C連接,提供了一種從舊技術到新技術過渡的手段。同時又提高位速率(最大為300Kb/s)和傳輸距離(最大為600m)。 RS-485為半雙工的,當用于多站互連時可節(jié)省信號線,便于高速、遠距離傳送。許多智能儀器設備均配有RS-485總線接口,將它們聯網也十分方便。串行通信由于接線少、成本低,在數據采集和控制系統中得到了廣泛的應用,產品也多種多樣。8.1.1 RS-232C接口規(guī)格 RS-232C其中RS是Recommended Standard的縮寫,代表標準,232是標識符,C代表RS-2
8、32的最新一次修改(1969年),在這之前,有過RS-232A、RS-232B標準,它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程?,F在,計算機上的串行通信端口(RS-232)是標準配置端口,已經得到廣泛應用,目前計算機上一般都12個標準RS-232C串口,即通道COM1和COM2。第5頁,共59頁,2022年,5月20日,1點2分,星期日1RS-232C標準的電氣特性 EIA-RS-232C對電器特性、邏輯電平和各種信號線功能都作了明確規(guī)定。在TXD和RXD引腳上電平定義:邏輯1(MARK) -3V-15V;邏輯0(SPACE) 315V 在RTS、CTS、DSR、DTR 和DCD等控制
9、線上電平定義:信號有效(接通,ON狀態(tài),正電壓)+3V+15V;信號無效(斷開,OFF狀態(tài),負電壓)=-3V-15V 對于數據(信息碼):邏輯“1”的傳輸的電平為-3V-15V,邏輯“0”傳輸的電平為+3V+15V;對于控制信號;接通狀態(tài)(ON)即信號有效的電平為+3V+15V,斷開狀態(tài)(OFF)即信號無效的電平為-3V-15V,也就是當傳輸電平的絕對值大于3V 時,電路可以有效地檢查出來;而介于-3+3V之間的電壓即處于模糊區(qū)電位,此部分電壓將使得計算機無法準確判斷傳輸信號的意義,可能會得到0,也可能會得到1,如此得到的結果是不可信的,在通信時候體現的是會出現大量誤碼,造成通信失敗。因此,實
10、際工作時,應保證傳輸的電平在(315)V 之間。 目前,大部分計算機的RS-232C通信接口都使用了DB9連接器,主板的接口連接器有9根針輸出,也有些比較舊的計算機使用DB25連接器輸出,表8.1為RS-232C串口引腳定義表。第6頁,共59頁,2022年,5月20日,1點2分,星期日表8.1 RS-232C串口引腳定義表第7頁,共59頁,2022年,5月20日,1點2分,星期日 RS-232C 規(guī)定的邏輯電平與一般微處理器、單片機的邏輯電平是不同的,例如RS-232的邏輯“1”是以-3-15V來表示的,而單片機的邏輯“1”是以+5V來表示的,兩者完全不同。因此,單片機系統要和電腦的RS-23
11、2接口進行通信,就必須把單片機的信號電平(TTL電平)轉換成計算機的RS-232C電平,或者把計算機的RS-232C電平轉換成單片機的TTL電平,通信時必須對兩種電平進行轉換。實現這種轉換的方法可以使用分立元件,也可以使用專用RS-232電平轉換芯片。目前較為廣泛地使用專用電平轉換芯片,如MC1488、MC1489、MAX232等電平轉換芯片來實現EIA到TTL電平的轉換。下面介紹MAXIM公司的單電源電平轉換芯片MAX232及接口電路。 如圖8.2中所示,MAX232是單電源雙RS-232發(fā)送/接收芯片,采用單電源(+5V)供電,外接只需4個電容,便可以構成標準的RS-232通信接口,硬件接
12、口簡單,所以被廣泛采用。 圖8.2 MAX232實物及芯片引腳排列第8頁,共59頁,2022年,5月20日,1點2分,星期日8.1.2 接續(xù)方法 單片機和計算機RS-232接口電路如圖8.3所示,圖中的C1、C2、C3、C4是電荷泵升壓及電壓反轉部分電路,產生V+、V-電源供EIA電平轉換使用,C5是VCC對地去耦電容,其值為0.1UF,電容C1C5安裝時必須盡量靠近MAX232芯片引腳,以提高抗干擾能力。 圖8.3 采用MAX232CPE 芯片的PC機與單片機串行通信接口電路第9頁,共59頁,2022年,5月20日,1點2分,星期日 圖8. 4是一個采用分立元件構成的簡易RS-232串行通信
13、接口電路,使用三極管進行電平轉換,由于簡單的通信,對于通信穩(wěn)定性要求較高的應用,不建議使用分立元件,因為分立元件電路的穩(wěn)定性,誤碼率較高,不能完全滿足RS-232C的全部技術指標。分立元件組成的電路優(yōu)點是成本低廉,部分網站上介紹的產品就分立元件構成。圖8. 4 采用分立元件的簡易RS-232C通信接口電路第10頁,共59頁,2022年,5月20日,1點2分,星期日8.1.3 PIC串行通信設計實例 當 PIC單片機不具備片上硬件 USART或者USART不夠用時,可以利用軟件模擬實現異步串行通信。Microchip公司推出的 PIC系列單片機PIC16C711具有運行速度快、低功耗、價格低、體
14、積小等優(yōu)點。因為,不具備硬件 USART時需要用一般 I/O口來模擬串行口。1串行接口硬件電路 如圖 8. 5所示,RB0為接收腳,RB5為發(fā)送腳。RB0除作為一般 I/O引腳外,還可以作為外部中斷輸入引腳,引起中斷的方式分為上跳沿和下跳沿兩種方式。設置下跳沿引起中斷。當起始位到來時,RB0上出現下跳沿,引起中斷,如果不是干擾信號則開始接收數據。 RS- 485標準的特點是抗干擾能力強,傳輸速率高、傳送距離遠。它規(guī)定了雙端(平衡式)電氣接口特性。當單片機與具有 RS-485接口的PC機通信時,需要進行信號形式的轉換。從單片機發(fā)送到 PC機的信號首先轉換成平衡信號,再送往 PC機。從PC機發(fā)送到
15、單片機的信號先轉換成非平衡信號,再輸入單片機。信號形式的轉換工作由RS-485接口芯片 SN75176完成。SN75176差分總線收發(fā)器工作在半雙工方式,當工作于發(fā)送方式時,發(fā)送使能引腳DE為高電平,接收使能引腳RE也為高電平。當工作于接收方式時,發(fā)送使能引腳 DE為低電平,接收使能引腳RE也為低電平。這樣,可以將 DE與RE連接在一起,由 RB6引腳輸出控制信號,控制 SN75176的發(fā)送和接收使能。為了減少線路上信號的反射,需要匹配線路的特性阻抗。由于通信載體是雙絞線,它的特性阻抗為120左右,所以線路設計時,在 RS- 485網絡傳輸線的始端和末端各應接1只 120的匹配電阻,R1為單片
16、機一側的匹配電阻。由于 RS485芯片的特性,接收器的靈敏度為 200mV,即差分輸入端 VA-VB200mV時,輸出邏輯“1”;VA- VB-200 mV時,輸出邏輯“0”。當VA-VB200 mV時,輸出不確定。因此,當 A、B無信號輸入時,可能造成接收引腳R上出現低電平,這會誤認為通信幀起始位到來而引起工作不正常。第11頁,共59頁,2022年,5月20日,1點2分,星期日為了避免這種情況發(fā)生,可以人工的讓 A端電位高于 B端電位,使 R引腳在RS485總線不發(fā)送期間呈現唯一的高電平,單片機不會被誤中斷而接收到亂字符。通過在 A、B接上拉、下拉電阻 R3、R2可解決這個問題。 圖 8.
17、5PIC16C711與 PC機之間的接口電路2單片機通信程序框圖 PIC單片機與 PC機之間的通信方式為半雙工方式。一幀數據包括一位起始位、8位數據位、一位停止位和無奇偶校驗位。設發(fā)送和接收數據的波特率為9600 b/s,則每一位占用的時間td為19600s,約為104s。單片機晶振頻率為 4MHz,單片機執(zhí)行一條指令耗費時間 1s。 單片機接收數據程序框圖 PIC16C711單片機的 RB0引腳具備外部引腳跳變沿中斷功能,向 RB0引腳送一個上跳沿或下跳沿信號,則 INTCON寄存器的外部引腳跳變沿中斷標志位 INTF被置 1。如果總中斷和外部引腳跳變沿中斷都使能,并且此時單片機沒有執(zhí)行其他
18、中斷服務子程序,程序進入 INT中斷服務子程序。根據異步串行通信的特點,通信線路空閑時單片機接收的是第12頁,共59頁,2022年,5月20日,1點2分,星期日高電平,起始位到來時單片機接收到低電平,因此空閑位和起始位之間是一個下跳沿。單片機接收到下跳沿即起始位后,馬上進入中斷服務子程序,準備接收一幀數據。因此在主程序中設置由下跳沿引起外部引腳跳變沿中斷。下面將主要分析接收子程序即中斷服務子程序。單片機接收數據程序框圖如圖8. 6所示。 進入中斷服務子程序后,首先保護中斷現場,然后檢測起始位是否是“真的”。由于可能存在的各種干擾,PIC單片機有可能接收到的干擾信號正好是一個下跳沿,而實際上此時
19、根本沒有數據到來,從而造成誤接收數據。因此檢測起始位的真實性是有必要的。采取的方法是在52s(起始位的中點)后,檢測一次 RB0上的信號。程序框圖中是延時47s后檢測 RB0上的信號,原因是保護中斷現場的幾條指令要耗費幾個s。如果是低電平,則起始位是“真的”,否則為干擾信號,單片機清 INTF標志位,然后退出中斷服務子程序,回到主程序。若起始位是“真的”,則準備接收數據。設計規(guī)定數據位為 8位,故首先設置接收計數器R_CNT內容為 8。然后將 STATUS寄存器中的 C位清零,并右移接收數據寄存器RCV_R。C的內容即 0移入 RCV_R最高位,接下來接收數據位。為盡量保證數據的準確性,應該在
20、每位數據的中點檢測該位數據。因此,檢測第一位數據的時刻距離檢測起始位的時刻應該是一位數據所占的時間即 104s,此后的每一位數據檢測時刻之間也是如此。此時又要用到延時程序。因為每兩次檢測時刻之間除了延時之外,指令 (C清零、右移等指令)還要占用時間,這些指令占用 56s,因此,為了盡量保證在每一位的中心位置檢測數據,延時時間定為 98s。如果檢測得到的數據位為1,則置 RCV_R最高位為 1。如果數據位為 0,則不必改變最高位,因為 C為 0且已經移入 RCV_R的最高位。然后,將接收計數器內容減 1。8位數據接收完畢后,清 INTF標志。最后,退出中斷服務子程序。至此,8位數據接收全部存放于
21、 RCV_R中。 第13頁,共59頁,2022年,5月20日,1點2分,星期日 單片機發(fā)送數據程序框圖 用RB5引腳作為發(fā)送引腳,單片機發(fā)送數據程序框圖如圖8. 7所示。當有數據要從單片機發(fā)往PC機時,單片機調用發(fā)送子程序。在發(fā)送子程序中,首先設置發(fā)送計數器內容為 8,然后發(fā)送起始位,起始位應持續(xù) 104s。因此要調用延時子程序,延時子程序執(zhí)行完后,RB5上的信號并未立刻變成第一位數據的值,這是因為還要執(zhí)行幾條指令,如右移 TRS_R、置位等 RB5上的信號才會變化。假設延時 104s,那么加上幾條指令的執(zhí)行時間,起始位就比 104s寬了。因此,延時子程序少于 104s,根據具體的程序定為 9
22、7s。然后,右移發(fā)送數據寄存器 TRS_R,將其最低位即要發(fā)送的數據位移入 C中,再根據 C中的內容將RB5清零或置 1,然后將發(fā)送計數器內容減 1,并判斷其是否為 0。若為 1,則說明未發(fā)送完畢,繼續(xù)發(fā)送;否則,發(fā)送停止位。最后,退出發(fā)送子程序。 第14頁,共59頁,2022年,5月20日,1點2分,星期日圖 8.6單片機接收數據程序框圖 圖 8.7單片機發(fā)送數據程序框圖第15頁,共59頁,2022年,5月20日,1點2分,星期日8.2 PIC的USART應用 8.2.1 PIC16F877非同步通信功能(USART接口) 通用同步/異步接收發(fā)送模塊(USART)是兩個串行通信接口之一,US
23、ART又稱為SCI(Serial Communication Interface)。USART可以設置為全雙工異步串行通信系統,這種方式可以與個人計算機PC或串行接口CRT等外圍設備進行串行通信。也可以設置為半雙工異步串行通信系統,與串行接口的A/D或D/A集成電路、串行EEPROM等器件連接。 USART是二線制串行通信接口,它可以被定義如下三種工作方式:全雙工異步方式、半雙工同步主控方式、半雙工同步從動方式。為了把RC6和RC7分別設置成串行通信接口的發(fā)送/時鐘(TX/CK)線和接收/數據(TX/DT)線,必須首先把SPEN位(TCSTAT的RD7)和方向寄存器TRISC的D7:D6置1。
24、 USART功能模塊含有兩個8位可讀/寫的狀態(tài)/控制寄存器,它們是發(fā)送狀態(tài)/控制寄存器TXSTA和接收狀態(tài)/控制寄存器。第16頁,共59頁,2022年,5月20日,1點2分,星期日 USART帶有一個8位波特率發(fā)生器BRG(Baud Rato Generator),BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個獨立的8位定時器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器TXSTA的BRGH位(即D2)也被用來控制波特率(在同步方式下忽略BRGH位)。 向波特率寄存器SPBRG寫入一個新的初值時,都會使BRG定時器復位清零,由此可以保證BRG不需要等到定時器溢出后就可以輸出新
25、的波特率。 對USART方式進行初始化的程序如下: BSF STATUS,RP0 ;將指針指向數據存儲器的第1頁 MOVLW 0 x19 MOVWF SPBRG ;設置波特率為9600 BCF STATUS,RP0 ;將指針指向數據存儲器的第0頁 CLRF RCSTA ;將接收控制和狀態(tài)寄存器清零 BSF RCSTA,SPEN ;串口允許 CLRF PIR1 ;清除中斷標志 BSF STATUS,RP0 ;將指針指向數據存儲器的第1頁 CLRF TXSTA ;將發(fā)送控制和狀態(tài)寄存器清零 BSF TXSTA,BRGH ;設置為異步、高速波特率 BSF TXSTA,TXEN ;允許發(fā)送 BCF S
26、TATUS,RP0 ;將指針指向數據存儲器的第0頁 BSF RCSTA,CREN ;允許接收 初始化完成后,即可發(fā)送或接收數據。在發(fā)送或接收數據時,通過查詢發(fā)送/接收中斷標志位即可判斷是否發(fā)送完一個數據/接收到一個數據。 送/接收中斷標地不需要也不有用軟件復位。 第17頁,共59頁,2022年,5月20日,1點2分,星期日 在異步串行發(fā)送的過程中,只要TXREG寄存器為空,中斷標志TXIF就置位。因此,TXIF為1并不是發(fā)送完畢的標志,但仍可以用TXIF標志來判斷。因此當TXREG為空時,將數據送入后,數據會保留在TXREG寄存器中,直到前一個數據從發(fā)送移位寄存器中移出,即前一個數據發(fā)送。8.
27、2.2 串行接口芯片8251A 8251的管腳和內部結構如圖8. 8所示。1同CPU的連接信號 RESET:當這個引腳上出現一個6倍時鐘寬的高電平信號時,芯片被復位,使芯片 處于空閑狀態(tài)。這個空閑狀態(tài)將一直保持到由編程確定了新狀態(tài)才結束。在系統中 使用此芯片時,總是把復位端與系統的復位線相連,使它受到加電自動復位和人工 復位的控制。 CLK:是為芯片內有關電路工作提供時鐘的輸入端。這個時鐘的頻率與數據速率并 無直接關系,但是,為了電路工作可靠,在同步方式下最好使這個頻率比數據速率 大30倍以 上。在異步方式下,大4.5倍。 、 :是CPU對8251A中的寄存器讀、寫時的控制信號輸入端。 C/
28、:是一個決定CPU對芯片讀寫內容的控制輸入端。如果輸入為高電平,CPU 對芯片就是寫控制字或讀狀態(tài)字;反之,讀寫的內容就是數據。通常,將該端與地址 線的最低位相接。于是,8251A就占有兩個端口地址,偶地址為數據口地址,而奇 地址為控制口地址。 :片選輸入端。該引腳輸入低電平時,芯片可以與CPU之間傳輸數據;反之, 芯片的8個數據引腳處于懸空狀態(tài)。 第18頁,共59頁,2022年,5月20日,1點2分,星期日圖8.8 8251A 芯片引腳 D0D7:雙向8位數據線,同片內數據總線緩沖器相連,CPU通過D0D7向8251A 寫數據和控制字,以及讀數據和狀態(tài)字。 2MODEM控制信號 8251A還
29、提供了四個與MODEM相連的控制信號,信號的含義與RS232C標準相同。 (Data Terminal Ready):數據終端準備好(輸出,低電平有效)。這是 一個通用的輸出信號,可由命令字的位1置“1”,而變?yōu)橛行?,用以表示CPU準備就緒。第19頁,共59頁,2022年,5月20日,1點2分,星期日 (Data Terminal Ready):數據終端準備好(輸出,低電平有效)。這是 一個通用的輸出信號,可由命令字的位1置“1”,而變?yōu)橛行В靡员硎綜PU準備就緒。 (Request To Send):請求發(fā)送(輸出,低電平有效)。此信號用于通知 調制器,CPU已準備好發(fā)送。它可由命令字的位
30、5置“1”而變?yōu)橛行Вǖ碗娖接行В?(Clear To Send):清除發(fā)送信號(輸入,低電平有效)。這是調制解凋器 或其它外設送到8251A中的調制解調器控制器的信號。當其有效時,表示允許USART 發(fā)送數據。 上述四個信號在使用時應按規(guī)定引腳連接。信號在傳輸過程中,由MODEM輸入后存放在8251A的狀態(tài)字節(jié)中,芯片內對此并不作處理,只有當CPU讀狀態(tài)后才可能給出響應。CTS也是從MODEM送來的信號,如果為低電平。且8251A中已經設置了允許發(fā)送命令,芯片就可以向MODEM送出串行數據。如果在數據傳送中,出現了某個條件不滿足 的情況,那么,在傳輸完當前的字節(jié)后,即行停止。和都是由CPU
31、寫命令時給8251A設置的,為使兩個引腳有效(低電平),對寄存器中這兩位應寫入“1”。3發(fā)送器有關信號 TxD:發(fā)送數據。發(fā)送緩沖器從數據總線上接收數據,轉換成串行數據,并按要求 插入附加字符或附加位后,在時鐘 的下降沿按位從TxD上發(fā)送出去。 xRDY:發(fā)送器準備好信號。如果該信號有效,就表示發(fā)送緩沖器已空,CPU可以向 芯片送入新的數據。這個信號的狀態(tài)要受到命令字中TxEN位(允許發(fā)送)的控制。 如果 把TxRDY信號作為向CPU請求數據的中斷信號,TxEN位就可以看作是中斷控 制的屏蔽 位。在8251A的狀態(tài)字中有一位TxRDY,CPU也可以用查詢的方式判斷 是否可以送數據。第20頁,共
32、59頁,2022年,5月20日,1點2分,星期日 TxE:發(fā)送緩沖器空標志。不管發(fā)送時是處于等待還是發(fā)送狀態(tài),只要發(fā)送緩沖器 中沒有再要發(fā)送的字符,這個標志就變高。當從CPU送入一個數據字符時,該位標 志就被復位。 這個標志可以用來表示一段數據傳輸的結束。如果是半雙工工作, 這個標志可以用作從發(fā)到收的轉換。同步工作時,如果臨時出現TxE,就意味著數據 發(fā)送出現空缺,芯片會自動插補同步字符。 :輸人控制發(fā)送器數據速率的時鐘。每個數據的移位輸出,是在TxC的下降 沿實現的。異步方式下, 的頻率可以是數據速率的1、16或64倍。同步方式時, 的頻率與數據速率相同。4接收器有關信號 RxD:接收數據。
33、用來接收外設送來的串行數據,按規(guī)定檢查有關字符或有關位后, 經串一并轉換送入數據總線緩沖器,RxD在時鐘上升沿采樣輸入。 RxRDY:接收器準備好標志。如果該位為高電乎,接收緩沖器中就已經有組裝好了 的一個數據字符,可通知CPU將它取走。與TxRDY相似,RxRDY也可用作中斷請 求信號,也可以通過讀狀態(tài)字了解接收器狀態(tài)。一旦CPU讀走這個數據字符,RxRDY 被復位。要是CPU沒有及時取走數據,新接收數據將覆蓋數據,使一個數據丟失, 出現溢出錯誤,并反映在狀態(tài)字中。 :接收時鐘輸入端。當時鐘處在上升沿時,才可能把數據取樣輸入。時鐘速率 的規(guī)定與 相同。實際上, 和 往往連接在一起,用同一個時
34、鐘源。 第21頁,共59頁,2022年,5月20日,1點2分,星期日 SYNDET/BRKDET:同步和間斷檢測。芯片在同步方式工作時,用作同步檢測端; 異步時則用作間斷檢測輸出。芯片可以由編程確定是內同步還是外同步。如果是內 同步,就由 芯片內電路搜索同步字符,一旦找到,就由該端輸出一個高電平。 如果是外同步,當片外檢測電路找到同步字符后,就可以從該引腳輸入一個高電平 信號,使8251A正式開始接收。一旦開始正常接收數據,同步檢測端恢復低電平輸 出。 異步方式工作中,通常在線路上無數據時以高電平表示。在8251A中也可以由程序控制,使無數據的間斷時間內線路上呈現低電平,即發(fā)送一個字符長度的全
35、“0”碼。接收端具有對這種間斷碼檢測的能力,如果檢測到間斷碼,將從該端輸出一個高電平。為了避免接收器對尚未正式開始工作的線路低電平誤認為間斷狀態(tài),8251A在復位后總是要在檢測到一次高電平輸入后,才開始對間斷狀態(tài)的檢測。 對于8251A它有三個字,一個方式指令字、命令指令字、狀態(tài)字,其中方式指令字和命令字都是要寫入到控制口里的,而狀態(tài)字是從控制口讀出來的,如果讀和寫能夠區(qū)別,也就是狀態(tài)字和指令字這兩個可以區(qū)別,但指示字里是方式指示字還是命令指示字,這個關系必須要注意,它們的關系應是在開機時、在復位時以及完成后,先給的字認為是方式指示字。給完了方式指示字后再給的自動認為是命令指令字,就不會把后面
36、給的當作方式字進行保存,而當作命令控制操作。8.2.3 USART應用通信編程實例1概述 要在PIC16F877與 PC機間進行數據交換,這里可應用USART來實現。在編寫程序時首先要設置好USART異步通訊模塊工作模式及相關寄存器,PIC16F877的USART與其他具有USART的 PIC單片機一樣,可以被設置成為與 PC機進行全雙工異步通訊,第22頁,共59頁,2022年,5月20日,1點2分,星期日它是利用PORTC口的RC6和RC7兩個引腳作為通訊的2線制串行通訊接口。為了把PORTC口的RC6和 RC7兩個引腳分別設置成串行通訊接口的發(fā)送(TX)腳和接收(RX)腳,必須要把USAR
37、T的接收狀態(tài)和控制寄存器 RCSTA 的 bit7(SPEN)位和TRISC寄存器的bit7置“1”,把TRISC寄存器的bit6置“0”。為了使USART分別工作于接收或發(fā)送狀態(tài),就必須設置相應的狀態(tài)寄存器和控制寄存器。在設置接收器時,要注意接收腳對接收信號的采樣。接收腳 RX上的數據被采樣3次,通過一個三中取二邏輯檢測電路來判斷 RX腳上的電平是高還是低,以作為采樣取值。另外,要使USART工作在異步通訊方式,就必須要設置通訊的傳送、接收速率即波特率,USART的波特率設置是通過控制獨立的一個8位波特率發(fā)生器BRG實現的。 在異步工作方式下,串行通訊接口USART采用標準的不歸0(NRZ)
38、格式(即1位起始位、8位或9位數據位及1位停止位),最常用的數據格式是8位。PIC16F877片內的8位波特率發(fā)生器BRG可以用來驅動振蕩器的時鐘,產生標準的波特率頻率。PIC16F877的 USART發(fā)送和接收順序是從最低位(LSB)開始。USART發(fā)送器和接收器在功能上是完全獨立的,但是它們所用的數據格式和波特率必須是相同的。波特率發(fā)生器可以根據發(fā)送狀態(tài)和控制寄存器TXSTA的 bit2(BRGH)位設置產生2種不同的移位速度:對系統時鐘16分頻和64分頻的波特率時鐘,即設置該位在異步通訊模式為1時表示通訊為高速,為0時表示通訊為低速。要使USART工作于異步通訊模式,可通過對發(fā)送狀態(tài)和控
39、制寄存器TXSTA的bit4(SYNC)位設置清“0”。 由上可知,PIC16F877的USART異步工作設置主要包括對以下部件的設置:波特率發(fā)生器BRG、采樣電路、異步發(fā)送器、異步接收器等。這里關于PIC16F877的USART異步工作有兩點需要說明:一是USART硬件不支持奇偶效驗,但可以用軟件實現(并可作為第9位數據傳輸);二是在CPU處于休眠工作方式時,USART不能工作在異步通訊方式。 第23頁,共59頁,2022年,5月20日,1點2分,星期日2. USART波特率發(fā)生器BRG設置 在異步通訊方式下,波特率發(fā)生器BRG需要設置一個初值,以使BRG輸出一個合適的波特率。在BRG設置時
40、,其工作在高速還是低速是由發(fā)送狀態(tài)寄存器和控制寄存器 TXSTA的 bit2(BRCH)位進行設置的。在 PIC16F877內部時鐘工作模式下,設置BRG波特率寄存器 SPBRG在低速和高速初值的計算公式如下: BRGH=0(低速) 異步波特率=FOSC/ (64(X+1) BRGH=1(高速) 波特率=FOSC/ (16(X+1) 其中,X為SPBRG寄存器的值(0255)。 實際應用中,上式用于高速方式(BRGH=1)下計算波特率可以減小誤差。另外,在向波特率寄存器SPBRG寫入一個新值時會使BRG定時器復位(清零),由此就可保證波特率發(fā)生器BRG不需要等到定時器溢出后就可輸出新的波特率。
41、3. USART異步通訊的寄存器設置 實現USART異步通訊的寄存器主要有:發(fā)送狀態(tài)寄存器和控制寄存器 TXSTA、接收狀態(tài)和控制寄存器RCSTA、波特率發(fā)生器存器SPBRG、發(fā)送數據寄存器 TXREG、接收數據寄存器 RCREG、外圍接口中斷使能寄存器 PIE1 和外圍接口標志寄存器 PIR1等。 發(fā)送狀態(tài)和控制寄存器(表8.2) 表8.2 發(fā)送狀態(tài)和控制寄存器第24頁,共59頁,2022年,5月20日,1點2分,星期日 bit7 CSRC:異步方式未用。 bit6 TX9:發(fā)送數據長度選擇位。1 =選擇9位數據;0=選擇8位數據。 bit5 TXEN:發(fā)送允許位。1=允許發(fā)送;0=關閉發(fā)送
42、。 bit4 SYNC:USART同步/異步方式選擇位。1 =選擇同步方式;0=選擇異步方式。 bit3 此位未用。 bit2BRGH:高速波特率使能位。1 =高速;0 =低速。 bit1 TRMT:發(fā)送移位寄存器(TSR)“空”標志位。1=TSR空;0=TSR滿。 bit0 TX9D:發(fā)送數據的第9位。 接收狀態(tài)和控制寄存器(表8.3)表8.3 接收狀態(tài)和控制寄存器 bit7 SPEN:串行口使能位。1=允許串行口工作(把RC7和 RC6設置成串行口引腳;0 =禁止止串行工作; bit6 RX9:接收數據長度選擇位。1 =選擇接收9位數據;0=選擇接收8位數據。 bit5 SREN:單字節(jié)接
43、收允許位。異步方式此位未用。 Bit4 CREN:連續(xù)接收選擇位。1 =允許連續(xù)接收;0=禁止連續(xù)接收。第25頁,共59頁,2022年,5月20日,1點2分,星期日 bit3ADDEN:地址匹配檢測使能位。1=允許地址匹配檢測,允許中斷并且當RSR的D8被置1時讀接收緩沖器數據;0=禁止地址匹配檢測,接收所有字節(jié),第9位被看作奇偶效驗位。 bit2 FERR:幀格式錯標志位。1=幀格式錯(讀RCREG寄存器可對該位刷新并且準備接收下一個有效位);0=無幀格式錯。 bit1OERR:越位溢出錯標志位。1=有溢出錯,清CREN位可將此位清零;0=無溢出錯。 bit0 RX9D:接收數據的第 9 位
44、,可作奇偶效驗位。 外圍接口中斷使能寄存器(表8.4) 表8.4外圍接口中斷使能寄存器 bit5 RCIE:串行異步通訊接口接收中斷使能位。1=允許USART接收中斷;0 =禁止US2ART接收中斷。 bit4 TXIE:串行異步通訊接口發(fā)送中斷使能位。1=允許USART發(fā)送中斷;0=禁止USART發(fā)送中斷。 其余位在異步通訊中未用。 第26頁,共59頁,2022年,5月20日,1點2分,星期日 外圍接口中斷標志寄存器(表8.5)表8.5 外圍接口中斷標志寄存器 bit5 RCIF:異步串行通訊(USART)接口接收中斷標志位;1=USART接收緩沖區(qū)滿;0 = USART接收緩沖區(qū)空。 bi
45、t4 TXIF:異步串行通訊(USART)接口發(fā)送中斷標志位;1= USART發(fā)送緩沖區(qū)空;0= USART發(fā)送緩沖區(qū)滿。 其余位在異步通訊中未用。 其他寄存器波特率 發(fā)生器存器 SPBRG的設置可以參考USR2TA波特率發(fā)生器BRG的設置內容,在設置該寄存器就是根據單片機工作時鐘頻率確定傳輸數據的波特率,只要將其初值寫入SPBRG寄存器即可。 發(fā)送數據寄存器 TXREG是將單片機需要發(fā)送的數據存放的寄存器,在單片機未發(fā)送之前就必須要將備發(fā)送的數據裝入該寄存器。接收數據寄存器RCREG是將單片機接收到外界數據后存放數據的寄存器,在單片機確定接收的數據無誤后,將其數據存放到該寄存器中。 第27頁
46、,共59頁,2022年,5月20日,1點2分,星期日4PIC16F877單片機與PC機實現電平轉換 PC機的串行接口是符合 EIA RS- 232C規(guī)范的外部總線標準接口。RS- 232C采用的是負邏輯,即邏輯”1”:- 5- 15 V;邏輯”0”:+5 +15 V。而CMOS電平為:邏輯“1”:4.99 V,邏輯“0”:0.01 V;TTL電平的邏輯“1”和“0”則分別為2.4 V和0.4 V。因此在用RS-232C總線進行串行通信時需外接電路實現電平轉換。在發(fā)送端用驅動器將 TTL 或CMOS電平轉換為RS- 232C電平,在接收端用接收器將 RS-232C電平再轉換為TTL 或 CMOS
47、電平。這里選用了MAXIM公司的MAX232來作電平轉換。MAX232屬于MAXIM公司的通用串行接收/發(fā)送驅動器芯片。其外圍電路簡單,只需外接4個0.1F的電容即可,其系統硬件電路如圖8. 9所示。圖中MAX232將PIC16F877的TX輸出的TTL電平信號轉換為RS-232C電平,輸入到 PC機,并將 PC機輸出的 RS-232C 電平轉換為 TTL 電平,輸出到PIC16F877單片機的RX引腳。5. PC機支持與 PIC16F877 進行數據交換的PC機可與PIC16F877可以編程實現,其實現功能如下:PC機和單片機均可發(fā)送和接收數據,由 PC機決定是發(fā)送還是接收;程序設定當 PC
48、機鍵盤輸入發(fā)送指令時,PC機分別顯示PC機發(fā)送的數據和單片機會送的數據;當 PC機鍵盤輸入接收指令時,PC機將接收單片機發(fā)送過來的數據,并將其數據顯示。在編程中,必須要注意設置 PC機與PIC16F877單片機在進行數據交換時的數據傳輸格式相同。通常采用的通訊協議如下:波特率為9 600 bps,8位數據位,1位停止位,無奇偶效驗位。PC機發(fā)送命令給單片機,鍵盤輸入發(fā)送命令時,控制單片機接收數據,當PC機鍵盤輸入接收命令時,控制單片機發(fā)送數據給PC機。PC機與PIC16F877單片機進行數據交換的程序編制流程如圖8.10所示。 第28頁,共59頁,2022年,5月20日,1點2分,星期日圖8.
49、9PIC16F877與PC接口原理圖源程序如下:1)初始化設置部分COUNTEQU 0X20TEMPEQU0X21J0EQU0X22第29頁,共59頁,2022年,5月20日,1點2分,星期日ORG0NOPSTARTGOTOMAINORG0X05MAINBANKSEL TRISCMOVLWB10000000MOVWF TRISCMOVLW0X30 ;將RAM單元初始化MOVWF FSRBCF STATUS,RP0MOVLW0X22MOVWFCOUNTBCF PIR1,RCIFBSF PIR1,TXIFINTRAMMOVFCOUNT,0MOVWF INDFINCFCOUNT,1INCF FSR,
50、1BTFSS FSR,7GOTO INTRAM 圖8.10數據交換程序流程框圖第30頁,共59頁,2022年,5月20日,1點2分,星期日BANKSEL TXSTAMOVLW0X19MOVWF SPBRG ;波特率設置為9 600 bpsMOVLW0X04MOVWF TXSTA ;異步高速方式BCF STATUS,RP0MOVLW0X80MOVWF RCSTA ;串行口使能MOVLW0X30MOVWF FSRBSF RCSTA,CREN ;接收允許BSF STATUS,RP0BSF TXSTA,TXEN ;發(fā)送允許BCF STATUS,RP02)接收并返回數據部分WAITBTFSSPIR1,R
51、CIFGOTO WAIT ;接收PC機命令MOVF RCREG,0MOVWF TEMP第31頁,共59頁,2022年,5月20日,1點2分,星期日MOVWF INDFINCF FSRDECFSZTEMP ;接收到的數據為1,則接收GOTO TXW ;否則發(fā)送數據MOVLW0X06MOVWF TEMPWAIT1BTFSS PIR1,RCIFGOTO WAIT1 ;接收一個數據MOVF RCREG,0MOVWFCOUNTMOVWF TXREGLOOPTXBTFSSPIR1,TXIF ;將接收到的數據送回PC機GOTOLOOPTXMOVFCOUNT,0MOVWF INDFINCF FSRDECFSZ
52、TEMPGOTO WAIT1GOTOOVER ;處理完畢第32頁,共59頁,2022年,5月20日,1點2分,星期日TXWMOVLW0X09 ;向PC機發(fā)送9個數據MOVWF TEMPMOVLWD00MOVWFJ03) 發(fā)送數據部分TXW0MOVF J0,0MOVWF TXREGINCFJ0 ;單片機發(fā)送的數據為08和一位存儲數據TXW1BTFSS PIR1,TXIFGOTO TXW1DECFSZTEMPGOTO TXW0OVERBCF RCSTA,CREN ;通信任務完成,關接收和發(fā)送允許 要實現PIC單片機與PC機間的數據通訊,不僅是要連接硬件電路和對單片機進行編程,同時還需要在PC上編寫
53、數據收發(fā)的程序。通常,對于單片機與PC機間的數據通訊交換調試時,可以串口通訊調試工具,同時也可以自編調試程序。程序編寫好后,再與上述 PIC16F877一起進行操作,即可實現簡易通訊數據交換。 第33頁,共59頁,2022年,5月20日,1點2分,星期日 這里特別需要注意的是:當 PC機與單片機系統通信時,單片機數據存儲區(qū)( RAM )內的數據是十六進制,在信號線上傳輸的是十六進制數的ASCII碼的二進制形式;而Windows系統下使用的是ANSI碼,ANSI碼僅在前126個與ASCII碼相同,即在 Windows下接收到的是十六進制數的ASCII碼的字符串,可先轉換為ANSI碼后再在Wind
54、ows下還原為十六進制數。第34頁,共59頁,2022年,5月20日,1點2分,星期日8.3 USB接口設計 USB的全稱是通用串行總線(Universal Serial Bus),最多可連接127臺外 設,USB其最大的特點是支持熱插拔和即插即用。當設備插入時,主機枚舉此設備并加載所需的驅動程序,因此使用遠比PCI和ISA總線方便。USB速度比平行并聯總線(Parellel Bus,例如EPP、LPT)與串聯總線(Serial Port,例如RS-232)等傳統電腦用標準總線快上許多。原標準中USB 1.1 的最大傳輸帶寬為 12Mbps,USB 2.0 的最大傳輸帶寬為 480Mbps U
55、SB的設計為非對稱式的,它由一個主機(host)控制器和若干通過hub設備以樹形連接的設備組成。一個控制器下最多可以有5級hub,包括Hub在內,最多可以連接127個設備,而一臺計算機可以同時有多個控制器。 和SPI-SCSI等標準不同,USB hub不需要終結器 USB可以連接的外設有鼠標、鍵盤、gamepad、游戲桿、掃描儀、數碼相機、打印機、硬盤和網絡部件。對數碼相機這樣的多媒體外設USB已經是缺省接口;由于大大簡化了與計算機的連接,USB也逐步取代并口成為打印機的主流連接方式。2004年已經有超過1億臺USB設備;到2005年顯示器和高清晰度數字視頻外設是僅有的USB未能染指的外設類別
56、,因為他們需要更高的傳輸速率。第35頁,共59頁,2022年,5月20日,1點2分,星期日由于USB支持熱插拔,即插即用的優(yōu)點,所以USB接口已經成為計算機的標準接口。USB目前有兩個版本,USB1.1的最高數據傳輸率為12Mbps,USB2.0則提高到480Mbps。二者的物理接口完全一致,數據傳輸率上的差別完全由PC的USB host控制器以及USB設備決定。USB還可以通過連接線為設備提供最高5V,500mA的電力。 現標準中將UBS統一為USB2.0,分為: (1) High-speed,傳輸速率25Mbps400Mbps(最大480Mbps) (2) Full-speed ,傳輸速率
57、500Kbps10Mbps(最大12Mbps) (3) Low-speed,傳輸速率10Kbps100Kbps(最大1.5Mbps) USB 的優(yōu)點: USB 具有真正的“即插即用”特性,用戶可以很容易地對外設進行安裝和拆卸, 主機可按外設的增刪情況自動配置系統資源,同時用戶可以在不關機的情況下 進行外設的更換,外設裝置的驅動程序的安裝刪除將實現自動化。 USB 具有很強的連接能力。 低成本。 空間的節(jié)省。 USB與ETDM特性可以支持諸如 ISDN 等高速數字電話信息通路接口。 連接電纜輕巧,電源體積縮小。 USB 一種開放性的不具專利版權的理想工業(yè)標準。 8.3.1 USB接口規(guī)范 目前U
58、SB支持3種數據信號速率,USB設備應該在其外殼或者有時是自身上正確標明其使用的速率。USB-IF進行設備認證并為通過兼容測試并支付許可費用的設備第36頁,共59頁,2022年,5月20日,1點2分,星期日提供基本速率(低速和全速)和高速的特殊商標許可。 1.5 Mbit/s (183 KByte/s)的低速速率,主要用于人機接口設備(Human Interface Devices ,HID)例如鍵盤、鼠標、游戲桿。 12 Mbit/s (1.4 MByte/s)的全速速率,在USB 2.0之前是曾經是最高速率,后起的更高速率的高速接口應該兼容全速速率。多個全速設備間可以按照先到先得法則劃分帶
59、寬;使用多個等時設備時會超過帶寬上限也并不罕見。所有的USB Hub支持全速速率。 480 Mbit/s (57 MByte/s)的高速速率,并非所有的USB 2.0設備都是高速的。高速設備插入全速hub時應該與全速兼容。而高速hub具有所謂Transaction Translator(事務翻譯器)功能,能夠隔離全速、低速設備與高速之間數據流,但是不會影響供電和串聯深度。 1機械和電氣標準 圖8.11 標準USB接口第37頁,共59頁,2022年,5月20日,1點2分,星期日 標準USB接口如圖8.11所示,其電氣特性見表8.6。 USB信號使用分別標記為D+和D-的雙絞線傳輸,各自使用半雙工
60、差分信號并協同工作,以抵消長導線的電磁干擾。 USB的電纜有四根線,兩根傳送的是5V的電源,有一些直接和電源HUB相連的設備可以直接利用它來供電。另外的兩根是數據線,數據線是單工的,在整個的一個系統中的數據速率是一定的,要么是高速,要么是低速,沒有一個可以中間變速的設備來實現數據碼流的變速.在這一點上,USB和1394有明顯的差別。 USB的總線可以在不使用的時候被掛起,這樣一來就可以節(jié)約能源。 在有些時候的總線還有可能擋機(stall),比如說象數據傳送的時候突然被打斷,這個時候通過host的重新配置可以實現總線的重新工作。表8.6 標準USB電氣特性表第38頁,共59頁,2022年,5月2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 血脂異常護理查房
- 出納銀行業(yè)務辦理
- 美容美發(fā)行業(yè)分析報告
- 化學高中課程標準解讀
- 辦公用品管理
- 船舶貨物包裝與運輸保護
- 新發(fā)展英語(第二版)綜合教程2 課件 Unit 4 Making Offers and Giving Responses
- a-lively-city知識教學課件
- 人教版數學六年級下冊期末應用題
- 北京市豐臺區(qū)2025年高三下學期正月開學聯考歷史試題含解析
- 2025年東北三省三校二模聯考語文試卷
- 保密知識題庫含答案
- 共享農場合同標準文本
- 醫(yī)院建設項目智能化專項工程技術要求
- 2024年中國銀行招聘考試真題
- 管理學基礎-形考任務三-國開-參考資料
- 2024-2025學年北師大版七年級數學上冊期末復習壓軸題12個(84題)含答案
- 2023年北京市大興區(qū)小升初數學模擬試卷(含答案)
- 2025年河南交通職業(yè)技術學院單招職業(yè)技能測試題庫審定版
- 第二十一章傳導熱療法講解
- 2025年河南職業(yè)技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
評論
0/150
提交評論