與計(jì)算機(jī)接口設(shè)計(jì)_第1頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第2頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第3頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第4頁(yè)
與計(jì)算機(jī)接口設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、與計(jì)算機(jī)接口設(shè)計(jì)第1頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日是時(shí)間上還需要額外的開(kāi)銷。而串行通信的突出的優(yōu)點(diǎn)是僅僅需要數(shù)量很少的傳輸線,特別適合遠(yuǎn)距離傳輸。此外,對(duì)于PIC單片機(jī)而言,串行通信的另一個(gè)優(yōu)點(diǎn)就是,需要占用的引腳的資源較少。 PIC16F87X單片機(jī)內(nèi)部集成了兩個(gè)類型不同的串行通信模塊,即通用同步/異步收發(fā)器USART(Universal Synchronous/Asynchronous Receiver Transmitter)模塊和主控同步串行端口MSSP(Master Synchronous Serial Port)模塊。前者的主要應(yīng)用目標(biāo)是系統(tǒng)之間的遠(yuǎn)距離串行

2、通信,此項(xiàng)技術(shù)的應(yīng)用歷史比較久遠(yuǎn)。而后者的主要應(yīng)用目標(biāo)是系統(tǒng)內(nèi)部近距離的串行擴(kuò)展。 串行通信的實(shí)現(xiàn),在制式、種類、形式、規(guī)范、標(biāo)準(zhǔn)、編碼、檢錯(cuò)、糾錯(cuò)、幀結(jié)構(gòu)、組網(wǎng)方式、調(diào)制方式等方面,存在著多種類型、變化、選擇和解決方案。例如,Philips公司發(fā)明的I2C總線,Intel等公司提出的SMBUS總線,F(xiàn)reescale公司首先應(yīng)用的SPI接口,美國(guó)國(guó)家半導(dǎo)體公司(NSC)公司首先應(yīng)用的MicroWire接口,達(dá)拉斯公司推出的1-Wire總線,美國(guó)電子工業(yè)協(xié)會(huì)推薦標(biāo)準(zhǔn)RS-232、RS433、RS-485接口,Intel等公司提出的USB總線,蘋(píng)果公司提出的IEEE-1394總線,博世公司提出的

3、CAN總線,現(xiàn)場(chǎng)總線基金推出的FF總線,Motorola公司聯(lián)合東芝公司共同開(kāi)發(fā)的LONworks總線等,都是用來(lái)實(shí)現(xiàn)與串行通信功能相關(guān)的技術(shù)和規(guī)范。 第2頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日8.1 標(biāo)準(zhǔn)串行接口RS-232C接續(xù) 串行通信是指單片機(jī)或者計(jì)算機(jī)和外設(shè)之間使用一根數(shù)據(jù)信號(hào)線,數(shù)據(jù)在一個(gè)數(shù)據(jù)信號(hào)線上一位一位地進(jìn)行傳輸,每一位數(shù)據(jù)都占據(jù)一個(gè)固定地時(shí)間長(zhǎng)度,串行通信的特點(diǎn)是使用的數(shù)據(jù)線少,其傳輸?shù)乃俣缺容^慢。串行通信的優(yōu)點(diǎn)也正體現(xiàn)在遠(yuǎn)程通信和上下位機(jī)通信中,隨著新的串行數(shù)據(jù)協(xié)議的誕生,速度和距離都有了較大提高。 一個(gè)完整的串行通信系統(tǒng)如圖8.1所示,該通信系統(tǒng)包括數(shù)據(jù)

4、終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)。 1數(shù)據(jù)通信設(shè)備DTE:DTE是產(chǎn)生二進(jìn)制信號(hào)的數(shù)據(jù)源,也是接收信息的目的,是由數(shù)據(jù)發(fā)送器或接收器或兼具兩者組成的設(shè)備,它可以是一臺(tái)計(jì)算機(jī)。 2數(shù)據(jù)通信設(shè)備DCE:DCE是一個(gè)使傳輸信號(hào)符合線路要求,或者滿足DTE要求的信號(hào)匹配器,它是提供數(shù)據(jù)終端設(shè)備與通信線路之間通信的建立、維持和終止連接等功能的設(shè)備,同時(shí)執(zhí)行信號(hào)變換與編碼,它可以是一個(gè)MODEM。第3頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日?qǐng)D8.1 串行通信系統(tǒng) 在數(shù)據(jù)通信、計(jì)算機(jī)網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)中,經(jīng)常采用串行通信來(lái)交換數(shù)據(jù)和信息。1969年,美國(guó)電子工業(yè)協(xié)會(huì)(EIA)

5、公布了RS-232C作為串行通信接口的電氣標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)間按位串行傳輸?shù)慕涌谛畔?,合理安排了接口的電氣信?hào)和機(jī)械要求,在世界范圍內(nèi)得到了廣泛的應(yīng)用。但它采用單端驅(qū)動(dòng)非差分接收電路,因而存在著傳輸距離不太遠(yuǎn)(最大傳輸距離15m)和傳送速率不太高(最大位速率為20Kb/s)的問(wèn)題。遠(yuǎn)距離串行通信必須使用Modem,增加了成本。在分布式控制系統(tǒng)和工業(yè)局部網(wǎng)絡(luò)中,傳輸距離常介于近距離(20m)和遠(yuǎn)距離(2km)之間的情況,這時(shí)RS-232C(25腳連接器)不能采用,用Modem又不經(jīng)濟(jì),因而需要制定新的串行通信接口標(biāo)準(zhǔn)。第4頁(yè),共59頁(yè),2022年,5

6、月20日,1點(diǎn)2分,星期日 1977年EIA制定了RS-449。它除了保留與RS-232C兼容的特點(diǎn)外,還在提高傳輸速率,增加傳輸距離及改進(jìn)電氣特性等方面作了很大努力,并增加了10個(gè)控制信號(hào)。與RS-449同時(shí)推出的還有RS-422和RS-423,它們是RS-449的標(biāo)準(zhǔn)子集。另外,還有RS-485,它是RS-422的變形。RS-422、RS-423是全雙工的,而RS-485是半雙工的。 RS-422標(biāo)準(zhǔn)規(guī)定采用平衡驅(qū)動(dòng)差分接收電路,提高了數(shù)據(jù)傳輸速率(最大位速率為10Mb/s),增加了傳輸距離(最大傳輸距離1200m)。 RS-423標(biāo)準(zhǔn)規(guī)定采用單端驅(qū)動(dòng)差分接收電路,其電氣性能與RS-232

7、C幾乎相同,并設(shè)計(jì)成可連接RS-232C和RS-422。它一端可與RS-422連接,另一端則可與RS-232C連接,提供了一種從舊技術(shù)到新技術(shù)過(guò)渡的手段。同時(shí)又提高位速率(最大為300Kb/s)和傳輸距離(最大為600m)。 RS-485為半雙工的,當(dāng)用于多站互連時(shí)可節(jié)省信號(hào)線,便于高速、遠(yuǎn)距離傳送。許多智能儀器設(shè)備均配有RS-485總線接口,將它們聯(lián)網(wǎng)也十分方便。串行通信由于接線少、成本低,在數(shù)據(jù)采集和控制系統(tǒng)中得到了廣泛的應(yīng)用,產(chǎn)品也多種多樣。8.1.1 RS-232C接口規(guī)格 RS-232C其中RS是Recommended Standard的縮寫(xiě),代表標(biāo)準(zhǔn),232是標(biāo)識(shí)符,C代表RS-2

