畢業(yè)設(shè)計(論文)低頻相位測量儀軟件設(shè)計_第1頁
畢業(yè)設(shè)計(論文)低頻相位測量儀軟件設(shè)計_第2頁
畢業(yè)設(shè)計(論文)低頻相位測量儀軟件設(shè)計_第3頁
畢業(yè)設(shè)計(論文)低頻相位測量儀軟件設(shè)計_第4頁
畢業(yè)設(shè)計(論文)低頻相位測量儀軟件設(shè)計_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 緒 論近年來,隨著科學技術(shù)的迅速發(fā)展,很多測量儀逐漸向“智能儀器”和“自動測試系統(tǒng)”發(fā)展這使得儀器的功能豐富而使用簡單。低頻數(shù)字式相位測試儀在工業(yè)領(lǐng)域中是經(jīng)常用到的通用測量工具。相位檢測技術(shù)的應(yīng)用已深入到如多領(lǐng)域,廣泛應(yīng)用于國防、科研、學校和廠礦,傳統(tǒng)的模擬指針式儀表顯然不能夠滿足所需的精度要求,隨著電子技術(shù)以及微機技術(shù)的發(fā)展,數(shù)字式儀表因其高精度的測量分辨率以及高度的智能化、直觀化的特點得到越來越廣泛的應(yīng)用。同時,在電力系統(tǒng)中電網(wǎng)并網(wǎng)合閘時,要求兩電網(wǎng)的電信號相同,這就要求精度的測量兩工頻信號之間的相位差。還有測量兩列同頻信號的相位差在研究網(wǎng)絡(luò)、系統(tǒng)的頻率特性中具有重要的意義。同時,微電

2、子技術(shù)的迅猛發(fā)展,給國民經(jīng)濟、生產(chǎn)活動和社會活動帶來極大的變革。特別是集成電路和微電子技術(shù)的飛躍發(fā)展,更為設(shè)計、安裝體積小、性能優(yōu)越、功能全的裝置創(chuàng)造了良好的條件??梢哉f,電子技術(shù)的應(yīng)用水平是現(xiàn)代化進程的一個重要標志。微電子技術(shù)、計算機技術(shù)、通信技術(shù)、單片機原理技術(shù)等先進技術(shù)與具體應(yīng)用對象相結(jié)合而設(shè)計的產(chǎn)品更是受世人青睞。本次設(shè)計即是利用單片機實現(xiàn)對低頻相位差的測量,使得儀表更加數(shù)字化、智能化,功能比起采用電子或數(shù)字電路更加強大。在科學研究、實驗或生產(chǎn)實踐中,常常需要對低頻移相網(wǎng)絡(luò)的信號進行相位測量,但某些測量方法僅僅局限于測某一頻率信號的相位,不能滿足一定范圍內(nèi)任意頻率信號的相位測量,總之低

3、頻相位測量儀的現(xiàn)代科學技術(shù)中的應(yīng)用越來越多,比如在電力系統(tǒng)中常常需要對兩個同頻率信號(如工頻電壓和工頻電流)之間的相位關(guān)系進行準確的測量?!跋辔粫r間”法和“功率比例法”是兩種比較傳統(tǒng)的相位差測量方法,在現(xiàn)代技術(shù)領(lǐng)域中還對基于離散付里葉變換的相位測量原理進行了研究,并有了一定的成效,研究表明基于離散付里葉變換原理的相位測量方法具有測量精度高)抗干擾能力強)電路設(shè)計簡單等特點??傊辔粶y量技術(shù)在我們生活中起到了不可忽視的。本低額教字式相位測量儀由at89c51芯片和集成電路構(gòu)成。由于at89c51芯片的集成度高,智能程度高,功能強大,使得它實現(xiàn)起來比較簡單,而且,具有體積小,性價比高、性能穩(wěn)定的特

4、點。2 設(shè)計方案論證從功能角度來看,看相位測量儀要完成信號頻率和相位差的測量.相位測量儀有兩路輸入信號,也是被測信號,它們是兩個同頻率的正弦信號,頻率范圍為20hz20khz(正好是音頻范圍),幅度為upp=15v(可以擴展到0.35v),但兩者幅度不一定相等?,F(xiàn)在來講解一下相位、相位差的概念。在“電路原理”課程中已經(jīng)介紹過這些概念,不妨令正弦信號為a(t)=amsin(t+0),式中am稱為幅值(最大值),且,a稱為有效值;(t)=t+0稱為相位,0稱為初相位,稱為角頻率。am、0稱為正弦量的三要素。只有兩個同頻率的(正弦)信號才有相位差的概念。不妨令兩個同頻率的正弦信號為a1(t)=a1m

