當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、前言美國(guó)Microchip公司的PIC系列單片機(jī)是一種新型的CMOS工藝單片機(jī),其中,有許多單片機(jī)內(nèi)部帶有異步通訊模塊,如PIC16F877等系列芯片。單片機(jī)雖然在使用中可等同于一個(gè)CPU,但是在許多需要大量計(jì)算的運(yùn)用中,還

一、前言

美國(guó)Microchip公司的PIC系列單片機(jī)是一種新型的CMOS工藝單片機(jī),其中,有許多單片機(jī)內(nèi)部帶有異步通訊模塊,如PIC16F877等系列芯片。單片機(jī)雖然在使用中可等同于一個(gè)CPU,但是在許多需要大量計(jì)算的運(yùn)用中,還必須借助微機(jī)(PC)的強(qiáng)大數(shù)據(jù)處理能力,這樣就必須通過通信電路實(shí)現(xiàn) PIC單片機(jī)與微機(jī)間的可靠數(shù)據(jù)傳輸。不論P(yáng)IC單片機(jī)內(nèi)有沒有提供串行口,在實(shí)現(xiàn)串行通信時(shí)都必須通過自己設(shè)計(jì)硬件電路和編寫通信軟件來實(shí)現(xiàn),而PIC 單片機(jī)要完成較復(fù)雜的軟件功能時(shí),需利用其內(nèi)部相關(guān)的特殊功能寄存器來實(shí)現(xiàn)。下面介紹PIC16F877與微機(jī)間進(jìn)行異步串行通訊的實(shí)現(xiàn)方法,同時(shí)給出與微機(jī)間進(jìn)行異步串行通訊的硬件接口電路、程序流程框圖、單片機(jī)內(nèi)通信程序等。?

二、PIC16877與PC機(jī)間進(jìn)行數(shù)據(jù)交換的實(shí)現(xiàn)

要實(shí)現(xiàn)PIC16F877與PC機(jī)間進(jìn)行數(shù)據(jù)交換,在編寫程序時(shí)首先要設(shè)置好USART異步通訊模塊工作模式及相關(guān)寄存器,現(xiàn)分別介紹如下。

1PIC16F877的USART異步工作設(shè)置簡(jiǎn)介

