當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]串行通信已經(jīng)成為計(jì)算機(jī)與其他設(shè)備進(jìn)行數(shù)據(jù)交換最廣泛的通信手段。主要介紹了利用MSP430 單片機(jī)的串口通信模塊和VB6.0 提供的串行通信控件MSComm 實(shí)現(xiàn)PC 機(jī)與MSP430 單片機(jī)的串行通信,并著重闡述了在VB6.0 環(huán)境下實(shí)現(xiàn)的主要過(guò)程。

1 引言

隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)應(yīng)用在其發(fā)展過(guò)程中逐步形成兩大分支,一是通用計(jì)算機(jī),PC 機(jī)為代表,著眼于高速數(shù)值運(yùn)算和數(shù)據(jù)處理,但實(shí)時(shí)測(cè)控能力較弱。二是嵌入式微機(jī),以單片機(jī)為代表,著重發(fā)展測(cè)控技術(shù),但其數(shù)值運(yùn)算和數(shù)據(jù)處理能力較弱。目前,在工業(yè)控制以及數(shù)據(jù)采集和數(shù)據(jù)處理的大型系統(tǒng)中,由于PC 機(jī)軟件資源豐富,人機(jī)交互方便等優(yōu)點(diǎn)。以PC 機(jī)作為上位機(jī),以單片機(jī)組成的控制單元作為下位機(jī),較好地實(shí)現(xiàn)測(cè)控及顯示,又能較快地實(shí)現(xiàn)數(shù)據(jù)采集和處理。逐漸成為現(xiàn)代工業(yè)控制領(lǐng)域的一個(gè)優(yōu)化方案。

故提出了基于VB6.0 的PC 機(jī)與MSP430 單片機(jī)串行通信的實(shí)現(xiàn)方法。以RS485 接口為基礎(chǔ),以PC 機(jī)為上位機(jī),以MSP430 系列單片機(jī)為下位機(jī)。通過(guò)VB6.0 實(shí)現(xiàn)了對(duì)各個(gè)下位機(jī)控制參數(shù)的實(shí)時(shí)監(jiān)控和管理,解決了長(zhǎng)期以來(lái)單片機(jī)與PC機(jī)互連中編程難度大,運(yùn)行效率低的瓶頸。

2 MSComm 控件與MSP430 單片機(jī)

2.1 MSComm 控件

計(jì)算機(jī)編程語(yǔ)言中,Visual Basic 6.0 是Microsoft 公司推出的面向?qū)ο蟮目梢暬_(kāi)發(fā)編程工具,具有豐富的數(shù)據(jù)類(lèi)型和結(jié)構(gòu)化程序結(jié)構(gòu),開(kāi)發(fā)效率高,界面制作美觀方便等優(yōu)點(diǎn),且應(yīng)用日益廣泛,故Visual Basic 6.0 語(yǔ)言做到了真正的面向?qū)ο缶幊?。其中,MSComm 控件全稱(chēng)為Microsoft CommunicationControl, 是微軟公司提供的ActiveX 控件, 目的是為了簡(jiǎn)化Windows 下串行通信編程。通過(guò)對(duì)此控件的屬性和事件進(jìn)行編程, 從而實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收。

MSComm 控件通過(guò)串行端口傳輸和接收數(shù)據(jù), 為應(yīng)用程序提供串行通信功能。MSComm 控件提供下列兩種處理通信的方式: 事件驅(qū)動(dòng)方式和查詢(xún)方式。

(1) 事件驅(qū)動(dòng)方式

事件驅(qū)動(dòng)通信是處理串行端口交互作用的一種非常有效的方法。在許多情況下, 在事件發(fā)生時(shí)需要得到通知, 例如, 在串口接收緩沖區(qū)中有字符, Carrier Detect 或Request To Send 線上的一個(gè)字符到達(dá)或一個(gè)變化發(fā)生時(shí)。在這種情況下可以利用MSComm 控件的OnComm 事件捕獲并處理這些通信事件。

OnComm 事件還可以檢查和處理通信錯(cuò)誤, 以及所有通信事件和通信錯(cuò)誤的列表。

(2) 查詢(xún)方式

查詢(xún)方式實(shí)質(zhì)上還是事件驅(qū)動(dòng), 但在有些情況下, 這種方式顯得更為便捷。在程序的每個(gè)關(guān)鍵功能之后, 可以通過(guò)檢查CommEvent 屬性的值來(lái)查詢(xún)事件和錯(cuò)誤。如果應(yīng)用程序較小,并且是自保持的, 這種方法可能是更可取的。通過(guò)比較故采用的是事件驅(qū)動(dòng)方式。