5、sin(t+01) ,a2(t)=a2msin(t+02),則相位差=(t+01)- (t+02)= 01-02,由此可看出,相位差在數(shù)值上等于初相位之差,是一個角度。不妨令=t,其中t是相位差對應(yīng)的時間差,且令t為信號周期,則有比例關(guān)系t:360=t:可以推導(dǎo)得到=(t/t)360,此式說明,相位差與t一一對應(yīng),可以通過測量時間差t及信號周期t,計算而得到相位差,這就是相位差的基本測量原理。由相位差的基本測量原理可知,相位差的測量本質(zhì)上是時間差t及信號周期t的測量,也就是時間的測量,而時間的測量不可避免地要用到電子計數(shù)器。時間的測量有多種方法,而設(shè)計題目關(guān)于相位測量儀的技術(shù)指標要求會影響到我

6、們對方案的選擇,由一般常識可知,單片機應(yīng)用系統(tǒng)一般能較好地實現(xiàn)各種不同的測量及控制功能,因此,選擇使用單片機實現(xiàn)系統(tǒng)功能,完成系統(tǒng)指標。2.1 原理框圖 以單片機為核心的相位測量儀原理框圖如圖2-1所示。兩路待測信號經(jīng)整形后變成了矩形波i、v,且可以認為i和v是同頻率、不同相伴的矩形波。待測信號2待測信號1整形電路整形電路鑒相器89c51display鍵盤圖2-1 以單片機為核心的相位測量儀原理框圖2.2 頻率的測量單片機對信號頻率的測量可以采用直接測頻率的方法和測周期的方法。一般是信號頻率較高時,采用直接測頻率的方法,而信號頻率較低時,采用測周期的方法。(1)用直接測頻率的方法獲得信號頻率。

7、讓定時器/計數(shù)器t1對外部事件計數(shù),而讓定時器/計數(shù)器t0定時1s,只有在這1s內(nèi)t1啟動對外部事件(即信號i)計數(shù),則t1的計數(shù)值就是待測信號的頻率。(2)用測周期方法獲得信號頻率。由圖2-2可知,對i進行2分頻后的信號波形中,高電平寬度正好對應(yīng)i的周期,將此高電平信號作為單片機內(nèi)部定時器的硬件啟動/停止信號,便可測得周期t,再由公式f=1/t,計算得到頻率。圖2-2 用測周期的方法獲得信號頻率i的2分頻i2.3 相位差的測量 鑒相器就是異或門,在鑒相器的輸出波形iv中,正脈沖寬度就是要測量的i和v相位差所對應(yīng)的時間差t,如圖2-3所示。在測量相位差時還應(yīng)考慮超前、滯后兩種情況(如圖2-3中

8、所示為i超前v)。把iv波形中的正脈沖作為門控信號,控制閘門的啟閉,即控制單片機內(nèi)部定時器/計數(shù)器的啟動/停止,從而達到測量時間差t的目的,再根據(jù)公式=t,計算得到相位差t。另外,由圖2-3可知,iv信號是i信號的二倍頻(i與v同頻),由此可見,對于同頻不同相的兩個信號,經(jīng)過異或門后可得到二倍頻的信號。因此從這個意義上講,異或門可實現(xiàn)信號的二倍頻。圖2-3 鑒相器的輸入、輸出波形圖ivvi2.4 單片機測量時間差、周期的方法 下面詳細談?wù)剢纹瑱C測量時間差、周期的方法。2.4.1 工作原理51系列單片機的芯片內(nèi)部集成了兩個16bit的硬件定時器/計數(shù)器,它們是t0、t1。單片機芯片內(nèi)部的硬件定時

9、器/計數(shù)器有三個特點:定時器/計數(shù)器可以與cpu并行工作;定時器/計數(shù)器可以采用中斷方式與系統(tǒng)協(xié)調(diào)工作;定時器/計數(shù)器可以由軟件或硬件控制啟動和停止。單片機的定時器/計數(shù)器受tmod及tcon的控制,如圖2-4所示。tmodgatec/tm1m0gatec/tm1m0tcontf1tr1tp0tr0ie1it1ie0it0圖2-4 tmod和tcon若gate=0,則由tri控制定時器/計數(shù)器的啟動和停止,為純軟件控制方式。若gate=1,tri=1,則由inti引腳的外部信號控制定時器/計數(shù)器的啟動和停止,是純硬件控制方式。若gate=1,則由tri和inti引腳的外部信號混合控制定時器/計

10、數(shù)器的啟動和停止,軟、硬件結(jié)合控制方式。定時器/計數(shù)器工作在定時工作方式時,其計數(shù)器對內(nèi)部機器周期進行加1計數(shù),而定時器/計數(shù)器的工作啟動、停止采用外部硬件控制。2.4.2 具體實現(xiàn)方法電路圖如圖2-5所示,該電路由單片機、整形電路、門電路等組成。由定時器/計數(shù)器t0、t1分別測量周期、時間差。圖2-5 單片機測量時間差、周期的電路圖時序圖如圖2-6所示。需要說明的是,由軟件創(chuàng)建一標志位2fh.1,當輸入引腳p3.6=0時,cpu置位標志位2fh.1,而當p3.6=1時,cpu在讀取時間差數(shù)據(jù)后清零標志位2fh.1。fed定時器測量時間差cpu從定時器計數(shù)據(jù)并清零定時器定時器測量周期cba圖2