PIC16F877的USART與其他具有USART的PIC單片機(jī)一樣,可以被設(shè)置成為與PC機(jī)進(jìn)行全雙工異步通訊,它是一種利用PORTC口的 RC6和RC7兩個(gè)引腳作為通訊的2線制串行通訊接口。為了把PORTC口的RC6和RC7兩個(gè)引腳分別設(shè)置成串行通訊接口的發(fā)送(TX)腳和接收(RX)腳,必須要把USART的接收狀態(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次,通過一個(gè)三中取二邏輯檢測(cè)電路來判斷RX腳上的電平是高還是低,以作為采樣取值。另外,要使USART工作在異步通訊方式,就必須要設(shè)置通訊的傳送、接收速率即波特率,USART的波特率設(shè)置是通過控制獨(dú)立的一個(gè)8位波特率發(fā)生器BRG實(shí)現(xiàn)的。

在異步工作方式下,串行通訊接口USART 采用標(biāo)準(zhǔn)的不歸0(NRZ)格式(即1位起始位、8位或9位數(shù)據(jù)位及1位停止位),最常用的數(shù)據(jù)格式是8位。PIC16F877片內(nèi)的8位波特率發(fā)生器 BRG可以用來驅(qū)動(dòng)振蕩器的時(shí)鐘,產(chǎn)生標(biāo)準(zhǔn)的波特率頻率。PIC16F877的USART發(fā)送和接收順序是從最低位(LSB)開始。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工作于異步通訊模式,可通過對(duì)發(fā)送狀態(tài)和控制寄存器TXSTA的bit4(SYNC)位設(shè)置清“0”。

由上簡(jiǎn)述可知:PIC16F877 的USART異步工作設(shè)置主要包括對(duì)以下部件的設(shè)置:波特率發(fā)生器BRG、采樣電路、異步發(fā)送器、異步接收器等。但PIC16F877的USART異步工作有2點(diǎn)需要說明:一是USART硬件不支持奇偶效驗(yàn),但可以用軟件實(shí)現(xiàn)(并可作為第9位數(shù)據(jù)傳輸);二是在CPU處于休眠工作方式時(shí),USART不能工作在異步通訊方式。

2USART波特率發(fā)生器BRG設(shè)置

在異步通訊方式下,波特率發(fā)生器BRG 需要設(shè)置一個(gè)初值,以使BRG輸出一個(gè)合適的波特率。在BRG設(shè)置時(shí),其工作在高速還是低速是由發(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寄存器的值(0~255)。

實(shí)際應(yīng)用中,上式用于高速方式(BRGH=1)下計(jì)算波特率可以減小誤差。另外,在向波特率寄存器SPBRG寫入一個(gè)新值時(shí)會(huì)使BRG定時(shí)器復(fù)位(清零),由此就可保證波特率發(fā)生器BRG不需要等到定時(shí)器溢出后就可輸出新的波特率。

3USART異步通訊的寄存器設(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等。

(1) 發(fā)送狀態(tài)和控制寄存器TXSTA?

  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ā)送;
  bit4  SYNC:USART同步/異步方式選擇位。1=選擇同步方式;0=選擇異步方式;
  bit3  此位未用;
  bit2  BRGH:高速波特率使能位。1=高速;0=低速;
  bit1  TRMT:發(fā)送移位寄存器(TSR)“空”標(biāo)志位。1=TSR空;0=TSR滿;
  bit0  TX9D:發(fā)送數(shù)據(jù)的第9位。

(2)接收狀態(tài)和控制寄存器RCSTA?

  bit6  RX9:接收數(shù)據(jù)長(zhǎng)度選擇位。1=選擇接收9位數(shù)據(jù);0=選擇接收8位數(shù)據(jù);?
  bit5  SREN:?jiǎn)巫止?jié)接收允許位。異步方式此位未用;?
  Bit4  CREN:連續(xù)接收選擇位。1=允許連續(xù)接收;0=禁止連續(xù)接收;?
  bit3  ADDEN:地址匹配檢測(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=無幀格式錯(cuò);
  bit1  OERR:越位溢出錯(cuò)標(biāo)志位。?
  1=有溢出錯(cuò),清CREN位可將此位清零;0=無溢出錯(cuò);?
  bit0  RX9D:接收數(shù)據(jù)的第9位,可作奇偶效驗(yàn)位。

(3) 外圍接口中斷使能寄存器PIE1? 


   
     bit5   RCIE:串行異步通訊接口接收中斷使能位。
      1=允許USART接收中斷;0=禁止USART接收中斷;
      bit4   TXIE:串行異步通訊接口發(fā)送中斷使能位。
       1=允許USART發(fā)送中斷;0=禁止USART發(fā)送中斷。
  其余位在異步通訊中未用。

(4)外圍接口中斷標(biāo)志寄存器PIR1?

      bit5  RCIF:異步串行通訊(USART)接口接收中斷標(biāo)志位;?
      1= USART接收緩沖區(qū)滿;0= USART接收緩沖區(qū)空;
      bit4  TXIF:異步串行通訊(USART)接口發(fā)送中斷標(biāo)志位;
      1= USART發(fā)送緩沖區(qū)空;0= USART發(fā)送緩沖區(qū)滿。
  其余位在異步通訊中未用。?

(5) 其他寄存器

波特率發(fā)生器存器SPBRG的設(shè)置請(qǐng)參考USRTA波特率發(fā)生器BRG的設(shè)置內(nèi)容,在設(shè)置該寄存器就是根據(jù)單片機(jī)工作時(shí)鐘頻率確定傳輸數(shù)據(jù)的波特率,只要將其初值寫入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ù)無誤后,將其數(shù)據(jù)存放到該寄存器中。

