采用MCS-51單片機實(shí)現CPFSK調制
如果波形調制是單一頻率的,調制程序可以非常簡(jiǎn)單,只要編制順序程序就可以了。如果波形調制的頻率是變化的,就需要根據串行數據“0”或“1”的變化來(lái)改變每個(gè)時(shí)段的延時(shí)時(shí)間。在MCS-51單片機中,串行數據流是由軟件設置,硬件自動(dòng)產(chǎn)生,由TXD自動(dòng)發(fā)出的。TXD的高低電平變化可以通過(guò)單片機的程序測得。根據這一特性,可以通過(guò)不斷檢測TXD的高低電平變化來(lái)決定每個(gè)時(shí)段的延時(shí)時(shí)間。程序流程如圖5所示。
從流程圖5可以看出,在每個(gè)相位中,單片機將Px.x置“1”或置“0”后都要判斷TXD的電平,以確定相應延時(shí)的機器周期數。在某個(gè)相位TXD電平開(kāi)始改變時(shí),程序就從這個(gè)相位改變脈沖的延時(shí)時(shí)間,而程序中相位執行的次序并不改變。所以在TXD的電平改變時(shí),兩種頻率的正弦波信號在同一個(gè)相位上交接。因此,FSK調制相位是連續的,見(jiàn)圖6。
編程時(shí)必須注意,程序不論走哪條分支,所用的機器周期數都必須跟蹤計算,最終所用的機器周期數必須符合表2的要求。另外,在進(jìn)行FSK調制前應該增加一定長(cháng)度的980Hz 的載波信號(PWM980)作為前導碼信號。在數據發(fā)送完之后還應該增加一定長(cháng)度的PWM980作為停止位,因為單片機的TI標志出現在數據幀停止位的前沿。
4 波形的優(yōu)化
圖4中B端的波形也就是帶有鋸齒的正弦波,是PWM調制經(jīng)一階濾波后產(chǎn)生的波形。該波形已具有了正弦波的大致形狀,但鋸齒也很明顯,它和圖2的階梯波有些相似。通過(guò)前面的分析和表1的比較知道,增加PWM調制的時(shí)段分割數可以提高正弦波的波形精確度。
對于時(shí)段分割應該選擇一個(gè)適當的數字。分割太粗,波形的失真就會(huì )嚴重,給濾波帶來(lái)困難;分割過(guò)細會(huì )增加程序所占的空間。另一方面,時(shí)段的分割也不可能無(wú)限加大,因為采用軟件延時(shí)時(shí),延時(shí)時(shí)間的最高分辨率為1個(gè)機器周期。從表2也可以看到,在第4和第6時(shí)段出現了最小脈寬為1個(gè)機器周期的情況,而在第5時(shí)段甚至出現了只有高電平?jīng)]有低電平的現象。如果繼續細分時(shí)段,將會(huì )出現更多的只有一種電平的脈寬而另一種電平脈寬長(cháng)度為0的現象。按上述等分時(shí)段的方法,如果不提高單片機的晶振頻率,20個(gè)時(shí)段的分割已達到極限。所以不能單純地采用細分時(shí)段的方法來(lái)提高波形的精度。
從圖4中帶有鋸齒的正弦波可以看出,鋸齒的大小在整個(gè)波形上不是處處相等的,波峰左側的鋸齒要比右側的鋸齒小得多。
從圖2的階梯波形可以看出,當階梯波的精度最高時(shí),應該是電壓的步長(cháng)或時(shí)間的步長(cháng)之一為最小,而不是電壓步長(cháng)與時(shí)間步長(cháng)之和為最小,當然更不能是電壓或時(shí)間的任何步長(cháng)為0。同樣,用脈寬波表示正弦波時(shí),精度最高的表示方法應該是“0、1”之一的脈寬為最小,而不一定是“0、1”脈寬之和為最小,也不能是“0、1”之一的脈寬為0。
評論