11、-6 時序圖3 系統(tǒng)硬件設(shè)計本設(shè)計將硬件系統(tǒng)分為數(shù)據(jù)采樣處理及單片機最小系統(tǒng)兩個部分,這就充分發(fā)揮了單片機控制運算能力強的特點。數(shù)據(jù)采集由鑒相器完成,可以準確地采集到兩個同頻正弦的相位差所對應(yīng)的時間差以及信號的周期,從而提高系統(tǒng)的可靠性。由于單片機具有較強的運算、控制能力,因此,使用單片機最小系統(tǒng)完成讀取鑒相器得到的數(shù)據(jù),并根據(jù)所讀取的數(shù)據(jù)計算待測信號的頻率及兩路同頻信號之間的相位差。同時通過功能鍵切換,由顯示模塊可以顯示待測信號的頻率和相位差。3.1 輸入電路設(shè)計輸入電路起到波形變換及整形的功能,由于被測信號是周期相同、幅度和相位不同的兩路正弦信號,為了準確地測量出兩路正弦信號的相位差及其頻

12、率,需要對輸入波形進行整形,使輸入信號變成矩形信號,并送給鑒相器進行處理。我們設(shè)計了這兩種整形輸入電路方案。第一種方案是使用單門限電壓比較器來完成,當輸入信號電壓每通過一次零時限電壓比較器的輸出就要翻轉(zhuǎn)一次,即比較器的輸出端將產(chǎn)生一次電壓跳變,它的正、負向幅度均受到供電電源的限制,因此,輸出電壓小型是具有正負極性的方波,這樣就完成了電壓波形的整形工作。但是通常情況下,輸入信號往往會含有干擾,這對單門限電壓比較器尤為不利,由于有干擾信號,導(dǎo)致單門限電壓比較器在輸入信號過零點時會產(chǎn)生多次觸發(fā)翻轉(zhuǎn)的現(xiàn)象,這樣就會導(dǎo)致采集數(shù)據(jù)(計數(shù))不準確,從而使單片機無法計算出正確的被測信號的頻率和相位差數(shù)值。這種

13、方案電路圖如圖3-1。圖3-1 采用單門限電壓比較器的整形電路另外,在相位差測量過程中,不允許兩路被測輸入信號在整形輸入電路中發(fā)生相對相移,或者應(yīng)該使得兩路被測信號在整形輸入電路中引起的附加相移是相同的,因此,我們對a、b兩路信號采用了相同的整形電路。為了避免出現(xiàn)被測輸入信號在過零點時多次觸發(fā)翻轉(zhuǎn)的現(xiàn)象,我們設(shè)計了第二種整形電路,即使用施密特觸發(fā)器組成的整形電路。由于施密特觸發(fā)器在單門限電壓比較器的基礎(chǔ)上引入了正反饋網(wǎng)絡(luò),因為正反饋的作用,它的門限電壓跟著輸出電壓u0的變化而改變,從而使施密特觸發(fā)器有兩個門限電壓,所以可以提高輸入電路的抗干擾能力。第二種整形電路電路如圖3-2所示,電路中我們使

14、用兩個施密特觸發(fā)器觸發(fā)器對兩路被測輸入信號進行整形。在圖3-2中,比較器lm339連接成施密特觸發(fā)器的形式。為了保證輸入電路對相位差測量不帶來誤差,必須保證兩個施密特觸發(fā)器的兩個門限電平對應(yīng)相等,這可以通過調(diào)節(jié)電位器r8來實現(xiàn)。輸入信號再通過各種門電路以便單片機完成相位差及周期的測量。圖3-2 由schmitt觸發(fā)器構(gòu)成的輸入電路3.2 單片機電路的設(shè)計這部分電路由單片機、晶振電路、復(fù)位按鍵電路等組成。在設(shè)計中我們充分利用單片機具有的較強的運算能力和控制能力這一特點,對獲取的輸入信號的周期、相位差16bit二進制數(shù)據(jù)進行處理及相關(guān)運算。p1口的p1.7、p1.6接入兩個輕觸按鍵,結(jié)合軟件編程實

15、現(xiàn)頻率與相位差的顯示切換功能。另外,在設(shè)計中使用了單片機串口uart,將待顯示信息送給顯示模塊顯示。設(shè)計中的單片機是at89c51,它是美國atmel公司生產(chǎn)的8位單片機,它的主要特性有:與mcs-51兼容;內(nèi)部集成有4kb可編程flash存儲器;1288位內(nèi)部ram,有1000次寫/擦循環(huán);數(shù)據(jù)可保留10年;024mhz全靜態(tài)工作方式;三級程序存儲器鎖定;32根可編程i/o線;兩個16位定時器/計數(shù)器;5個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)含振蕩器和時鐘電路。因此,它完全可以滿足本系統(tǒng)設(shè)計的需要。單片機電路如圖3-3所示,為了提高單片機的i/o口帶負載能力,電路中采用了3個

