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

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 多媒體投影機遙控器的單片機仿真

          多媒體投影機遙控器的單片機仿真

          作者: 時間:2009-12-24 來源:網絡 收藏

          2 的設計
          2.1硬件電路的設計
          圖6是的電路原理圖。采用4*8的行列式按鍵開關,可有32個操作按鍵。遙控器從P3.7口輸出40K的紅外線調制信號。

          本文引用地址:http://www.ex-cimer.com/article/166822.htm


          2.2 仿真遙控器軟件的設計
          仿真遙控器中通過主程序的循環(huán)查鍵執(zhí)行相應的鍵碼發(fā)射功能,鍵碼表是寫在ROM中的,因此完成編程后是不能再改的。程序包括以下主要模塊:
          (1)初始化程序。P1及P3端口置位,設置計數器計數模式、控制字等。
          (2)鍵盤掃描程序。完成32個按鍵的掃鍵工作,并翻譯成相應的32個鍵號,使能執(zhí)行相應的鍵功能。
          (3)按鍵功能程序。利用定時器定時中斷功能,實現40KHz載波的產生;利用ROM表上各按鍵相應的起始位控制數據、高電平控制數據、低電平控制數據控制載波的發(fā)送時間及間隔時間。遙控碼調制發(fā)射的算法如下:
          ①[發(fā)起始位調制波]
          取ROM表中起始位數據;
          開40KHZ方波定時器;
          起始位數據減1,不為零,延時21μs后重復執(zhí)行本句;
          為零執(zhí)行下句;
          ②[發(fā)高電平間隔位]
          關40KHZ方波定時器;
          取ROM表中高電平數據;如數據為0,延時10ms后結束算法;不為零執(zhí)行下句;
          數據減1,不為零,延時21μs后重復執(zhí)行本句;
          為零執(zhí)行下句;
          ③[發(fā)低電平調制波]
          取ROM表中低電平數據;
          開40KHZ方波定時器;
          低電平數據減1,不為零,延時21μs后重復執(zhí)行本句;為零轉②循環(huán);
          ④算法結束
          3 主要性能指標
          (1) 讀碼器最大學習碼長:206bit
          (2) 讀碼器讀碼識別范圍:起始位:21μs~1.376s,編碼位:21μs ~5.355ms
          (3) 讀碼誤差:+21μs
          (4) 讀碼器幀間歇位識別范圍:小于1.37s,大于5.355ms
          (5) 仿真遙控器發(fā)射距離:大于10M
          4 小結
          仿真遙控器性能與軟件的設計具有密切的關系,特別是碼寬計數的采樣周期,關系到能否識別出起始位及遙控碼采樣精度問題,在編程時需多次實驗測試,相互兼顧,本設計中讀碼采樣周期為21μs,經測試可正確仿真市場上常用的投影機及彩電、空調等設備。

          紅外遙控器相關文章:紅外遙控器原理

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();