久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10015|回復: 0
打印 上一主題 下一主題
收起左側

PC串口通信RTS,DTR編程控制+方波發生與檢測設計 VB源碼+電路圖+PCB+報告

[復制鏈接]
跳轉到指定樓層
樓主
分享一個pc串口課設的全套資料分享給大家,包含vb.net源碼工程,TTL串口的電平轉換板子的電路原理圖與pcb工程文件(AD畫的),word格式的課設論文與數據分析測試報告,這些都可以從本帖最后下載附件.

分析及總結
(1)通過本次課設,我熟悉了Altium Designer軟件,自己手動繪制一個原理圖過程中,對RS232每個引腳的作用有了一定的了解,同時熟悉了MAX232芯片的功能,但是在繪制PCB圖時遇到許多問題,作為一個AD新手,布局布線缺乏經驗,在排版和布線時遇到很大的困難,一個PCB的布局布線長達一周時間內無法完成,最后再別人的指導下完成了PCB的布局和布線。
(2)通過完整的制板流程,對制版工藝有了深刻的了解。通過自己的努力做的電路板,然后焊接調試,最終完成設計要求,感覺特別有成就感。在使用VB編程過程中,對VB可視化編程有了初步的接觸,其中直接使用控件,減少了編程的難度,同時,編程方法圖形化、界面化,可以直觀的看到實現結果,增加了我對編程的興趣。課設最重要的是鍛煉了解決問題的能力,通過串口通信的設計,對串口通信有了深刻的理解,計算機不再是一個簡單的單機,可以通過串口實現多個計算機之間數據傳輸和信息共享,往更深研究,串口可以完成計算機之間圖片共享、資料共享,通過一個簡單的串口,就能實現雙機之間的信息共享,低成本實現了高收益。
(3)在電路板焊接過程中,存在很多問題,由于PCB圖封裝選擇不合適,導致排針無法焊接,電源線和地線短接,調試遇到很大問題。
(4)通過DTR和RTS腳產生的方波經過實際測試,誤差較小,有一定的實用性,通過串口和程序結合,可以很方便的產生一個占空比、周期可調的方波,實現方法簡單快捷。

5.3.4 方波檢測電路結果分析
通過測試30組不同周期,不同占空比的方波,發現當給定頻率大于9000Hz時,輸出方波會出現失真;占空比小于11%、大于95%時,會出現波形失真。所以通過串口產生的周期、占空比可調的方波,可以使用范圍在:11%—95%占空比時,頻率小于9000Hz時,此時,產生波形的占空比相對誤差在0.02%左右,周期相對誤差幾乎為0。
5.3.5 測試實物圖
圖5-9 測試實物圖

目錄
1 課設背景
2 設計任務
2.1 功能模塊電路設計要求
2.2 課設設計任務
2.3 課程設計成果要求
2.3.1 基本功能設計部分
2.3.2 擴展設計部分
2.4 課設工作進度
3 方案設計
3.1 硬件電路設計
3.1.1 RS232功能及特點
3.1.2 RS232引腳及功能
3.1.3 MAX232功能及特點
3.1.4 74HC04引腳及功能
3.2 總體電路設計方案
3.3 軟件設計
4 過程論述
4.1 AD原理圖電路繪制過程
4.1.1 電源電路
4.1.2 電平轉換電路
4.1.3 方波測試電路
4.1.4 總原理圖
4.2 AD中PCB圖繪制過程
4.2.1 PCB圖
4.3 電路板印刷制作過程
4.3.1 濕膜工藝制單面板簡易流程
4.3.2 制作流程
4.4 軟件設計
4.4.1 軟件設計思路
4.4.2 軟件設計流程圖
4.4.3 軟件控制面板
4.4.4 軟件源代碼
5 焊裝測試
5.1 焊接過程
5.2 焊接后電路板實物圖
5.3 上電調試及測試結果
5.3.1 電源電路測試
5.3.2 電平轉換電路測試
5.3.3 方波檢測電路測試
5.3.4 方波檢測電路結果分析
5.3.5 測試實物圖
6 分析及總結