16、上接排電阻。圖3-3 at89c51電路圖3.2.1 時鐘電路計算機工作時,是在統(tǒng)一的時鐘脈沖控制下一拍一拍的進行的,這個脈沖是由單片機控制器中的時序電路發(fā)出的。單片機的時序就是cpu在執(zhí)行指令時所需控制信號的時間順序。為了保證各部件間的同步工作,單片機內(nèi)部電路就在惟一的時鐘信號控制下嚴格的按時序進行工作。要給單片機提供時序要有相關(guān)的硬件電路,即振蕩器和時鐘電路,因此選擇了內(nèi)部時鐘方式。利用芯片內(nèi)部的振蕩器,然后在引腳x1和x2兩端跨接晶體或陶瓷諧振器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時鐘電路如圖3-4所示,單片機是一種時序電路,必須提供脈沖信號才能正常工作,在單片機內(nèi)部已集

17、成了振蕩器,使用晶體振蕩器,接18、19腳。外接晶振時,c2和c3值通常選擇為30pf左右。c2,c3對頻率有微調(diào)作用。晶體的頻率范圍可在1.212mhz之間選擇。在實際連接中,為了減少寄生電容,更好地保證振蕩器穩(wěn)定可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機芯片靠近。圖3-4 at89c51晶振電路分析可知,只要計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。由此,單片機中的定時器和計數(shù)器是一個東西,只不過計數(shù)器是記錄的外界發(fā)生的事情,而定時器則是由單片機提供一個非常穩(wěn)定的計數(shù)源。那么提供給定時器的計數(shù)源就是由單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源,計數(shù)脈沖的間隔與晶振有關(guān),12m的晶

18、振,計數(shù)脈沖的間隔是1微秒。3.2.2復(fù)位電路由圖3-5可以看出,是按鍵電平復(fù)位電路,相當于按復(fù)位鍵后復(fù)位端通過電阻與vcc電源接通。復(fù)位是單片機的初始化操作,單片機在啟動運行時,都需要先復(fù)位,其作用是使cpu和系統(tǒng)中其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。晶振工作時,rst引腳持續(xù)2個機器周期高電平將使單片機復(fù)位,當振蕩器復(fù)位器件時,要保持rst腳兩個機器周期的高電平時間??撮T狗計時完成后,rst 腳輸出96個晶振周期的高電平。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能無效。disrto默認狀態(tài)下,復(fù)位高電平有效。因而,復(fù)位是一個很重要的操作方式,但單片機

19、本身是不能自動進行復(fù)位的,必須配合相應(yīng)的外部電路來實現(xiàn)。這種復(fù)位電路的工作原理是:通電時,電容兩端相當于是短路,于是rst引腳上為高電平,然后電源通過電阻對電容充電,rst端電壓慢慢下降,降到一定程序,即為低電平,單片機開始正常工作。圖3-5 復(fù)位電路3.3 顯示模塊的設(shè)計系統(tǒng)硬件電路中采用led數(shù)碼管靜態(tài)顯示的方式。顯示電路由6個共陰極7段led數(shù)碼管和6片串入/并出的移位寄存器74ls164芯片組成。這種顯示方式不僅可以得到較為簡單的硬件電路,而且可以得到穩(wěn)定的數(shù)據(jù)輸出顯示,不僅占用單片機端口少,而且可以充分利用單片機芯片內(nèi)部的串行口資源,容易掌握其編程規(guī)律,簡化軟件編程。試驗證明,這種顯

20、示模塊具有較高的可靠性。設(shè)計出的顯示模塊電路圖如圖3-4所示。多位led顯示時,常將所有位的段選線并聯(lián)在一起,由一個8位i/o口控制,而共陰極點或共陽極點分別由另一個8位i/o口控制;也可采用并行擴展口構(gòu)成顯示電路,通常,需要擴展器件管腳的較多,價格較高。本文將介紹一種利用單片機的一個并行i/o口實現(xiàn)多個led顯示的簡單方法。其中,74ls164是8位并行輸出門控串行輸入移位寄存器,led采用共陰極數(shù)碼管。顯示時,其顯示數(shù)據(jù)以串行方式從89c51的rxd口輸出送往移位寄存器74ls164的a、b端,然后將變成的并行數(shù)據(jù)從輸出端q0q7輸出,以控制開關(guān)管wt1wt8的集電極,然后再將輸出的led

