![]() |
|---|
4.3 驅(qū)動電路
對于無線紅外通信系統(tǒng)來說,半導體發(fā)光二極管(LED)是可以選用的最佳光源,筆者采用帶有溫度補償特性的射極耦合LED驅(qū)動電路[8],該電路看上去像一個線性差分放大器,實際上是一個電流開關電路,PPM信號加在驅(qū)動電路的輸入端,當PPM信號的電位低于設定的參考電位時,LED無脈沖電流通過,LED不發(fā)光;反之,脈沖電流通過LED而使LED發(fā)光。如圖4所示,注入電流IF相等的條件下,LED的輸出光功率P隨著溫度的上升而下降,所以設計中采用溫度補償電路進行溫度補償,當溫度升高時,LED的注入電流也隨之增加,從而補償LED的功率變化。
![]() |
|---|
5 軟件設計
5.1 計算機軟件編程
計算機的主要作用是通過串口傳送源數(shù)據(jù)給單片機。
利用Visual C++編制串行通信程序一般有3種方法:調(diào)用Microsoft Win32應用程序接口(API)提供的串行通信函數(shù),利用VC++的MFC類庫函數(shù)實現(xiàn);用Active X通信控件(MSComm)開發(fā)串口通信程序,筆者利用VC++提供的MSComm控件來實現(xiàn)計算機與單片機之間的串行通信,利用VC++的通信控件MSComm進行軟件設計只需對串口進行簡單的設置即可。程序?qū)崿F(xiàn)非常簡單,結構清晰,在Windows環(huán)境下,串口是系統(tǒng)資源的一部分,應用程序要使用串口進行通信,必須在使用之前向系統(tǒng)提出資源申請要求(打開串口),通信完成后必須釋放資源(關閉串口)。
5.2 單片機軟件編程
單片機的主要作用是從發(fā)送端(計算機)接收數(shù)據(jù),并對接收到的數(shù)據(jù)進行PWM編碼,然后通過輸出端口輸出,單片機部分的編程主要由串口初始化子函數(shù),接收數(shù)據(jù)子函數(shù)和PWM信號發(fā)送子函數(shù)組成。
5.2.1 串口初始化子函數(shù)
使用串口之前,應動其進行初始化,初始化程序如下:
![]() |
|---|
5.2.2 接收數(shù)據(jù)子函數(shù)
接收數(shù)據(jù)流程如圖5所示,程序如下:
![]() |
|---|
![]() |
5.2.3 PWM發(fā)送信號子函數(shù)
PWM信號發(fā)送包括發(fā)送PWM編碼后的同步頭、起始標志符、接收的數(shù)據(jù)和結束標志符、下面重點討論對接收的數(shù)據(jù)進行編碼及發(fā)送,其流程如圖6所示,程序如下:
![]() |
|---|
![]() |
|---|
![]() |
![]() |
6 結束語
紅外通信為構建高速寬帶室內(nèi)無線局域網(wǎng)提供了新的選擇。PPM的脈沖峰值功率與平均功率之比很高,可以有效減小平均輻射功率和提高接收靈敏度,筆者設計的紅外無線PPM發(fā)射機利用單片機實現(xiàn)PPM調(diào)制,具有電路結構簡單、調(diào)試容易、可靠性高、精度高、成本低和功耗低的優(yōu)點,由于設計中只采用了單只紅外LED作為光源,輸出功率不大,而且受輻射角的限制,通信具有方向性,可以考慮采用多只紅外LED構成發(fā)射陣列來增加發(fā)射功率和輻射范圍。














