找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10209|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:290266 發(fā)表于 2018-4-13 16:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一個pc串口課設(shè)的全套資料分享給大家,包含vb.net源碼工程,TTL串口的電平轉(zhuǎn)換板子的電路原理圖與pcb工程文件(AD畫的),word格式的課設(shè)論文與數(shù)據(jù)分析測試報告,這些都可以從本帖最后下載附件.

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

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

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

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

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

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

3 方案設(shè)計

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

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




5 焊裝測試

5.1 焊接過程
將元器件按照原理圖上的正負(fù)插到板子中相應(yīng)的位置,然后按照先低后高、先小后大的順序依次焊接元器件,焊接過程中應(yīng)該邊焊接邊測試,以便于后面的調(diào)試。焊接完成后對應(yīng)原理圖將每條線進行檢查,確定沒有虛焊、漏焊和短路情況時,然后上電測試。
5.2 焊接后電路板實物圖
圖5-1 電路板實物圖
5.3 上電調(diào)試及測試結(jié)果
5.3.1 電源電路測試
將元器件焊接到板子上之后,用萬用表對每個電路模塊進行排線檢查,確定沒有虛焊、短路之后,上電測試。首先對電源電路進行上電測試,給電源外接3V電壓,電源電路指示燈亮,說明電源電路工作正常,然后對其他模塊電路進行檢測。測試實物及接線圖如下圖所示。
圖5-2 電源電路實物測試
5.3.2 電平轉(zhuǎn)換電路測試
在VB控制面板,選擇當(dāng)前設(shè)備識別到的串口,并打開該串口。然后發(fā)送一個數(shù)據(jù),與電平轉(zhuǎn)換電路轉(zhuǎn)換后的輸出端連接的LED燈(D4)瞬間點亮,說明RES232負(fù)邏輯電平經(jīng)過MAX232之后,已經(jīng)轉(zhuǎn)換為TTL電平。
圖5-3 電平轉(zhuǎn)換電路實物測試
5.3.3 方波檢測電路測試
在VB控制面板,選擇當(dāng)前設(shè)備識別到的串口,并打開該串口。選擇DTR和RTS使能端,然后選擇RTS和DTR方波產(chǎn)生,LED燈D3和D5按照給定頻率點亮和熄滅。然后用示波器分別測量RTS和DTR腳,觀察實際產(chǎn)生方波的頻率和占空比,并且與設(shè)定周期和占空比進行比較,計算周期和占空比的絕對誤差、相對誤差。絕對誤差=|示值-標(biāo)準(zhǔn)值|;相對誤差=|示值-標(biāo)準(zhǔn)值|/真實值。測試數(shù)據(jù)如下:
USB轉(zhuǎn)RS232串口輸出電壓測試(直接測USB轉(zhuǎn)串口9針線有關(guān)參數(shù))
DTR邏輯輸出高電平時RS232實際電壓:4.89V拉電流:26mA
DTR邏輯輸出低電平時RS232實際電壓:-0.68V灌電流:0
RTS邏輯輸出高電平時RS232實際電壓:-0.67V拉電流:40mA
RTS邏輯輸出低電平時RS232實際電壓:-0.7V灌電流:0.2mA
多功能串口板卡TTL信號輸出電平測試(測課程設(shè)計完成板卡的TTL端有關(guān)參數(shù))
DTR邏輯輸出高電平時實際TTL端電壓:4.98V拉電流:70mA
DTR邏輯輸出低電平時實際TTL端電壓:0.02V灌電流:0
RTS邏輯輸出高電平時實際TTL端電壓:4.78V拉電流:40mA
RTS邏輯輸出低電平時實際TTL端電壓:0.04V灌電流:0
第一組測試:(設(shè)定周期、占空比,觀測實際結(jié)果)
設(shè)定周期:1000ms實際周期:1000ms設(shè)定占空比:50%實際占空比:50%
輸出信號幅度:2.88V 周期絕對誤差:0周期相對誤差:0 占空比絕對誤差:0占空比相對誤差:0
第二組測試:(改變周期、占空比,觀測實際結(jié)果)
設(shè)定周期:4000ms實際周期:4009ms設(shè)定占空比:80%實際占空比:79.8%
輸出信號幅度:2.79V 周期絕對誤差:9ms周期相對誤差:0.22%
占空比絕對誤差:0.718占空比相對誤差:0.25%
第三組測試:(改變周期、占空比,觀測實際結(jié)果)
設(shè)定周期:  2000ms 實際周期: 2013ms 設(shè)定占空比: 80% 實際占空比: 79.2%         
輸出信號幅度:2.89V 周期絕對誤差 13ms 周期相對誤差: 0.64%      
占空比絕對誤差 0.008 占空比相對誤差:0.01%   
圖5-4 周期(2000ms)占空比(80%)的方波
圖5-5 周期(0.1ms)占空比(80%)的方波
第三組測試:(改變周期、占空比,觀測實際結(jié)果)
設(shè)定周期:2000ms實際周期:2013ms設(shè)定占空比:80%實際占空比:79.2%
輸出信號幅度:2.89V 周期絕對誤差:13ms周期相對誤差:0.64%
占空比絕對誤差:0.008占空比相對誤差:0.01%
  輸出波形截圖(粘貼下方):
