基于PC機Windows環(huán)境下數(shù)據通信處理及存儲程序設計與實現(xiàn)DOC_第1頁
基于PC機Windows環(huán)境下數(shù)據通信處理及存儲程序設計與實現(xiàn)DOC_第2頁
基于PC機Windows環(huán)境下數(shù)據通信處理及存儲程序設計與實現(xiàn)DOC_第3頁
基于PC機Windows環(huán)境下數(shù)據通信處理及存儲程序設計與實現(xiàn)DOC_第4頁
基于PC機Windows環(huán)境下數(shù)據通信處理及存儲程序設計與實現(xiàn)DOC_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、專業(yè)綜合課程設計任務書學生姓名: 專業(yè)班級: 指導教師: 工作單位: 題 目: 基于PC機Windows環(huán)境下數(shù)據通信、處理及存儲程序設計與實現(xiàn)。初始條件:(1) 提供實驗室機房及安裝Windows系統(tǒng)的PC機;(2) 數(shù)據通信的基本理論學習。 要求完成的主要任務:(包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求):(1)在PC機Windows環(huán)境下設計出一款集數(shù)據發(fā)送、接收處理及存儲程序;(2)通信接口為RS-232,USB,網卡任意一款;(3)通信的數(shù)據流自定,處理操作自定;(4)接收的數(shù)據以文件的形式存在硬盤上;(5)對結果進行分析; (6)要求閱讀相關參考文獻不少于5篇;(7

2、)根據課程設計有關規(guī)范,按時、獨立完成課程設計說明書。時間安排: (1) 布置課程設計任務,查閱資料,確定方案 四天; (2) 進行編程設計 一周; (3) 完成課程設計報告書 三天;指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日目錄摘要I1 Proteus軟件簡介12 Visual Basic 6.0簡介23 串口通信原理33.1串行通信定義33.2串行通信的異步通信43.3波特率43.4串行接口的基本特點5串行端口工作方式54單片機與PC機通信84.1 AT89C51單片機上對應端口介紹84.3單片機通信代碼94.4仿真電路圖115 VB設計PC機125.1界面設計125

3、.2 VB設計的窗體125.3 VB代碼126 串口通信結果及其分析226.1通信結果226.2結果分析247 實物圖258心得體會26參考文獻27摘要為了實現(xiàn)本次課設的要求,完成基于PC機Windows環(huán)境下數(shù)據通信、處理及存儲程序設計與實現(xiàn)。我們采用Visual Basic 6.0軟件設計和Proteus單片機串口仿真來完成課程設計的要求。我們選取的是通信接口為RS-232,利用單片機與PC機的之間相互通信來實現(xiàn)課設要求,Visual Basic軟件主要用于設計代表PC機的窗體,實現(xiàn)PC機進行串口通信的基本功能;Proteus軟件仿真的單片機用于模擬單片機,完成與PC機的通信。本次課設除了

4、要用到VB和Proteus軟件外,還需使用KEIL軟件生成適用于51單片機的.HEX文件,以及用到Virtual Serial Port Driver軟件來對PC機和單片機之間串口進行連接,使用VSPD軟件來設置連接串口的時候我將單片機設為COM3,PC機設為COM1。關鍵字:RS-232 ,串口通信,Proteus,Visual Basic 6.01 Proteus軟件簡介 Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟

5、件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:1原理布圖2PCB自動或人工布線3SPICE電路仿真4互動的電路仿真5仿真處理器及其外圍電路Proteus擁有豐富的資源,它體現(xiàn)在:1Proteus可提供的仿真元器件資源:仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件,有3

6、0多個元件庫。2Proteus可提供的仿真儀表資源 :示波器、邏輯分析儀、虛擬終端、SPI調試器、I2C調試器、信號發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個電路中隨意的調用。3除了現(xiàn)實存在的儀器外,Proteus還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標,例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結果的影響。4Proteus可提供的調試手段 Proteus提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數(shù)字信號。 Pro

