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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的編碼譯碼顯示實(shí)驗(yàn)電路設(shè)計(jì)

          基于51單片機(jī)的編碼譯碼顯示實(shí)驗(yàn)電路設(shè)計(jì)

          作者: 時(shí)間:2011-11-12 來源:網(wǎng)絡(luò) 收藏

          2. 1 編碼信號(hào)發(fā)生器電路

          編碼信號(hào)由 內(nèi)部編程控制, 鍵盤輸入 0~ 8從P0. 0~ P0. 7 口送給編碼器74LS147, 9 從P2. 0 口送給編碼器, 具體編碼見表1。

          表1 編碼信號(hào)表
          基于51單片機(jī)的編碼譯碼顯示實(shí)驗(yàn)電路設(shè)計(jì)
          編碼信號(hào)表

          2. 2 鍵盤設(shè)計(jì)

          鍵盤采用4×3 陣列結(jié)構(gòu)設(shè)計(jì), P1. 0~ P1. 3 為鍵盤掃描高4 位, P1. 4~ P1. 6 為低4 位。設(shè)計(jì)有 0 ~ 9 、Rst( 復(fù)位) 、S er( 順序) 。列線通過電阻接正電源, 并將行線所接的單片機(jī)的I/ O 口作為輸出端, 而列線所接的I/ O 口則作為輸入。當(dāng)按鍵沒有按下時(shí), 所有的輸出端都是高電平, 代表無鍵按下。行線輸出是低電平,一旦有鍵按下, 則輸入線就會(huì)被拉低, 這樣, 通過讀入輸入線的狀態(tài)就可得知是否有鍵按下。

          2. 3 顯示電路

          顯示電路主要由編碼器( 74LS147) 、六反相器( 74AC04) 、譯碼器( 74LS247) 、七段LED 數(shù)碼管組成。編碼器74LS147 的1~ 5 腳, 10~ 13 腳為編碼輸入端, 低電平有效, 實(shí)驗(yàn)時(shí)可用接地作為低電平輸入;14, 6, 7, 9 腳為編碼輸出( 反碼) ; 16, 8 腳為電源正負(fù)極。

          譯碼器74LS247 的6, 2, 1, 7 腳為譯碼輸入( 高電平有效) ; 9~ 15 為譯碼輸出; 8, 16 腳為電源正負(fù)極。六反相器( 74AC04) 主要是解決編碼器74HC147 和譯碼器74LS247 信號(hào)匹配問題, 共有6 組輸入與輸出, 只取其中4 組。七段LED 數(shù)碼管主要是顯示譯碼器輸出狀態(tài)。

          電路主要原理是在74LS147 的 輸入011111111~ 111111110, 編碼后得到4 位反碼, 經(jīng)74AC04 反相后送到74LS247, 由74LS247 驅(qū)動(dòng)LED數(shù)碼管, 正確時(shí)能顯示0~ 9。

          3 系統(tǒng)軟件設(shè)計(jì)

          軟件設(shè)計(jì)由初始化、鍵盤掃描、編碼程序三部分組成。開始進(jìn)行初始化, P0、P2 口按復(fù)位狀態(tài)附值輸出,LED 無顯示。然后4 ! 3 陣列式鍵盤開始進(jìn)行掃描, 當(dāng)判斷有鍵按下時(shí), 延時(shí)去鍵抖動(dòng), 判斷是否務(wù)抖動(dòng), 當(dāng)確定判斷是有鍵按下時(shí), 等待閉合鍵釋放, 保存鍵值。根據(jù)鍵值調(diào)用編碼程序, 將表1 對應(yīng)的編碼送到P0, P2口輸出, 主程序流程圖如圖3 所示。

          主程序流程圖
          201012301573194.jpg



          關(guān)鍵詞: 89C51 編碼譯碼

          評論


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