1 課設背景
綜合課程設計是在完成基本電子技術類、計算機類課程之后安排的綜合設計與訓練環節,目的是要通過綜合課程設計這一實踐環節,使得學生建立起理論聯系實際的基本專業素質,要求學生能夠根據設計任務和技術指標要求完成電子信息系統設計全過程----設計、制作一個既包含硬件電路設計制作、又包含程序設計開發工作內容的小型電子系統,利用電子線路CAD軟件(Altium Designer)完成原理圖繪制、PCB版圖設計,并根據版圖進行制版,然后進行安裝和調試工作;再選擇一種計算機編程語言,完成程序設計任務。通過綜合課程設計環節,使學生得到電子信息產品的設計、制作、調試、測試四大環節的完整過程訓練,熟悉電子信息產品設計的一般過程。綜合課程設計對于提高學生綜合應用所學專業知識解決實際問題具有重要意義,同時也是培養學生獨立學習新知識的能力以及分析問題、發現問題和解決實際問題的能力,也是培養學生創新意識和創新精神的重要機會。

2 設計任務
2.1 功能模塊電路設計要求
(1)計算機RS232串口<―>TTL串口的電平轉換;                              
(2)基于RTS、DTR功能引腳的數字控制電路設計;                                       
(3)綜合設計軟件和硬件,使得計算機串口成為周期可控、占空比可控的方波發生器;
(4)編寫程序實現計算機之間的串行通信;                                    
(5)學有余力可以考慮如何利用串口閑置資源實現數據采集功能。
2.2 課設設計任務
1. 熟悉綜合課程的內容和要求; 對所要求的內容深刻理解,能夠提出綜合課程設計的合理方案,設計出符合性能指標要求的電路,提出軟件開發思路。                                                            
2. 掌握Altium Designer的使用,完成原理圖設計:熟練的自建元件庫并繪出符合規格的原理圖                                          
3. 完成PCB制版圖繪制,掌握PCB設計規則并繪出符合模擬電路的PCB                              
4 制板:熟悉全套工藝的PCB制板過程,完成PCB板制作, 在此基礎上按照工藝要求安裝并調試出合格的產品                              
5. 根據任務要求,選擇計算機可視化程序設計語言,編寫程序,能夠實現計算機之間相互通信、數字狀態輸出控制、波形發生等功能                       
5. 測試與驗收:熟悉產品測試技術,驗證設計結果是否實現設計目標                                 
8. 撰寫課程設計報告。                                             
綜合課程設計結束時,要求學生寫出完整、規范的課程設計報告(主要包括設計任務及要求、軟硬件總體設計方案論證、硬件總體方案、各個功能電路設計、軟件總體方案、各個功能的程序設計,以及調試與測試,總結與體會等內容,并附電路原理圖、PCB版圖及實物圖,程序運行界面、源代碼以及測試數據等)。指導教師根據答辯成績、批閱課程設計報告成績、模塊演示成績三部分內容確定最終成績。按照百分制評定成績:表現(10%)、設計制作質量(50%)、實習報告(40%)。

2.3 課程設計成果要求
2.3.1 基本功能設計部分   
1)正確實現RS232與TTL電平之間的相互轉換;                     
2)計算機串行端口實現至少3種功能(雙機通信、輸出控制、波形發生器);                                                      
3)設計必要的數字電路,為輸出控制功能的驗證,提供操作對象。   
4)可視化程序設計結果支持硬件系統工作,能夠保證功能正確實現,界面友好,布局合理;                                       
2.3.2 擴展設計部分      
具有數據采集功能——利用串口相關引腳,實現數字狀態的采集;                                            
設計必要的數字電路形成2路數字狀態發生電路,為數據采集提供信號源。
2.4 課設工作進度

3 方案設計