7、teus不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。 課程設計、畢業(yè)設計是學生走向就業(yè)的重要實踐環(huán)節(jié)。由于PROTEUS提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數(shù)量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學生實踐精神、創(chuàng)造精神的平臺隨著科技的發(fā)展,“計算機仿真技術”已成為許多設計部門重要的前期設計手段。它具有設計靈活,結果、過程的統(tǒng)一的特點??墒乖O計時間大為縮短、耗資大為減少,也可降低工程制造的風險。相信在單片機開發(fā)應用中PROTEUS也能茯

8、得愈來愈廣泛的應用。2 Visual Basic 6.0簡介Visual Basic(VB)是由微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅動編程語言。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松的使用VB提供的組件快速創(chuàng)建一個應用程序。VB的中心思想就是要便于程序員使用,無論是新手或者專家。VB使用了可以簡單創(chuàng)建應用程序的GUI系統(tǒng),但是又可以開發(fā)相當復雜的程序。VB的程序是一種基于窗體的可視化組件安排的聯(lián)合,并且增加代碼來指定組建的屬性和方法。因為默認的屬

9、性和方法已經有一部分定義在了組件內,所以程序員不用寫多少代碼就可以完成一個簡單的程序。過去的版本里面VB程序的性能問題一直被放在了桌面上,但是隨著計算機速度的飛速增加,關于性能的爭論已經越來越少。窗體控件的增加和改變可以用拖放技術實現(xiàn)。一個排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕)。每個控件都有自己的屬性和事件。默認的屬性值會在控件創(chuàng)建的時候提供,但是程序員也可以進行更改。很多的屬性值可以在運行時候隨著用戶的動作和修改進行改動,這樣就形成了一個動態(tài)的程序。舉個例子來說:窗體的大小改變事件中加入了可以改變控件位置的代碼,在運行時候每當用戶更改窗口大小,控件也會隨之改變位置。在文本框

10、中的文字改變事件中加入相應的代碼,程序就能夠在文字輸入的時候自動翻譯或者阻止某些字符的輸入。VB的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似于操作系統(tǒng)的樣子。有很少功能的對話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。VB的組件既可以擁有用戶界面,也可以沒有。這樣一來服務器端程序就可以處理增加的模塊。VB使用引用計數(shù)的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向對象支持。因為越來越多組建的出現(xiàn),程序員可以選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態(tài),以及強制使得符號表入口的實體的變量

11、名稱遵循書寫規(guī)則。默認情況下字符串的比較是對大小寫敏感的,但是可以關閉這個功能。VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了創(chuàng)建、使用和重用這些控件的方法,但是由于語言問題,從一個應用程序創(chuàng)建另外一個并不簡單。3 串口通信原理3.1串行通信定義串口是計算機上一種非常通用設備通信的協(xié)議。大多數(shù)計算機包含兩個基于RS-232的串口。串口同時也是儀器儀表設備通用的通信協(xié)議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設備的數(shù)據。3.2串行通信的異步通信字符幀也叫數(shù)據幀,由起始位、數(shù)據位、奇偶校驗位和停止位等四部分組成。在

12、串行通信中,發(fā)送端一幀一幀發(fā)送信息,接收端一幀一幀接收信息。兩相鄰字符幀之間可以無空閑位,也可以由若干空閑位,自行定義。串行通信的數(shù)據或者字符是一幀一幀地傳送,在異步通信中,一幀數(shù)據先用一個起始位“0”表示字符的開始,然后是58位上數(shù)據,即該字符的代碼,規(guī)定低位在前,高位在后,接下來是奇偶校驗位,最后一個停止位“1”表示字符的結束。下面是異步通信一幀數(shù)據為10位的幀格式見圖3-1。圖3-1字符幀格式圖3.3波特率波特率是通信中對數(shù)據傳送速率的要求。在計算機通信中,其意義是每秒鐘傳送多少位二進制數(shù)。假如異步傳送速率為每秒120個字符,每個字符有1個起始位,8個數(shù)據位,1個停止位組成,則其傳送波特

