《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 采用MCS-51單片機(jī)實(shí)現(xiàn)CPFSK調(diào)制

采用MCS-51單片機(jī)實(shí)現(xiàn)CPFSK調(diào)制

2008-12-23
作者:周金陵 蔣元廣 馬貞立

  摘? 要: 介紹一種用MCS-51單片機(jī)直接產(chǎn)生FSK信號(hào)的方法:首先采用PWM調(diào)制方法產(chǎn)生正弦波" title="正弦波">正弦波信號(hào),再根據(jù)串行口輸出的高、低電平產(chǎn)生FSK信號(hào)。

  關(guān)鍵詞: 頻移鍵控(FSK) 脈沖寬度調(diào)制(PWM)? 機(jī)器周期" title="機(jī)器周期">機(jī)器周期? 連續(xù)相位

?

  在遙測(cè)遙控系統(tǒng)中,數(shù)據(jù)的調(diào)制和解調(diào)是經(jīng)常遇到的問題。一些自報(bào)測(cè)站不接收遠(yuǎn)方的遙控命令,只是定時(shí)采集參數(shù)或在參數(shù)變化時(shí)采集,并自動(dòng)將采集的參數(shù)發(fā)往監(jiān)控中心。這些遙測(cè)站不一定包含解調(diào)功能,但信號(hào)調(diào)制是遙測(cè)站的必要功能。

  在水情自動(dòng)測(cè)報(bào)系統(tǒng)中,數(shù)據(jù)傳輸大量采用超短波無線電臺(tái)。用模擬電臺(tái)傳輸數(shù)字信號(hào)時(shí),調(diào)制方法多采用FSK。水情自動(dòng)測(cè)報(bào)規(guī)范推薦的標(biāo)準(zhǔn)為CCITT V.21,即:數(shù)據(jù)串行速率為300波特率,數(shù)據(jù)電平“1”調(diào)制頻率為980Hz,數(shù)據(jù)電平“0”調(diào)制頻率為1180Hz。

  調(diào)制解調(diào)的通常方法是采用專用的調(diào)制解調(diào)接口芯片,如MC145442、XR2211、XR2206等。采用專用調(diào)制解調(diào)接口芯片不僅增加了設(shè)備成本,而且芯片質(zhì)量直接影響測(cè)控設(shè)備的性能。就一般而言,設(shè)備中的元器件越多,設(shè)備的可靠性越低。因此,在滿足系統(tǒng)功能的前提下,應(yīng)盡可能減少設(shè)備中元器件的品種和數(shù)量。遙測(cè)遙控設(shè)備的信號(hào)調(diào)制解調(diào)是非常重要的環(huán)節(jié),如果能夠減少或省去調(diào)制解調(diào)專用接口芯片,將對(duì)提高設(shè)備的穩(wěn)定性和可靠性大有好處。

  目前,幾乎所有的遙測(cè)設(shè)備都使用單片機(jī),其中MCS-51系列單片機(jī)又占了很大比例。本文將以MCS-51單片機(jī)為例,說明利用單片機(jī)的軟件調(diào)制產(chǎn)生標(biāo)準(zhǔn)的FSK信號(hào)。

1 正弦波的調(diào)制

  單片機(jī)的輸出接口一般只能輸出邏輯“0、1”,即0、Vcc兩種電位。要想得到FSK信號(hào),首先要得到正弦波信號(hào),再根據(jù)串行數(shù)據(jù)的變化產(chǎn)生FSK信號(hào)。

  從單片機(jī)獲得正弦波,最簡單的方法就是利用方波濾波得到正弦波。由于單片機(jī)的脈沖輸出只有正電平,沒有負(fù)電平,方波負(fù)半周,單片機(jī)無法產(chǎn)生負(fù)脈沖。因此產(chǎn)生的信號(hào)波形應(yīng)該疊加一個(gè)直流正電平,使信號(hào)波形完全處在正電平一側(cè)。如圖1所示。

?

?

  然而,方波是由基波和一系列高次諧波組成。如果圖1可以用函數(shù)f(x)表示,將函數(shù)f(x)進(jìn)行傅里葉級(jí)數(shù)展開可以得到:

  

  從式(1)可以看出,接近基波的諧波成分比重較大。采用低通濾波器濾波時(shí),接近基波的諧波成分難以濾去,為了減小波形的失真往往需要增大濾波的強(qiáng)度,這樣在減小波形失真的同時(shí),基波的損失也隨之增大。

  如果采用正弦波脈寬" title="脈寬">脈寬調(diào)制(PWM)可以得到比較滿意的結(jié)果。PWM調(diào)制可以利用“0、1”變化的脈沖信號(hào)調(diào)制出模擬信號(hào)。

  在計(jì)算機(jī)中,對(duì)連續(xù)曲線進(jìn)行數(shù)字化處理時(shí),通常將連續(xù)曲線用階梯圖形表示,當(dāng)階梯的步長足夠小的時(shí)候,所表示的曲線被認(rèn)為是精確的。圖2的上圖表示了不同時(shí)段內(nèi),電壓的不同階梯。

  但是單片機(jī)輸出接口不能產(chǎn)生變化的電平,即不能產(chǎn)生如圖2所示的電壓階梯,所能做的只能是“0、1”電平的時(shí)間變化,即PWM調(diào)制。

