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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB的無線觸摸鼠標(biāo)板的設(shè)計(jì)方法

          基于USB的無線觸摸鼠標(biāo)板的設(shè)計(jì)方法

          作者: 時(shí)間:2013-08-06 來源:網(wǎng)絡(luò) 收藏

          3 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)

            在本部分,主要將介紹本設(shè)計(jì)的軟件實(shí)現(xiàn),其中包括接入端和手持端兩大部分。

            3.1整體設(shè)計(jì)方案的設(shè)計(jì)與實(shí)現(xiàn)環(huán)境

            本次設(shè)計(jì)采用的控制芯片為PIC16F877A。

            由于程序是在PC上設(shè)計(jì),需要將程序下載到單片機(jī)上運(yùn)行和測(cè)試,所以需要一個(gè)程序下載工具,本次設(shè)計(jì)所采用的程序燒錄器為TOP WIN2004,該燒錄器自身提供有一個(gè)下載軟件,使用也非常方便,安裝按照軟件目錄下的README一步步操作即可。

            本設(shè)計(jì)中的軟件均是在單片機(jī)內(nèi)實(shí)現(xiàn),運(yùn)行在MCU內(nèi)的軟件控制著整個(gè)設(shè)計(jì)所要實(shí)現(xiàn)的模塊。

            但是由于MCU與傳統(tǒng)Pc有著巨大的差別,必須考慮存儲(chǔ)空間、運(yùn)行速度、外界干擾等因素。在實(shí)現(xiàn)此次設(shè)計(jì)的過程中,除了首先要保證硬件環(huán)境的設(shè)計(jì)正確和優(yōu)質(zhì)之外,軟件方面的嚴(yán)謹(jǐn)設(shè)計(jì)也是必不可少的一個(gè)重要部分。

            本設(shè)計(jì)的軟件總體框架圖可如圖4所示,為了使兩端達(dá)到速度及任務(wù)的均衡,一些軟件處理將在手持端完成,然后以接收端可以識(shí)別的格式打包發(fā)送過去,由圖4也可以看出兩端的任務(wù)處理基本處于均衡狀態(tài)。

          圖4軟件總體框架圖

          圖4軟件總體框架圖

            3.2手持端軟件的設(shè)計(jì)與實(shí)現(xiàn)

            在本部分將介紹手持終端的軟件設(shè)計(jì)過程,以及各個(gè)模塊部分的具體實(shí)現(xiàn)。軟件的運(yùn)行流程圖如圖5所示。

          圖5手持端軟件流程

          圖5手持端軟件流程

            對(duì)于事件發(fā)生的獲取是采用中斷模式,也就是在有鼠標(biāo)觸摸板事件發(fā)生的時(shí)候,將喚醒MCU進(jìn)行數(shù)據(jù)的采集處理,然后將采集到的PS/2數(shù)據(jù)進(jìn)行一定規(guī)則的轉(zhuǎn)換,然后將其打包發(fā)送。若沒有數(shù)據(jù)需要處理,則進(jìn)入睡眠狀態(tài)以節(jié)省功耗。



          評(píng)論


          相關(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); })();