8、32的最新一次修改(1969年),在這之前,有過(guò)RS-232A、RS-232B標(biāo)準(zhǔn),它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程?,F(xiàn)在,計(jì)算機(jī)上的串行通信端口(RS-232)是標(biāo)準(zhǔn)配置端口,已經(jīng)得到廣泛應(yīng)用,目前計(jì)算機(jī)上一般都12個(gè)標(biāo)準(zhǔn)RS-232C串口,即通道COM1和COM2。第5頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日1RS-232C標(biāo)準(zhǔn)的電氣特性 EIA-RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都作了明確規(guī)定。在TXD和RXD引腳上電平定義:邏輯1(MARK) -3V-15V;邏輯0(SPACE) 315V 在RTS、CTS、DSR、DTR 和DCD等控制

9、線上電平定義:信號(hào)有效(接通,ON狀態(tài),正電壓)+3V+15V;信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài),負(fù)電壓)=-3V-15V 對(duì)于數(shù)據(jù)(信息碼):邏輯“1”的傳輸?shù)碾娖綖?3V-15V,邏輯“0”傳輸?shù)碾娖綖?3V+15V;對(duì)于控制信號(hào);接通狀態(tài)(ON)即信號(hào)有效的電平為+3V+15V,斷開(kāi)狀態(tài)(OFF)即信號(hào)無(wú)效的電平為-3V-15V,也就是當(dāng)傳輸電平的絕對(duì)值大于3V 時(shí),電路可以有效地檢查出來(lái);而介于-3+3V之間的電壓即處于模糊區(qū)電位,此部分電壓將使得計(jì)算機(jī)無(wú)法準(zhǔn)確判斷傳輸信號(hào)的意義,可能會(huì)得到0,也可能會(huì)得到1,如此得到的結(jié)果是不可信的,在通信時(shí)候體現(xiàn)的是會(huì)出現(xiàn)大量誤碼,造成通信失敗。因此,實(shí)

10、際工作時(shí),應(yīng)保證傳輸?shù)碾娖皆冢?15)V 之間。 目前,大部分計(jì)算機(jī)的RS-232C通信接口都使用了DB9連接器,主板的接口連接器有9根針輸出,也有些比較舊的計(jì)算機(jī)使用DB25連接器輸出,表8.1為RS-232C串口引腳定義表。第6頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日表8.1 RS-232C串口引腳定義表第7頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 RS-232C 規(guī)定的邏輯電平與一般微處理器、單片機(jī)的邏輯電平是不同的,例如RS-232的邏輯“1”是以-3-15V來(lái)表示的,而單片機(jī)的邏輯“1”是以+5V來(lái)表示的,兩者完全不同。因此,單片機(jī)系統(tǒng)要和電腦的RS-23

11、2接口進(jìn)行通信,就必須把單片機(jī)的信號(hào)電平(TTL電平)轉(zhuǎn)換成計(jì)算機(jī)的RS-232C電平,或者把計(jì)算機(jī)的RS-232C電平轉(zhuǎn)換成單片機(jī)的TTL電平,通信時(shí)必須對(duì)兩種電平進(jìn)行轉(zhuǎn)換。實(shí)現(xiàn)這種轉(zhuǎn)換的方法可以使用分立元件,也可以使用專用RS-232電平轉(zhuǎn)換芯片。目前較為廣泛地使用專用電平轉(zhuǎn)換芯片,如MC1488、MC1489、MAX232等電平轉(zhuǎn)換芯片來(lái)實(shí)現(xiàn)EIA到TTL電平的轉(zhuǎn)換。下面介紹MAXIM公司的單電源電平轉(zhuǎn)換芯片MAX232及接口電路。 如圖8.2中所示,MAX232是單電源雙RS-232發(fā)送/接收芯片,采用單電源(+5V)供電,外接只需4個(gè)電容,便可以構(gòu)成標(biāo)準(zhǔn)的RS-232通信接口,硬件接

12、口簡(jiǎn)單,所以被廣泛采用。 圖8.2 MAX232實(shí)物及芯片引腳排列第8頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日8.1.2 接續(xù)方法 單片機(jī)和計(jì)算機(jī)RS-232接口電路如圖8.3所示,圖中的C1、C2、C3、C4是電荷泵升壓及電壓反轉(zhuǎn)部分電路,產(chǎn)生V+、V-電源供EIA電平轉(zhuǎn)換使用,C5是VCC對(duì)地去耦電容,其值為0.1UF,電容C1C5安裝時(shí)必須盡量靠近MAX232芯片引腳,以提高抗干擾能力。 圖8.3 采用MAX232CPE 芯片的PC機(jī)與單片機(jī)串行通信接口電路第9頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 圖8. 4是一個(gè)采用分立元件構(gòu)成的簡(jiǎn)易R(shí)S-232串行通信

13、接口電路,使用三極管進(jìn)行電平轉(zhuǎn)換,由于簡(jiǎn)單的通信,對(duì)于通信穩(wěn)定性要求較高的應(yīng)用,不建議使用分立元件,因?yàn)榉至⒃娐返姆€(wěn)定性,誤碼率較高,不能完全滿足RS-232C的全部技術(shù)指標(biāo)。分立元件組成的電路優(yōu)點(diǎn)是成本低廉,部分網(wǎng)站上介紹的產(chǎn)品就分立元件構(gòu)成。圖8. 4 采用分立元件的簡(jiǎn)易R(shí)S-232C通信接口電路第10頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日8.1.3 PIC串行通信設(shè)計(jì)實(shí)例 當(dāng) PIC單片機(jī)不具備片上硬件 USART或者USART不夠用時(shí),可以利用軟件模擬實(shí)現(xiàn)異步串行通信。Microchip公司推出的 PIC系列單片機(jī)PIC16C711具有運(yùn)行速度快、低功耗、價(jià)格低、體

14、積小等優(yōu)點(diǎn)。因?yàn)椋痪邆溆布?USART時(shí)需要用一般 I/O口來(lái)模擬串行口。1串行接口硬件電路 如圖 8. 5所示,RB0為接收腳,RB5為發(fā)送腳。RB0除作為一般 I/O引腳外,還可以作為外部中斷輸入引腳,引起中斷的方式分為上跳沿和下跳沿兩種方式。設(shè)置下跳沿引起中斷。當(dāng)起始位到來(lái)時(shí),RB0上出現(xiàn)下跳沿,引起中斷,如果不是干擾信號(hào)則開(kāi)始接收數(shù)據(jù)。 RS- 485標(biāo)準(zhǔn)的特點(diǎn)是抗干擾能力強(qiáng),傳輸速率高、傳送距離遠(yuǎn)。它規(guī)定了雙端(平衡式)電氣接口特性。當(dāng)單片機(jī)與具有 RS-485接口的PC機(jī)通信時(shí),需要進(jìn)行信號(hào)形式的轉(zhuǎn)換。從單片機(jī)發(fā)送到 PC機(jī)的信號(hào)首先轉(zhuǎn)換成平衡信號(hào),再送往 PC機(jī)。從PC機(jī)發(fā)送到

15、單片機(jī)的信號(hào)先轉(zhuǎn)換成非平衡信號(hào),再輸入單片機(jī)。信號(hào)形式的轉(zhuǎn)換工作由RS-485接口芯片 SN75176完成。SN75176差分總線收發(fā)器工作在半雙工方式,當(dāng)工作于發(fā)送方式時(shí),發(fā)送使能引腳DE為高電平,接收使能引腳RE也為高電平。當(dāng)工作于接收方式時(shí),發(fā)送使能引腳 DE為低電平,接收使能引腳RE也為低電平。這樣,可以將 DE與RE連接在一起,由 RB6引腳輸出控制信號(hào),控制 SN75176的發(fā)送和接收使能。為了減少線路上信號(hào)的反射,需要匹配線路的特性阻抗。由于通信載體是雙絞線,它的特性阻抗為120左右,所以線路設(shè)計(jì)時(shí),在 RS- 485網(wǎng)絡(luò)傳輸線的始端和末端各應(yīng)接1只 120的匹配電阻,R1為單片

