當有數據要從Pc機傳到單片機時,如果這些數據是靜態的,也就是在程序設計階段就已經確定了要傳輸的數據,首先設置vIsA write的write bu能r的顯示屬性為Hex Display,然后直接輸入要發送的十六進制字符串就可以了。串口設備的控制命令通常是由一個或多個十六進制字符組成的,當需要對其進行控制時經常會采用這種方法發送控制命令。
如果數據是動態的,即要傳輸的數值型數據是動態產生和變化的,在發送之前首先要將其轉換成對應的十六進制字符串,才能賦給vIsA write發送。將這些數據構成~個數組,用byte amy to string進行轉換,轉換的結果就是對應數組數值的字符串,可以提交vISA wdte發送,或者使用type cast也可以實現同樣的功能。另一方面,在PIc單片機中,數據的存儲和表示是8位二進制數,通信時,由PIc單片機發送過來的8位二進制數經過串口后被轉換成字符的形式,因此在程序中必須將數據還原,LabVIEw中有一個string to byte amy節點,利用該節點可以很方便地將字符串轉換成數據數組。
3.3 LabVIEW程序前面板
LabvIEw通信程序的前面板如圖5所示,由于通信格式(波特率、數據位、停止位、奇偶校驗位等)已經預先設為固定值,故只需一個枚舉控件配合case stllJcture(選擇結構)就可以實現對串口的選擇。程序通過一個打開端口按鈕控件建立起與串口的聯系,取得對串口的占用權;通過一個發送數據按鈕控件與PIC單片機取得聯系,控制其發送數據。在實現這2個按鈕控件的功能時,采用了event stmcture(事件結構),這樣使程序具有了事件驅動的能力,也就是說程序在沒有指定事件發生時處于休息狀態,直到前面板窗口中有一個事件發生為止,這段時間可以將cPu交給其他的應用程序使用,大大提高了系統資源的利用率。Pc機接收到的數據可以根據需要進行數據處理,然后利用wavefo珊graph(事后記錄波形圖)將其顯示出來,wavefo瑚graph控件可以設置cursor(指針),利用cursor可以定位到每一個數據點,并顯示其值,另外該程序再附加一些簡單的編程就可以實現對數據的保存、打印等。
4 PIC單片機串口通信的實現
4.1功能寄存器設置
PIC單片機內部集成了USART(通用同步/異步收發器)模塊,該模塊采用的是一種在標準規范基礎上簡化了的、無握手信號的、二線式的串行通信方式,使占用單片機引腳資源的數量降到最低限度。
在單片機中,串口通信格式的設置是通過對一系列特殊寄存器的賦值來完成的,且其通信格式必須與LabvIEw程序中的設置嚴格一致,否則通信無法建立。PIc單片機中串口通信專用的寄存器有5個,它們分別是TxsTA(發送狀態兼控制寄存器)、Rcs7rA(接收狀態兼控制寄存器)、TxREG(發送緩沖寄存器)、RcREG(接收緩沖寄存器)、SPBRG(波特率寄存器)。其中TxsTA和RCSTA共同完成通信方式、格式等一些通信約定的設置,TXREG和RcREG分別用來暫時存放待發送和接收的數據,sPBRG寄存器通過控制一個獨立的8位定時器的溢出周期完成對通信波特率的設置,該寄存器的設定值與波特率成反比關系。為了保證通信的順利進行,單片機開始工作時必須對這些寄存器進行初始化設置。
4.2 PIC通信流程
PIc單片機與Pc機之間的聯系在單片機中是通過硬件中斷方式實現的。在通信過程中,Pc機始終具有初始傳送優先權,所有的通信均由Pc機來啟動,PIc單片機處于被動狀態。PIc單片機中提供了串口通信的接收和發送中斷,這樣可以省去軟件的周期性查詢,從而節省單片機的資源。在本文的程序中只使用了接收中斷,當有數據從Pc機傳來時,單片機產生中斷,主程序跳轉到中斷服務子程序,進行數據的上傳工作。對于當前數據發送是否完成采用了軟件周期性查詢的方式,若發送完成,則進行下一個數據的傳送,否則繼續查詢,PIc單片機串口通信程序流程圖如圖6所示。這樣,在初始化子程序中就必須對接收中斷使能位進行置位,允許接收中斷。
<<上一頁[1][2][3]下一頁>>
相關信息 







推薦企業
推薦企業
推薦企業