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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CY8C21534的通用操作面板解析方案

          基于CY8C21534的通用操作面板解析方案

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

          我們規(guī)定通訊協(xié)議如下:

          寫顯示數(shù)據(jù)

          先寫入地址(0xA2)。再依次寫入顯示數(shù)據(jù)1~顯示數(shù)據(jù)8,蜂鳴器狀態(tài)字節(jié)按照IIC協(xié)議模式,依次寫入上述10個字節(jié)即可。

          顯示數(shù)據(jù)1~8分別對應COM1~8行,蜂鳴器狀態(tài)字節(jié)表示蜂鳴器是否鳴響,當最低位為1時,蜂鳴器鳴響,為0時停止鳴響,其余的為保留備用。

          讀按鍵狀態(tài)

          先寫入地址(0xA3),再依次讀出2個字節(jié)即可。

          這部分程序的流程比較簡單,屬于內(nèi)部功能,基本思路為:

          I2C 收到數(shù)據(jù)后會產(chǎn)生中斷,響應中斷后,判斷是寫入顯示數(shù)據(jù)還是讀按鍵狀態(tài),如果是寫數(shù)據(jù),則讀出I2C數(shù)據(jù)接收寄存器值,寫入對應顯示緩沖區(qū)Dis_buf[i]即可。全部接收完8個顯示數(shù)據(jù),則把顯示緩沖區(qū)Dis_buf[i]的值轉(zhuǎn)入Dis_buf_out[i],供顯示掃描程序用。

          如果是讀按鍵狀態(tài),則把按鍵狀態(tài)Key_buf[0]寫入發(fā)送寄存器,I2C模塊自動發(fā)出數(shù)據(jù)發(fā)送完一個,再寫入Key_buf[1]繼續(xù)發(fā)送。

          應注意的幾個關鍵問題

          ·按鍵掃描中要有去抖動的過程,這個去抖動一般以20~50毫秒為宜,另外去抖動過程不僅在按鍵按下時要處理,按鍵抬起時最好也處理一下,這樣可以保證按鍵的可靠性。

          ·感應按鍵處理時,提供了一個軟件模塊包,用來處理感應按鍵的功能,同時有利用P0(7)實現(xiàn)抗干擾的處理的功能,這樣可以屏蔽水流沖擊和手機的干擾。所以設計PCB時,P0(7)要與的覆銅地通過電阻R143連接在一起。

          ·顯示掃描幀頻率要超過60HZ,這樣可以保證顯示無抖動,由于顯示亮度與掃描頻率和占空比有直接關系,占空比不變時,幀頻率越高,亮度會越低,所以建議使用60HZ的幀頻率,沒有必要提高幀頻率。

          結(jié)語

          采用CY8C21534設計是非常方便也是非常簡單的,而且操作還具有高可靠性的感應按鍵功能,這對提升產(chǎn)品性能和價值是非常有效的。

          CY8C21534外圍電路非常簡單,內(nèi)部的許多功能都有標準的軟件模塊可以調(diào)用,所以軟件設計也非常簡單,而且所附的仿真調(diào)試軟件支持C編譯,調(diào)試非常容易和方便,

          本設計的基本思路應用于生產(chǎn)實踐中已經(jīng)帶來了非常好的效益。

          蜂鳴器相關文章:蜂鳴器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術(shù)專區(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); })();