16、機(jī)一側(cè)的匹配電阻。由于 RS485芯片的特性,接收器的靈敏度為 200mV,即差分輸入端 VA-VB200mV時(shí),輸出邏輯“1”;VA- VB-200 mV時(shí),輸出邏輯“0”。當(dāng)VA-VB200 mV時(shí),輸出不確定。因此,當(dāng) A、B無(wú)信號(hào)輸入時(shí),可能造成接收引腳R上出現(xiàn)低電平,這會(huì)誤認(rèn)為通信幀起始位到來(lái)而引起工作不正常。第11頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日為了避免這種情況發(fā)生,可以人工的讓 A端電位高于 B端電位,使 R引腳在RS485總線不發(fā)送期間呈現(xiàn)唯一的高電平,單片機(jī)不會(huì)被誤中斷而接收到亂字符。通過(guò)在 A、B接上拉、下拉電阻 R3、R2可解決這個(gè)問(wèn)題。 圖 8.

17、5PIC16C711與 PC機(jī)之間的接口電路2單片機(jī)通信程序框圖 PIC單片機(jī)與 PC機(jī)之間的通信方式為半雙工方式。一幀數(shù)據(jù)包括一位起始位、8位數(shù)據(jù)位、一位停止位和無(wú)奇偶校驗(yàn)位。設(shè)發(fā)送和接收數(shù)據(jù)的波特率為9600 b/s,則每一位占用的時(shí)間td為19600s,約為104s。單片機(jī)晶振頻率為 4MHz,單片機(jī)執(zhí)行一條指令耗費(fèi)時(shí)間 1s。 單片機(jī)接收數(shù)據(jù)程序框圖 PIC16C711單片機(jī)的 RB0引腳具備外部引腳跳變沿中斷功能,向 RB0引腳送一個(gè)上跳沿或下跳沿信號(hào),則 INTCON寄存器的外部引腳跳變沿中斷標(biāo)志位 INTF被置 1。如果總中斷和外部引腳跳變沿中斷都使能,并且此時(shí)單片機(jī)沒(méi)有執(zhí)行其他

18、中斷服務(wù)子程序,程序進(jìn)入 INT中斷服務(wù)子程序。根據(jù)異步串行通信的特點(diǎn),通信線路空閑時(shí)單片機(jī)接收的是第12頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日高電平,起始位到來(lái)時(shí)單片機(jī)接收到低電平,因此空閑位和起始位之間是一個(gè)下跳沿。單片機(jī)接收到下跳沿即起始位后,馬上進(jìn)入中斷服務(wù)子程序,準(zhǔn)備接收一幀數(shù)據(jù)。因此在主程序中設(shè)置由下跳沿引起外部引腳跳變沿中斷。下面將主要分析接收子程序即中斷服務(wù)子程序。單片機(jī)接收數(shù)據(jù)程序框圖如圖8. 6所示。 進(jìn)入中斷服務(wù)子程序后,首先保護(hù)中斷現(xiàn)場(chǎng),然后檢測(cè)起始位是否是“真的”。由于可能存在的各種干擾,PIC單片機(jī)有可能接收到的干擾信號(hào)正好是一個(gè)下跳沿,而實(shí)際上此時(shí)

19、根本沒(méi)有數(shù)據(jù)到來(lái),從而造成誤接收數(shù)據(jù)。因此檢測(cè)起始位的真實(shí)性是有必要的。采取的方法是在52s(起始位的中點(diǎn))后,檢測(cè)一次 RB0上的信號(hào)。程序框圖中是延時(shí)47s后檢測(cè) RB0上的信號(hào),原因是保護(hù)中斷現(xiàn)場(chǎng)的幾條指令要耗費(fèi)幾個(gè)s。如果是低電平,則起始位是“真的”,否則為干擾信號(hào),單片機(jī)清 INTF標(biāo)志位,然后退出中斷服務(wù)子程序,回到主程序。若起始位是“真的”,則準(zhǔn)備接收數(shù)據(jù)。設(shè)計(jì)規(guī)定數(shù)據(jù)位為 8位,故首先設(shè)置接收計(jì)數(shù)器R_CNT內(nèi)容為 8。然后將 STATUS寄存器中的 C位清零,并右移接收數(shù)據(jù)寄存器RCV_R。C的內(nèi)容即 0移入 RCV_R最高位,接下來(lái)接收數(shù)據(jù)位。為盡量保證數(shù)據(jù)的準(zhǔn)確性,應(yīng)該在

20、每位數(shù)據(jù)的中點(diǎn)檢測(cè)該位數(shù)據(jù)。因此,檢測(cè)第一位數(shù)據(jù)的時(shí)刻距離檢測(cè)起始位的時(shí)刻應(yīng)該是一位數(shù)據(jù)所占的時(shí)間即 104s,此后的每一位數(shù)據(jù)檢測(cè)時(shí)刻之間也是如此。此時(shí)又要用到延時(shí)程序。因?yàn)槊績(jī)纱螜z測(cè)時(shí)刻之間除了延時(shí)之外,指令 (C清零、右移等指令)還要占用時(shí)間,這些指令占用 56s,因此,為了盡量保證在每一位的中心位置檢測(cè)數(shù)據(jù),延時(shí)時(shí)間定為 98s。如果檢測(cè)得到的數(shù)據(jù)位為1,則置 RCV_R最高位為 1。如果數(shù)據(jù)位為 0,則不必改變最高位,因?yàn)?C為 0且已經(jīng)移入 RCV_R的最高位。然后,將接收計(jì)數(shù)器內(nèi)容減 1。8位數(shù)據(jù)接收完畢后,清 INTF標(biāo)志。最后,退出中斷服務(wù)子程序。至此,8位數(shù)據(jù)接收全部存放于

21、 RCV_R中。 第13頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 單片機(jī)發(fā)送數(shù)據(jù)程序框圖 用RB5引腳作為發(fā)送引腳,單片機(jī)發(fā)送數(shù)據(jù)程序框圖如圖8. 7所示。當(dāng)有數(shù)據(jù)要從單片機(jī)發(fā)往PC機(jī)時(shí),單片機(jī)調(diào)用發(fā)送子程序。在發(fā)送子程序中,首先設(shè)置發(fā)送計(jì)數(shù)器內(nèi)容為 8,然后發(fā)送起始位,起始位應(yīng)持續(xù) 104s。因此要調(diào)用延時(shí)子程序,延時(shí)子程序執(zhí)行完后,RB5上的信號(hào)并未立刻變成第一位數(shù)據(jù)的值,這是因?yàn)檫€要執(zhí)行幾條指令,如右移 TRS_R、置位等 RB5上的信號(hào)才會(huì)變化。假設(shè)延時(shí) 104s,那么加上幾條指令的執(zhí)行時(shí)間,起始位就比 104s寬了。因此,延時(shí)子程序少于 104s,根據(jù)具體的程序定為 9

22、7s。然后,右移發(fā)送數(shù)據(jù)寄存器 TRS_R,將其最低位即要發(fā)送的數(shù)據(jù)位移入 C中,再根據(jù) C中的內(nèi)容將RB5清零或置 1,然后將發(fā)送計(jì)數(shù)器內(nèi)容減 1,并判斷其是否為 0。若為 1,則說(shuō)明未發(fā)送完畢,繼續(xù)發(fā)送;否則,發(fā)送停止位。最后,退出發(fā)送子程序。 第14頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日?qǐng)D 8.6單片機(jī)接收數(shù)據(jù)程序框圖 圖 8.7單片機(jī)發(fā)送數(shù)據(jù)程序框圖第15頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日8.2 PIC的USART應(yīng)用 8.2.1 PIC16F877非同步通信功能(USART接口) 通用同步/異步接收發(fā)送模塊(USART)是兩個(gè)串行通信接口之一,US