圖5-6 周期(2000ms)占空比(80%)的方波
第四組測試:(改變周期、占空比,觀測實際結(jié)果)
設(shè)定周期:1000ms實際周期:1000ms設(shè)定占空比:60%實際占空比:60%
輸出信號幅度:4.7V周期絕對誤差:0周期相對誤差:0
占空比絕對誤差:0占空比相對誤差:0
  輸出波形截圖(粘貼下方):
圖5-7 周期(1000ms)占空比(50%)的方波
第五組測試:(改變周期、占空比,觀測實際結(jié)果)
設(shè)定周期:3000ms實際周期:3000ms設(shè)定占空比: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. '允許在程序內(nèi)部各個線程對于窗體控件進行操作
  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.         '復(fù)選框初始為空
  19.         ComboBox_SelectPort.Items.Clear()
  20.         '將電腦設(shè)備中所有串口添加到復(fù)選框中
  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.         '設(shè)置關(guān)閉串口按鈕無法點擊
  26.         Button_Close.Enabled = False
  27.         '設(shè)置發(fā)送按鈕無法點擊
  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.             '數(shù)據(jù)位
  38.             .DataBits = 8
  39.             '奇偶校驗位
  40.             .Parity = IO.Ports.Parity.None
  41.             '在復(fù)選框中選擇串口
  42.             .PortName = ComboBox_SelectPort.SelectedItem.ToString
  43.         End With
  44.         SerialPort1.Open()
  45.         MsgBox("串口已經(jīng)打開")
  46.         '設(shè)置打開按鈕為不可點擊
  47.         Button_open.Enabled = False
  48.         '設(shè)置關(guān)閉按鈕為不可點擊
  49.         Button_Close.Enabled = True
  50.         '設(shè)置發(fā)送按鈕為不可點擊
  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("串口已經(jīng)關(guān)閉")
  56.         '設(shè)置打開按鈕可選
  57.         Button_open.Enabled = True
  58.         '設(shè)置關(guān)閉按鈕為不可點擊
  59.         Button_Close.Enabled = False
  60.         '設(shè)置發(fā)送按鈕為不可點擊
  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.         '發(fā)送數(shù)據(jù)
  65.         If TextBox_Send.Text = "" Then
  66.             MsgBox("發(fā)送信息不能為空")
  67.         End If
  68.         '將文本框中待發(fā)送數(shù)據(jù)寫入串口
  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.         '將字符串顯示到接受數(shù)據(jù)文本框
  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使能端按鈕變?yōu)榧t色
  84.             Button_DTREnable.BackColor = Color.Red
  85.         Else
  86.             'DTR未選中
  87.             SerialPort1.DtrEnable = False
  88.             'DTR使能端按鈕變?yōu)榘咨?br />
  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使能端按鈕變?yōu)榧t色
  99.             Button_RtsEnable.BackColor = Color.Red
  100.         Else
  101.             'RTS使能端無效
  102.             SerialPort1.RtsEnable = False
  103.             'RTS使能端按鈕顯示變?yōu)榘咨?br />
  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.         '實現(xiàn)DTR方波函數(shù)
  113.         Do While True
  114.             'DTR方波檢測按鈕變?yōu)榧t色
  115.             Button_DtrText.BackColor = Color.Red
  116.             'DTR使能端有效
  117.             SerialPort1.DtrEnable = True
  118.             '線程休眠
  119.             Thread.Sleep(t1 * Dutyfactor1 * 0.01)
  120.             'DTR方波檢測按鈕變?yōu)榧t色
  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方波實現(xiàn)函數(shù)
  130.         Do While True
  131.             'RTS方波檢測按鈕變?yōu)榧t色
  132.             Button_RtsText.BackColor = Color.Red
  133.             'RTS使能端有效
  134.             SerialPort1.RtsEnable = True
  135.             '線程休眠
  136.             Thread.Sleep(t2 * Dutyfactor2 * 0.01)
  137.             'RTS方波檢測按鈕變?yōu)榧t色
  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.                 '如果頻率文本框不為空,則設(shè)置頻率為當(dāng)前文本框中的值
  158.                 t1 = CInt(TextBox_DTR_T.Text)
  159.             End If
  160.             '如果占空比文本框為空,初始化占空比為50
  161.             If TextBox_DTR_Duty.Text = "" Then
  162.                 Dutyfactor1 = 50
  163.                 '如果占空比文本框不為空,則設(shè)置占空比為當(dāng)前文本框中的值
  164.             Else
  165.                 Dutyfactor1 = CInt(TextBox_DTR_Duty.Text)
  166.             End If
  167.             '創(chuàng)建一個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.                 '如果頻率文本框不為空,則設(shè)置頻率為當(dāng)前文本框中的值
  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.                 '如果占空比文本框不為空,則設(shè)置占空比為當(dāng)前文本框中的值
  195.                 Dutyfactor2 = CInt(TextBox_RTS_Duty.Text)
  196.             End If
  197.             '創(chuàng)建一個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.         '點擊后設(shè)置DTR,RTS方波選擇框不被選中,即停止方波產(chǎn)生
  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黑下載附件…………
復(fù)制代碼


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



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

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表