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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于CPLD的鍵盤控制器設(shè)計(jì)

          基于CPLD的鍵盤控制器設(shè)計(jì)

          作者: 時(shí)間:2009-05-21 來源:網(wǎng)絡(luò) 收藏

          通過這樣的處理既滿足設(shè)計(jì)的需要,又起到對(duì)器件保護(hù)的作用。EN是掃描電路的使能輸入端,高電平有效。它通過去抖動(dòng)后的列回復(fù)線相與得到。當(dāng)有按鍵按下時(shí),相應(yīng)的列線將被置低。相與的結(jié)果為低,這使掃描電路停止掃描,等待控制器對(duì)掃描結(jié)果進(jìn)行處理,得到相應(yīng)的鍵值送入鍵值鎖存器,等待單片機(jī)讀取。這樣做的好處是可防止控制器漏掉按鍵的讀取。根據(jù)調(diào)試得知,掃描時(shí)鐘信號(hào)最好是去抖電路時(shí)鐘的四分頻以上。所以CLK是通過對(duì)去抖電路的時(shí)鐘進(jìn)行分頻得到的。圖3給出實(shí)現(xiàn)掃描電路的具體原理圖。

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

          (2)該設(shè)計(jì)中采用4×4的,有16個(gè)按鍵狀態(tài),再加上一個(gè)沒有鍵按下的狀態(tài)共有17個(gè)狀態(tài),而4位二進(jìn)制數(shù)只能表示16個(gè)狀態(tài)。為了解決這個(gè)問題,將R4和L4或非后再與計(jì)數(shù)器產(chǎn)生的中斷信號(hào)相或,產(chǎn)生一個(gè)單片機(jī)中斷。當(dāng)按下最后一個(gè)鍵時(shí),控制器便產(chǎn)生1個(gè)中斷,讓單片機(jī)來讀取這個(gè)按鍵值0000(在沒有鍵按下時(shí)也是這個(gè)狀態(tài)),從而區(qū)分了無按鍵狀態(tài)和最后一個(gè)按鍵按下的狀態(tài)。這樣在編碼的時(shí)候只需考慮前15個(gè)鍵的狀態(tài)信息。最終可用4位二進(jìn)制數(shù)表示所有按鍵狀態(tài)。圖4給出實(shí)現(xiàn)編碼器的具體原理圖。

          (3)鍵盤去抖動(dòng)電路主要由2個(gè)DQ觸發(fā)器和1個(gè)基本RS觸發(fā)器組成。當(dāng)有鍵按下時(shí),理想情況下相應(yīng)的列線應(yīng)該是一直保持低電平。
          但是實(shí)際應(yīng)用中不可避免地產(chǎn)生抖動(dòng),此時(shí)列回復(fù)線將發(fā)生長短不等的高電平跳躍現(xiàn)象。鍵盤去抖電路就是去除這樣抖動(dòng)的高電平對(duì)按鍵鍵值檢測(cè)帶來的干擾。為了消除這樣的干擾,去抖電路采用兩級(jí)延時(shí)策略。
          只要抖動(dòng)的高電平持續(xù)時(shí)間在去抖電路的2個(gè)時(shí)鐘周期之內(nèi),這種抖動(dòng)是不會(huì)被引進(jìn)編碼電路的。鍵盤去抖電路的具體原理圖實(shí)現(xiàn)如圖5所示。

          3 仿真實(shí)驗(yàn)及分析
          3.1 掃描電路的輸出仿真波形
          鍵盤控制器掃描電路的輸出仿真波形如圖6所示。在圖6中掃描電路的輸出端依次循環(huán)輸出低電平來掃描鍵盤的每一行,圖中L1~L4是沒有加三態(tài)門的掃描器輸出,其作為編碼電路的輸入,R1~R4是加三態(tài)門的輸出波形,從圖3中可以看出當(dāng)L1~L4的輸出是高電平時(shí),R1~R4的輸出狀態(tài)是高阻。



          關(guān)鍵詞: CPLD 鍵盤 制器設(shè)計(jì)

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