新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的主從紅外通信的系統(tǒng)設(shè)計(jì)

基于單片機(jī)的主從紅外通信的系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2012-10-10 來(lái)源:網(wǎng)絡(luò) 收藏

3、軟件

中主機(jī)接收、發(fā)送電路與從機(jī)的電路完全相同,紅外線的載波頻率也相同。在紅外中,若采用不同載波頻率來(lái)區(qū)分主機(jī)及從機(jī)之間的通信可以通過(guò)改善紅外發(fā)射和接收電路的頻率特性,但是這樣會(huì)大大提高硬件成本,本通過(guò)配置適當(dāng)?shù)耐ㄐ艆f(xié)議來(lái)降低硬件成本。為了避免發(fā)射時(shí)造成對(duì)本機(jī)的干擾,采用異步半雙工通信模式,在同一時(shí)間內(nèi)可以是主機(jī)發(fā)送,從機(jī)接收;也可以是從機(jī)發(fā)射,主機(jī)接收。主機(jī)及從機(jī)通信流程如下:

主機(jī)通信過(guò)程為:(1) 上電初始化,完成UART的工作模式、波特率的設(shè)置(系統(tǒng)波特率為2400bps);CCU模塊PWM工作模式、PWM頻率設(shè)定。CCU模塊工作在對(duì)稱的、非反向的PWM模式,頻率38KHz,占空比50%;(2) 等待數(shù)據(jù)發(fā)送控制信號(hào)到來(lái);(3) 若接收到發(fā)送控制信號(hào),則立即通過(guò)紅外串行發(fā)送16字節(jié)數(shù)據(jù);(4) 通過(guò)紅外接口接收從機(jī)返回的16字節(jié)數(shù)據(jù);(5) 比較接收到的16字節(jié)與發(fā)送到16字節(jié)數(shù)據(jù),若一致則發(fā)送下一個(gè)數(shù)據(jù),否則重發(fā)該數(shù)據(jù)。

從機(jī)通信過(guò)程為:(1) 上電初始化,完成UART的工作模式、波特率設(shè)置;CCU模塊PWM工作模式、PWM頻率設(shè)定;(2) 通過(guò)紅外接口從主機(jī)接收16字節(jié)數(shù)據(jù);(3) 判斷是否為重發(fā)數(shù)據(jù),若是則覆蓋前次接收到的數(shù)據(jù)。

主機(jī)和從機(jī)通信過(guò)程包括的函數(shù)主要有系統(tǒng)初始化函數(shù)UART_Init(),向串口發(fā)送數(shù)據(jù)函數(shù)UART_SendByte()、 串口接收紅外信號(hào)數(shù)據(jù) UART_RcvByte( )等。部分函數(shù)程序代碼如下:

UART_SendByte(unit8 dat) //向串口發(fā)送數(shù)據(jù)

{ SBUF = dat; //發(fā)送數(shù)據(jù)

while(TI = =0; // 等待發(fā)送完畢

TI = 0;

}

unit8 UART_RcvByte() //接收串口數(shù)據(jù)

{if(RI = =0) return(0); //若沒有接收到數(shù)據(jù),則返回0

*dat = SBUF;

RI = 0;

return(1);

}

4、結(jié)束語(yǔ)

紅外通信可用于許多需短距離及非接觸式傳輸數(shù)據(jù)的場(chǎng)合。本文式紅外通信接口具有硬件電路簡(jiǎn)單、成本低、通信可靠等特點(diǎn),實(shí)現(xiàn)了主機(jī)及從機(jī)雙方非接觸式的數(shù)據(jù)傳輸。適當(dāng)修改通信軟件就可以讓系統(tǒng)用于紅外抄表、遙控、遙測(cè)等許多場(chǎng)合。

紅外遙控器相關(guān)文章:紅外遙控器原理

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