21、段選碼同時送往數(shù)碼管led1led6。圖3-4 顯示模塊電路圖3.4 相位測量儀整體電路綜合上面的設(shè)計過程,相位測量儀整體電路圖如附錄所示。4 系統(tǒng)軟件設(shè)計程序是為計算某一算式或完成某一工作的若干指令的有序集合。計算機的全部工作概括起來,就是執(zhí)行這一指令序列的過程。為計算機準備這一指令序列的過程稱為程序設(shè)計??捎糜诔绦蛟O(shè)計的語言可分為三種:機器語言、匯編語言和高級語言。在計算機中,所有的數(shù)符和指令都是用二進制代碼來表示的。這種二進制代碼表示的指令系統(tǒng)稱為機器語言。計算機可以識別機器語言并加以執(zhí)行。但對于使用者來說,不易看懂,不便記憶,容易出錯。為了克服這些缺點,匯編語言出現(xiàn)了。程序設(shè)計自動化的

22、第一階段就是用英文字符來代替機器語言,這些英文字符被稱為助記符。用助記符表示指令系統(tǒng)的語言稱為匯編語言,用匯編語言編寫的程序稱為匯編語言程序。但是,計算機不能直接識別在匯編語言中出現(xiàn)的字母、數(shù)字和符號,需要將其轉(zhuǎn)換成用二進制代碼表示的機器語言程序,計算機才能夠識別和執(zhí)行。匯編語言醒目、易懂、不易出錯,即使出錯,也容易被發(fā)現(xiàn)修改,執(zhí)行速率高,本次設(shè)計就是采用匯編語言程序編寫的代碼。系統(tǒng)連續(xù)3次測量時間差和周期,每一次測量時間差和周期占用兩個待測信號周期t的時間。單片機在處理數(shù)據(jù)(數(shù)字濾波、計算、送數(shù)據(jù)顯示、鍵盤處理)期間,使用軟件停止定時器工作。顯示部分采用uart方式0串行送數(shù)據(jù)給74sl16

23、4,由74ls164驅(qū)動led數(shù)碼管顯示,這樣可以減輕cpu的負擔(相對于動態(tài)掃描而言)。鍵盤處理實際上就是通過按鍵s1切換顯示不同的內(nèi)容,即顯示頻率和相位差。系統(tǒng)主程序是一個順序執(zhí)行的循環(huán)程序,框圖如圖4-1所示。子程序sub1完成的功能是3次測量時間差、周期并保存到內(nèi)存。了程序sub1的流程圖如圖4-2所示。因這第一次測量時間差、周期的起始時刻表一定的隨機性(這是由于軟件啟動定時器/計數(shù)器t0、t1第一次分別測得的周期、時間差是不準確的,故舍棄)。mcu完成的任務(wù)有三個方面,歸納為以下三點:(1)從鑒相器獲取數(shù)據(jù)。單片機從鑒相器獲取兩種數(shù)據(jù),一是待測信號的周期t(單位是1s),為16bit

24、無符號二進制數(shù),二是待測信號的相位差對應(yīng)的時間差t(單位也是1s),也為16bit無符號二進制數(shù)。(2)對獲取的數(shù)據(jù)進行處理:從前面分析可知頻率f=1/t,=(t/t)360,但89c51獲得的周期數(shù)據(jù)單位是1s,而要測得的頻率是在1s內(nèi)測得的頻率值,所以可求得f=1/t/10-6,即可得到f=1000000/t。1)按照公式f=1000000/t計算頻率,單位是hz,這是一個多字節(jié)除法運算問題。2)按照公式=t/t360計算相位差,單位是1,這是一個多字節(jié)乘法、除法運算問題。(3)將計算得到的頻率值及相位差值送led數(shù)碼管顯示。在系統(tǒng)硬件設(shè)計時,顯示模塊中有6個led數(shù)碼管,實際需要的led

25、數(shù)碼管個數(shù)確定方法如下:題目要求相位差顯示為0o359o,分辨率為1o,則數(shù)碼管選3個。頻率顯示20hz20khz,20hz20000hz,則要5個數(shù)碼管。綜合考慮和兩點,并考慮在顯示頻率、相位差時分別給出一個標志符號于最右邊的數(shù)碼管上,分別顯示“o”和“h”,則選定6個led數(shù)碼管作為系統(tǒng)的顯示器。這樣,顯示緩沖區(qū)(連續(xù)區(qū)域)為12bytes(12個內(nèi)存單元)。硬件電路中不需要的led數(shù)碼管通過軟件讓其消隱而不顯示。6位led數(shù)碼管的工作情況為:根據(jù)顯示選擇設(shè)置(頻率/相位差),cpu從顯示緩沖區(qū)取數(shù)據(jù),通過uart方式0串行輸出數(shù)據(jù),由74ls164接收數(shù)據(jù)并驅(qū)動6位led數(shù)碼管顯示。在軟

