??? 摘??要: 基于LabVIEW平臺對PC機與PIC12FX小型單片機的串行通信" title="串行通信">串行通信進行了具體分析。
??? 關(guān)鍵詞: PIC12FX? LabVIEW? 模擬串行通信
?
??? PIC系列單片機是美國Microchip公司推出的新型CMOS工藝單片機,PIC12FX單片機是 PIC中檔系列中的一款小型單片機,該單片機具有實用、低價、省電、小巧、高速等特點,是一種適合在小型設(shè)備中使用的高性價比單片機,在許多領(lǐng)域有相關(guān)應(yīng)用。
??? PIC12FX的計算功能需要借助PC機的強大數(shù)據(jù)處理功能,這就需要實現(xiàn)PC機與單片機之間的數(shù)據(jù)通信。串行通信是比較方便的通信方式,然而該單片機內(nèi)沒有提供串行口,因而實現(xiàn)串行通信需要自己設(shè)計硬件電路" title="硬件電路">硬件電路和通信軟件實現(xiàn)。PC機可選用LabVIEW、Delphi、VC、VB、PowerBuilder等軟件來實現(xiàn)串行通信,不管PC機采用哪種軟件,串行通信時PC機與PIC12FX的硬件連接方式是相同的,PIC單片機的程序設(shè)計也基本相同。本文基于LabVIEW分析了PIC12FX與PC機串行通信的硬件連接及軟件設(shè)計" title="軟件設(shè)計">軟件設(shè)計方法。
1 PIC12FX單片機硬件電路和通信軟件設(shè)計
1.1 PIC12FX硬件實現(xiàn)方法和電路設(shè)計
??? PIC12FX沒有專門的通信口(RXD、TXD)及波特率發(fā)生器,需要通過I/O口來模擬串行通信口進行通信。PC機的串行接口是符合EIARS232C規(guī)范的外部總線標準接口。RS-232C采用的是負邏輯,即邏輯“1”:-5V~-15V;邏輯“0”:+5V~+15V。而CMOS電平為:邏輯“1”:4.99V,邏輯“0”:0.01V;TTL電平的邏輯“1”和“0”則分別為2.4V和0.4V。因此在用RS-232C總線進行串行通信時需外接電路實現(xiàn)電平轉(zhuǎn)換" title="電平轉(zhuǎn)換">電平轉(zhuǎn)換。在發(fā)送端用驅(qū)動器將TTL或CMOS電平轉(zhuǎn)換為RS-232C電平,在接收端用接收器將RS-232C電平再轉(zhuǎn)換為TTL或CMOS電平。這里選用了MAXIM公司的MAX232來實現(xiàn)電平轉(zhuǎn)換。MAX232屬于MAXIM公司的通用串行接收/發(fā)送驅(qū)動器芯片。其外圍電路簡單,只需外接4個0.1μF的電容(104)即可,如圖1所示。
?????????????????????????????
??? 圖1中MAX232將PIC12FX的TX(GP1)輸出的TTL電平信號轉(zhuǎn)換為RS-232C電平,輸入到PC機,并將PC機輸出的RS-232C電平轉(zhuǎn)換為TTL電平,輸出到PIC12FX的RX(GP2)引腳。
1.2 PIC12FX通信軟件設(shè)計
??? PIC12FX 硬件電路通過RS-232C串口與PC機通信,完成數(shù)據(jù)接收和發(fā)送;由PC機決定是發(fā)送還是接收數(shù)據(jù),控制指令與數(shù)據(jù)通信情況在PC機上" title="機上">機上顯示。圖2和圖3分別是串行發(fā)送和接收數(shù)據(jù)的子程序流程圖。
????????????????????????????????
??? 發(fā)送時,數(shù)據(jù)發(fā)送端TX為低電平并保持N秒(N=1/波特率,如波特率為9600b/s,N為104μs)作為發(fā)送起始位,隨后每隔N秒發(fā)送一位數(shù)據(jù)位(1bit),最后一個數(shù)據(jù)位發(fā)送完后,TX為高電平并保持N秒作為發(fā)送停止位。接收時,接收端RX要以約N/2秒(如波特率為9 600b/s,N/2為52μs)檢測一次起始位,如果檢測到起始位,則在約1.5ns(如波特率為9600b/s,1.5N為156μs)檢測第一位數(shù)據(jù)位,隨后每N秒檢測一次,接收其他的數(shù)據(jù)位,直至接收到停止位。
??? 發(fā)送與接收子程序清單如下:
;----------------------------
LIST?? ??????????? ?P=12FX
#INCLUDE??????????? P12FX.INC
CBLOCK??????????? 0X20
RTX????????????????????????????????
RCV ?
R_CNT???????????????????????????????
???? ENDC
;===========================引腳定義
#DEFINE???? ?RX???? ?GPIO,GPIO0
#DEFINE???? ?TX???? ?GPIO,GPIO1
???? ORG???? ?0X000
???? GOTO??? ?MAIN
;===========================
MAIN
???? BCF???????????? ??STATUS,RP0
???? CLRF??????????? ??RCV
;===========================串口初始化
???? CLRF??????????? ??GPIO
???? MOVLW????????? ?07H
???? MOVWF????????? ?CMCON??
???? BSF????????????? ??STATUS,RP0
???? MOVLW????????? ?01H
???? MOVWF????????? ?TRISIO
;===========================接收數(shù)據(jù)
RX_START
???? MOVLW????????? ?.8
???? MOVWF????????? ?R_CNT
START_CHECK
???? BTFSC??????????? ?RX
? GOTO???????????? ?START_CHECK
???? CALL???????????? ??DELAY1
???? CALL???????????? ??DELAY1
RX_DATA_START
???? BTFSC??????????? ?RX
???? BSF?????????????? ??RCV,7
???? BTFSS???????????? ?RX
???? BCF?????????????? ??RCV,7
???? DECFSZ?????????? ?R_CNT
???? GOTO???????????? ?RX_NEXT
???? GOTO???????????? ?TX_START
RX_NTXT
???? RRF?????????????? ?RCV
???? CALL????????????? ?DELAY1
? GOTO???????????? ??RX_DATA_START
;===========================發(fā)送數(shù)據(jù)
TX_START
MOVLW?????????? ?.8
MOVWF?????????? ?R_CNT
BCF?????????????? ?TX
CALL????????????? ?DELAY2
TX_NEXT
RRF?????????????? ?RTX
BTFSC???????????? ?STATUS,C
BSF?????????????? ?TX
BTFSS???????????? ?STATUS,C
BCF?????????????? ?TX
CALL????????????? ?DELAY1
DECFSZ??????????? ?R_CNT
GOTO ??????????? ?TX_NEXT
TX_STOP
???? BSF??????????????? ?TX
???? CALL????????????? ?DELAY1
TX_OVER????????????? ?GOTO? RX_START
;===========================延時子程序
DELAY1
???? MOVLW?????????? ?17H
???? MVWF??????????? ?TEMP
LOOP1
???? DECFSZ?????????? ?TEMP
???? GOTO???????????? ?LOOP1
???? RETLW??????????? ?0
DELAY2
???? MOVLW?????????? ?1EH
???? MOVWF?????????? ?TEMP
LOOP2
???? DECFSZ?????????? ?TEMP
???? GOTO???????????? ?LOOP2
???? RETLW??????????? ?0
;-------------------------------
END
;-------------------------------
2 PC機主控端通信軟件設(shè)計
??? 要實現(xiàn)單片機與PC機之間的數(shù)據(jù)通信,不僅要對硬件電路及單片機進行軟件設(shè)計,還要在PC機上設(shè)計通信軟件,下面以LabVIEW為例介紹其在串行通信中的軟件設(shè)計。
??? LabVIEW是美國國家儀器公司NI(National Instruments)推出的一種基于圖形方式的集成化開發(fā)環(huán)境,是目前國際上唯一的編譯型圖形化編程語言(G語言),在以PC機為基礎(chǔ)的測量和控制通信軟件中得到廣泛應(yīng)用。在編寫LabVIEW通信程序時,通過在前面板(應(yīng)用程序界面)和后面板(程序的代碼窗口)進行編程,前面板將后面板程序的運行結(jié)果反應(yīng)出來,圖4所示為PC機上串行通信的程序編寫流程圖。
?????????????????????????????
??? 文中分析了PIC12FX小型單片機與PC機串行通信的硬件和軟件設(shè)計方法,給出了演示參考程序,在實際應(yīng)用中,只要按照具體需求對該程序作相應(yīng)的修改就可滿足實際應(yīng)用需求。隨著PIC單片機越來越廣泛的應(yīng)用,PC機與PIC單片機之間的通信成為實際設(shè)計中必須解決的問題,本文對串行通信問題的解決具有較好的參考價值。
參考文獻
[1] ?Microchip. PIC12FX數(shù)據(jù)手冊[S]. Microchip公司.2004.
[2] ?石朝林(譯).PIC單片機宏匯編與集成開發(fā)環(huán)境[M].北京:清華大學出版社,2002.
[3] ?王有緒,許杰,李拉成. PIC系列單片機接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航天航空大學出版社,2003.
[4] ?鄧焱,王磊.LABVIEW7.1測試技術(shù)與儀器應(yīng)用[M].北京:機械工業(yè)出版社,2004.