13、率為 傳送一位所需要的時間為波特率的倒數(shù),即 在串行傳輸中,二進制數(shù)據序列是以數(shù)字波形出現(xiàn)的,發(fā)送時在發(fā)送時鐘下將通信線上傳來的數(shù)據串行移入移位寄存器,所以,發(fā)送時鐘和接受時鐘也可作移位時鐘。能產生該時鐘的電路稱為波特率發(fā)生器。為提高采樣的分辨率,準確地測定數(shù)據位的上升沿或下降沿,時鐘頻率總是高于波特率的若干倍,這個倍數(shù)稱為波特率因子。在單片機中,發(fā)送和接收時鐘可以由系統(tǒng)時鐘fosc產生,其波特率因子為12,32,64.如果波特率由fosc決定稱為固定波特率方式。也可以由單片機的內部定時器T1產生,它工作于自動重裝8位定時方式,由于定時器的計數(shù)初值可以人為的改變,T1產生的時鐘頻率就可以改變,

14、稱為可變波特率方式。3.4串行接口的基本特點串行端口工作方式MCS-51單片機的串行端口有4種基本工作方式,通過編程設置,可以使其工作在任一方式,以滿足不同場合的需要。其中,方式0主要用于外接移位寄存器,以擴展單片機的IO電路;工作方式1多用于雙機之間或與外設電路的通信;方式2、3除有方式1的功能外,還可以作多機通信,以構成分布式多微機系統(tǒng)。 串行端口有兩個控制寄存器SCON、PCON,用于設置工作方式、發(fā)送或接收的狀態(tài)、特征位、數(shù)據傳送波特率每秒傳送的位數(shù)以及作為中斷標志等。串行端口有一個數(shù)據寄存器SBUF在特殊功能寄存器中的字節(jié)地址為99H,該寄存器為發(fā)送和接收所共用。串行端口的波特率可以

15、用程序來控制。在不同工作方式中,由時鐘振蕩頻率的分頻值或由定時器T1的定時溢出時間確定,使用十分方便靈活。串口控制寄存器:輸入:在時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數(shù)據的開始位0,從而開始接收一幀數(shù)據。只有當8位數(shù)據接收完,并檢測到高電平停止位后,只有滿足;或接收到的第9位數(shù)據為1時,停止位才進入RB8,8位數(shù)據才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。1. 方式2方式2為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據。輸出:發(fā)送的串行數(shù)據由TXD端輸出一

16、幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通訊中地址數(shù)據信息的標志位,也可以作為數(shù)據的奇偶校驗位。當CPU執(zhí)行一條數(shù)據寫入SUBF的指令且時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志TI。輸入:在時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數(shù)據的開始位0,從而開始接收一幀數(shù)據。在接收到附加的第9位數(shù)據后,當滿足;或接收到的第9位數(shù)據為1時,第9位數(shù)據才進入RB8,8位數(shù)據才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。且不置位RI。2. 工作方式3方式3為波特率可變的11位UART方式。除波特率外,其余

17、與方式2相同。波特率的選擇  如前所述,在串行通訊中,收發(fā)雙方的數(shù)據傳送率(波特率)要有一定的約定。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。1方式O方式0的波特率固定為主振頻率  的。2方式2 方式2的波特率由PCON中的選擇位SMOD來決定,可表示為:也就是當時,波特率為,當時,波特率為。3方式1和方式3定時器T1作為波特率發(fā)生器,其公式如下:式中T1計數(shù)率取決于它工作在定時器狀態(tài)還是計數(shù)器狀態(tài)。當工作于定時器狀態(tài)時,T1計數(shù)率為fosc門2:當工作于計數(shù)器狀態(tài)時,T1計數(shù)率為外部