23、ART又稱為SCI(Serial Communication Interface)。USART可以設(shè)置為全雙工異步串行通信系統(tǒng),這種方式可以與個(gè)人計(jì)算機(jī)PC或串行接口CRT等外圍設(shè)備進(jìn)行串行通信。也可以設(shè)置為半雙工異步串行通信系統(tǒng),與串行接口的A/D或D/A集成電路、串行EEPROM等器件連接。 USART是二線制串行通信接口,它可以被定義如下三種工作方式:全雙工異步方式、半雙工同步主控方式、半雙工同步從動(dòng)方式。為了把RC6和RC7分別設(shè)置成串行通信接口的發(fā)送/時(shí)鐘(TX/CK)線和接收/數(shù)據(jù)(TX/DT)線,必須首先把SPEN位(TCSTAT的RD7)和方向寄存器TRISC的D7:D6置1。

24、 USART功能模塊含有兩個(gè)8位可讀/寫(xiě)的狀態(tài)/控制寄存器,它們是發(fā)送狀態(tài)/控制寄存器TXSTA和接收狀態(tài)/控制寄存器。第16頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 USART帶有一個(gè)8位波特率發(fā)生器BRG(Baud Rato Generator),BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個(gè)獨(dú)立的8位定時(shí)器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器TXSTA的BRGH位(即D2)也被用來(lái)控制波特率(在同步方式下忽略BRGH位)。 向波特率寄存器SPBRG寫(xiě)入一個(gè)新的初值時(shí),都會(huì)使BRG定時(shí)器復(fù)位清零,由此可以保證BRG不需要等到定時(shí)器溢出后就可以輸出新

25、的波特率。 對(duì)USART方式進(jìn)行初始化的程序如下: BSF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲(chǔ)器的第1頁(yè) MOVLW 0 x19 MOVWF SPBRG ;設(shè)置波特率為9600 BCF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲(chǔ)器的第0頁(yè) CLRF RCSTA ;將接收控制和狀態(tài)寄存器清零 BSF RCSTA,SPEN ;串口允許 CLRF PIR1 ;清除中斷標(biāo)志 BSF STATUS,RP0 ;將指針指向數(shù)據(jù)存儲(chǔ)器的第1頁(yè) CLRF TXSTA ;將發(fā)送控制和狀態(tài)寄存器清零 BSF TXSTA,BRGH ;設(shè)置為異步、高速波特率 BSF TXSTA,TXEN ;允許發(fā)送 BCF S

26、TATUS,RP0 ;將指針指向數(shù)據(jù)存儲(chǔ)器的第0頁(yè) BSF RCSTA,CREN ;允許接收 初始化完成后,即可發(fā)送或接收數(shù)據(jù)。在發(fā)送或接收數(shù)據(jù)時(shí),通過(guò)查詢發(fā)送/接收中斷標(biāo)志位即可判斷是否發(fā)送完一個(gè)數(shù)據(jù)/接收到一個(gè)數(shù)據(jù)。 送/接收中斷標(biāo)地不需要也不有用軟件復(fù)位。 第17頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 在異步串行發(fā)送的過(guò)程中,只要TXREG寄存器為空,中斷標(biāo)志TXIF就置位。因此,TXIF為1并不是發(fā)送完畢的標(biāo)志,但仍可以用TXIF標(biāo)志來(lái)判斷。因此當(dāng)TXREG為空時(shí),將數(shù)據(jù)送入后,數(shù)據(jù)會(huì)保留在TXREG寄存器中,直到前一個(gè)數(shù)據(jù)從發(fā)送移位寄存器中移出,即前一個(gè)數(shù)據(jù)發(fā)送。8.

27、2.2 串行接口芯片8251A 8251的管腳和內(nèi)部結(jié)構(gòu)如圖8. 8所示。1同CPU的連接信號(hào) RESET:當(dāng)這個(gè)引腳上出現(xiàn)一個(gè)6倍時(shí)鐘寬的高電平信號(hào)時(shí),芯片被復(fù)位,使芯片 處于空閑狀態(tài)。這個(gè)空閑狀態(tài)將一直保持到由編程確定了新?tīng)顟B(tài)才結(jié)束。在系統(tǒng)中 使用此芯片時(shí),總是把復(fù)位端與系統(tǒng)的復(fù)位線相連,使它受到加電自動(dòng)復(fù)位和人工 復(fù)位的控制。 CLK:是為芯片內(nèi)有關(guān)電路工作提供時(shí)鐘的輸入端。這個(gè)時(shí)鐘的頻率與數(shù)據(jù)速率并 無(wú)直接關(guān)系,但是,為了電路工作可靠,在同步方式下最好使這個(gè)頻率比數(shù)據(jù)速率 大30倍以 上。在異步方式下,大4.5倍。 、 :是CPU對(duì)8251A中的寄存器讀、寫(xiě)時(shí)的控制信號(hào)輸入端。 C/

28、:是一個(gè)決定CPU對(duì)芯片讀寫(xiě)內(nèi)容的控制輸入端。如果輸入為高電平,CPU 對(duì)芯片就是寫(xiě)控制字或讀狀態(tài)字;反之,讀寫(xiě)的內(nèi)容就是數(shù)據(jù)。通常,將該端與地址 線的最低位相接。于是,8251A就占有兩個(gè)端口地址,偶地址為數(shù)據(jù)口地址,而奇 地址為控制口地址。 :片選輸入端。該引腳輸入低電平時(shí),芯片可以與CPU之間傳輸數(shù)據(jù);反之, 芯片的8個(gè)數(shù)據(jù)引腳處于懸空狀態(tài)。 第18頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日?qǐng)D8.8 8251A 芯片引腳 D0D7:雙向8位數(shù)據(jù)線,同片內(nèi)數(shù)據(jù)總線緩沖器相連,CPU通過(guò)D0D7向8251A 寫(xiě)數(shù)據(jù)和控制字,以及讀數(shù)據(jù)和狀態(tài)字。 2MODEM控制信號(hào) 8251A還

29、提供了四個(gè)與MODEM相連的控制信號(hào),信號(hào)的含義與RS232C標(biāo)準(zhǔn)相同。 (Data Terminal Ready):數(shù)據(jù)終端準(zhǔn)備好(輸出,低電平有效)。這是 一個(gè)通用的輸出信號(hào),可由命令字的位1置“1”,而變?yōu)橛行В靡员硎綜PU準(zhǔn)備就緒。第19頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 (Data Terminal Ready):數(shù)據(jù)終端準(zhǔn)備好(輸出,低電平有效)。這是 一個(gè)通用的輸出信號(hào),可由命令字的位1置“1”,而變?yōu)橛行?,用以表示CPU準(zhǔn)備就緒。 (Request To Send):請(qǐng)求發(fā)送(輸出,低電平有效)。此信號(hào)用于通知 調(diào)制器,CPU已準(zhǔn)備好發(fā)送。它可由命令字的位

30、5置“1”而變?yōu)橛行Вǖ碗娖接行В?(Clear To Send):清除發(fā)送信號(hào)(輸入,低電平有效)。這是調(diào)制解凋器 或其它外設(shè)送到8251A中的調(diào)制解調(diào)器控制器的信號(hào)。當(dāng)其有效時(shí),表示允許USART 發(fā)送數(shù)據(jù)。 上述四個(gè)信號(hào)在使用時(shí)應(yīng)按規(guī)定引腳連接。信號(hào)在傳輸過(guò)程中,由MODEM輸入后存放在8251A的狀態(tài)字節(jié)中,芯片內(nèi)對(duì)此并不作處理,只有當(dāng)CPU讀狀態(tài)后才可能給出響應(yīng)。CTS也是從MODEM送來(lái)的信號(hào),如果為低電平。且8251A中已經(jīng)設(shè)置了允許發(fā)送命令,芯片就可以向MODEM送出串行數(shù)據(jù)。如果在數(shù)據(jù)傳送中,出現(xiàn)了某個(gè)條件不滿足 的情況,那么,在傳輸完當(dāng)前的字節(jié)后,即行停止。和都是由CPU

