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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 復智能光電旋鈕的設計

          復智能光電旋鈕的設計

          作者: 時間:2012-03-13 來源:網(wǎng)絡 收藏

          引言

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

          目前,在儀器的控制面板時,主要采用各種按鍵,通過檢測按鍵是否被按下產(chǎn)生控制信號。但是,在一些需要連續(xù)產(chǎn)生控制信號的場合,使用按鍵可能帶來操作上的不便。而且,長期高頻率使用的按鍵極易損壞。如果使用旋鈕,根據(jù)其旋轉速率和旋轉方向產(chǎn)生控制信號,就能提高使用的靈活性和可靠性。市場上的此類產(chǎn)品很少,且價格昂貴。經(jīng)過多次試驗,筆者成功地出采用單片機作為控制核心的旋鈕。

          旋鈕按硬件結構可分為機械部分和硬件電路部分。

          機械部分

          80.gif

          機械部分的主要功能是完成機械旋轉到電信號的轉換。如圖1所示,機械部分由一個可任意旋轉的旋鈕、與旋鈕相連的遮光片及兩對光電收發(fā)器組成。遮光片的邊緣成如圖1所示的齒輪形,并定位于兩對光電收發(fā)器之間。當遮光片旋轉時,其邊緣交替遮蔽兩對光電收發(fā)器,光電收發(fā)器就將間斷的光脈沖信號轉換為兩路電脈沖信號,供硬件電路部分處理。

          硬件電路

          81.gif

          硬件電路部分主要由脈沖整形電路和intel8031單片機為核心的單片機系統(tǒng)構成(見圖2)。圖2中:整形電路將光電收發(fā)器產(chǎn)生的兩路脈沖信號整形后,送入intel8031單片機的P1.0、P1.1口。單片機通過內(nèi)部定時器中斷,對P1.0、P1.1 口輸入的脈沖信號進行采樣。采樣數(shù)據(jù)經(jīng)處理程序處理后,生成代表旋轉速率的脈沖信號和代表旋轉方向的方向信號,并由P1.2、P1.3口串行輸出。也可根據(jù)實際需要,將識別到的旋轉速率、旋轉方向等信息通過并行接口輸出到其它顯示、控制設備。

          圖2中的整形電路由兩個如圖3所示的模塊構成,分別對應兩對光電收發(fā)器。555定時器構成單穩(wěn)態(tài)觸發(fā)器,對光電收發(fā)器發(fā)送的脈沖信號進行整形。當光線照射時,光電收發(fā)器的收端處于導通狀態(tài),則單穩(wěn)態(tài)觸發(fā)器的輸入引腳為一高電平。當光線被遮住時,光電收發(fā)器的收端處于截止狀態(tài)。此時,單穩(wěn)態(tài)觸發(fā)器的輸入端被電阻R2下拉為低電平。適當調(diào)節(jié)電阻R2,使高電平大于2/3 Vcc,低電平小于1/3 Vcc,單穩(wěn)態(tài)觸發(fā)器就能對輸入脈沖信號進行整形,并將整形信號輸出至8031單片機系統(tǒng)。

          8031單片機系統(tǒng)采用外置程序存儲器的典型應用電路,這里不再贅述。

          軟件設計

          82.gif


          上一頁 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); })();