3.1 硬件電路設計
3.1.1 RS232功能及特點
(1)RS232是在1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”該標準規定采用一個25個腳的DB-25連接器,對連接器的每個引腳的信號內容加以規定,還對各種信號的電平加以規定。后來IBM的PC機將RS232簡化成了DB-9連接器,從而成為事實標準。而工業控制的RS-232口一般只使用RXD、TXD、GND三條線。
(2)在RS-232-C中任何一條信號線的電壓均為負邏輯關系。即:邏輯“1”為-3到-15V;邏輯“0”為+3到+15V。
RS-232-C接口連接器一般使用型號為DB-9插頭座,通常插頭在DCE端,插座在DTE端。PC機的RS-232口為9芯針插座。一些設備與PC機連接的RS-232接口,因為不使用對方的傳送控制信號,只需要三條接口線,即“發送數據TXD”、“接收數據RXD”和“信號地GND”。RS-232傳輸線采用屏蔽雙絞線。
(3)由RS-232-C標準規定在碼元畸變小于4%的情況下,傳輸電纜長度應為50英尺,其實這個4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10%-20%的范圍工作的,所以實際使用中最大距離會遠超過50英尺,美國DEC公司曾規定容許畸變為10%而得出下面實驗結果。其中1號電纜為屏蔽電纜,型號為DECP.NO.9107723內有三對雙絞線,每對有22#AWG組成,其外覆以屏蔽線。2號電纜為不帶屏蔽的電纜。
(4)接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使用電平轉換電路方能與TTL電路連接。
(5)傳輸速率較低,在異步傳輸時,波特率為20Kbps;因此在“南方的老樹51CPLD開發板”中,綜合程序波特率只能采用19200,也是這個原因。
(6)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。
(7)傳輸距離有限,最大傳輸距離標準值為50英尺,實際上也只能用在50米左右。(通過外接RS-232增強器可將傳輸距離擴大到1000米左右)
3.1.2 RS232引腳及功能
表3-1 RS232引腳功能
針腳
符號
輸入/輸出
說明
1
DCD
輸入
數據載波檢測
2
RXD
輸入
接收數據
3
TXD
輸出
發送數據
4
DTR
輸出
數據終端順備好
5
GND
信號地
6
DSR
輸入
數據終端準備好
7
RTS
輸出
請求發送
8
CTS
輸入
允許發送
9
RI
輸入
振鈴指示