18、輸入頻率,此頻率應小于。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。 定時器T1工作于方式O: 定時器T1工作于方式1: 定時器T1工作于方式2: 因為方式2為自動重裝入初值的8位定時器計數(shù)器模式,所以用它來做波特率發(fā)生器最恰當。這種方式下,T1的溢出率次秒計算式可以表示為:(二) 串行口的通信波特率串行口的通信波特率恰好反映串行口傳輸數(shù)據的速率。通信波特率的選用,不僅和所選通信設備、傳輸距離有關,還受傳輸線狀況所制約。波特率設計 1、方式0的波特率 工作方式0時,移位脈沖由機器周期的第6個狀態(tài)周期S6給出,每個機器周期產生一個移位脈沖,發(fā)送或接收一

19、位數(shù)據。因此,波特率是固定的,為振蕩頻率的,不受PCON寄存器中SMOD的影響。用公式表示為:工作方式0的 2、方式2的波特率 工作方式2時,移位脈沖由振蕩頻率fosc的第二節(jié)拍P2時鐘(即)給出,所以,方式2波特率取決于PCON中的SMOD位的值,當時,波特率為fosc的;當時,波特率為fosc的,用公式表示為;工作方式2: 3、工作方式1和方式3的波特率 在這兩種方式下,串行口波特率是由定時器的溢出率決定的,因而波特率也是可變的。相應公式為: 實際上定時器T1通常采用方式2,因為定時器T1在方式2下工作,TH1和TL1分別設定為兩個8位重裝計數(shù)器。4單片機與PC機通信4.1 AT89C51

20、單片機上對應端口介紹本次課設主要用到AT89C51單片機上的P3口,P3口的功能簡介如下:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(計時器0外部輸入)P3.5 T1(計時器1外部輸入)P3.6 /WR(外部數(shù)據存儲器寫選通)P3.