26、件編程時應(yīng)解決無效數(shù)字“0”的消隱問題。不需要cpu對led顯示內(nèi)容定時刷新(與led動態(tài)掃描顯示不同)。4.1 程序流程圖 通過分析單片機應(yīng)完成的任務(wù)可知,這些任務(wù)可以按順序執(zhí)行(沒有對時序要求很嚴格的任務(wù))。所以,整個單片機源程序由主程序及若干子程序組成,而主程序是一個循環(huán)執(zhí)行的順序程序。主程序流程圖如圖4-1所示,主程序主要完成待測信號的頻率、相位差的測量,并由鍵盤作為功能鍵切換,由顯示模塊led顯示出結(jié)果。具體思路:首先初始化程序,包括定義各內(nèi)存空間,各標志位,初始化堆棧、寄存器等;由于程序要用到t/c,所以應(yīng)首先使tr0和tr1置位,即由int0和int1引腳的外部信號控制t/c的啟

27、動和停止;為使測量的頻率、相位差準確,程序設(shè)計采用調(diào)用三次測量時間差、周期的子程序sub1,并將測量到的時間差、周期保存到內(nèi)存中;采了3個值后,使tr0和tr1復(fù)位,計平均數(shù),再計算頻率、相位差,即可得到較準確的相位差值;最后鍵盤作為功能鍵切換,由led顯示出待測信號的頻率和相位差。測量時間差、周期子程序的程序流程圖如圖4-2所示,計算頻率子程序流程圖如圖4-3所示,鍵盤子程序流程圖如圖4-4所示,計算相位差子程序流程圖如圖4-5所示,顯示子程序流程圖如圖4-6所示。顯示子程序主要完成將待測信號的頻率、相位差值在led上顯示出來。具體思路:初始化程序時設(shè)頻率顯示緩沖區(qū)首地址為70h,相位差顯示

28、緩沖區(qū)首地址為78h,進入顯示子程序display后,先查詢控制顯示頻率或相位差的標志位2fh.0,若2fh.0=0,則轉(zhuǎn)去執(zhí)行顯示相位差;若2fh.0=1,則轉(zhuǎn)去執(zhí)行顯示頻率,不管顯示頻率還是相位差,都應(yīng)先將顯示緩沖區(qū)首地址賦給r0保存;接下來消隱去掉無效數(shù)字0;在led上顯示結(jié)果,需查表求段碼(一般用movc a,a+dptr的指令),并經(jīng)uart方式來發(fā)送段碼,直至顯示數(shù)碼送完,這樣,即可完成頻率和相位差的顯示。送數(shù)據(jù)顯示調(diào)用子程序sub1;測量3次時間差、周期并保存到內(nèi)存開始初始化tri=1(i=0,1)計算頻率、相位差鍵盤處理中值數(shù)字濾波tri=0圖4-1 主程序流程圖yyynnny

29、nsub1入口r4=4(r4是計數(shù)器)保存周期th0、tl0、保存時間差th1、tl1清零定時器t0、t1清零標志位2fh.1r4-1送r4sub1出口p3.6=1?2fh.1=1?setb 2fh.1r4=4?r4=0?圖4-2 測量時間差、周期子程序流程圖圖4-3 計算頻率子程序流程圖入口裝入被除數(shù)1000000和除數(shù)t到內(nèi)存做除法1000000/t將二進制數(shù)據(jù)轉(zhuǎn)換為壓縮bcd碼將壓縮bcd碼轉(zhuǎn)換為單字節(jié)bcd碼存入數(shù)據(jù)到顯示緩沖區(qū)70h76h出口yyynn入口軟件延時10ms消抖cpl 2fh.0出口有鍵按下(p1.7=0)?有鍵按下(p1.7=0)?圖4-4 鍵盤子程序流程圖圖4-5

30、計算相位差子程序流程圖入口裝入被乘數(shù)和乘數(shù)到內(nèi)存做乘法裝入被除數(shù)和除數(shù)到內(nèi)存做除法求相位差將二進制數(shù)據(jù)轉(zhuǎn)換為壓縮bcd碼將壓縮bcd碼轉(zhuǎn)換為單字節(jié)bcd碼存入數(shù)據(jù)到顯示緩沖區(qū)78h7eh出口y待顯示數(shù)據(jù)送完了?nny2fh.0=0?賦頻率顯示緩沖區(qū)首地址70h給r0賦相位差顯示緩沖區(qū)首地址78h給r0無效數(shù)字0消隱處理查表求段碼經(jīng)uart方式0發(fā)送段碼出口入口待顯示數(shù)據(jù)送完了?圖 4-6 顯示子程序流程圖4.2 單片機源程序 用匯編語言編寫的單片機源程序如下::*;符號定義data1 equ 40h ;16bit周期t的數(shù)據(jù)存放內(nèi)存單元datah equ 41h data2l equ 43h