3.1.3 MAX232功能及特點
(1)MAX232是一種雙組驅動器/接收器,片內含有一個電容性電壓發生器以便在單5V電源供電時提供EIA/TIA-232-E電平。當用單片機和PC機通過串口進行通信,盡管單片機有串行通信的功能,但單片機提供的信號電平和RS232的標準不一樣,因此要通過max232這種類似的芯片進行電平轉換。
(2) MAX232引腳
第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串口電平的需要。
第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。
其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道。
8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。
TTL/CMOS數據從11引腳(T1IN)、10引腳(T2IN)輸入轉換成RS-232數據從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232數據從13引腳(R1IN)、8引腳(R2IN)輸入轉換成TTL/CMOS數據后從12引腳
(R1OUT)、9引腳(R2OUT)輸出。
第三部分是供電。15腳GND、16腳VCC(+5v)。
3.1.4 74HC04引腳及功能
74HC04/74HCT04是六反相器,高速CMOS器件,低功耗肖特基的TTL(LSTTL)電路 。
圖3-1 74HC04
3.2 總體電路設計方案
將RS232每個腳通過3片MAX232電平轉換,之后再將轉換之后的輸出通過反相器增強驅動能力,然后接LED燈來檢測電平是否轉換;通過RS232的4腳(DTR)、7腳(RTS)利用軟件產生占空比、頻率可調的方波,然后接兩個LED燈來檢測方波;通過RS232的3腳(TXD)、2腳(RXD)實現數據的發送和接收。在VB中用TXD發送數據,外接LED燈來檢測是否接收到數據。
3.3 軟件設計
在VS2013開發環境中,編寫VB程序,通過一個下拉選擇框CheckBox來選擇串口,兩個文本框,一個用來發送數據,一個用來接收數據。4個Button按鈕,一個用來打開串口,一個關閉串口,一個發送數據,一個停止方波的產生。DTR、RTS產生占空比可調,頻率可調的方波,當串口打開時,在DTR、RTS使能端有效時,通過選擇相應的選擇框,即可產生方波,當頻率和占空比文本框輸入為空時,設定的頻率為1000,占空比為50,當輸入不為空時,頻率和占空比為當前輸入的值,進而實現頻率和占空比可調。同時LED燈的D3,D5會按方波周期性閃亮。當3腳發送數據時,LED的D4會閃亮,起來通信提示作用。
4 過程論述4.1 AD原理圖電路繪制過程
打開Altium Designer,新建一個工程,為工程添加一個原理圖和一個PCB圖,
然后在Altium Designer中找到相應元器件的庫極其封裝,將所用到的元器件庫導入,封裝大小應根據實際元器件的尺寸大小來選擇,找到合適的元器件封裝后,按照設計好的電路圖繪制原理圖,原理畫完之后,編譯原理圖,如果有錯誤,根據提示修改原理圖,編譯通過后,將原理圖導入PCB。然后將元器件布局,按照元器件之間交線盡可能小的原則將每個元器件放到合理的位置,然后通過手動布線將PCB圖連起來,最后生成最終的PCB圖。
4.1.1 電源電路
圖中所示P5排針用來上電測試時接電源,通電時,LED燈D6亮,用來測試電源電路是否接通。
圖4-1 電源電路
4.1.2 電平轉換電路
將RS232的輸出端通過3片MAX232電平轉換,將串口RS232信號電平(-10,+10V)轉換為TTL信號電平(0,+5V),MAX232的1,2,3,4,5,6引腳和4個電容構成電荷泵電路,其功能是產生+12V和-12V電源,提供給RS232供電。
圖4-2 電平轉換電路
4.1.3 方波測試電路
將轉換電平后的輸出經過反相器增強驅動之后,外接LED燈,當RS232輸出端給輸出時,LED燈點亮,當DTR和RTS輸出方波時,D3和D5會按照方波周期性閃爍。
圖4-3 方波檢測電路
4.1.4 總原理圖
圖4-4 總原理圖
4.2 AD中PCB圖繪制過程
將元器件導入PCB后,將元器件布局,按照元器件之間交線盡可能小的原則將每個元器件放到合理的位置,然后通過手動布線將PCB圖連起來,最后生成最終的PCB圖。在畫PCB圖的過程中,線寬應在30mil之間,焊盤大小和過孔應選擇適當。
4.2.1 PCB圖
圖4-5 PCB圖
4.3 電路板印刷制作過程
4.3.1 濕膜工藝制單面板簡易流程
底片輸出—裁板—鉆孔—拋光—烘干—刷感光線路油墨—貼線路層底片—曝光—顯影—水洗—蝕刻—水洗—脫膜—拋光—烘干—刷感光阻焊油墨—烘干—貼底片曝光—顯影—水洗—烘干—刷感光文字油墨—烘干—貼底片曝光—顯影—水洗—沉錫—切邊。
4.3.2 制作流程
1)打印底片:線路層、字符層、底片。
2)裁板(保留20mm工藝邊)
3)鉆孔(鉆頭尖離板0.5mm)
4)拋光 (去除表面氧化物及油污,去除鉆孔時產生的毛刺)
5)烘干(去除孔內殘余水分)
6)刷感光線路油墨(90T絲網框)
7)烘干油墨(85℃,15分鐘)
8)貼底片曝光(時間16s,先底片對位)
9)顯影(45℃-50℃ )20-40s
10)水洗及二次固化(85℃,5-10min)
11)蝕刻(溫度50℃)30s-75s 通常50s
12)水洗
13)脫膜
14)水洗
15)刷感光阻焊油墨(感光阻焊油墨:固化劑=3:1,如果油墨比較黏的話,需要增加油墨稀釋劑調整)
16)油墨烘干(85℃,20min)
17)貼底片曝光(45s)
18)顯影 20-40s
19)水洗
20)烘干
21)刷感光文字油墨(感光字符油墨:固化劑=3:1,如果油墨比較黏,需要增加油墨稀釋劑,油墨一定要調整)
22)油墨烘干(85℃,10-20分鐘)
23)貼底片 曝光(60s)45s
24)顯影
25)水洗
27)切邊
4.4 軟件設計
4.4.1 軟件設計思路
在VS2013開發環境中,編寫VB程序,通過一個下拉選擇框CheckBox來選擇串口,兩個文本框,一個用來發送數據,一個用來接收數據。4個Button按鈕,一個用來打開串口,一個關閉串口,一個發送數據,一個停止方波的產生。DTR、RTS產生占空比可調,頻率可調的方波,當串口打開時,在DTR、RTS使能端有效時,通過選擇相應的選擇框,即可產生方波,當頻率和占空比文本框輸入為空時,設定的頻率為1000,占空比為50,當輸入不為空時,頻率和占空比為當前輸入的值,進而實現頻率和占空比可調。同時LED燈的D3,D5會按方波周期性閃亮。當3腳發送數據時,LED的D4會閃亮,起來通信提示作用。
4.4.2 軟件設計流程圖
圖4-6 發送數據流程圖
圖4-7 產生方波流程圖
圖4-8 方波測試流程圖
4.4.3 軟件控制面板
圖4-9 VB控制面板
4.4.4 軟件源代碼詳見附件