2.2 MSComm 控件屬性

CommPort 屬性:用于設(shè)置或返回串口號(hào)連接的串行端口號(hào),Windows 將會(huì)利用該串口和外界通信。默認(rèn)值為1,即對(duì)COM1 進(jìn)行操作,最大值為16.

Settings 屬性:以字符串的形式設(shè)置或返回串口通信參數(shù)。包括串口通信的比特率,奇偶校驗(yàn),數(shù)據(jù)位長(zhǎng)度、停止位等。其默認(rèn)值是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校驗(yàn),8 位數(shù)據(jù)位,1 個(gè)停止位。

PortOpen 屬性:設(shè)置或返回串口狀態(tài)。值為T(mén)rue 時(shí)打開(kāi)串口,值為False 時(shí)關(guān)閉串口。

InPut 屬性:從接收緩沖區(qū)中讀取數(shù)據(jù)并清空該緩沖區(qū),該屬性設(shè)計(jì)時(shí)無(wú)效,運(yùn)行時(shí)只讀。寄存器的特性是先進(jìn)先出。

OutPut 屬性:向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù),該屬性設(shè)計(jì)時(shí)無(wú)效,運(yùn)行時(shí)只讀。

InBufferSize 屬性:設(shè)置或返回接收緩沖區(qū)的大小,缺省值為1024 字節(jié)。

Inputlen 屬性:設(shè)置或返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù)。

Input Mode 屬性:設(shè)置或返回接收數(shù)據(jù)的類(lèi)型。若值為0時(shí)則表示以文本形式讀取;若值為1 時(shí)則表示以二進(jìn)制形式讀取。通常PLC 和PC 構(gòu)成的通信系統(tǒng)都采用二進(jìn)制接收方式。

InBuffer Count 屬性:設(shè)置或返回接收緩沖區(qū)中等待計(jì)算機(jī)接收的字符數(shù)。當(dāng)將其值設(shè)為0 時(shí),則輸入寄存器將被清空。

OutBufferSize 屬性:設(shè)置或返回發(fā)送緩沖區(qū)的大小,缺省值為512 字節(jié)。

OutBufferCount 屬性:設(shè)置或返回發(fā)送緩沖區(qū)中等待計(jì)算機(jī)發(fā)送的字符數(shù)。當(dāng)將其值設(shè)為0 時(shí),則輸出寄存器將被清空。

Rthreshold 屬性:該屬性為一閥值。當(dāng)接收緩沖區(qū)中字符數(shù)達(dá)到該值時(shí), MSComm 控件設(shè)置Commevent 屬性為ComEvReceive,并產(chǎn)生OnComm 事件。用戶可在OnComm 事件處理程序中進(jìn)行相應(yīng)處理。若Rthreshold 屬性設(shè)置為0,則不產(chǎn)生OnComm 事件。

SThreshold 屬性:在發(fā)生OnComm 事件之前傳輸緩沖區(qū)中的最小字符數(shù)。MSComm1.SThreshold = 0 數(shù)據(jù)傳輸事件不產(chǎn)生OnComm 事件;若設(shè)MSComm1.RThreshold = 1 則表示傳輸\ 緩沖區(qū)全空時(shí), MSComm 控件產(chǎn)生OnComm 事件。

Handshaking 屬性:設(shè)置或返回硬件握手協(xié)議, 0 表示沒(méi)有握手協(xié)議, 不考慮流量控制;1 表示在數(shù)據(jù)流中嵌入控制符來(lái)進(jìn)行流量控制; 2 表示由信號(hào)線RTS 自動(dòng)進(jìn)行流量控制; 3 表示1、2 兩者皆可。

通信初始化程序如下:

If MSComm1.PortOpen <> True Then

MSComm1.PortOpen=True

End If

MSComm1.CommPort = 1

MSComm1.Settings=“ 9600,N,8,1”

MSComm1.InputLen=0

MSComm1.InBufferCount=0

MSComm1.InputMode=comInputMode Binary

MSComm1. RThreshold =1

MSComm1.Handshaking=comNone

2.3 MSP430 單片機(jī)