31、; 16bit相位差對應(yīng)的時間差的數(shù)據(jù)存放內(nèi)存單元data2h equ 44h;- ;除法占用單元及乘法占用單元ad0 equ 30h ;存放被除數(shù)(或被乘數(shù))的字節(jié)數(shù)單元ad1 equ 31h ;存放除數(shù)(或乘數(shù))的字節(jié)數(shù)的單元ada equ 4fh ;存放被除數(shù)(或被乘數(shù))的末地址,即最低位低字節(jié)單元地址adb equ 5fh ; 存放除數(shù)(或乘數(shù))的末地址,即最低位低字節(jié)單元地址adc equ 4dhade equ 5dhkey1 bit p1.7 ;切換顯示的按鍵s1key2 bit p1.6 ;未使用按鍵s2ala bit p3.5 ;未使用dispbit bit 2fh.0 ;控制

32、顯示頻率或相位差的標志位samp1a equ 40h samp1b equ 41h samp1c equ 42h samp2a equ 43h samp2b equ 44h samp2c equ 45h samp3a equ 46h samp3b equ 47h samp3c equ 48h samp4a equ 49h samp4b equ 4ah samp4c equ 4bh samp5a equ 4ch samp5b equ 3dh samp5c equ 3eh*4.2.1 主程序org 00hljmp 100horg 100hmain: mov 2fh,#01hmain1: nopse

33、tbtr0setbtr1 lcall sub1 clrtr0 clrtr1 lcall zzlb lcall zhunbeizhouqi ;裝入頻率計算數(shù)據(jù)(1000000及周期t)分別到4ah4dh及5dh5eh中clr 2fh.3jnb 2fh.3,divdd1ljmp chchu divdd1:lcall divd1 ;調(diào)用除法子程序(4字節(jié)除以2字節(jié))計算頻率mov 6fh,4fh ;二進制形式的頻率值在4e、4fh中,最高位在4eh中mov 6eh,4ehmov 35h,4fhmov 34h,4ehlcall bcdst ;將二進制數(shù)據(jù)轉(zhuǎn)換成bcd碼mov r0,#30hmov r1

34、,#3fhmov r7,#04hmov 30h,#0mov 31h,#0lcall bcd 2bcd ;將壓縮bcd碼格式轉(zhuǎn)換成單字節(jié)bcd碼格式mov 70h,#18 ;頻率值存放在30h31h中,最低位在30h中,最高位在32h中mov 71h,30h ;內(nèi)存單元70h72h是頻率值顯示緩沖區(qū),其中70h是符號位mov 72h,31h mianwc:lcall x360 ;裝入相位計算數(shù)據(jù) lcall mulnm ;調(diào)用乘法子程序求360乘以時間差(2字節(jié)乘以2字節(jié))mov 4ch,5ch ;將上述乘積送入除法的被乘數(shù)緩沖區(qū)mov 4dh,5dh mov 4eh,5eh mov 4fh,5

35、fh mov 5fh,datal ;裝入被測周期t的數(shù)據(jù)mov 5eh,datahlcall divd1 ;調(diào)用除法子程序計算得到相位差值mov 35h,4fh ;壓縮bcd格式的相位差值存放在4fh4eh中,4fh中的為最低位 mov 34h,4ehlcall bcdst ;將二進制數(shù)據(jù)轉(zhuǎn)換為壓縮格式的bcd碼mov r0,#30hmov r1,#3fhmov r7,#04hmov 30h,#0mov 31h,#0lcall bcd 2bcd ;由壓縮bcd碼轉(zhuǎn)換為單字節(jié)bcd碼mov 78h,#16 ;相位差值存放在30h31h中,最低位在30h中,最高位在31h中mov 79h,30h

36、;內(nèi)存單元78h7ah是相位差值顯示緩沖區(qū),其中78h是符號位mov 7ah,31h chchu:lcalldisp ;調(diào)用顯示子程序 keycod:jb p1.7,miani1 ;查詢按鍵s1 lcall delay1 ;軟件延時消抖jnb p1.7,$ ;等待s1釋放cpl 2fh.0 ;取反標志位2 fh.0lcall delay2miani1: lcall delay1lcall delay1lcall delay1 ljmp mian1 ;繼續(xù)主程序循環(huán)(主程序段到此為此)*4.2.2 測量時間差、周期子程序sub1:movr4,#4 loop3:jnbp3.6,bzdjnz2fh.

37、1,lccjnzr4,#4,savejmpctsave:movdatal,tl0movdatah,th0movdata2l,tl1movdata2h,th1 ct:clrtr0clrtr1clr2fh.1subr4,#1jmplcbz:setb2fh.1lc:cjnzr4,#0,loop3ret *4.2.3 中值濾波子程序zzlb: pop apop r0mov r0,#samp1a mov a,#01h mov r0,a inc r0 mov a,#51h mov r0,a inc r0 mov a,#50h mov r0,a inc r0 mov a,#02h mov r0,a inc

