基于51單片機(jī)的編碼譯碼顯示實(shí)驗(yàn)電路設(shè)計(jì)
2. 1 編碼信號(hào)發(fā)生器電路
編碼信號(hào)由89C51 內(nèi)部編程控制, 鍵盤輸入 0~ 8從P0. 0~ P0. 7 口送給編碼器74LS147, 9 從P2. 0 口送給編碼器, 具體編碼見表1。
表1 編碼信號(hào)表
編碼信號(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 對(duì)應(yīng)的編碼送到P0, P2口輸出, 主程序流程圖如圖3 所示。
主程序流程圖
評(píng)論