摘 要:在數據采集和傳輸系統中,常需進行多路數據的傳送和處理。以單片機為核心,研究多路低速數據串行傳輸的一種實現方法,給出硬件連接圖,闡述各部分工作原理及軟件設計思路。該實現方法硬件簡單,所需芯片少,成本低,可實用于以單片機為核心的多路低速數據串行傳輸系統中。
關鍵詞:數據采集;多路低速數據;中斷;數據處理
中圖分類號:TP368.1 文獻標識碼:B 文章編號:1004-373X(2008)02-025-02
Multiplex Low Speed Data Serial Transmission Based on Single Chip
LI Yandong,WANG Yongbin,CHEN Bin
(Navy University of Engineering,Wuhan,430033,China)
[HJ*2]Abstract:The date collection and transmission system usually needs to transmit and process multiplex date.Using single chip as the core,the paper studies a way to realize multiplex low speed data serial transmission,presents hardware connection chart,expounds work principle and software design idea.The method is simple in hardware,needs fewer chips and is low cost,so it could be applied to the multiplex low speed data serial transmission systems which uses single chip as the core.
Keywords:single chip;multiplex low speed data;interrupt;data processing
常用的標準51單片機內部僅含有1或2個可編程全雙工串行通信接口,其具有UART的全部功能,該接口可同時進行數據的發送和接收。在工程中,往往需要多個串口進行整個系統的通信。在如圖1所示的多路數據采集和傳輸系統中,其要實現的功能為:將3個終端的數據傳輸給上位機,其傳輸速率不同,終端1和終端2每0.5 s傳1次,數據速率為1 200 b/s,終端3每2 s傳1次,數據速率為600 b/s。上位機控制電源使3終端開關機。單片機既要和上位機通信,又要接收來自終端的數據并控制電源,這時就需要擴展串行通道。
1 串口擴展方案比較
單片機串口擴展一般有3種方法,一是選用多串口單片機;二是用串口擴展器如16C554,SP2328等進行擴展,三是用單片機豐富的I/O口模擬多個串口。前2種方法性能穩定,編程簡單,第3種方法硬件簡單,但編程復雜。此設計中數據傳輸速率較低,故選用第3種方法。
2 硬件設計
2.1 芯片介紹
8031芯片為典型的MCS-51系列單片機,采用40引腳的雙列直插封裝(DIP)或方形封裝,配置256 B的數據存儲器,32條I/O線,1個全雙工UART。
2.2 電路圖
電路圖如圖2所示。
圖2中,單片機引腳P1.0,P1.1,P1.2分別與3個終端相連,用其接收從終端往上位機傳輸的數據。P1.3,P1.4,P1.5為3個終端的中斷標志,為“1”時表示對應終端有中斷請求。P1.6,P1.7,P3.7為中斷控制位,當單片機響應中斷后由單片機控制將對應終端中斷請求屏蔽,以避免中斷請求的錯誤。P3.6為電源控制位。RXD和TXD與上位機相連,實現單片機與上位機之間的數據傳輸。P0和P2口用作單片機外部數據存儲器擴展的地址線。
2.3 工作原理
在上位機控制終端開機后,終端采集數據并向單片機傳輸。單片機循環等待,若接收到中斷請求,單片機查詢中斷源并響應此中斷,對P1口采樣開始接收數據并將數據存儲在片外存儲器中,接收過程中若有其他中斷到來,則進行多中斷處理。數據傳輸完畢后單片機結束此次中斷,對采樣數據進行判斷和重組,并將處理后的數據送串口傳給上位機。工作完畢,上位機控制終端關機。
2.3.1 數據接收
以終端1為例,無數據傳輸時,P1.0接收為低電平;當P1.0接收到高電平,即數據傳輸標志時,表示終端1將向上位機發送數據,此時INT0有效,終端1向單片機請求中斷,終端1中斷標志P1.3=1。單片機接收到中斷請求,對P1.3,P1.4,P1.5進行查詢,查詢到P1.3=1,確定此中斷請求來自終端1,響應此中斷,并將P1.6置0,使INT0無效,防止終端1傳輸數據時反復中斷,同時讀P1口,最低位比特P1.0即為終端1傳送的數據。接收終端1傳來的數據直至數據傳輸結束,所接收數據放外部存儲器,期間有其他中斷則進行多中斷處理。不同工作階段與終端1相連各引腳狀態如表1所示。
由于數據傳輸速率較小,傳輸1 b數據時間內單片機可多次讀P1口,此時可根據需要編寫延時程序,用以控制單片機對P1口的采樣次數。每傳輸1 b數據,對終端3的采樣次數是對終端1或終端2采樣次數的2倍。例如,若終端1或終端2傳輸1 b數據被采樣3次,則終端3傳輸1 b數據被采樣6次。如圖3所示,故接收終端1或2一比特信息需讀P1口3次,終端3為6次。
2.3.2 多中斷處理
在終端1傳輸數據時,單片機實時檢測終端2或終端3是否有請求中斷,若有,則單片機響應中斷,接收來自終端2或終端3采集的數據,反之亦然。各終端之間不影響,因為單片機讀一次P1口,是同時對P1.0~P1.7八個引腳進行采樣,而不管此時某終端是否有向上位機的數據傳輸;故采樣數據中會有許多無用數據,這些將在數據處理程序中處理。單片機接收完終端1的數據后,查詢終端2和終端3是否在進行數據傳輸,若是,繼續對P1口采樣;若三終端皆無數據傳輸,則結束中斷,轉入數據處理程序。
2.3.3 數據處理
從外部存儲器中讀第1字節數據,查詢低3位中任意一位是否為1,若不是,讀下一字節;若是,表明對應終端數據由此開始,讀3個字節取出對應比特并將原位置清零,對取出比特進行判斷;以終端1為例,3個字節最低比特有2個或3個比特為1則此比特判定為1,否則判為0,判斷所得數據存入片內指定存儲區,繼續取三個字節數據并判斷直至對應終端本次數據處理完。回上一查詢點繼續查詢。在終端1數據流長度內若查詢到某字節低3位為1,重復上述處理,若無,數據處理結束,將處理后數據送串口。
3 軟件設計
3.1 系統流程
系統流程如圖4所示。
三終端向單片機傳送的數據幀由10位數據組成:1位起始位,8位數據位,1位停止位。終端向單片機發送1次數據,即要發送8個字節的數據位,其中第一字節為終端發送數據標志,接收到此字節數據表示終端有數據發送;后7個字節為以約定格式傳輸的數據,其中包含此次數據來自哪一終端的信息。
編程時,根據終端發送數據的波特率計算出數據位周期,而后根據單片機晶振頻率和1 b內采樣次數編寫延遲程序。單片機接收到中斷后即按固定延遲采樣P1口。數據傳送結束后,對每比特內采樣的數據采用3中取2(終端1或2)或6中取4(終端3)的規則判斷。
3.3 串口通信
單片機與上位機通過串行口通信,串行口工作于方式1,數據幀也為10位:1位起始位、8位數據位、1位停止位。串口波特率由編程給定,單片機將處理后數據按約定波特率傳給上位機,并隨時接收上位機的控制指令以控制電源。
3.4 部分程序
;終端1接收數據
READ:[ZK(]MOV A,P1[JY];讀P1口
MOVX @DPTR,A[JY];送外部存儲空間
ACALL DELAY[JY];采樣延時,控制1 b內采樣次數
DJNZ R1,READ[JY];終端1數據傳完否,未完繼續
SETB P1.6[JY];傳完開終端1中斷,等待下次接收[ZK)]
…
;終端1數據處理
DEAL1:[ZK(]MOV R2,#30H[JY];終端1數據存儲首址
MOV R3,#8[JY];循環次數,8字節數據[ZK)]
S1:[ZK(]DJNZ R3,S2
AJMP EXIT[ZK)]
S2:MOV R1,#0[JY];移位次數
S3:[ZK(]ACALL DQ[JY];讀3個字節最低位置于寄存器B低3位
ACALL SEV1[JY];B低3位判斷,3中取2
ACALL LW[JY];移位設定,將8比特數據組成1字節
ADD @R2,A[JY];存儲1 b數據
INC R1
CJNE R1,#8,S3[JY];存儲1 B數據
INC R2
AJMP S1[ZK)]
EXIT:…
4 結 語
上述實現方法硬件簡單,所需芯片少、成本低,可實用于以單片機為核心的多路低速數據串行傳輸系統中,但此實現占用軟件開銷較大,適合于波特率較低的情況。
參 考 文 獻
[1]曹巧媛.單片機原理及應用[M].北京:電子工業出版社,2002.
[2]李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,1993.
[3]南建輝,熊鳴,王軍茹.MCS-51單片機原理及應用實例[M].北京:清華大學出版社,2004.
[4]黃漢兵.Protel DXP電路設計制版入門與提高[M].北京:人民郵電出版社,2004.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。