38、r0 mov a,#56h mov r0, a inc r0 mov a, #12h mov r0, a inc r0 mov a, #02h mov r0, a inc r0 mov a, #56h mov r0, a inc r0 mov a, #10h mov r0, a inser: mov r2, #02h sort: mov a, r2 mov r3, a mov r0, #samp1a loop: mov a, r0 inc r0 mov r1, a clr c subb a, r0 jc done mov a, r0 dec r0 xch a, r0 inc r0 mov r0

39、, a done: djnz r3, loop djnz r2, sort inc r0 mov a, r0 mov r0, #samp1a inc r0 inc r0 mov a, r0 mov 20h, a push r0push aret* 4.2.4 計算頻率子程序proc zhunbeizhouqi ;為了計算頻率將被除數(shù)1000000裝入4ch4fh單元中zhunbeizhouqi: ;將除數(shù)(周期t)裝入5eh51fh單元中 mov 5fh, datalmov 5eh, datahmov 4fh, #40h ;低位mov 4eh, #42hmov 4dh, #0fhmov 4ch

40、, #00hretnop ;pc值出錯處理nop ;空操作nop ;空操作ljmp mian ;重新復(fù)位啟動end*proc divd1divd1: push acc ;現(xiàn)場保護push pswpush bmov a,r2jnz div1 ;判斷r2是否為0,若r2為0,則執(zhí)行err0r1;若r2不為0,則執(zhí)行除法div1err0r1: mov a, r1 jnz div1 ;判斷r1是否為0,若r1為0,則執(zhí)行err0r,若r1不為0,則執(zhí)行除法div1div1: mov a, r5clr csubb a, r1mov a, r6subb a, r2jnc dvof ;r6r5-r2:r1,

41、夠減,轉(zhuǎn)dvof(溢出);不夠減轉(zhuǎn)div2div2: mov r7, #10h ;置循環(huán)次數(shù)16clr c ;c清零rol r3 ;被除數(shù)低16位左移1位rol r4div3: rol r5rol r6mov r0, c ;將r6最高位放入r0中保存mov a, r5;做r6:r5-r2:r1的減法,結(jié)果放入r6:r5中clr csubb a, r1mov r5, r5mov a, r6subb a, r2mov r6, ajnc div4 ;c=0,說明夠減,在r3最低位上商1mov a, r5 ;c=1,說明不夠減,恢復(fù)余數(shù)clr c add a, r1mov r5, amov a, r6

42、addc a, r2mov r6, aclr c ;不夠減,商0ljmp div5div4: setb c ;夠減,商1div5: rol r3rol r4dec r7cjnz div3 ;r7不等于0,說明除法未完,轉(zhuǎn)div3繼續(xù)除clr c ;清c,表示除法已除完dne: pop b ;現(xiàn)場恢復(fù)pop pswpop accretdvof: mov b, #0ffh ;溢出標志ljmp doneerr0r: ret ;若除數(shù)為0,結(jié)束運算*proc bcdstbcdst: push pswpush acc; 現(xiàn)場保護push bmov a,r4;二進制整數(shù)送amov b,#100 ;十進制數(shù)

43、100送bdiv a b ;(a)/100,確定百位上的數(shù)mov r5,a ;百位數(shù)存入r5中mov a,#10 ;將10送a中xch a,b ;將10和b中余數(shù)互換div a b ;(a)/10,得十、個位上的數(shù),商是十位,余數(shù)是個位swap a ;將a中商(十位數(shù))移入商4位add a,b ;將b中余數(shù)(個位數(shù))加到a中mov r4,a ;將十、個位bcd碼存入r4中pop b ;恢復(fù)現(xiàn)場pop accpop pswret*proc bcd 2bcdbcd 2bcd:push psw;現(xiàn)場保護push accmov a,r5anl a,#0fhmov r5,a ;r5中存高位單字節(jié)bcd碼

44、mov r3,r4anl a,#f0h;屏蔽低4位mov r4,a ;中間位壓縮bcd碼轉(zhuǎn)為的單字節(jié)bcd碼存入r4中mov a,r3swap a;交換中間位和低位anl a,#f0h;屏蔽低4位swap amov r3,a;低位存入r3中push accpush psw*4.2.5 計算相位差子程序proc x360 x3600:mov60h,data2lmov61h,data2hmov62h,68hmov63h,01hret*proc mulnm:mulnm: push a;push bpush pswmov a, r0mov b, r2mul abmov r6, amov r7, bmov a, r1mov b, r2mul abmov r4, amov r5, bmov a, r7add a, r4mov r7, amov a, r5addc a, #00hmov r5, amov a, r0mov b, r3mul abmov r3, amov r4, bmov a, r7add a, r3mov r7, amov a, r5addc a, r4mov r5, amov a, r1mov b,

溫馨提示

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

評論

0/150

提交評論