基于AT89S52型單片機(jī)的紅外無線PPM發(fā)射機(jī)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
在工業(yè)和生活環(huán)境中,便攜式信息終端設(shè)備的出現(xiàn)加速了無線數(shù)字通信線路和局域網(wǎng)的引進(jìn),然而,由于無線電的局限性,使它在無線高速數(shù)據(jù)鏈路應(yīng)用方面受阻。在此情況下紅外(IR)無線光通信得到人們的重視[1]。作為一種室內(nèi)短距離通信的傳輸介質(zhì),IR具有勝過無線電的顯著優(yōu)點(diǎn):IR有巨大的帶寬且不需許可證,可以進(jìn)行高速數(shù)據(jù)傳輸;IR不穿透墻壁,因而消除了在不同房間進(jìn)行通信時(shí)可能帶來的干擾,而且通信時(shí)不容易被偵聽,提高了通信的安全性;IR探測器的尺寸比IR無的波長大得多,避免了多徑衰落;IR可強(qiáng)度調(diào)制,IR通信設(shè)備比無線電通信設(shè)備要便宜簡單得多。
對室內(nèi)無線電局域網(wǎng),要求紅外數(shù)據(jù)鏈路的峰值-平均光功率比高,高峰值功率可提高系統(tǒng)的靈敏度,低平均功率可滿足人眼安全和低功耗的要求,脈沖位置調(diào)制(PPM)通信方式就符合這些要求,目前,PPM已被IEEE無列入無線局域網(wǎng)IEEE802.11標(biāo)準(zhǔn)。用純硬件設(shè)計(jì)實(shí)現(xiàn)PPM光發(fā)射機(jī)是比較復(fù)雜和困難的,筆者利用功能強(qiáng)大的AT89S52型單片機(jī)和編程軟件VC++設(shè)計(jì)了一種基于計(jì)算機(jī)串口和的紅外無線PPM發(fā)射機(jī)。AT89S52通過串口從計(jì)算機(jī)獲取數(shù)據(jù),編碼得到脈沖寬度調(diào)制(PWM)信號后通過輸出端口輸出,輸出的PWM信號經(jīng)過波形轉(zhuǎn)換電路得到PPM電脈沖信號,再通過光源驅(qū)動(dòng)電路轉(zhuǎn)換為PPM光脈沖信號,從而完成紅外無線PPM發(fā)射機(jī)的設(shè)計(jì)。
2 PPM信號格式
PPM采用斷續(xù)的周期性光脈沖作為載波,調(diào)制信號受到信源二進(jìn)制符號地控制,脈沖的時(shí)間位置隨之發(fā)生變化而傳遞信息,PPM信號結(jié)構(gòu)如圖1所示,在數(shù)字PPM通信中,同步是至關(guān)重要的。為了實(shí)現(xiàn)幀同步,應(yīng)在傳送信息幀之前發(fā)送一次幀同步頭,為接收端提供同步信息,同時(shí)在信息幀的前面和后面分別安排2個(gè)標(biāo)志幀以表示信息的開始和結(jié)束,這樣接收機(jī)捕獲到同步信號和起始標(biāo)志符后,開始解調(diào)隨后的脈沖信號,直到接收到結(jié)束標(biāo)志,表明數(shù)據(jù)接收完畢。
每一個(gè)信息幀又分為信息段和保護(hù)段(由光源和信道的特性決定),共M個(gè)時(shí)隙,每個(gè)時(shí)隙的寬度為Ts,其中前Q個(gè)時(shí)隙為信息段TQ=(QTs),后D個(gè)時(shí)隙為保護(hù)段TD=(DTs)。對Q元PPM,平均光功率為Pa,光脈沖峰值功率為QPa,又一幀表示log2Q位的二進(jìn)制信息,因此數(shù)據(jù)傳輸速率R為
R=log2Q/T=log2Q/MTs=Log2Q/(Q+D)Tsbit/s (1)
其中,T為一幀的時(shí)間長度。
在T不變的條件下,PPM的傳信率和峰值功率隨時(shí)隙數(shù)Q增大,但是Q值過大,也就是一幀分成的時(shí)隙數(shù)過多,會(huì)給信號的傳輸和解調(diào)帶來困難,信息和Q值成對數(shù)關(guān)系,例如,當(dāng)Q=256時(shí),一個(gè)脈沖表示8比特信息,而Q=512表示9比特信息,由此可見,Q較大時(shí),脈沖攜帶的信息量隨Q值的增大并沒有明顯增加,綜合考慮以上情況和實(shí)際設(shè)計(jì)需要,筆者采用Q=16的PPM調(diào)制方式,時(shí)隙寬度Ts設(shè)為15μs。
3 AT89S52的特點(diǎn)
AT89S52是一種低功耗、高性能CMOS 8位單片機(jī),片內(nèi)含8KB ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器、該器件采用Atmel公司的高密度、非易失性存儲(chǔ)技術(shù)制造、兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)。片內(nèi)集成了通用的8位CPU和ISP Flash為存儲(chǔ)單元,可為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、高性價(jià)比的解決方案。
TA89S52具有如下特點(diǎn):40個(gè)引腳,8KB Flash片內(nèi)程序存儲(chǔ)器,256 Bytes的隨機(jī)存儲(chǔ)數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,1個(gè)6向量2級中斷結(jié)構(gòu);3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路和片內(nèi)時(shí)鐘振蕩器。
此外,AT89S52設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置的省電模式。在空閑模式下,CPU暫停工作,而RAM、定時(shí)計(jì)數(shù)器、串行口、外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),禁止電路的其他功能直至外中斷激活或硬件復(fù)位。同時(shí)該電路還具有PDIP、TQFP和PLCC等封裝形式,以適應(yīng)不同產(chǎn)品的設(shè)計(jì)要求。
4 硬件設(shè)計(jì)
紅外線PPM發(fā)射機(jī)由AT89S52型單片機(jī)與計(jì)算機(jī)的串行通信電路,PWM到PPM波形轉(zhuǎn)換電路和光源驅(qū)動(dòng)電路構(gòu)成,其系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
4.1 串行通信電路
為了能使單片機(jī)和計(jì)算機(jī)通信,必須使其遵循相同的通信協(xié)議,AT89C51的串行口輸入/輸出為TTL邏輯電平,抗干擾性較差,而計(jì)算機(jī)的串行接口是符合EIA RS-232C規(guī)范的外部總線標(biāo)準(zhǔn)接口,具有較強(qiáng)的抗干擾性,為了解決電平不一致的矛盾,該系統(tǒng)設(shè)計(jì)選用了Maxim公司的MAX232型電平轉(zhuǎn)換器實(shí)現(xiàn)電平轉(zhuǎn)換,MAX232屬于通用串行接收/發(fā)送驅(qū)動(dòng)器,其外圍電路非常簡單,只需外接4個(gè)0.1μF的電容器。
AT89S52具有串行通信接口(SCI),SCI是能與計(jì)算機(jī)等外設(shè)通信的全雙工異步系統(tǒng),AT89S52與計(jì)算機(jī)采用RS-232C接口方式,這種方式下,SCI采用標(biāo)準(zhǔn)的不歸零(NRZ)格式,開始是1位起始位,以邏輯“0”表示,接著是8位數(shù)據(jù)位,最后是1位停止位,以邏輯“1”表示故一次傳送據(jù)長度為10比特,計(jì)算機(jī)發(fā)送數(shù)據(jù),AT89S52接收數(shù)據(jù),AT89S52將接收到的數(shù)據(jù)進(jìn)行PWM編碼,得到幀周期固定,而脈沖寬度隨外部信號不斷變化的PWM信號,然后通過P1.0端口輸出。
4.2 波形轉(zhuǎn)換電路
經(jīng)過單片機(jī)編碼輸出的PWM信號經(jīng)過一個(gè)下降沿觸發(fā)器即可得到PPM脈沖信號,波形轉(zhuǎn)換如圖3所示[7]。當(dāng)P1.0端口輸出的信號由高電平變?yōu)榈碗娖綍r(shí),觸發(fā)器的輸出端產(chǎn)生所需的PPM脈沖信號,其脈沖寬度由外部定時(shí)電路決定。
4.3 驅(qū)動(dòng)電路
對于無線紅外通信系統(tǒng)來說,半導(dǎo)體發(fā)光二極管(LED)是可以選用的最佳光源,筆者采用帶有溫度補(bǔ)償特性的射極耦合LED驅(qū)動(dòng)電路[8],該電路看上去像一個(gè)線性差分放大器,實(shí)際上是一個(gè)電流開關(guān)電路,PPM信號加在驅(qū)動(dòng)電路的輸入端,當(dāng)PPM信號的電位低于設(shè)定的參考電位時(shí),LED無脈沖電流通過,LED不發(fā)光;反之,脈沖電流通過LED而使LED發(fā)光。如圖4所示,注入電流IF相等的條件下,LED的輸出光功率P隨著溫度的上升而下降,所以設(shè)計(jì)中采用溫度補(bǔ)償電路進(jìn)行溫度補(bǔ)償,當(dāng)溫度升高時(shí),LED的注入電流也隨之增加,從而補(bǔ)償LED的功率變化。
5 軟件設(shè)計(jì)
5.1 計(jì)算機(jī)軟件編程
計(jì)算機(jī)的主要作用是通過串口傳送源數(shù)據(jù)給單片機(jī)。
利用Visual C++編制串行通信程序一般有3種方法:調(diào)用Microsoft Win32應(yīng)用程序接口(API)提供的串行通信函數(shù),利用VC++的MFC類庫函數(shù)實(shí)現(xiàn);用Active X通信控件(MSComm)開發(fā)串口通信程序,筆者利用VC++提供的MSComm控件來實(shí)現(xiàn)計(jì)算機(jī)與單片機(jī)之間的串行通信,利用VC++的通信控件MSComm進(jìn)行軟件設(shè)計(jì)只需對串口進(jìn)行簡單的設(shè)置即可。程序?qū)崿F(xiàn)非常簡單,結(jié)構(gòu)清晰,在Windows環(huán)境下,串口是系統(tǒng)資源的一部分,應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向系統(tǒng)提出資源申請要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。
5.2 單片機(jī)軟件編程
單片機(jī)的主要作用是從發(fā)送端(計(jì)算機(jī))接收數(shù)據(jù),并對接收到的數(shù)據(jù)進(jìn)行PWM編碼,然后通過輸出端口輸出,單片機(jī)部分的編程主要由串口初始化子函數(shù),接收數(shù)據(jù)子函數(shù)和PWM信號發(fā)送子函數(shù)組成。
5.2.1 串口初始化子函數(shù)
使用串口之前,應(yīng)動(dòng)其進(jìn)行初始化,初始化程序如下:
5.2.2 接收數(shù)據(jù)子函數(shù)
接收數(shù)據(jù)流程如圖5所示,程序如下:
5.2.3 PWM發(fā)送信號子函數(shù)
PWM信號發(fā)送包括發(fā)送PWM編碼后的同步頭、起始標(biāo)志符、接收的數(shù)據(jù)和結(jié)束標(biāo)志符、下面重點(diǎn)討論對接收的數(shù)據(jù)進(jìn)行編碼及發(fā)送,其流程如圖6所示,程序如下:
6 結(jié)束語
紅外通信為構(gòu)建高速寬帶室內(nèi)無線局域網(wǎng)提供了新的選擇。PPM的脈沖峰值功率與平均功率之比很高,可以有效減小平均輻射功率和提高接收靈敏度,筆者設(shè)計(jì)的紅外無線PPM發(fā)射機(jī)利用單片機(jī)實(shí)現(xiàn)PPM調(diào)制,具有電路結(jié)構(gòu)簡單、調(diào)試容易、可靠性高、精度高、成本低和功耗低的優(yōu)點(diǎn),由于設(shè)計(jì)中只采用了單只紅外LED作為光源,輸出功率不大,而且受輻射角的限制,通信具有方向性,可以考慮采用多只紅外LED構(gòu)成發(fā)射陣列來增加發(fā)射功率和輻射范圍。