21、7 /RD(外部數(shù)據存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號本次單片機部分只需用到P3口的P3.0口和P3.1口,用于和PC連接通信。4.2 RS-232簡介通常 RS-232 接口以9個引腳 (DB-9) 或是25個引腳 (DB-25) 的型態(tài)出現(xiàn),RS-232的電器特性、邏輯電平和各種信號線功能也有規(guī)定。 在TxD和RxD上: 邏輯1:-3V -15V 邏輯0:+3V+15V 發(fā)送數(shù)據(TxD)通過TxD終端將串行數(shù)據發(fā)送到MODEM,(DTEDCE)。 接收數(shù)據(RxD)通過RxD線終端接收從MODEM發(fā)來的串行數(shù)據,(DCEDTE)。4.3單片機通信代碼#inclu

22、de <reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intunsigned char flag,a,i;uchar code table="OH MY GOD"void delay1ms()uchar i,j;for(i=0;i<10;i+)for(j=0;j<33;j+);void delay(uchar n)/延時n毫秒uchar i;for(i=0;i<n;i+)delay1ms();void init() TMOD=0

23、x20;/T1定時器方式2 TH1=0xfd; TL1=0xfd;/T1定時器裝初值 TR1=1;/啟動定時器T1 REN=1;/數(shù)據允許接受 SM0=0;設定串口方式1 SM1=1;/ EA=1;/開總中斷 ES=1;/允許串口中斷void main() uchar k; init(); while(1) if(flag=1) ES=0;/關閉串口中斷 for(i=0;i<17;i+) SBUF=tablei;/接收數(shù)據 while(!TI);/等待是否發(fā)送完畢TI=0; SBUF=a;/發(fā)送數(shù)據 while(!TI); TI=0; ES=1; flag=0; void ser() i

24、nterrupt 4/串口中斷程序 RI=0;/軟件清零,進入中斷服務程序 a=SBUF; flag=1;/標志位置1,判斷是否已收到數(shù)據4.4仿真電路圖圖4-1單片機電路仿真圖5 VB設計PC機5.1界面設計本次設計需要添加MSComm控件,可用Project-Componentscomm control 6.0進行添加。在設計窗體時要添加以下控件:1個ComboBox 、9個Label、1個 Option 、7個Command Button、2個 TextBox。5.2 VB設計的窗體圖5-1 VB設計軟件5.3 VB代碼Option Explicit'Option Base 1P

25、rivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Dim comport As ByteDim rate As LongDim data_cnt As IntegerDim stop_cnt As IntegerDim disp_on As IntegerDim mut As BooleanDim out() As BytePrivate Sub com_change() Dim flag As Boolean On Error Resume Next Err.Clear If mut

26、 = False Then Exit Sub '初始化完成前本過程無效 flag = MSComm1.PortOpen If flag Then MSComm1.PortOpen = False '已打開先關閉 MSComm1.CommPort = comport '設置串行端口 MSComm1.Settings = CStr(rate) + ",N," + CStr(data_cnt) + "," + CStr(stop_cnt) '設置波特率及數(shù)據幀格式 MSComm1.PortOpen = True If Err.N

27、umber Then If Err.Number = 8002 Then MsgBox "串口" + CStr(comport) + "不存在!", vbOKOnly, "警告" If Err.Number = 8005 Then MsgBox "串口" + CStr(comport) + "已打開!", vbOKOnly, "警告" Option1.BackColor = RGB(0, 0, 0) Command1.Enabled = False Command6.Enab

28、led = False Err.Clear Else Option1.BackColor = RGB(255, 0, 0) Command1.Enabled = True Command1.Caption = "關閉串口" Command6.Enabled = True End IfEnd Sub-Private Sub Combo1_click() comport = Combo1.ListIndex + 1 com_changeEnd SubPrivate Sub Combo2_click() Select Case Combo2.ListIndex Case 0 ra

29、te = 300 Case 1 rate = 600 Case 2 rate = 1200 Case 3 rate = 2400 Case 4 rate = 4800 Case 5 rate = 9600 Case 6 rate = 19200 Case 7 rate = 38400 Case 8 rate = 56000 Case 9 rate = 57600 Case 10 rate = 115200 End Select com_changeEnd SubPrivate Sub Combo3_click() data_cnt = 8 - Combo3.ListIndex com_chan

30、geEnd SubPrivate Sub Combo4_click() stop_cnt = 1 + Combo4.ListIndex com_changeEnd SubPrivate Sub Command1_Click() If Command1.Caption = "關閉串口" Then MSComm1.PortOpen = False Command1.Caption = "打開串口" Option1.BackColor = RGB(0, 0, 0) Else MSComm1.PortOpen = True Command1.Caption =

31、"關閉串口" Option1.BackColor = RGB(255, 0, 0) End IfEnd SubPrivate Sub Command2_Click() Text1.Text = ""End SubPrivate Sub Command3_Click() Static f2 As Byte If f2 = 0 Then disp_on = 0 f2 = 1 Command3.Caption = "繼續(xù)顯示" Else disp_on = 0 f2 = 0 Command3.Caption = "停止顯示&quo

32、t; End IfEnd SubPrivate Sub Command4_Click() Dim time As Date time = Now() Open "C:UsersLenovoDesktopNICE.txt" For Output As #5 Print #5, time Print #5, Text1.Text Close #5End SubPrivate Sub Command5_Click() Text2.Text = ""End SubPublic Function IsHex(c As String) As Integer If c

33、 >= "0" And c <= "9" Then IsHex = Val(c) - Val("0") ElseIf c >= "a" And c <= "f" Then IsHex = Asc(c) - Asc("a") + 10 ElseIf c >= "A" And c <= "F" Then IsHex = Asc(c) - Asc("A") + 10 Else IsHex

34、 = 16 End IfEnd FunctionPrivate Sub Command6_Click() Dim outs As String outs = Text2.Text Call ToChar(out, CStr(outs) MSComm1.Output = out Exit Sub Dim s As String Dim l As Integer Dim i As Integer, j As Integer, cnt As Integer Dim a As Integer Dim tmp As String Dim send_buf() As Byte ReDim send_buf

35、(1024) cnt = 0 s = Trim(Text2.Text) l = Len(s) Do While (l) Do Until IsHex(Left(s, 1) <> 16 l = l - 1 If l = 0 Then Exit Do tmp = Right(s, l) Loop a = IsHex(Left(s, 1) l = l - 1 s = Right(s, l) If l <> 0 And IsHex(Left(s, 1) <> 16 Then a = a * 16 + IsHex(Left(s, 1) l = l - 1 s = Ri

36、ght(s, l) End If cnt = cnt + 1 send_buf(cnt) = a Loop If cnt > 128 Then cnt = 128 ReDim Preserve send_buf(cnt) MSComm1.Output = send_buf()End SubPrivate Sub Command7_Click() Unload MeEnd SubPrivate Sub Form_Activate() On Error Resume Next mut = False Combo1.ListIndex = 0 Combo2.ListIndex = 5 Comb

37、o3.ListIndex = 0 Combo4.ListIndex = 0 mut = True MSComm1.PortOpen = True If Err.Number Then MsgBox "串口1已打開!", vbOKOnly, "警告" Option1.BackColor = RGB(0, 0, 0) Command1.Enabled = False Command6.Enabled = False Err.Clear End If Command1.SetFocusEnd SubPrivate Sub Form_Load() MSComm1

38、.CommPort = 1 '設置串行端口com1 MSComm1.Settings = "9600,N,8,1" '設置波特率及數(shù)據幀格式 MSComm1.InputLen = 0 '讀取接收緩沖區(qū)的所有字符 MSComm1.InBufferSize = 256 '數(shù)據接受緩沖區(qū)大小為4000字節(jié) MSComm1.OutBufferSize = 256 '數(shù)據發(fā)送緩沖區(qū)大小為4000字節(jié) MSComm1.RThreshold = 1 '每10位數(shù)據到接收緩沖區(qū)都觸發(fā)接收事件 'MSComm1.SThreshold =

39、 1 '發(fā)送緩沖區(qū)空觸發(fā)發(fā)送事件 'MSComm1.InputMode = comInputModeText '字節(jié)模式 '設定 InputMode 以讀取二進位資料 MSComm1.InputMode = comInputModeBinary disp_on = 1 comport = 1 rate = 9600 data_cnt = 8 stop_cnt = 1End SubPrivate Sub Label3_Click()End SubPrivate Sub MSComm1_OnComm() Static cnt As Integer Dim recei

40、ve_cnt As Integer Dim i As Integer Dim Buffer As Variant Dim Arr() As Byte Dim s As String Select Case MSComm1.CommEvent Case comEvReceive receive_cnt = MSComm1.InBufferCount '接收緩沖區(qū)的字節(jié)數(shù) ' 往暫存區(qū)存二進位資料 Buffer = MSComm1.Input ' 指定給位元組陣列以便處理 Arr = Buffer s = "" For i = 0 To receive_

41、cnt - 1 If Arr(i) >= 32 And Arr(i) <= 126 Then s = s & Chr(Arr(i) cnt = cnt + 1 End If Next i Text1.Text = Text1.Text & s & vbCrLf If cnt >= 300 Then Text1.Text = "" cnt = 0 Exit Sub End If Case comEvSend End SelectEnd SubFunction ToChar(ByRef f() As Byte, ByVal s As S

42、tring) ReDim f(0) Dim i As Long For i = 0 To Len(s) - 1 ReDim Preserve f(i) f(i) = Asc(Mid(s, i + 1, 1) Next i ReDim Preserve f(i) f(i) = 0End Functio6 串口通信結果及其分析6.1通信結果圖6-1 VSPD設置串口圖6-2單片機向PC端發(fā)送 圖6-3 PC端接受單片機通信圖6-4 PC端向單片機發(fā)送數(shù)據圖6-5 單片機接收PC發(fā)送數(shù)據6.2結果分析 先使用VSPD軟件將所涉及的VB程序與單片機的串口進行連接,在這里我設置的是將com1口和com3口進行連接,如圖6-1所示。如圖6-2所示,仿真開始,單片機向外發(fā)送字符“OH MY GOD”字符,接著PC端對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論