就目前來(lái)看,高性能16 位單片機(jī)主要有凌陽(yáng)系列、飛思卡爾系列、美國(guó)德州儀器(TI) 公司的MSP430 系列等類(lèi)型的單片機(jī)。本文推薦選用美國(guó)德州儀器(TI) 公司的MSP430 系列單片機(jī),MSP430 系列單片機(jī)是美國(guó)德州儀器(TI) 1966 年開(kāi)始推向市場(chǎng)的一種16 位超低功耗的混合信號(hào)處理器(Mixed signal Processor) 稱(chēng)之為混合信號(hào)處理器,主要是由于其針對(duì)實(shí)際應(yīng)用需求,把許多模擬電路、數(shù)字電路和微處理器集成在一個(gè)芯片上,以提供“單片”解決方案。隨著Flash技術(shù)的迅速發(fā)展,在2001 年7 月到2002 年又推出了帶LCD控制器的Flash 單片機(jī)F41X、F43X、F44X 系列。本系統(tǒng)所選的MSP43OF449 是一個(gè)16 位的、具有精簡(jiǎn)指令集的、超低功耗的混合型單片機(jī),自問(wèn)世以來(lái),由于它具有極低的功耗,豐富的片內(nèi)外設(shè)和方便靈活的開(kāi)發(fā)手段,得到廣泛的應(yīng)用。

(1) 低電壓超低功耗工作電壓為1.8~3.6V,1MHz 的時(shí)鐘條件下運(yùn)行,耗電電流因不同的工作模式而不同?;顒?dòng)模式為280uA,待機(jī)模式為1.1uA,掉電模式為0.1uA.具有16 個(gè)中斷源,并且可以任意嵌套,使用靈活方便。用中斷請(qǐng)求將CPU 喚醒只要6us,可編制出實(shí)時(shí)性特別高的源代碼;5 種節(jié)電模式;可將CPU 置于省電模式,用中斷模式喚醒程序。

(2) 強(qiáng)大的處理能力16 位精簡(jiǎn)指令結(jié)構(gòu),15Ons 指令周期,具有豐富的尋址方式,簡(jiǎn)潔的27 條內(nèi)核指令以及大量的模擬指令;大量的寄存器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器都可參加多種運(yùn)算;還有高效的查表處理方法。

(3) 豐富的片內(nèi)外設(shè)將大量的外圍模塊集成到片內(nèi),稱(chēng)之為片內(nèi)外設(shè)。不同型號(hào)器件的片內(nèi)外設(shè)不同,但其相同模塊的工作原理基本相同,主要的片內(nèi)外設(shè)有:時(shí)鐘模塊、I/O 端口、定時(shí)器、通信模塊、液晶驅(qū)動(dòng)模塊、模數(shù)轉(zhuǎn)換器、硬件乘法器、模擬比較器和Flash 存儲(chǔ)器等。MSP430 單片機(jī)的時(shí)鐘由高速晶體、低速晶體、數(shù)字控制振蕩器DCO、鎖頻環(huán)FLL 以及鎖頻環(huán)增強(qiáng)版本FLL+等構(gòu)成。

2.4 串口通信模塊

通用串行同步異步通信接口USART (Unversal SynchronousAsynchronous Receive/Transmit ) 是一個(gè)串行通道,它允許7或8 位串行位流經(jīng)預(yù)先編程的速率或外部時(shí)鐘確定的速率移入、移出MSP430.

USART 可進(jìn)行配置,以便同時(shí)支持同步( SPI) 與異步(UART) 操作,并且可從幾個(gè)內(nèi)部及外部時(shí)鐘源(與CPU 時(shí)鐘無(wú)關(guān)) 中進(jìn)行選擇,所用的是異步(UART) 操作。在UART 模式下,速率也可達(dá)到2Mbps.在UART 模式下,實(shí)現(xiàn)可靠通信至少要求每位3 或4 個(gè)時(shí)鐘。例如, 8MHz 時(shí)鐘除以4 可以支持高達(dá)2Mbps 的速率。波特率發(fā)生器是用波特率選擇寄存器和調(diào)整控制寄存器來(lái)產(chǎn)生串行數(shù)據(jù)位定時(shí)。

波特率的計(jì)算:波特率=BRCLK/(UBR+ ( M7+M6+M5+M4+M3+M2+M1+M0)) ;其中BRCLK 為晶振頻率,UBR 為分頻因子的整數(shù),即晶振頻率除以波特率的整數(shù)部分,而M7,M6,M5,M4,M3,M2,M1,M0 分別為調(diào)整位,是分別寫(xiě)在UMCTL 中的,如果置位,則對(duì)應(yīng)的時(shí)序時(shí)間只能波特率分頻器的輸入時(shí)鐘擴(kuò)展一個(gè)時(shí)鐘周期,每接受或發(fā)送一位,在調(diào)整控制寄存器的下一位被用來(lái)決定當(dāng)前位的定時(shí)時(shí)間。[!--empirenews.page--]