5 焊裝測試

5.1 焊接過程
將元器件按照原理圖上的正負插到板子中相應的位置,然后按照先低后高、先小后大的順序依次焊接元器件,焊接過程中應該邊焊接邊測試,以便于后面的調試。焊接完成后對應原理圖將每條線進行檢查,確定沒有虛焊、漏焊和短路情況時,然后上電測試。
5.2 焊接后電路板實物圖
圖5-1 電路板實物圖
5.3 上電調試及測試結果
5.3.1 電源電路測試
將元器件焊接到板子上之后,用萬用表對每個電路模塊進行排線檢查,確定沒有虛焊、短路之后,上電測試。首先對電源電路進行上電測試,給電源外接3V電壓,電源電路指示燈亮,說明電源電路工作正常,然后對其他模塊電路進行檢測。測試實物及接線圖如下圖所示。
圖5-2 電源電路實物測試
5.3.2 電平轉換電路測試
在VB控制面板,選擇當前設備識別到的串口,并打開該串口。然后發送一個數據,與電平轉換電路轉換后的輸出端連接的LED燈(D4)瞬間點亮,說明RES232負邏輯電平經過MAX232之后,已經轉換為TTL電平。
圖5-3 電平轉換電路實物測試
5.3.3 方波檢測電路測試
在VB控制面板,選擇當前設備識別到的串口,并打開該串口。選擇DTR和RTS使能端,然后選擇RTS和DTR方波產生,LED燈D3和D5按照給定頻率點亮和熄滅。然后用示波器分別測量RTS和DTR腳,觀察實際產生方波的頻率和占空比,并且與設定周期和占空比進行比較,計算周期和占空比的絕對誤差、相對誤差。絕對誤差=|示值-標準值|;相對誤差=|示值-標準值|/真實值。測試數據如下:
USB轉RS232串口輸出電壓測試(直接測USB轉串口9針線有關參數)
DTR邏輯輸出高電平時RS232實際電壓:4.89V拉電流:26mA
DTR邏輯輸出低電平時RS232實際電壓:-0.68V灌電流:0
RTS邏輯輸出高電平時RS232實際電壓:-0.67V拉電流:40mA
RTS邏輯輸出低電平時RS232實際電壓:-0.7V灌電流:0.2mA
多功能串口板卡TTL信號輸出電平測試(測課程設計完成板卡的TTL端有關參數)
DTR邏輯輸出高電平時實際TTL端電壓:4.98V拉電流:70mA
DTR邏輯輸出低電平時實際TTL端電壓:0.02V灌電流:0
RTS邏輯輸出高電平時實際TTL端電壓:4.78V拉電流:40mA
RTS邏輯輸出低電平時實際TTL端電壓:0.04V灌電流:0
第一組測試:(設定周期、占空比,觀測實際結果)
設定周期:1000ms實際周期:1000ms設定占空比:50%實際占空比:50%
輸出信號幅度:2.88V 周期絕對誤差:0周期相對誤差:0 占空比絕對誤差:0占空比相對誤差:0
第二組測試:(改變周期、占空比,觀測實際結果)
設定周期:4000ms實際周期:4009ms設定占空比:80%實際占空比:79.8%
輸出信號幅度:2.79V 周期絕對誤差:9ms周期相對誤差:0.22%
占空比絕對誤差:0.718占空比相對誤差:0.25%
第三組測試:(改變周期、占空比,觀測實際結果)
設定周期:  2000ms 實際周期: 2013ms 設定占空比: 80% 實際占空比: 79.2%         
輸出信號幅度:2.89V 周期絕對誤差 13ms 周期相對誤差: 0.64%      
占空比絕對誤差 0.008 占空比相對誤差:0.01%   
圖5-4 周期(2000ms)占空比(80%)的方波
圖5-5 周期(0.1ms)占空比(80%)的方波
第三組測試:(改變周期、占空比,觀測實際結果)
設定周期:2000ms實際周期:2013ms設定占空比:80%實際占空比:79.2%
輸出信號幅度:2.89V 周期絕對誤差:13ms周期相對誤差:0.64%
占空比絕對誤差:0.008占空比相對誤差:0.01%
  輸出波形截圖(粘貼下方):