?

?

  所謂正弦波PWM調(diào)制就是調(diào)制出的波形盡可能接近正弦波,也就是傅里葉級(jí)數(shù)中的基波比重盡可能大,高次諧波的比重盡可能小。對(duì)于圖2來說,在調(diào)制過程中使每個(gè)時(shí)段內(nèi)下圖的陰影面積與上圖對(duì)應(yīng)部分的陰影面積相等。在用PWM調(diào)制正弦波時(shí),要求時(shí)段的分割是偶數(shù),因?yàn)檎也▓D形是一種對(duì)稱圖形。

  對(duì)于一個(gè)周期函數(shù)可以進(jìn)行傅里葉級(jí)數(shù)的展開,級(jí)數(shù)的一般表達(dá)式為:

????

  當(dāng)按上述方法進(jìn)行PWM調(diào)制時(shí),圖2下圖函數(shù)傅里葉級(jí)數(shù)的an均為0,當(dāng)n為偶數(shù)時(shí),bn也為0。所以正弦波PWM調(diào)制的傅里葉級(jí)數(shù)為:

  

  根據(jù)階梯圖形表示連續(xù)曲線時(shí),階梯越細(xì)圖形越精確的原理,認(rèn)為用PWM調(diào)制正弦波時(shí),時(shí)段分割越多,調(diào)制出的正弦波越精確。如果不考慮級(jí)數(shù)中的直流成分,可以得到不同時(shí)段的諧波系數(shù),如表1所示。

?

?

  從表1可以看出,諧波系數(shù)隨著諧波次數(shù)的增加逐漸減小,但在n=K-1處系數(shù)會(huì)突然增大,之后又逐漸減小。而這種突然增大的比值隨著時(shí)段分割數(shù)的增加總體呈下降趨勢(shì)。

  另一方面,突然增大的比值,隨著時(shí)段分割數(shù)的增加而向高次諧波方向移動(dòng)。對(duì)這種遠(yuǎn)離基波的高次諧波,只要采用低通濾波器就能很容易將其去除,我們所關(guān)心的是如何盡可能減小基波附近諧波的系數(shù)。

  從表1可以看出,隨著時(shí)段分割數(shù)的增加,離基波較近的諧波系數(shù)也呈下降趨勢(shì)。所以通過對(duì)時(shí)段的細(xì)分,信號(hào)的高次諧波,特別是接近基波的諧波成分會(huì)進(jìn)一步減少。

2 信號(hào)輸出

  由于采用了正弦波PWM調(diào)制,單片機(jī)輸出信號(hào)只要經(jīng)過簡單的低通濾波器就可以得到平滑的正弦波信號(hào)。圖3中的74HC04是CMOS反相器,這里它起緩沖驅(qū)動(dòng)作用。

?

?

????因?yàn)閱纹瑱C(jī)的P1~P3口是準(zhǔn)雙向口。作為輸出口時(shí)低電平有一定的吸收電流能力,但高電平" title="高電平">高電平輸出電流的能力很小,這就使輸出信號(hào)的開關(guān)特性有較大差異。而CMOS反相器的輸出采用P溝道和N溝道MOS管構(gòu)成的對(duì)稱互補(bǔ)結(jié)構(gòu),使輸出信號(hào)的“0、1”有相同的開關(guān)特性,能保證低電平的吸收電流和高電平的輸出電流相同。圖3中R1、R2為1kΩ的電阻,C1、C2、C3為0.1μF的獨(dú)石電容。當(dāng)時(shí)段分割為20,正弦波信號(hào)頻率為1180Hz時(shí),圖3中A、B、C三個(gè)端口的輸出波形如圖4所示。

?

?