31、寫(xiě)命令時(shí)給8251A設(shè)置的,為使兩個(gè)引腳有效(低電平),對(duì)寄存器中這兩位應(yīng)寫(xiě)入“1”。3發(fā)送器有關(guān)信號(hào) TxD:發(fā)送數(shù)據(jù)。發(fā)送緩沖器從數(shù)據(jù)總線上接收數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù),并按要求 插入附加字符或附加位后,在時(shí)鐘 的下降沿按位從TxD上發(fā)送出去。 xRDY:發(fā)送器準(zhǔn)備好信號(hào)。如果該信號(hào)有效,就表示發(fā)送緩沖器已空,CPU可以向 芯片送入新的數(shù)據(jù)。這個(gè)信號(hào)的狀態(tài)要受到命令字中TxEN位(允許發(fā)送)的控制。 如果 把TxRDY信號(hào)作為向CPU請(qǐng)求數(shù)據(jù)的中斷信號(hào),TxEN位就可以看作是中斷控 制的屏蔽 位。在8251A的狀態(tài)字中有一位TxRDY,CPU也可以用查詢的方式判斷 是否可以送數(shù)據(jù)。第20頁(yè),共

32、59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 TxE:發(fā)送緩沖器空標(biāo)志。不管發(fā)送時(shí)是處于等待還是發(fā)送狀態(tài),只要發(fā)送緩沖器 中沒(méi)有再要發(fā)送的字符,這個(gè)標(biāo)志就變高。當(dāng)從CPU送入一個(gè)數(shù)據(jù)字符時(shí),該位標(biāo) 志就被復(fù)位。 這個(gè)標(biāo)志可以用來(lái)表示一段數(shù)據(jù)傳輸?shù)慕Y(jié)束。如果是半雙工工作, 這個(gè)標(biāo)志可以用作從發(fā)到收的轉(zhuǎn)換。同步工作時(shí),如果臨時(shí)出現(xiàn)TxE,就意味著數(shù)據(jù) 發(fā)送出現(xiàn)空缺,芯片會(huì)自動(dòng)插補(bǔ)同步字符。 :輸人控制發(fā)送器數(shù)據(jù)速率的時(shí)鐘。每個(gè)數(shù)據(jù)的移位輸出,是在TxC的下降 沿實(shí)現(xiàn)的。異步方式下, 的頻率可以是數(shù)據(jù)速率的1、16或64倍。同步方式時(shí), 的頻率與數(shù)據(jù)速率相同。4接收器有關(guān)信號(hào) RxD:接收數(shù)據(jù)。

33、用來(lái)接收外設(shè)送來(lái)的串行數(shù)據(jù),按規(guī)定檢查有關(guān)字符或有關(guān)位后, 經(jīng)串一并轉(zhuǎn)換送入數(shù)據(jù)總線緩沖器,RxD在時(shí)鐘上升沿采樣輸入。 RxRDY:接收器準(zhǔn)備好標(biāo)志。如果該位為高電乎,接收緩沖器中就已經(jīng)有組裝好了 的一個(gè)數(shù)據(jù)字符,可通知CPU將它取走。與TxRDY相似,RxRDY也可用作中斷請(qǐng) 求信號(hào),也可以通過(guò)讀狀態(tài)字了解接收器狀態(tài)。一旦CPU讀走這個(gè)數(shù)據(jù)字符,RxRDY 被復(fù)位。要是CPU沒(méi)有及時(shí)取走數(shù)據(jù),新接收數(shù)據(jù)將覆蓋數(shù)據(jù),使一個(gè)數(shù)據(jù)丟失, 出現(xiàn)溢出錯(cuò)誤,并反映在狀態(tài)字中。 :接收時(shí)鐘輸入端。當(dāng)時(shí)鐘處在上升沿時(shí),才可能把數(shù)據(jù)取樣輸入。時(shí)鐘速率 的規(guī)定與 相同。實(shí)際上, 和 往往連接在一起,用同一個(gè)時(shí)

34、鐘源。 第21頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 SYNDET/BRKDET:同步和間斷檢測(cè)。芯片在同步方式工作時(shí),用作同步檢測(cè)端; 異步時(shí)則用作間斷檢測(cè)輸出。芯片可以由編程確定是內(nèi)同步還是外同步。如果是內(nèi) 同步,就由 芯片內(nèi)電路搜索同步字符,一旦找到,就由該端輸出一個(gè)高電平。 如果是外同步,當(dāng)片外檢測(cè)電路找到同步字符后,就可以從該引腳輸入一個(gè)高電平 信號(hào),使8251A正式開(kāi)始接收。一旦開(kāi)始正常接收數(shù)據(jù),同步檢測(cè)端恢復(fù)低電平輸 出。 異步方式工作中,通常在線路上無(wú)數(shù)據(jù)時(shí)以高電平表示。在8251A中也可以由程序控制,使無(wú)數(shù)據(jù)的間斷時(shí)間內(nèi)線路上呈現(xiàn)低電平,即發(fā)送一個(gè)字符長(zhǎng)度的全

35、“0”碼。接收端具有對(duì)這種間斷碼檢測(cè)的能力,如果檢測(cè)到間斷碼,將從該端輸出一個(gè)高電平。為了避免接收器對(duì)尚未正式開(kāi)始工作的線路低電平誤認(rèn)為間斷狀態(tài),8251A在復(fù)位后總是要在檢測(cè)到一次高電平輸入后,才開(kāi)始對(duì)間斷狀態(tài)的檢測(cè)。 對(duì)于8251A它有三個(gè)字,一個(gè)方式指令字、命令指令字、狀態(tài)字,其中方式指令字和命令字都是要寫(xiě)入到控制口里的,而狀態(tài)字是從控制口讀出來(lái)的,如果讀和寫(xiě)能夠區(qū)別,也就是狀態(tài)字和指令字這兩個(gè)可以區(qū)別,但指示字里是方式指示字還是命令指示字,這個(gè)關(guān)系必須要注意,它們的關(guān)系應(yīng)是在開(kāi)機(jī)時(shí)、在復(fù)位時(shí)以及完成后,先給的字認(rèn)為是方式指示字。給完了方式指示字后再給的自動(dòng)認(rèn)為是命令指令字,就不會(huì)把后面

36、給的當(dāng)作方式字進(jìn)行保存,而當(dāng)作命令控制操作。8.2.3 USART應(yīng)用通信編程實(shí)例1概述 要在PIC16F877與 PC機(jī)間進(jìn)行數(shù)據(jù)交換,這里可應(yīng)用USART來(lái)實(shí)現(xiàn)。在編寫(xiě)程序時(shí)首先要設(shè)置好USART異步通訊模塊工作模式及相關(guān)寄存器,PIC16F877的USART與其他具有USART的 PIC單片機(jī)一樣,可以被設(shè)置成為與 PC機(jī)進(jìn)行全雙工異步通訊,第22頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日它是利用PORTC口的RC6和RC7兩個(gè)引腳作為通訊的2線制串行通訊接口。為了把PORTC口的RC6和 RC7兩個(gè)引腳分別設(shè)置成串行通訊接口的發(fā)送(TX)腳和接收(RX)腳,必須要把USAR

