??? 摘? 要: 介紹了超小型、超低功率、高速率無線數傳MODEM芯片PTR2000的產品特性、電氣參數及使用中應注意的一些技術問題,并給出其應用實例。?
??? 關鍵詞: 無線數傳? 單片機? PTR2000
?
1 PTR2000簡介?
??? PTR2000是超小型、超低功率、高速率無線數傳MODEM。?
1.1? PTR2000產品特性?
??? ·工作頻率為國際通用的數傳頻段433MHz;?
??? ·FSK調制,擴展能力強,特別適合工業控制場合;?
??? ·采用DDS+PLL頻率合成技術,頻率穩定性好;?
??? ·低工作電壓(2.7V),低功耗,接收待機狀態電流僅為8μA;?
??? ·具有兩個頻道,特別適合需要多信道工作的特殊場合;?
??? ·工作速率最高可達20kbit/s(也可在較低速率下工作,如9600bit/s);?
??? ·可直接接單片機串口,也可接RS232接口,軟件編程方便;?
??? ·由于采用低發射功率(+10dBm)、高接收靈敏度(-105dBm)設計,使用無需申請許可證。?
1.2 PTR2000應用領域?
??? PTR2000可用于遙控、遙測、小型無線網絡、無線抄表、小區傳呼、工業數據采集、無線標簽、身份識別、非接觸RF智能卡、小型無線數據終端、生物信號采集、水文氣象監測、機器人控制等場合。?
1.3 PTR2000電氣特性?
??? PTR2000電氣特性如表1所示。?
?
?
1.4 PTR2000引腳說明?
??? PTR2000引腳圖如圖1所示。?
?
?
??? Pin1:VCC 正電源,2.7V~5.25V;?
??? Pin2:CS 頻道選擇,CS=0選擇工作頻道1(433.92MHz), CS=1選擇工作頻道2(434.33MHz);?
??? Pin3:DO 數據輸出;?
??? Pin4:DI 數據輸入;?
??? Pin5:GND 電源地;?
??? Pin6:PWR節能控制,PWR=1為正常工作狀態,PWR=0為待機微功耗狀態;?
??? Pin7:TEXN工作模式選擇,TEXN=1時模塊為發射狀態,TEXN=0時模塊為接收狀態。?
1.5 模塊工作模式控制及工作頻道選擇?
??? 模塊工作模式控制及工作頻道選擇如表2所示。?
?
?
1.6 PTR2000的軟件編程?
1.6.1發送?
??? (1)通信速率最高為20kbit/s,也可在其它速率如4800bit/s、9600bit/s下工作,無需設置PTR2000的工作速率。?
??? (2)發送數據之前需將模塊置于發射狀態,TXEN=1。?
??? (3)至少5ms(接收到發射的轉換時間)后才可以發送任意長度數據。?
??? (4)發送結束后將模塊置于接收狀態,TXEN=0。?
??? (5)發射到接收的轉換時間為5ms。?
1.6.2 接收?
??? (1)將PTR2000置于接收狀態,TXEN=0。?
??? (2)接收到的數據可直接送到單片機串口或經電平轉換后送到計算機。?
2 不停車收費系統簡介?
??? 路橋不停車電子收費系統是一種能實現不停車收費的全天候智能型分布式計算機控制與處理系統。系統中不停車收費的關鍵是利用車載智能識別卡與收費站車輛自動識別系統的無線發射器之間通過無線電波實現車輛自動識別和數據交換,獲取通過車輛的類型和所屬用戶等數據,并由計算機系統控制車輛通行,其過路過橋費通過計算機網絡從用戶在銀行開設的專用賬戶中自動交納,從而實現不停車收費。?
??? 其系統組成框圖如圖2所示。?
?
?
3 PTR2000在不停車收費系統中的應用?
??? 不停車收費得以實現的關鍵之處在于車輛在高速行駛時,能把自身的信息、用戶的信息通過車載單元發射出去,而路側的無線收發單元可將此信息接收到。PTR2000可使車載單元和路側收發裝置之間的數據無線傳輸得以實現。車載單元和路側收發裝置的工作原理如圖3所示。?
?
?
??? ETC(Electron Toll Collection)車輛的信息包括車輛VIN碼、車牌號、車主賬號等存放在單片機中,ETC車輛經過收費站時,由路側無線裝置啟動車載單元,通過PTR2000把車體信息發送出去;而路側的收發設備通過PTR2000進行接收,再經過MAX232作電平轉換,從而把數據寫入到計算機中。?
4 PTR2000與單片機和PC機的接口?
??? PTR2000可直接與單片機的串口TxD、RxD相連接。PTR2000無線MODEM的DI接單片機的串口發送,PTR2000無線MODEM的DO接單片機串口的接收。?
??? PTR2000與PC機相連接時必須經過電平轉換,將TTL電平轉換成RS-232C電平。用一片MAX232芯片即可達到電平轉換的目的。PTR2000與計算機串口連接的典型電路如圖4所示。
?
?
5 軟件編程?
5.1 單片機發射部分編程?
??? 本例中單片機采用89C51,通過匯編語言對其進行編程。?
??? PTR2000的Pin6(PWR)與單片機的P1.0相連,PTR2000的Pin7(TXEN)與單片機的P1.1相連,CS直接接地,利用工作頻道1,即433.92MHz。?
??? 單片機程序清單介紹如下:?
ORG? ?? 0000H? ?
??? ? ? AJMP ?? START?
??? ? ? ORG ??? 0200H?
START:? SETB??? P1.0??????? ? ;PTR2000的Pin6置1?
??????? SETB??? P1.1??????? ? ;PTR2000的Pin6置1?
??????? MOV???? SP,???? #80H ;設置數據指針的位置?
??????? MOV ??? SCON,?? #40H ;串口工作方式1?
??????? MOV ??? TMOD,?? #20H ;定時器工作方式1?
??????? MOV ??? TL1,??? #0FDH;設定波特率9600bits/s?
??????? MOV ??? TH1,??? #0FDH?? ?
??????? MOV???? PCON,?? #00H??? ?
??????? SETB ?? TR1???????? ? ;開啟定時器1?
??????? MOV???? DPH,??? #50H ;指針指向數據塊?
??????? MOV???? DPL,??? #00H??? ?
VIN: ?? MOV???? R1,???? #LEN1;發送VIN碼?
??????? ACALL?? TXSUB?
CARNO:? MOV???? R1,???? #LEN2;發送車牌號?
??????? ACALL?? TXSUB?
COUNT:? MOV RA,???? ??? #LEN3;發送車主賬號?
??????? ACALL?? TXSUB?
??????? CLR???? P1.0??????? ? ;將PTR2000置接收狀態?
??????? CLR???? P1.1??????? ? ;將PTR2000置待機狀態?
??????? ORG ??????? 0400H?
TXSUB:? PUSH ?????? ACC???????????????? ;保護ACC?
??????? PUSH ?????? PSW???????????????? ;保護PSW?
??????? CLR???????? TI????????????????? ;清TI?
TXDD: ? CLR???????? A?
??????? MOVC ?????? A,? @A+DPTR ;從數據塊中取數?
??????? MOV SUBF,?? A?????????????? ;從串口發送?
??????? JNB???????? TI, $?????????? ;等待發送完?
??????? CLR???????? TI????? ?
??????? INC ??????? DPTR??????????? ;取下一個數?
??????? DJNZ??????? R1, TXDD??????? ;數據為發送完,?
??????????????????????????????????? ?繼續?
??????? POP???????? PSW???????????? ;彈出PSW?
??????? POP???????? ACC???????????? ;彈出ACC?
??????? RET?
??????? ORG???????? 0500H?????????? ;數據塊?
DVIN:?? DB????????? ’1234567890’?
LEN1 ?? DATA??????? 10?
DCARNO: DB????????? ’ABCDEFG’?
LEN2 ?? DATA??? 7?
DCOUNT? DB????????? ’874033654200’?
LEN3 ?? DATA 12?
5.2 PC機接收部分編程?
??? 本例中PC機接收部分通過對Visual Basic中的MSComm控件編程實現對計算機串口通訊的程序設計。?
??? PC串口的RTS經電平轉換與PTR2000無線MODEM的TXEN相連。計算機要發送數據時,RTS變為邏輯1有效,亦即PTR2000的Pin7(TXEN)被置為1,此時可發送數據;計算機接收數據時,RTS變為邏輯0有效,亦即PTR2000的Pin7(TXEN)被置為0,此時可接收數據。?
??? 程序的設計窗體如圖5所示。?
?
?
??? PC機接收部分程序介紹如下:?
??? Option Explicit?
??? Public ReceiveStr As String?
??? Private Sub Form_Load()?
??????? MSComm2.CommPort = 2?
??????? MSComm2.Settings = ″9600,n,8,1″?
??????? MSComm2.InBufferSize = 256?
??????? MSComm2.PortOpen = True?
??????? MSComm2.RThreshold = 1?
??? End Sub?
??? Private Sub MSComm2_OnComm()?
??????? Select Case MSComm2.CommEvent?
??????? Case comEvReceive?
??????? ReceiveStr = ReceiveStr + MSComm2.Input?
??????? If InStr(ReceiveStr, ″##″) <> 0 Then?
??? txtVIN.Text = Mid$(ReceiveStr, InStr(ReceiveStr,″##″) + 2, 10)?
??? txtCarNO.Text = Mid$(ReceiveStr, InStr(ReceiveStr,##″) + 12, 7)?
??? txtCount.Text = Mid$(ReceiveStr, InStr(ReceiveStr,?##″) + 19, 12)?
??????? End If?
??????? End Select?
??????? End Sub?
??? 程序運行結果如圖6所示。?
?
?
參考文獻?
1 PTR2000產品資料.哈爾濱訊通科技.?
2 孫文全,王保平.利用Visual Basic開發通訊程序的方法.電腦編程技巧與維護,2000(3).?
3 沈 飆,夏海燕.運用Visual Basic實現PC與89C51單片機之間的通信.計算機自動測量與控制,1999(2)