圖5-6 周期(2000ms)占空比(80%)的方波
第四組測試:(改變周期、占空比,觀測實際結果)
設定周期:1000ms實際周期:1000ms設定占空比:60%實際占空比:60%
輸出信號幅度:4.7V周期絕對誤差:0周期相對誤差:0
占空比絕對誤差:0占空比相對誤差:0
  輸出波形截圖(粘貼下方):
圖5-7 周期(1000ms)占空比(50%)的方波
第五組測試:(改變周期、占空比,觀測實際結果)
設定周期:3000ms實際周期:3000ms設定占空比:50%實際占空比:52.67%
輸出信號幅度:4.8V周期絕對誤差:0周期相對誤差:0
占空比絕對誤差:0.0267占空比相對誤差:0.051%
圖5-8 周期(3000ms)占空比(50%)的方波

源程序:
  1. Imports System.IO.Ports
  2. Imports System.Threading
  3. Imports System.Security.Permissions
  4. '允許在程序內部各個線程對于窗體控件進行操作
  5. <PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
  6. <System.Runtime.InteropServices.ComVisibleAttribute(True)>
  7. Public Class Form1
  8.     Dim thread1, thread2 As Threading.Thread
  9.     Dim t1, t2 As Integer 'DTR,RTS周期
  10.     Dim Dutyfactor1, Dutyfactor2 As Integer    'DTR,RTS的占空比
  11.     Dim txtfile As String
  12.     Dim MyFile As Object
  13.     Dim wwh As Object
  14.     Private Property Str As String
  15.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  16.         '允許線程對窗口控件進行操作
  17.         Control.CheckForIllegalCrossThreadCalls = False
  18.         '復選框初始為空
  19.         ComboBox_SelectPort.Items.Clear()
  20.         '將電腦設備中所有串口添加到復選框中
  21.         For Each port As String In My.Computer.Ports.SerialPortNames
  22.             ComboBox_SelectPort.Items.Add(port)
  23.         Next
  24.         ComboBox_SelectPort.SelectedIndex = 0
  25.         '設置關閉串口按鈕無法點擊
  26.         Button_Close.Enabled = False
  27.         '設置發送按鈕無法點擊
  28.         Button_send.Enabled = False
  29.     End Sub
  30.     Private Sub Button_open_Click_1(sender As Object, e As EventArgs) Handles Button_open.Click
  31.         '打開串口
  32.         With SerialPort1
  33.             '波特率
  34.             .BaudRate = 9600
  35.             '停止位
  36.             .StopBits = 1
  37.             '數據位
  38.             .DataBits = 8
  39.             '奇偶校驗位
  40.             .Parity = IO.Ports.Parity.None
  41.             '在復選框中選擇串口
  42.             .PortName = ComboBox_SelectPort.SelectedItem.ToString
  43.         End With
  44.         SerialPort1.Open()
  45.         MsgBox("串口已經打開")
  46.         '設置打開按鈕為不可點擊
  47.         Button_open.Enabled = False
  48.         '設置關閉按鈕為不可點擊
  49.         Button_Close.Enabled = True
  50.         '設置發送按鈕為不可點擊
  51.         Button_send.Enabled = True
  52.     End Sub
  53.     Private Sub Button_Close_Click(sender As Object, e As EventArgs) Handles Button_Close.Click
  54.         SerialPort1.Close()
  55.         MsgBox("串口已經關閉")
  56.         '設置打開按鈕可選
  57.         Button_open.Enabled = True
  58.         '設置關閉按鈕為不可點擊
  59.         Button_Close.Enabled = False
  60.         '設置發送按鈕為不可點擊
  61.         Button_send.Enabled = False
  62.     End Sub
  63.     Private Sub Button_send_Click(sender As Object, e As EventArgs) Handles Button_send.Click
  64.         '發送數據
  65.         If TextBox_Send.Text = "" Then
  66.             MsgBox("發送信息不能為空")
  67.         End If
  68.         '將文本框中待發送數據寫入串口
  69.         SerialPort1.Write(TextBox_Send.Text)
  70.     End Sub
  71.     Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
  72.         Dim str As String
  73.         str = SerialPort1.ReadExisting
  74.         '將字符串顯示到接受數據文本框
  75.         TextBox_Receive.Text += str
  76.     End Sub
  77.     Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_DTRenAble.CheckedChanged
  78.         'DTR
  79.         '如果DTR使能端選中
  80.         If CheckBox_DTRenAble.Checked = True Then
  81.             'DTR使能端有效
  82.             SerialPort1.DtrEnable = True
  83.             'DTR使能端按鈕變為紅色
  84.             Button_DTREnable.BackColor = Color.Red
  85.         Else
  86.             'DTR未選中
  87.             SerialPort1.DtrEnable = False
  88.             'DTR使能端按鈕變為白色
  89.             Button_DTREnable.BackColor = Color.White
  90.         End If
  91.     End Sub
  92.     Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_RTSEnable.CheckedChanged
  93.         'RTS
  94.         '如果RTS使能端選中
  95.         If CheckBox_RTSEnable.Checked = True Then
  96.             'RTS使能端有效
  97.             SerialPort1.RtsEnable = True
  98.             'RTS使能端按鈕變為紅色
  99.             Button_RtsEnable.BackColor = Color.Red
  100.         Else
  101.             'RTS使能端無效
  102.             SerialPort1.RtsEnable = False
  103.             'RTS使能端按鈕顯示變為白色
  104.             Button_RtsEnable.BackColor = Color.White
  105.         End If
  106.     End Sub
  107.     Private Sub TextBox_DTR_T_TextChanged(sender As Object, e As EventArgs) Handles TextBox_DTR_T.TextChanged
  108.     End Sub
  109.     Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_SelectPort.SelectedIndexChanged
  110.     End Sub
  111.     Sub DTRWaveGenerate()
  112.         '實現DTR方波函數
  113.         Do While True
  114.             'DTR方波檢測按鈕變為紅色
  115.             Button_DtrText.BackColor = Color.Red
  116.             'DTR使能端有效
  117.             SerialPort1.DtrEnable = True
  118.             '線程休眠
  119.             Thread.Sleep(t1 * Dutyfactor1 * 0.01)
  120.             'DTR方波檢測按鈕變為紅色
  121.             Button_DtrText.BackColor = Color.Yellow
  122.             'DTR使能端無效
  123.             SerialPort1.DtrEnable = False
  124.             '線程休眠
  125.             Thread.Sleep(t1 * (1 - Dutyfactor1 * 0.01))
  126.         Loop
  127.     End Sub
  128.     Sub RTSWaveGenerate()
  129.         'RST方波實現函數
  130.         Do While True
  131.             'RTS方波檢測按鈕變為紅色
  132.             Button_RtsText.BackColor = Color.Red
  133.             'RTS使能端有效
  134.             SerialPort1.RtsEnable = True
  135.             '線程休眠
  136.             Thread.Sleep(t2 * Dutyfactor2 * 0.01)
  137.             'RTS方波檢測按鈕變為紅色
  138.             Button_RtsText.BackColor = Color.Yellow
  139.             'RTS使能端無效
  140.             SerialPort1.RtsEnable = False
  141.             '線程休眠
  142.             Thread.Sleep(t2 * (1 - Dutyfactor2 * 0.01))
  143.         Loop
  144.     End Sub
  145. Private Sub Button_DTREnable_Click(sender As Object, e As EventArgs) Handles Button_DTREnable.Click
  146.     End Sub
  147.     Private Sub Button_DtrText_Click(sender As Object, e As EventArgs) Handles Button_DtrText.Click
  148.     End Sub
  149.     Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_DTRWave.CheckedChanged
  150.         'DTR方波
  151.         If CheckBox_DTRWave.Checked = True Then
  152.             '啟動
  153.             '如果頻率文本框為空,初始化周期為1000ms
  154.             If TextBox_DTR_T.Text = "" Then
  155.                 t1 = 1000
  156.             Else
  157.                 '如果頻率文本框不為空,則設置頻率為當前文本框中的值
  158.                 t1 = CInt(TextBox_DTR_T.Text)
  159.             End If
  160.             '如果占空比文本框為空,初始化占空比為50
  161.             If TextBox_DTR_Duty.Text = "" Then
  162.                 Dutyfactor1 = 50
  163.                 '如果占空比文本框不為空,則設置占空比為當前文本框中的值
  164.             Else
  165.                 Dutyfactor1 = CInt(TextBox_DTR_Duty.Text)
  166.             End If
  167.             '創建一個DTR方波線程
  168.             thread1 = New Threading.Thread(AddressOf DTRWaveGenerate)
  169.             '線程開始
  170.             thread1.Start()
  171.         Else
  172.             Try
  173.                 '線程掛起
  174.                 thread1.Abort()
  175.             Catch ex As Exception
  176.             End Try
  177.         End If
  178.     End Sub
  179.     Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_RTSWave.CheckedChanged
  180.         'RTS方波
  181.         If CheckBox_RTSWave.Checked = True Then
  182.             '啟動
  183.             '如果頻率文本框為空,初始化周期為500ms
  184.             If TextBox_RTS_T.Text = "" Then
  185.                 t2 = 500
  186.             Else
  187.                 '如果頻率文本框不為空,則設置頻率為當前文本框中的值
  188.                 t2 = CInt(TextBox_RTS_T.Text)
  189.             End If
  190.             '如果占空比文本框為空,初始化占空比為50
  191.             If TextBox_RTS_Duty.Text = "" Then
  192.                 Dutyfactor2 = 50
  193.             Else
  194.                 '如果占空比文本框不為空,則設置占空比為當前文本框中的值
  195.                 Dutyfactor2 = CInt(TextBox_RTS_Duty.Text)
  196.             End If
  197.             '創建一個RTS方波線程
  198.             thread2 = New Threading.Thread(AddressOf RTSWaveGenerate)
  199.             '線程開始
  200.             thread2.Start()
  201.         Else
  202.             Try
  203.                 '線程掛起
  204.                 thread2.Abort()
  205.             Catch ex As Exception
  206.             End Try
  207.         End If
  208.     End Sub
  209.     Private Sub TextBox_DTR_Duty_TextChanged(sender As Object, e As EventArgs) Handles TextBox_DTR_Duty.TextChanged
  210.     End Sub
  211.     Private Sub TextBox_Duty_TextChanged(sender As Object, e As EventArgs) Handles TextBox_RTS_Duty.TextChanged, TextBox_DTR_Duty.TextChanged
  212.     End Sub
  213.     Private Sub TextBox_RTS_T_TextChanged(sender As Object, e As EventArgs) Handles TextBox_RTS_T.TextChanged
  214.     End Sub
  215.     Private Sub Button_Stop_Click(sender As Object, e As EventArgs) Handles Button_Stop.Click
  216.         '點擊后設置DTR,RTS方波選擇框不被選中,即停止方波產生
  217.         CheckBox_DTRWave.Checked = False
  218.         CheckBox_RTSWave.Checked = False
  219.         Try
  220.             'DTR線程休眠
  221.             thread1.Abort()
  222.         Catch ex As Exception
  223.         End Try
  224.         Try
  225.             'RTS線程休眠
  226.             thread2.Abort()
  227.         Catch ex As Exception
  228. …………
  229. …………
  230. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