37、T的接收狀態(tài)和控制寄存器 RCSTA 的 bit7(SPEN)位和TRISC寄存器的bit7置“1”,把TRISC寄存器的bit6置“0”。為了使USART分別工作于接收或發(fā)送狀態(tài),就必須設(shè)置相應(yīng)的狀態(tài)寄存器和控制寄存器。在設(shè)置接收器時(shí),要注意接收腳對(duì)接收信號(hào)的采樣。接收腳 RX上的數(shù)據(jù)被采樣3次,通過(guò)一個(gè)三中取二邏輯檢測(cè)電路來(lái)判斷 RX腳上的電平是高還是低,以作為采樣取值。另外,要使USART工作在異步通訊方式,就必須要設(shè)置通訊的傳送、接收速率即波特率,USART的波特率設(shè)置是通過(guò)控制獨(dú)立的一個(gè)8位波特率發(fā)生器BRG實(shí)現(xiàn)的。 在異步工作方式下,串行通訊接口USART采用標(biāo)準(zhǔn)的不歸0(NRZ)

38、格式(即1位起始位、8位或9位數(shù)據(jù)位及1位停止位),最常用的數(shù)據(jù)格式是8位。PIC16F877片內(nèi)的8位波特率發(fā)生器BRG可以用來(lái)驅(qū)動(dòng)振蕩器的時(shí)鐘,產(chǎn)生標(biāo)準(zhǔn)的波特率頻率。PIC16F877的 USART發(fā)送和接收順序是從最低位(LSB)開(kāi)始。USART發(fā)送器和接收器在功能上是完全獨(dú)立的,但是它們所用的數(shù)據(jù)格式和波特率必須是相同的。波特率發(fā)生器可以根據(jù)發(fā)送狀態(tài)和控制寄存器TXSTA的 bit2(BRGH)位設(shè)置產(chǎn)生2種不同的移位速度:對(duì)系統(tǒng)時(shí)鐘16分頻和64分頻的波特率時(shí)鐘,即設(shè)置該位在異步通訊模式為1時(shí)表示通訊為高速,為0時(shí)表示通訊為低速。要使USART工作于異步通訊模式,可通過(guò)對(duì)發(fā)送狀態(tài)和控

39、制寄存器TXSTA的bit4(SYNC)位設(shè)置清“0”。 由上可知,PIC16F877的USART異步工作設(shè)置主要包括對(duì)以下部件的設(shè)置:波特率發(fā)生器BRG、采樣電路、異步發(fā)送器、異步接收器等。這里關(guān)于PIC16F877的USART異步工作有兩點(diǎn)需要說(shuō)明:一是USART硬件不支持奇偶效驗(yàn),但可以用軟件實(shí)現(xiàn)(并可作為第9位數(shù)據(jù)傳輸);二是在CPU處于休眠工作方式時(shí),USART不能工作在異步通訊方式。 第23頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日2. USART波特率發(fā)生器BRG設(shè)置 在異步通訊方式下,波特率發(fā)生器BRG需要設(shè)置一個(gè)初值,以使BRG輸出一個(gè)合適的波特率。在BRG設(shè)置時(shí)

40、,其工作在高速還是低速是由發(fā)送狀態(tài)寄存器和控制寄存器 TXSTA的 bit2(BRCH)位進(jìn)行設(shè)置的。在 PIC16F877內(nèi)部時(shí)鐘工作模式下,設(shè)置BRG波特率寄存器 SPBRG在低速和高速初值的計(jì)算公式如下: BRGH=0(低速) 異步波特率=FOSC/ (64(X+1) BRGH=1(高速) 波特率=FOSC/ (16(X+1) 其中,X為SPBRG寄存器的值(0255)。 實(shí)際應(yīng)用中,上式用于高速方式(BRGH=1)下計(jì)算波特率可以減小誤差。另外,在向波特率寄存器SPBRG寫(xiě)入一個(gè)新值時(shí)會(huì)使BRG定時(shí)器復(fù)位(清零),由此就可保證波特率發(fā)生器BRG不需要等到定時(shí)器溢出后就可輸出新的波特率。

41、3. USART異步通訊的寄存器設(shè)置 實(shí)現(xiàn)USART異步通訊的寄存器主要有:發(fā)送狀態(tài)寄存器和控制寄存器 TXSTA、接收狀態(tài)和控制寄存器RCSTA、波特率發(fā)生器存器SPBRG、發(fā)送數(shù)據(jù)寄存器 TXREG、接收數(shù)據(jù)寄存器 RCREG、外圍接口中斷使能寄存器 PIE1 和外圍接口標(biāo)志寄存器 PIR1等。 發(fā)送狀態(tài)和控制寄存器(表8.2) 表8.2 發(fā)送狀態(tài)和控制寄存器第24頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 bit7 CSRC:異步方式未用。 bit6 TX9:發(fā)送數(shù)據(jù)長(zhǎng)度選擇位。1 =選擇9位數(shù)據(jù);0=選擇8位數(shù)據(jù)。 bit5 TXEN:發(fā)送允許位。1=允許發(fā)送;0=關(guān)閉發(fā)送

42、。 bit4 SYNC:USART同步/異步方式選擇位。1 =選擇同步方式;0=選擇異步方式。 bit3 此位未用。 bit2BRGH:高速波特率使能位。1 =高速;0 =低速。 bit1 TRMT:發(fā)送移位寄存器(TSR)“空”標(biāo)志位。1=TSR空;0=TSR滿。 bit0 TX9D:發(fā)送數(shù)據(jù)的第9位。 接收狀態(tài)和控制寄存器(表8.3)表8.3 接收狀態(tài)和控制寄存器 bit7 SPEN:串行口使能位。1=允許串行口工作(把RC7和 RC6設(shè)置成串行口引腳;0 =禁止止串行工作; bit6 RX9:接收數(shù)據(jù)長(zhǎng)度選擇位。1 =選擇接收9位數(shù)據(jù);0=選擇接收8位數(shù)據(jù)。 bit5 SREN:?jiǎn)巫止?jié)接

43、收允許位。異步方式此位未用。 Bit4 CREN:連續(xù)接收選擇位。1 =允許連續(xù)接收;0=禁止連續(xù)接收。第25頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 bit3ADDEN:地址匹配檢測(cè)使能位。1=允許地址匹配檢測(cè),允許中斷并且當(dāng)RSR的D8被置1時(shí)讀接收緩沖器數(shù)據(jù);0=禁止地址匹配檢測(cè),接收所有字節(jié),第9位被看作奇偶效驗(yàn)位。 bit2 FERR:幀格式錯(cuò)標(biāo)志位。1=幀格式錯(cuò)(讀RCREG寄存器可對(duì)該位刷新并且準(zhǔn)備接收下一個(gè)有效位);0=無(wú)幀格式錯(cuò)。 bit1OERR:越位溢出錯(cuò)標(biāo)志位。1=有溢出錯(cuò),清CREN位可將此位清零;0=無(wú)溢出錯(cuò)。 bit0 RX9D:接收數(shù)據(jù)的第 9 位

44、,可作奇偶效驗(yàn)位。 外圍接口中斷使能寄存器(表8.4) 表8.4外圍接口中斷使能寄存器 bit5 RCIE:串行異步通訊接口接收中斷使能位。1=允許USART接收中斷;0 =禁止US2ART接收中斷。 bit4 TXIE:串行異步通訊接口發(fā)送中斷使能位。1=允許USART發(fā)送中斷;0=禁止USART發(fā)送中斷。 其余位在異步通訊中未用。 第26頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 外圍接口中斷標(biāo)志寄存器(表8.5)表8.5 外圍接口中斷標(biāo)志寄存器 bit5 RCIF:異步串行通訊(USART)接口接收中斷標(biāo)志位;1=USART接收緩沖區(qū)滿;0 = USART接收緩沖區(qū)空。 bi

45、t4 TXIF:異步串行通訊(USART)接口發(fā)送中斷標(biāo)志位;1= USART發(fā)送緩沖區(qū)空;0= USART發(fā)送緩沖區(qū)滿。 其余位在異步通訊中未用。 其他寄存器波特率 發(fā)生器存器 SPBRG的設(shè)置可以參考USR2TA波特率發(fā)生器BRG的設(shè)置內(nèi)容,在設(shè)置該寄存器就是根據(jù)單片機(jī)工作時(shí)鐘頻率確定傳輸數(shù)據(jù)的波特率,只要將其初值寫(xiě)入SPBRG寄存器即可。 發(fā)送數(shù)據(jù)寄存器 TXREG是將單片機(jī)需要發(fā)送的數(shù)據(jù)存放的寄存器,在單片機(jī)未發(fā)送之前就必須要將備發(fā)送的數(shù)據(jù)裝入該寄存器。接收數(shù)據(jù)寄存器RCREG是將單片機(jī)接收到外界數(shù)據(jù)后存放數(shù)據(jù)的寄存器,在單片機(jī)確定接收的數(shù)據(jù)無(wú)誤后,將其數(shù)據(jù)存放到該寄存器中。 第27頁(yè)

46、,共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日4PIC16F877單片機(jī)與PC機(jī)實(shí)現(xiàn)電平轉(zhuǎn)換 PC機(jī)的串行接口是符合 EIA RS- 232C規(guī)范的外部總線標(biāo)準(zhǔn)接口。RS- 232C采用的是負(fù)邏輯,即邏輯”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總線進(jìn)行串行通信時(shí)需外接電路實(shí)現(xiàn)電平轉(zhuǎn)換。在發(fā)送端用驅(qū)動(dòng)器將 TTL 或CMOS電平轉(zhuǎn)換為RS- 232C電平,在接收端用接收器將 RS-232C電平再轉(zhuǎn)換為T(mén)TL 或 CMOS

47、電平。這里選用了MAXIM公司的MAX232來(lái)作電平轉(zhuǎn)換。MAX232屬于MAXIM公司的通用串行接收/發(fā)送驅(qū)動(dòng)器芯片。其外圍電路簡(jiǎn)單,只需外接4個(gè)0.1F的電容即可,其系統(tǒng)硬件電路如圖8. 9所示。圖中MAX232將PIC16F877的TX輸出的TTL電平信號(hào)轉(zhuǎn)換為RS-232C電平,輸入到 PC機(jī),并將 PC機(jī)輸出的 RS-232C 電平轉(zhuǎn)換為 TTL 電平,輸出到PIC16F877單片機(jī)的RX引腳。5. PC機(jī)支持與 PIC16F877 進(jìn)行數(shù)據(jù)交換的PC機(jī)可與PIC16F877可以編程實(shí)現(xiàn),其實(shí)現(xiàn)功能如下:PC機(jī)和單片機(jī)均可發(fā)送和接收數(shù)據(jù),由 PC機(jī)決定是發(fā)送還是接收;程序設(shè)定當(dāng) PC

48、機(jī)鍵盤(pán)輸入發(fā)送指令時(shí),PC機(jī)分別顯示PC機(jī)發(fā)送的數(shù)據(jù)和單片機(jī)會(huì)送的數(shù)據(jù);當(dāng) PC機(jī)鍵盤(pán)輸入接收指令時(shí),PC機(jī)將接收單片機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù),并將其數(shù)據(jù)顯示。在編程中,必須要注意設(shè)置 PC機(jī)與PIC16F877單片機(jī)在進(jìn)行數(shù)據(jù)交換時(shí)的數(shù)據(jù)傳輸格式相同。通常采用的通訊協(xié)議如下:波特率為9 600 bps,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶效驗(yàn)位。PC機(jī)發(fā)送命令給單片機(jī),鍵盤(pán)輸入發(fā)送命令時(shí),控制單片機(jī)接收數(shù)據(jù),當(dāng)PC機(jī)鍵盤(pán)輸入接收命令時(shí),控制單片機(jī)發(fā)送數(shù)據(jù)給PC機(jī)。PC機(jī)與PIC16F877單片機(jī)進(jìn)行數(shù)據(jù)交換的程序編制流程如圖8.10所示。 第28頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日?qǐng)D8.

