【文章內(nèi)容簡介】
研究 18 程序編寫 在單片機編程方面,如果直接采用以前所學的 MCS51 匯編語言進行程序的編寫,盡管匯編的運行的速度較快,但 整 個程序顯的非常的龐大復雜。而 C語言有簡單實用且具有較好移植性的特點。例 如,在編寫除法程序時,如果用匯編的話,則有數(shù)頁;而在 C中只要幾行就可以這個問題。為此筆者決定選用其它的編程語言,如 AVR, KLC 等,權(quán)衡優(yōu)缺點和自己掌握的知識的情況之后,筆者決定采用單片機 C在 WINDOWS 下編程,它兼容一部分 MCS51 指令,即在 KLC 語言里,已經(jīng)對單片機的接口,中斷源等進行了定義,而不必在編程的時候重新去定義,這樣一來就大大減少工作量,而且使整個程序變得簡單明了,可讀性強,易于修改。 KLC 軟件使用說明見附錄。單片機把獲得數(shù)據(jù)存儲在相應的數(shù)據(jù)單元以后,計算出頻率 和相位差,并通過串口輸出 。具體情況見流程圖單片機源程序見 圖- 11。 其中 court[18]={0xC0,0xF9,0xA4,0xB0,0x99,0x92, 0x82,0xF8,0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x84,0xFF,0x8C}。 為查表程序,它是十六進制數(shù)及空白字符與 P 采用共陽極接法時的顯示段碼。 而下面是一段延時程序,它能產(chǎn)生 1ms 的延時,在本次程序中調(diào)用它,并給它傳遞一個 2021 的數(shù),這樣就可以產(chǎn)生 2021ms 的延時,從而達到要求。 void mesc(unsigned int x){ unsigned int j。 while ((x)!=0){ for(j=0。j125。j++) {。} } } 劉峰 基于單片機的相位差測試儀的研究 19 測頻是否結(jié)束開始初始化測頻開始測相開始測相是否結(jié)束讀取測頻結(jié)果讀取測相結(jié)果換算和顯示頻率和相位 圖- 11 劉峰 基于單片機的相位差測試儀的研究 20 輸出顯示部分 在輸出顯示方面,筆者決定輸出顯示經(jīng)過計算后的頻率和相位。輸出顯示部分采用 6塊 LED 數(shù)碼管和 6 塊 74164,由單片機輸出的頻率和相位分時顯示在顯示管上,當數(shù)據(jù)從單片機傳出時,必須經(jīng)過譯碼器譯碼才能顯示在顯示管上, LED 數(shù)碼顯示管有兩種接法,這里采用共陽極 接法。 單片機與 LED 數(shù)碼顯示器有以硬件為主和以軟件為主的兩種接法 以硬件為主的接口方法: 在數(shù)據(jù)總線和 LED 顯示器之間,必須有所存器 I/O 接口電路,此外還應有專用的譯碼器 /驅(qū)動器,通過譯碼器把 1 位十六進制數(shù)( 4 位二進制數(shù))或 BCD 碼譯碼為相應的顯示段碼,然后有驅(qū)動器提供足夠的功率去驅(qū)動發(fā)光二極管。這種接法僅用 1條輸出指令,就可以進行 LED 顯示,但它所使用的硬件 電路較多,而硬件譯碼缺少靈活性,只能顯示十進制或十六進制數(shù)(包括空白字符)。該方法主要用于顯示位數(shù)較多或?qū)︼@示器的亮度有一定要求的場合。 以軟件為主 的接口方法: 它是 以軟件查表代替硬件譯碼,不但省去了譯碼,而且還能顯示更多的字符,但所驅(qū)動器是必不可少的,因為僅靠接口提供不了較大的電流供 LED 顯示器使用。 通過比較以軟件為主的接口方法更適合本次要求。 當 8051 的串行口不作通信使用時,可以使它工作在移位寄存方式(方式 0),擴展74LS164 來驅(qū)動 LCD 靜態(tài)顯示器,工作在寄存器方式時,串行口的 TXD 端輸出移位同步時鐘, RXD 端輸出串行數(shù)據(jù),即選碼數(shù)據(jù)。 # include define uchar unsigned char uchar byte=0x59。 void display(uchar x) { SBUF=X。/由串行口輸出 While(Ti==0)。/等待 8 位發(fā)送結(jié)束 Ti=0。 } 劉峰 基于單片機的相位差測試儀的研究 21 void main(void) { display(byte) } 電路硬件連接圖如圖- 12 AT89S52TXDRXD88CPCP8~74LS164ABQa Qh~B74LS164AQa QhCPCP8~BA74LS164Qa Qh~AB74LS164Qa QhVccCPCP~BA74LS164Qa Qh8~BA74LS164Qa Qh8 圖- 12 劉峰 基于單片機的相位差測試儀的研究 22 第四 章 模擬仿真及結(jié)論 仿真工具的選擇 由于誤差主要產(chǎn)生在小信號處理部分 ,為了進行誤差 分析有必要對小信號處理部分進行模擬仿真。在仿真軟件的選擇上有 PROTEL 和 MATLAB兩種相對較熟悉的仿真軟件供選擇。通過比較,發(fā)現(xiàn) PROTEL 更適合于對該小信號電路進行仿真, PROTEL 仿真后的圖形效果更為直觀,而且有多種不同類型的分析,適合不同的要求,同時筆者在對 PROTEL 的使用較之 MATLAB 更為熟悉。于是,筆者決定選擇 PROTEL 進行仿真, PROTEL 軟件的功能及使用說明見附錄。 電路仿真操作步驟 利用原理圖編輯器( Schematic Edit)編輯仿真測試原理圖,在 編輯原理圖過程中,除了導線,電源符號,接地符號外,原理圖中所有元件的電氣圖形符號均要取自電路仿真測試專用電氣圖形符號數(shù)據(jù)庫文件包 相應元件電器圖形符號庫文件( .lib),否則仿真時因找不到元件參數(shù)(如三極管的放大倍數(shù),C-E結(jié)反向漏電流)而給出錯誤提示并終止仿真過程.本次仿真的電路圖中主要元件為放大器 LF353,高速比較器 特觸發(fā)器 74LS14,和穩(wěn)壓管,二極管,電容以及若干電阻. 在放置元件操作過程中,元件未固定前,需按下 Tab 鍵進入元件屬性設(shè)置窗口,再分別單擊" Attributes”,”Part Fields 18”,”Part Fields916”等屬性標簽,設(shè)置元件的仿真參數(shù).在本次仿真電路中 LF353,LP311,74LS14 等器件除標號外,參數(shù)無須另外設(shè)置,需要設(shè)置參數(shù)的元件主要是電阻(確定放大倍數(shù),和輸入輸出阻抗等) . 在設(shè)置參數(shù)時須注意默認的單位,如電容默認為F,電感為H等等.否則波形會與預期理論值有差別.原理圖見圖- 13 b..放置仿真激勵源 在仿真測試電路中,必須包含至少一個仿真激勵源.本次電路要求的是兩同頻正弦信號波,為常用的激勵源,在" Simulation Sources"工具欄內(nèi).同時放大器 LF353,比較器LP311 等器件需要直流驅(qū)動,因此也需要提供直溜激勵源,并且要設(shè)置激勵源的參數(shù). 在需要觀察電壓波形的節(jié)點上,放置節(jié)點網(wǎng)絡(luò)標號,以便觀察到指定節(jié)點的電壓波形,因為 Protel99 仿真程序只能自動檢測支路電流,元件阻抗,沒有節(jié)點電壓.在本次仿真電路中,主要有四個功能環(huán)節(jié),為次分別在放大環(huán)節(jié),放大限輔環(huán)節(jié),整流環(huán)節(jié),去除抖動 劉峰 基于單片機的相位差測試儀的研究 23 環(huán)節(jié)這四個環(huán)節(jié)后設(shè)置節(jié)點網(wǎng)絡(luò)標號 U1,U2,U3,功能是否符合預期. 在原理圖編輯窗口內(nèi),指向并單擊" Simulate” 菜單下的 “Setup…” 指令進入 “Analyses Setup”仿真設(shè)置窗口,選擇仿真方式及仿真參數(shù).根據(jù)需要分析的類型,本次電路仿真我們選擇了工作點分析( Operating Point Analyses)和瞬態(tài)分析( Transient Analyses) ,其中主要是瞬態(tài)分析,它是一種最基本最常用的仿真分析方式,屬于時域分析,用于獲得節(jié)點電壓,支路電流或元件功率等信號的瞬時值,即信號隨時間變化的瞬態(tài)關(guān)系,相當于在示波器上直接觀察 信號的波形.工作點分析是 “ 副產(chǎn)品 ”, 它的作用是確定電路中非線性元件線性化參數(shù)的初值.再執(zhí)行瞬態(tài)分析會自動執(zhí)行工作點分析. 執(zhí)行 “ Tools” 菜單下的 “ERC..”命令.檢查電路編輯過程中的缺陷,如沒有連接的網(wǎng)絡(luò)標號,懸空的引腳,沒有接地的電源及地線,輸出引腳短路等.執(zhí)行完后,會在電路圖上做出標記,進行修改后,刪除這些標記. 如果需要制作印制 PCB 電路板的話,為了保持兼容性,需要建立網(wǎng)絡(luò)表文件( .) ,而生成元件清單文件(. xls)的目的是為了迅速獲得一個設(shè) 計項目或一張電路圖所包含的元件類型,封裝形式,數(shù)目等,以便采購或進行成本預算. 仿真波形分析 仿真波形見圖- 14。 觀察 U1 基本于預期波形相符,而 U2,U3,U4 都有不同程度的偏差,這與靜態(tài)工作點的選擇有關(guān),通過改變電容的大小和 LP311,LF353 直流激勵源的參數(shù)可以達到目的。同時, 在 Protel99 仿真中,元器件都是理想化的,因此仿真中出現(xiàn)的波形會與理論實際中的有出入,如二極管,穩(wěn)壓管,在導通時相當于短路,截止時相當于斷路,還有激勵源都是無內(nèi)阻的,理想化的. 圖- 13 劉峰 基于單片機的相位差測試儀的研究 24 1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e v i s i onS i z eBD a t e : 16 M a y 20 06 S he e t of F i l e : C : \ P R O G R A M F I L E S \ D E S I G N E X P L O R E R 99 S E \ E X A M P L E S \ P R E V I O ~ 12. D D BD r a w n B y:C110pR1100KV C CR230KR310KR45. 1KR51KR65. 1KV110VV3 15VV E E48231I C 1AL F 3 5348231I C 2AL F 3 53u2R7100Ku11 2I C 3A74L S 1432847615I C 4L P 3 11V C Cu4V C CV2+ 15VV C CV E EV E EV E EV D DD 101K A B 10D31N 4 739V6 5VV D DU3 圖- 14 劉峰 基于單片機的相位差測試儀的研究 25 第五章 原理誤差分析 小信號部分的誤差 相位計的設(shè)計中采用的是相位 時間轉(zhuǎn)換法其誤差的來源主要有三個: A 計數(shù)誤差。即177。 1誤差。 B 標準頻率誤差。函數(shù)發(fā)生器精度在 10e6,誤差可忽略不計。 C 波形轉(zhuǎn)換時間誤差。輸入的兩個同頻正弦信號轉(zhuǎn)換成時間門控制信號時,由于轉(zhuǎn)換電平,噪聲以及所選器件的性質(zhì)影響,存在一個觸發(fā)轉(zhuǎn)換誤差。輸入正弦信號在轉(zhuǎn)換過程中,信號源,放大電路,過零比較器等組成放大整形電路。這些 電路從電路噪聲到器件特性影響,都會引入直流偏置。當無直流偏置影響時,門控開啟時間剛好等于一個被測周期T或 xT ,當受直流偏置影響時,直流偏置導入了一兩個尖峰脈沖,時間差為 T? 。絕對誤差為: TTx ??? ,與 T? 成正比, T? 受直流偏置直接影響。直流偏置影響是本系統(tǒng)的主要影響。 我們知道遲滯型電壓比較器可以很好地消除 抖動。但從遲滯比較器輸出的信號與輸入信號存在延遲,也就是說輸出的信號的上跳沿滯后于輸入信號,輸入信號的幅度越小,滯后的越多。如果兩路輸入信號幅度基本相等,且兩個遲滯比較器的門限又很接近的話,遲滯比較器引入的相位誤差不會對測量精度造成多大的影響。如果兩路輸入信號的幅度相差較大的話(例如一路信號的峰 峰為 5V,另一路為 ),兩路遲滯比較器引入的相位差可能 有較大差值(十余度),這使得相位差大得難于接受。另外比較器的輸入失調(diào)電壓也會引入一定的誤差。減小電壓比較器引 入的相位誤差的一個直接辦法是對輸入的信號進行放大,將兩路信號放到幅度大致相等后在送入遲滯型電壓比較器。但是進行放大可能引入難以預測的附加相移,使得相位精度下降。 頻率測量模塊的誤差 頻率測量模塊。該模塊測頻的原理為在 1 秒的時間里對輸入脈沖計數(shù)(每有一個上升沿,計數(shù)值加 1),因此其誤差來自所計脈沖數(shù),此誤差最大為一個脈沖,因此,最大誤差為 %1001?f 劉峰 基于單片機的相位差測試儀的研究