基于AT89S52型單片機(jī)的紅外無(wú)線PPM發(fā)射機(jī)設(shè)計(jì)
1 引言
在工業(yè)和生活環(huán)境中,便攜式信息終端設(shè)備的出現(xiàn)加速了無(wú)線數(shù)字通信線路和局域網(wǎng)的引進(jìn),然而,由于無(wú)線電的局限性,使它在無(wú)線高速數(shù)據(jù)鏈路應(yīng)用方面受阻。在此情況下紅外(ir)無(wú)線光通信得到人們的重視[1]。作為一種室內(nèi)短距離通信的傳輸介質(zhì),ir具有勝過(guò)無(wú)線電的顯著優(yōu)點(diǎn):ir有巨大的帶寬且不需許可證,可以進(jìn)行高速數(shù)據(jù)傳輸;ir不穿透墻壁,因而消除了在不同房間進(jìn)行通信時(shí)可能帶來(lái)的干擾,而且通信時(shí)不容易被偵聽(tīng),提高了通信的安全性;ir探測(cè)器的尺寸比ir無(wú)的波長(zhǎng)大得多,避免了多徑衰落;ir可強(qiáng)度調(diào)制,ir通信設(shè)備比無(wú)線電通信設(shè)備要便宜簡(jiǎn)單得多。
本文引用地址:http://butianyuan.cn/article/21337.htm對(duì)室內(nèi)無(wú)線電局域網(wǎng),要求紅外數(shù)據(jù)鏈路的峰值-平均光功率比高,高峰值功率可提高系統(tǒng)的靈敏度,低平均功率可滿足人眼安全和低功耗的要求,脈沖位置調(diào)制(ppm)通信方式就符合這些要求,目前,ppm已被ieee無(wú)列入無(wú)線局域網(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ī)串口和的紅外無(wú)線ppm發(fā)射機(jī)。at89s52通過(guò)串口從計(jì)算機(jī)獲取數(shù)據(jù),編碼得到脈沖寬度調(diào)制(pwm)信號(hào)后通過(guò)輸出端口輸出,輸出的pwm信號(hào)經(jīng)過(guò)波形轉(zhuǎn)換電路得到ppm電脈沖信號(hào),再通過(guò)光源驅(qū)動(dòng)電路轉(zhuǎn)換為ppm光脈沖信號(hào),從而完成紅外無(wú)線ppm發(fā)射機(jī)的設(shè)計(jì)。
2 ppm信號(hào)格式
ppm采用斷續(xù)的周期性光脈沖作為載波,調(diào)制信號(hào)受到信源二進(jìn)制符號(hào)地控制,脈沖的時(shí)間位置隨之發(fā)生變化而傳遞信息,ppm信號(hào)結(jié)構(gòu)如圖1所示,在數(shù)字ppm通信中,同步是至關(guān)重要的。為了實(shí)現(xiàn)幀同步,應(yīng)在傳送信息幀之前發(fā)送一次幀同步頭,為接收端提供同步信息,同時(shí)在信息幀的前面和后面分別安排2個(gè)標(biāo)志幀以表示信息的開(kāi)始和結(jié)束,這樣接收機(jī)捕獲到同步信號(hào)和起始標(biāo)志符后,開(kāi)始解調(diào)隨后的脈沖信號(hà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)。對(duì)q元ppm,平均光功率為pa,光脈沖峰值功率為qpa,又一幀表示log2q位的二進(jìn)制信息,因此數(shù)據(jù)傳輸速率r為
r=log2q/t=log2q/mts=log2q/(q+d)tsbit/s (1)
其中,t為一幀的時(shí)間長(zhǎng)度。
在t不變的條件下,ppm的傳信率和峰值功率隨時(shí)隙數(shù)q增大,但是q值過(guò)大,也就是一幀分成的時(shí)隙數(shù)過(guò)多,會(huì)給信號(hào)的傳輸和解調(diào)帶來(lái)困難,信息和q值成對(duì)數(shù)關(guān)系,例如,當(dāng)q=256時(shí),一個(gè)脈沖表示8比特信息,而q=512表示9比特信息,由此可見(jiàn),q較大時(shí),脈沖攜帶的信息量隨q值的增大并沒(méi)有明顯增加,綜合考慮以上情況和實(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ù)擦寫(xiě)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)提供高靈活、高性?xún)r(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級(jí)中斷結(jié)構(gòu);3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(wdt)電路和片內(nèi)時(shí)鐘振蕩器。
此外,at89s52設(shè)計(jì)和配置了振蕩頻率可為0hz并可通過(guò)軟件設(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)器,其外圍電路非常簡(jiǎn)單,只需外接4個(gè)0.1μf的電容器。
at89s52具有串行通信接口(sci),sci是能與計(jì)算機(jī)等外設(shè)通信的全雙工異步系統(tǒng),at89s52與計(jì)算機(jī)采用rs-232c接口方式,這種方式下,sci采用標(biāo)準(zhǔn)的不歸零(nrz)格式,開(kāi)始是1位起始位,以邏輯“0”表示,接著是8位數(shù)據(jù)位,最后是1位停止位,以邏輯“1”表示故一次傳送據(jù)長(zhǎng)度為10比特,計(jì)算機(jī)發(fā)送數(shù)據(jù),at89s52接收數(shù)據(jù),at89s52將接收到的數(shù)據(jù)進(jìn)行pwm編碼,得到幀周期固定,而脈沖寬度隨外部信號(hào)不斷變化的pwm信號(hào),然后通過(guò)p1.0端口輸出。
4.2 波形轉(zhuǎn)換電路
經(jīng)過(guò)單片機(jī)編碼輸出的pwm信號(hào)經(jīng)過(guò)一個(gè)下降沿觸發(fā)器即可得到ppm脈沖信號(hào),波形轉(zhuǎn)換如圖3所示[7]。當(dāng)p1.0端口輸出的信號(hào)由高電平變?yōu)榈碗娖綍r(shí),觸發(fā)器的輸出端產(chǎn)生所需的ppm脈沖信號(hào),其脈沖寬度由外部定時(shí)電路決定。
4.3 驅(qū)動(dòng)電路
對(duì)于無(wú)線紅外通信系統(tǒng)來(lái)說(shuō),半導(dǎo)體發(fā)光二極管(led)是可以選用的最佳光源,筆者采用帶有溫度補(bǔ)償特性的射極耦合led驅(qū)動(dòng)電路[8],該電路看上去像一個(gè)線性差分放大器,實(shí)際上是一個(gè)電流開(kāi)關(guān)電路,ppm信號(hào)加在驅(qū)動(dòng)電路的輸入端,當(dāng)ppm信號(hào)的電位低于設(shè)定的參考電位時(shí),led無(wú)脈沖電流通過(guò),led不發(fā)光;反之,脈沖電流通過(guò)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ī)的主要作用是通過(guò)串口傳送源數(shù)據(jù)給單片機(jī)。
利用visual c++編制串行通信程序一般有3種方法:調(diào)用microsoft win32應(yīng)用程序接口(api)提供的串行通信函數(shù),利用vc++的mfc類(lèi)庫(kù)函數(shù)實(shí)現(xiàn);用active x通信控件(mscomm)開(kāi)發(fā)串口通信程序,筆者利用vc++提供的mscomm控件來(lái)實(shí)現(xiàn)計(jì)算機(jī)與單片機(jī)之間的串行通信,利用vc++的通信控件mscomm進(jìn)行軟件設(shè)計(jì)只需對(duì)串口進(jìn)行簡(jiǎn)單的設(shè)置即可。程序?qū)崿F(xiàn)非常簡(jiǎn)單,結(jié)構(gòu)清晰,在windows環(huán)境下,串口是系統(tǒng)資源的一部分,應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向系統(tǒng)提出資源申請(qǐng)要求(打開(kāi)串口),通信完成后必須釋放資源(關(guān)閉串口)。
5.2 單片機(jī)軟件編程
單片機(jī)的主要作用是從發(fā)送端(計(jì)算機(jī))接收數(shù)據(jù),并對(duì)接收到的數(shù)據(jù)進(jìn)行pwm編碼,然后通過(guò)輸出端口輸出,單片機(jī)部分的編程主要由串口初始化子函數(shù),接收數(shù)據(jù)子函數(shù)和pwm信號(hào)發(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ā)送信號(hào)子函數(shù)
pwm信號(hào)發(fā)送包括發(fā)送pwm編碼后的同步頭、起始標(biāo)志符、接收的數(shù)據(jù)和結(jié)束標(biāo)志符、下面重點(diǎn)討論對(duì)接收的數(shù)據(jù)進(jìn)行編碼及發(fā)送,其流程如圖6所示,程序如下:
6 結(jié)束語(yǔ)
紅外通信為構(gòu)建高速寬帶室內(nèi)無(wú)線局域網(wǎng)提供了新的選擇。ppm的脈沖峰值功率與平均功率之比很高,可以有效減小平均輻射功率和提高接收靈敏度,筆者設(shè)計(jì)的紅外無(wú)線ppm發(fā)射機(jī)利用單片機(jī)實(shí)現(xiàn)ppm調(diào)制,具有電路結(jié)構(gòu)簡(jiǎn)單、調(diào)試容易、可靠性高、精度高、成本低和功耗低的優(yōu)點(diǎn),由于設(shè)計(jì)中只采用了單只紅外led作為光源,輸出功率不大,而且受輻射角的限制,通信具有方向性,可以考慮采用多只紅外led構(gòu)成發(fā)射陣列來(lái)增加發(fā)射功率和輻射范圍。
評(píng)論