4?PIC16F877單片機(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)換為TTL或CMOS電平。這里選用了MAXIM公司的MAX232來作電平轉(zhuǎn)換。MAX232屬于MAXIM公司的通用串行接收/發(fā)送驅(qū)動(dòng)器芯片。其外圍電路簡(jiǎn)單,只需外接4個(gè)0.1 μF的電容即可,其系統(tǒng)硬件電路如圖1所示。圖中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編程一起完成以下功能:PC機(jī)和單片機(jī)均可發(fā)送和接收數(shù)據(jù),由PC機(jī)決定是發(fā)送還是接收;程序設(shè)定當(dāng)PC機(jī)鍵盤輸入發(fā)送指令時(shí),PC機(jī)分別顯示PC機(jī)發(fā)送的數(shù)據(jù)和單片機(jī)會(huì)送的數(shù)據(jù);當(dāng)PC機(jī)鍵盤輸入接收指令時(shí),PC機(jī)將接收單片機(jī)發(fā)送過來的數(shù)據(jù),并將其數(shù)據(jù)顯示。

在編程中,必須要注意設(shè)置PC 機(jī)與PIC16F877單片機(jī)在進(jìn)行數(shù)據(jù)交換時(shí)的數(shù)據(jù)傳輸格式相同。通常采用的通訊協(xié)議如下:波特率為9 600 bps,8位數(shù)據(jù)位,1位停止位,無奇偶效驗(yàn)位。PC機(jī)發(fā)送命令給單片機(jī),鍵盤輸入發(fā)送命令時(shí),控制單片機(jī)接收數(shù)據(jù),當(dāng)PC機(jī)鍵盤輸入接收命令時(shí),控制單片機(jī)發(fā)送數(shù)據(jù)給PC機(jī)。PC機(jī)與PIC16F877單片機(jī)進(jìn)行數(shù)據(jù)交換的程序編制流程如圖2所示。

PIC16F877編程如下:

(1)初始化設(shè)置部分


(2)接收并返回?cái)?shù)據(jù)部分



 

要實(shí)現(xiàn)單片機(jī)與PC 機(jī)間的數(shù)據(jù)通訊,不僅是要連接硬件電路和對(duì)單片機(jī)進(jìn)行編程,同時(shí)還需要在PC上編寫數(shù)據(jù)收發(fā)的程序。通常,對(duì)于單片機(jī)與PC機(jī)間的數(shù)據(jù)通訊交換調(diào)試時(shí),可以借助網(wǎng)上盛行的串口通訊調(diào)試工具,同時(shí)也可以自己編寫調(diào)試程序。程序編寫好后,再與上述PIC16F877一起進(jìn)行操作,即可實(shí)現(xiàn)簡(jiǎn)易通訊數(shù)據(jù)交換。該程序編寫流程框圖如圖3所示。程序?yàn)镻C機(jī)發(fā)送數(shù)據(jù),在數(shù)據(jù)發(fā)送后,單片機(jī)接收后并反發(fā)送回PC機(jī)。這里要注意的是:當(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碼后再在Windows下還原為十六進(jìn)制數(shù)。

三、結(jié)束語

以上的軟硬件在實(shí)踐中均達(dá)到了較為理想的效果。通過單片機(jī)的使用,大大節(jié)省了硬件資源。在實(shí)際應(yīng)用中,還需要在編程中注意數(shù)據(jù)的校驗(yàn),這樣才能保證數(shù)據(jù)在交換及輸中減小誤碼,以提高系統(tǒng)的可靠性和穩(wěn)定性。?

參考文獻(xiàn)
[1]MICROCHIP.PIC16F8X數(shù)據(jù)手冊(cè)[Z].MICROCHIP公司,2002.
[2]劉和平.PIC16F87X單片機(jī)實(shí)用軟件與接口技術(shù)匯編語言及其應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002.
[3]王有緒,許杰,李拉成.PIC系列單片機(jī)接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2000.
[4]莊志洪,彭樹生,趙惠昌.PIC單片機(jī)實(shí)驗(yàn)教程[M]?北京: 機(jī)械工業(yè)出版社,2002.
[5]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1991.
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