49、9PIC16F877與PC接口原理圖源程序如下:1)初始化設(shè)置部分COUNTEQU 0X20TEMPEQU0X21J0EQU0X22第29頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日ORG0NOPSTARTGOTOMAINORG0X05MAINBANKSEL TRISCMOVLWB10000000MOVWF TRISCMOVLW0X30 ;將RAM單元初始化MOVWF FSRBCF STATUS,RP0MOVLW0X22MOVWFCOUNTBCF PIR1,RCIFBSF PIR1,TXIFINTRAMMOVFCOUNT,0MOVWF INDFINCFCOUNT,1INCF FSR,

50、1BTFSS FSR,7GOTO INTRAM 圖8.10數(shù)據(jù)交換程序流程框圖第30頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日BANKSEL TXSTAMOVLW0X19MOVWF SPBRG ;波特率設(shè)置為9 600 bpsMOVLW0X04MOVWF TXSTA ;異步高速方式BCF STATUS,RP0MOVLW0X80MOVWF RCSTA ;串行口使能MOVLW0X30MOVWF FSRBSF RCSTA,CREN ;接收允許BSF STATUS,RP0BSF TXSTA,TXEN ;發(fā)送允許BCF STATUS,RP02)接收并返回?cái)?shù)據(jù)部分WAITBTFSSPIR1,R

51、CIFGOTO WAIT ;接收PC機(jī)命令MOVF RCREG,0MOVWF TEMP第31頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日MOVWF INDFINCF FSRDECFSZTEMP ;接收到的數(shù)據(jù)為1,則接收GOTO TXW ;否則發(fā)送數(shù)據(jù)MOVLW0X06MOVWF TEMPWAIT1BTFSS PIR1,RCIFGOTO WAIT1 ;接收一個(gè)數(shù)據(jù)MOVF RCREG,0MOVWFCOUNTMOVWF TXREGLOOPTXBTFSSPIR1,TXIF ;將接收到的數(shù)據(jù)送回PC機(jī)GOTOLOOPTXMOVFCOUNT,0MOVWF INDFINCF FSRDECFSZ

52、TEMPGOTO WAIT1GOTOOVER ;處理完畢第32頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日TXWMOVLW0X09 ;向PC機(jī)發(fā)送9個(gè)數(shù)據(jù)MOVWF TEMPMOVLWD00MOVWFJ03) 發(fā)送數(shù)據(jù)部分TXW0MOVF J0,0MOVWF TXREGINCFJ0 ;單片機(jī)發(fā)送的數(shù)據(jù)為08和一位存儲(chǔ)數(shù)據(jù)TXW1BTFSS PIR1,TXIFGOTO TXW1DECFSZTEMPGOTO TXW0OVERBCF RCSTA,CREN ;通信任務(wù)完成,關(guān)接收和發(fā)送允許 要實(shí)現(xiàn)PIC單片機(jī)與PC機(jī)間的數(shù)據(jù)通訊,不僅是要連接硬件電路和對(duì)單片機(jī)進(jìn)行編程,同時(shí)還需要在PC上編寫(xiě)

53、數(shù)據(jù)收發(fā)的程序。通常,對(duì)于單片機(jī)與PC機(jī)間的數(shù)據(jù)通訊交換調(diào)試時(shí),可以串口通訊調(diào)試工具,同時(shí)也可以自編調(diào)試程序。程序編寫(xiě)好后,再與上述 PIC16F877一起進(jìn)行操作,即可實(shí)現(xiàn)簡(jiǎn)易通訊數(shù)據(jù)交換。 第33頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 這里特別需要注意的是:當(dāng) PC機(jī)與單片機(jī)系統(tǒng)通信時(shí),單片機(jī)數(shù)據(jù)存儲(chǔ)區(qū)( RAM )內(nèi)的數(shù)據(jù)是十六進(jìn)制,在信號(hào)線上傳輸?shù)氖鞘M(jìn)制數(shù)的ASCII碼的二進(jìn)制形式;而Windows系統(tǒng)下使用的是ANSI碼,ANSI碼僅在前126個(gè)與ASCII碼相同,即在 Windows下接收到的是十六進(jìn)制數(shù)的ASCII碼的字符串,可先轉(zhuǎn)換為ANSI碼后再在Wind