3 MSP430 單片機(jī)與PC 機(jī)串口通信

設(shè)計(jì)MSP430 系列單片機(jī)的通信軟件,實(shí)際上是對(duì)MSP430 系列單片機(jī)的串行口的設(shè)計(jì),這里采用Visual Basic 6.0 語(yǔ)言來(lái)設(shè)計(jì),在PC 機(jī)上運(yùn)行的界面如圖1 所示。

 

 

在發(fā)送數(shù)據(jù)文本框中輸入一個(gè)“0~255”之間的整數(shù),并單擊發(fā)送數(shù)據(jù)按鈕,單片機(jī)將接收到該數(shù)據(jù)并顯示這個(gè)數(shù)據(jù), 然后作除4 處理,結(jié)果再經(jīng)串口返回到PC 機(jī)端。例如當(dāng)發(fā)送數(shù)據(jù)160 時(shí),單片機(jī)電路中數(shù)碼管上顯示160,同時(shí)單片機(jī)對(duì)160 作除4 處理,得到40 返送回PC 機(jī)上顯示。

由于PC 機(jī)端的RS232 電平與MSP430 單片機(jī)端的TTL 電平不匹配, 故必須進(jìn)行電平轉(zhuǎn)換,這里采用美信MAX232 芯片完成。電路其他部分為單片機(jī)常規(guī)電路。以下是MSP430 單片機(jī)與PC 機(jī)串口通信VB6.0 程序代碼如下:

(1) PC 機(jī)端VB 程序代碼初始化部分代碼:

發(fā)送功能代碼:

Private Sub Form_load ()

MSComm1.CommPort = 1 ' 設(shè)置1 號(hào)串口

MSComm1.Settings =“9600,N,8,1”‘ 設(shè)置參數(shù)

MSComm1.PortOpen = True ' 打開(kāi)串口

End Sub

發(fā)送功能代碼:

Private Sub Command1_Click ()

Dim Number As Integer ' 發(fā)送的數(shù)據(jù)變量

Dim OutByte (0) As Byte ' 發(fā)送字節(jié)數(shù)組

Number = Val (Text1.text) ' 類(lèi)型轉(zhuǎn)換

OutByte (0) =CByte (Number) ' 轉(zhuǎn)換為二進(jìn)制

MSComm1.OutBufferCount=0' 清空發(fā)送緩沖

MSComm1.Output = OutByte ' 發(fā)送數(shù)據(jù)

End Sub

接收功能代碼:

Private Sub MSComm1_OnComm ()

Dim InData As Variant ' 變體變量

Dim Arr (0) As Byte ' 接收字節(jié)數(shù)組

Select Case MSComm1.CommEvent

Case comEvReceive ' 觸發(fā)接收事件

InData = MSComm1.Input ' 接收數(shù)據(jù)

Arr (0) = AscB (InData) ' 類(lèi)型轉(zhuǎn)換

Text2.text = Arr (0) ' 顯示數(shù)據(jù)

MSComm1.InBufferCount = 0 ' 清空接收緩

End Select

End Sub

(2) MSP430 單片機(jī)的部分程序

單片機(jī)的編程包括: 設(shè)置串行口的工作方式; 波特率的設(shè)置; 發(fā)送數(shù)據(jù)并接收數(shù)據(jù)。以下為串行口的初始化程序:

CKCSH MOV1B # SWRST, & U 1CT L; 先在SWRST= 1 時(shí),

設(shè)置串口

BIS. B # CHAR, &U 1CTL

MOV. B # SSEL1+ SSEL0, & U 1TCTL;

MOV. B # 045H, & U1BR0; 波特率為9600

MOV. B # 00H, & U1BR1;

MOV. B # 055H, & U1MCT L;

BIS. B # U TXE1+ U RXE1, & ME2;

BIC. B # SWRST, & U1CTL;

4 結(jié)語(yǔ)

串口通信是一項(xiàng)廣泛應(yīng)用到各個(gè)領(lǐng)域的通信技術(shù), 尤其是單片機(jī)與PC 機(jī)間的通信。在實(shí)踐中VB6.0 以其好學(xué)易用性得到廣泛的應(yīng)用,MSP430 系列單片機(jī)以低功耗等特點(diǎn)被應(yīng)用在測(cè)控系統(tǒng)中,兩者結(jié)合能夠快速構(gòu)筑以單片機(jī)采集數(shù)據(jù)和計(jì)算機(jī)快速處理的系統(tǒng)

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(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ì)開(kāi)幕式在貴陽(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ā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(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)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

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