<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于單片機的主從紅外通信系統(tǒng)的研究與設(shè)計

          作者: 時間:2009-11-27 來源:網(wǎng)絡(luò) 收藏

            3、主從式紅外通信軟件設(shè)計

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

            基于單片機的主從紅外通信系統(tǒng)的研究與設(shè)計

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

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

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

            基于單片機的主從紅外通信系統(tǒng)的研究與設(shè)計

            4、結(jié)束語

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: 單片機 紅外通訊

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();