54、ows下還原為十六進(jìn)制數(shù)。第34頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日8.3 USB接口設(shè)計(jì) USB的全稱是通用串行總線(Universal Serial Bus),最多可連接127臺(tái)外 設(shè),USB其最大的特點(diǎn)是支持熱插拔和即插即用。當(dāng)設(shè)備插入時(shí),主機(jī)枚舉此設(shè)備并加載所需的驅(qū)動(dòng)程序,因此使用遠(yuǎn)比PCI和ISA總線方便。USB速度比平行并聯(lián)總線(Parellel Bus,例如EPP、LPT)與串聯(lián)總線(Serial Port,例如RS-232)等傳統(tǒng)電腦用標(biāo)準(zhǔn)總線快上許多。原標(biāo)準(zhǔn)中USB 1.1 的最大傳輸帶寬為 12Mbps,USB 2.0 的最大傳輸帶寬為 480Mbps U

55、SB的設(shè)計(jì)為非對(duì)稱式的,它由一個(gè)主機(jī)(host)控制器和若干通過(guò)hub設(shè)備以樹(shù)形連接的設(shè)備組成。一個(gè)控制器下最多可以有5級(jí)hub,包括Hub在內(nèi),最多可以連接127個(gè)設(shè)備,而一臺(tái)計(jì)算機(jī)可以同時(shí)有多個(gè)控制器。 和SPI-SCSI等標(biāo)準(zhǔn)不同,USB hub不需要終結(jié)器 USB可以連接的外設(shè)有鼠標(biāo)、鍵盤(pán)、gamepad、游戲桿、掃描儀、數(shù)碼相機(jī)、打印機(jī)、硬盤(pán)和網(wǎng)絡(luò)部件。對(duì)數(shù)碼相機(jī)這樣的多媒體外設(shè)USB已經(jīng)是缺省接口;由于大大簡(jiǎn)化了與計(jì)算機(jī)的連接,USB也逐步取代并口成為打印機(jī)的主流連接方式。2004年已經(jīng)有超過(guò)1億臺(tái)USB設(shè)備;到2005年顯示器和高清晰度數(shù)字視頻外設(shè)是僅有的USB未能染指的外設(shè)類別

56、,因?yàn)樗麄冃枰叩膫鬏斔俾?。?5頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日由于USB支持熱插拔,即插即用的優(yōu)點(diǎn),所以USB接口已經(jīng)成為計(jì)算機(jī)的標(biāo)準(zhǔn)接口。USB目前有兩個(gè)版本,USB1.1的最高數(shù)據(jù)傳輸率為12Mbps,USB2.0則提高到480Mbps。二者的物理接口完全一致,數(shù)據(jù)傳輸率上的差別完全由PC的USB host控制器以及USB設(shè)備決定。USB還可以通過(guò)連接線為設(shè)備提供最高5V,500mA的電力。 現(xiàn)標(biāo)準(zhǔn)中將UBS統(tǒng)一為USB2.0,分為: (1) High-speed,傳輸速率25Mbps400Mbps(最大480Mbps) (2) Full-speed ,傳輸速率

57、500Kbps10Mbps(最大12Mbps) (3) Low-speed,傳輸速率10Kbps100Kbps(最大1.5Mbps) USB 的優(yōu)點(diǎn): USB 具有真正的“即插即用”特性,用戶可以很容易地對(duì)外設(shè)進(jìn)行安裝和拆卸, 主機(jī)可按外設(shè)的增刪情況自動(dòng)配置系統(tǒng)資源,同時(shí)用戶可以在不關(guān)機(jī)的情況下 進(jìn)行外設(shè)的更換,外設(shè)裝置的驅(qū)動(dòng)程序的安裝刪除將實(shí)現(xiàn)自動(dòng)化。 USB 具有很強(qiáng)的連接能力。 低成本。 空間的節(jié)省。 USB與ETDM特性可以支持諸如 ISDN 等高速數(shù)字電話信息通路接口。 連接電纜輕巧,電源體積縮小。 USB 一種開(kāi)放性的不具專利版權(quán)的理想工業(yè)標(biāo)準(zhǔn)。 8.3.1 USB接口規(guī)范 目前U

58、SB支持3種數(shù)據(jù)信號(hào)速率,USB設(shè)備應(yīng)該在其外殼或者有時(shí)是自身上正確標(biāo)明其使用的速率。USB-IF進(jìn)行設(shè)備認(rèn)證并為通過(guò)兼容測(cè)試并支付許可費(fèi)用的設(shè)備第36頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日提供基本速率(低速和全速)和高速的特殊商標(biāo)許可。 1.5 Mbit/s (183 KByte/s)的低速速率,主要用于人機(jī)接口設(shè)備(Human Interface Devices ,HID)例如鍵盤(pán)、鼠標(biāo)、游戲桿。 12 Mbit/s (1.4 MByte/s)的全速速率,在USB 2.0之前是曾經(jīng)是最高速率,后起的更高速率的高速接口應(yīng)該兼容全速速率。多個(gè)全速設(shè)備間可以按照先到先得法則劃分帶

59、寬;使用多個(gè)等時(shí)設(shè)備時(shí)會(huì)超過(guò)帶寬上限也并不罕見(jiàn)。所有的USB Hub支持全速速率。 480 Mbit/s (57 MByte/s)的高速速率,并非所有的USB 2.0設(shè)備都是高速的。高速設(shè)備插入全速hub時(shí)應(yīng)該與全速兼容。而高速hub具有所謂Transaction Translator(事務(wù)翻譯器)功能,能夠隔離全速、低速設(shè)備與高速之間數(shù)據(jù)流,但是不會(huì)影響供電和串聯(lián)深度。 1機(jī)械和電氣標(biāo)準(zhǔn) 圖8.11 標(biāo)準(zhǔn)USB接口第37頁(yè),共59頁(yè),2022年,5月20日,1點(diǎn)2分,星期日 標(biāo)準(zhǔn)USB接口如圖8.11所示,其電氣特性見(jiàn)表8.6。 USB信號(hào)使用分別標(biāo)記為D+和D-的雙絞線傳輸,各自使用半雙工

60、差分信號(hào)并協(xié)同工作,以抵消長(zhǎng)導(dǎo)線的電磁干擾。 USB的電纜有四根線,兩根傳送的是5V的電源,有一些直接和電源HUB相連的設(shè)備可以直接利用它來(lái)供電。另外的兩根是數(shù)據(jù)線,數(shù)據(jù)線是單工的,在整個(gè)的一個(gè)系統(tǒng)中的數(shù)據(jù)速率是一定的,要么是高速,要么是低速,沒(méi)有一個(gè)可以中間變速的設(shè)備來(lái)實(shí)現(xiàn)數(shù)據(jù)碼流的變速.在這一點(diǎn)上,USB和1394有明顯的差別。 USB的總線可以在不使用的時(shí)候被掛起,這樣一來(lái)就可以節(jié)約能源。 在有些時(shí)候的總線還有可能擋機(jī)(stall),比如說(shuō)象數(shù)據(jù)傳送的時(shí)候突然被打斷,這個(gè)時(shí)候通過(guò)host的重新配置可以實(shí)現(xiàn)總線的重新工作。表8.6 標(biāo)準(zhǔn)USB電氣特性表第38頁(yè),共59頁(yè),2022年,5月2

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論