3 CPFSK調(diào)制

  軟件調(diào)制是將正弦波分為若干個(gè)時(shí)段,并計(jì)算出每個(gè)時(shí)段內(nèi)高電平和低電平所占用的時(shí)間,這些時(shí)間在單片機(jī)中用軟件延時(shí)實(shí)現(xiàn)。

  為了敘述方便,首先定義幾個(gè)符號(hào):

  φ——軟件調(diào)制所在的相位;

  T——相位角為φ時(shí)對(duì)應(yīng)時(shí)段的機(jī)器周期總和;

  T1——相位角為φ時(shí)對(duì)應(yīng)時(shí)段的高電平機(jī)器周期;

  T0——相位角為φ時(shí)對(duì)應(yīng)時(shí)段的低電平機(jī)器周期;

  T1180——相位角為φ時(shí)頻率為1180Hz正弦波對(duì)應(yīng)時(shí)段的機(jī)器周期總和;

  T980——相位角為φ時(shí)頻率為980Hz正弦波對(duì)應(yīng)時(shí)段的機(jī)器周期總和。

  根據(jù)圖2中面積相等,即S1=S2的要求可以得到:

  

  如果單片機(jī)的晶振" title="晶振">晶振頻率為11.0592MHz,完成頻率為980Hz的正弦波調(diào)制需要=940個(gè)機(jī)器周期,完成頻率為1180Hz的正弦波調(diào)制需要=781個(gè)機(jī)器周期。

  20等分能夠?qū)?40整除,得到每個(gè)時(shí)段的機(jī)器周期數(shù)T980=47。但=39余1,如果將余數(shù)1丟掉,就會(huì)造成頻率為1180Hz的正弦波頻率誤差變大。實(shí)際編程時(shí)可以將余數(shù)1插補(bǔ)在20個(gè)時(shí)段中的某個(gè)時(shí)段中,也就是19個(gè)時(shí)段為T1180=39個(gè)機(jī)器周期,1個(gè)時(shí)段為T1180=40個(gè)機(jī)器周期。T0和T1的計(jì)算如表2所示。

?

?

  如果波形調(diào)制是單一頻率的,調(diào)制程序可以非常簡單,只要編制順序程序就可以了。如果波形調(diào)制的頻率是變化的,就需要根據(jù)串行數(shù)據(jù)“0”或“1”的變化來改變每個(gè)時(shí)段的延時(shí)時(shí)間。在MCS-51單片機(jī)中,串行數(shù)據(jù)流是由軟件設(shè)置,硬件自動(dòng)產(chǎn)生,由TXD自動(dòng)發(fā)出的。TXD的高低電平變化可以通過單片機(jī)的程序測(cè)得。根據(jù)這一特性,可以通過不斷檢測(cè)TXD的高低電平變化來決定每個(gè)時(shí)段的延時(shí)時(shí)間。程序流程如圖5所示。

?

?

  從流程圖5可以看出,在每個(gè)相位中,單片機(jī)將Px.x置“1”或置“0”后都要判斷TXD的電平,以確定相應(yīng)延時(shí)的機(jī)器周期數(shù)。在某個(gè)相位TXD電平開始改變時(shí),程序就從這個(gè)相位改變脈沖的延時(shí)時(shí)間,而程序中相位執(zhí)行的次序并不改變。所以在TXD的電平改變時(shí),兩種頻率的正弦波信號(hào)在同一個(gè)相位上交接。因此,F(xiàn)SK調(diào)制相位是連續(xù)的,見圖6。

?

?

  編程時(shí)必須注意,程序不論走哪條分支,所用的機(jī)器周期數(shù)都必須跟蹤計(jì)算,最終所用的機(jī)器周期數(shù)必須符合表2的要求。另外,在進(jìn)行FSK調(diào)制前應(yīng)該增加一定長度的980Hz 的載波信號(hào)(PWM980)作為前導(dǎo)碼信號(hào)。在數(shù)據(jù)發(fā)送完之后還應(yīng)該增加一定長度的PWM980作為停止位,因?yàn)閱纹瑱C(jī)的TI標(biāo)志出現(xiàn)在數(shù)據(jù)幀停止位的前沿。