全部資料51hei下載地址(包含vb.net源碼工程文件,pcb與電路圖AD工程,WORD格式的設計報告):
http://www.zg4o1577.cn/bbs/dpj-112682-1.html



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一区二区三区不卡视频 | 国产精品日日摸夜夜添夜夜av | 黄色毛片在线看 | 国产成人免费 | 久久伊人青青草 | 亚洲成人999 | 视频一区二区三区在线观看 | 国产乱码精品一品二品 | 在线观看国产视频 | 欧美国产精品久久久 | www.亚洲免费 | 欧美专区在线观看 | 三级成人在线 | 免费的av网站 | 亚洲精品视频免费 | 国产一区二区三区色淫影院 | 国产乡下妇女做爰 | 国产精品久久7777777 | 美女在线视频一区二区三区 | 在线观看成年视频 | 国产99视频精品免费视频7 | 国产精品成人国产乱一区 | 国产精品久久久久久久久久三级 | 黄色大全免费看 | 九九九视频精品 | 日本三级电影免费观看 | 伊久在线| 中文字幕一区二区三区不卡 | 嫩草国产| 97视频在线观看免费 | 日韩不卡一二区 | 污片在线免费观看 | 中文字幕高清 | 欧美一区二区三区久久精品视 | 四虎影视1304t | 久久久久国产一区二区三区 | 久久av一区二区三区 | 91精品国产综合久久婷婷香蕉 | 天天操网 | 无码一区二区三区视频 | 自拍偷拍中文字幕 |