4 波形的優(yōu)化

  圖4中B端的波形也就是帶有鋸齒的正弦波,是PWM調(diào)制經(jīng)一階濾波后產(chǎn)生的波形。該波形已具有了正弦波的大致形狀,但鋸齒也很明顯,它和圖2的階梯波有些相似。通過前面的分析和表1的比較知道,增加PWM調(diào)制的時(shí)段分割數(shù)可以提高正弦波的波形精確度。

  對(duì)于時(shí)段分割應(yīng)該選擇一個(gè)適當(dāng)?shù)臄?shù)字。分割太粗,波形的失真就會(huì)嚴(yán)重,給濾波帶來困難;分割過細(xì)會(huì)增加程序所占的空間。另一方面,時(shí)段的分割也不可能無限加大,因?yàn)椴捎密浖訒r(shí)時(shí),延時(shí)時(shí)間的最高分辨率為1個(gè)機(jī)器周期。從表2也可以看到,在第4和第6時(shí)段出現(xiàn)了最小脈寬為1個(gè)機(jī)器周期的情況,而在第5時(shí)段甚至出現(xiàn)了只有高電平?jīng)]有低電平的現(xiàn)象。如果繼續(xù)細(xì)分時(shí)段,將會(huì)出現(xiàn)更多的只有一種電平的脈寬而另一種電平脈寬長度為0的現(xiàn)象。按上述等分時(shí)段的方法,如果不提高單片機(jī)的晶振頻率,20個(gè)時(shí)段的分割已達(dá)到極限。所以不能單純地采用細(xì)分時(shí)段的方法來提高波形的精度。

  從圖4中帶有鋸齒的正弦波可以看出,鋸齒的大小在整個(gè)波形上不是處處相等的,波峰左側(cè)的鋸齒要比右側(cè)的鋸齒小得多。

  從圖2的階梯波形可以看出,當(dāng)階梯波的精度最高時(shí),應(yīng)該是電壓的步長或時(shí)間的步長之一為最小,而不是電壓步長與時(shí)間步長之和為最小,當(dāng)然更不能是電壓或時(shí)間的任何步長為0。同樣,用脈寬波表示正弦波時(shí),精度最高的表示方法應(yīng)該是“0、1”之一的脈寬為最小,而不一定是“0、1”脈寬之和為最小,也不能是“0、1”之一的脈寬為0。

  從圖4中可以看出,波峰的左側(cè)恰好是“0、1”之一的脈寬較小的地方,這里的鋸齒較小。波峰的右側(cè)是“0、1”脈寬比較平均的地方,這里的鋸齒較大。

  根據(jù)上述分析知道,要想提高波形的精度就要對(duì)時(shí)段細(xì)分,細(xì)分的原則就是“0、1”之一的脈寬為最小。這樣每個(gè)時(shí)段就不會(huì)是均等的。在單片機(jī)中,脈沖的延時(shí)的最小時(shí)間是一個(gè)機(jī)器周期。如果PWM調(diào)制的是單一頻率的正弦波,“0、1”之一的最小脈寬就是一個(gè)機(jī)器周期。但是在進(jìn)行FSK調(diào)制時(shí),由于在執(zhí)行每個(gè)脈寬延時(shí)時(shí)要對(duì)TXD的電平進(jìn)行判斷,一個(gè)機(jī)器周期顯然不夠用。如果某個(gè)時(shí)段的高電平脈寬T1180(H)=3,T980(H)=4,根據(jù)圖5的程序流程,具體的程序是:

  

?

  從上面程序可以看出,如果某個(gè)時(shí)段T1180(X)≠T980(X),T1180(X)的最小值為3個(gè)機(jī)器周期,T980(X)的值則是根據(jù)T1180(X)所在相位做相應(yīng)的增加。當(dāng)然,當(dāng)T1180(X)=T980(X)時(shí),T1180(X)和T980(X)的最小值可以是1個(gè)機(jī)器周期。

  單片機(jī)的晶振頻率為11.0592MHz,采用這種方式調(diào)制,時(shí)段分割為52個(gè),調(diào)制的結(jié)果如圖7所示。比較圖7與圖4可以發(fā)現(xiàn),波峰左側(cè)變化不大,波峰右側(cè)的鋸齒卻大大減小了,整個(gè)波形的精度有了很大提高。

?

?

  采用單片機(jī)的輸出接口直接調(diào)制產(chǎn)生CPFSK信號(hào),充分利用了單片機(jī)的資源,節(jié)省了元器件,同時(shí)也提高了信號(hào)頻率的穩(wěn)定性和靈活性。因?yàn)镕SK的頻率只與單片機(jī)的晶振和軟件有關(guān),晶振的頻率是非常穩(wěn)定的。采用軟件編程調(diào)制可以根據(jù)信號(hào)的需要進(jìn)行靈活多樣的變化,而不用擔(dān)心專用元器件的供貨問題和元器件的質(zhì)量問題。該調(diào)制方式已在全國許多地區(qū)的水情自動(dòng)測(cè)報(bào)系統(tǒng)中應(yīng)用,運(yùn)行結(jié)果是非常理想的。

?

參考文獻(xiàn)

1 ALAN V.OPPENHEIM? SIGNALS & SYSTEMS? Prentice? -Hall Inc.1997

2 張德民.數(shù)據(jù)通信.北京:科學(xué)技術(shù)文獻(xiàn)出版社, 1997

3 白駒珩.單片計(jì)算機(jī)及其應(yīng)用.成都:電子科技大學(xué)出版社,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。