基于89C51單片機(jī)的編碼譯碼顯示實驗電路設(shè)計
摘要:當(dāng)前手工撥盤方式編碼譯碼顯示實驗電路存在輸入信號不穩(wěn)定、控制性較差等缺點(diǎn),為了克服上述缺點(diǎn),電路設(shè)計采用89C51單片機(jī)為核心器件作為編碼信號發(fā)生器和自動控制系統(tǒng)。通過Proteus平臺仿真和實驗調(diào)試,電路能產(chǎn)生高質(zhì)量輸入信號和實現(xiàn)自動控制,較好地解決了手工撥盤方式編碼譯碼顯示實驗電路存在的缺陷。
關(guān)鍵詞:89C51單片機(jī);編碼譯碼;顯示;Proteus仿真
0 引言
在日常數(shù)字邏輯電路實驗中編碼譯碼顯示實驗電,路是編碼、譯碼、顯示三個電路的綜合運(yùn)用,在數(shù)字邏輯實驗電路中具有重要的地位,在實驗的過程中,時常會出現(xiàn)顯示結(jié)果的抖動,經(jīng)研究出現(xiàn)這種現(xiàn)象主要原因是:編碼電路的編碼信號輸入采用手工撥盤方式,產(chǎn)生的編碼輸入信號往往不穩(wěn)定;另外,電路控制性能較差,不能達(dá)到自動復(fù)位,為此有必要對現(xiàn)有電路進(jìn)行改進(jìn),在電路的設(shè)計上采用89C51單片機(jī)為控制電路制作而成,自動提供穩(wěn)定編碼輸入信號,顯示結(jié)果穩(wěn)定性和電路控制性能大大提升,提高了教學(xué)實驗質(zhì)量。
1 編碼譯碼顯示實驗電路的基本結(jié)構(gòu)
編碼譯碼顯示電路的基本結(jié)構(gòu)如圖1所示,主要由控制電路、編碼信號發(fā)生器、編碼譯碼顯示電路等組成,控制電路產(chǎn)生編碼信號作為編碼譯碼顯示電路輸入信號,譯碼電路將編碼信號轉(zhuǎn)換成對應(yīng)的七段數(shù)碼顯示信號,送至LED數(shù)碼管顯示。
2 系統(tǒng)硬件設(shè)計
控制系統(tǒng)和編碼信號發(fā)生器采用89C51單片機(jī)實現(xiàn)。89C51性價比較高,采用12 MHz晶振,其內(nèi)部帶有4 KB的FLASH ROM,無須外擴(kuò)程序存儲器。編碼譯碼電路沒有大量運(yùn)算和暫存數(shù)據(jù)。89C51內(nèi)部的128 B片內(nèi)RAM已能滿足要求,無須外擴(kuò)片外RAM。系統(tǒng)硬件設(shè)計如圖2所示。
[!--empirenews.page--]
2.1 編碼信號發(fā)生器電路
編碼信號由89C51內(nèi)部編程控制,鍵盤輸入“0~8”從P0.0~P0.7口送給編碼器74LSl47,“9”從P2.O口送給編碼器,具體編碼見表1。
2.2 鍵盤設(shè)計
鍵盤采用4×3陣列結(jié)構(gòu)設(shè)計,P1.0~P1.3為鍵盤掃描高4位,P1.4~P1.6為低4位。設(shè)計有“O~9”、Rst(復(fù)位)、Ser(順序)。列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下。
2.3 編碼譯碼顯示電路
編碼譯碼顯示電路主要由編碼器(74LS147)、六反相器(74AC04)、譯碼器(74LS247)、七段LED數(shù)碼管組成。編碼器74LS147的1~5腳,10~13腳為編碼輸入端,低電平有效,實驗時可用接地作為低電平輸入;14,6,7,9腳為編碼輸出(反碼);16,8腳為電源正負(fù)極。
譯碼器74LS247的6,2,1,7腳為譯碼輸入(高電平有效);9~15為譯碼輸出;8,16腳為電源正負(fù)極。六反相器(74AC04)主要是解決編碼器74HC147和譯碼器74LS247信號匹配問題,共有6組輸入與輸出,只取其中4組。七段LED數(shù)碼管主要是顯示譯碼器輸出狀態(tài)。
電路主要原理是在74LS147的輸入011111111~111111110,編碼后得到4位反碼,經(jīng)74AC04反相后送到74LS247,由74LS247驅(qū)動LED數(shù)碼管,正確時能顯示O~9。[!--empirenews.page--]
3 系統(tǒng)軟件設(shè)計
軟件設(shè)計由初始化、鍵盤掃描、編碼程序三部分組成。開始進(jìn)行初始化,P0、P2口按復(fù)位狀態(tài)附值輸出,LED無顯示。然后4×3陣列式鍵盤開始進(jìn)行掃描,當(dāng)判斷有鍵按下時,延時去鍵抖動,判斷是否務(wù)抖動,當(dāng)確定判斷是有鍵按下時,等待閉合鍵釋放,保存鍵值。根據(jù)鍵值調(diào)用編碼程序,將表1對應(yīng)的編碼送到P0,P2口輸出,主程序流程圖如圖3所示。
當(dāng)按Ser(順序序列)鍵時,依次按1~9編碼值送至PO,P2口,間隔O.5 s輸出。Ser編碼編碼子程序如下:
4 系統(tǒng)仿真與調(diào)試
Proteus是一個基于ProSpice混合模型仿真器的,完整的嵌入式系統(tǒng)軟、硬件設(shè)計仿真平臺。編碼譯碼顯示電路能很方便地在此平臺上進(jìn)行調(diào)試和仿真,延時時間同選用的單片機(jī)和所用晶體振蕩器有關(guān),在調(diào)試時須注意。
5 結(jié)語
提出了一款編碼譯碼顯示實驗電路設(shè)計,其控制系統(tǒng)和編碼信號發(fā)生器采用89C51單片機(jī)實現(xiàn),經(jīng)Pro-teus仿真和實驗調(diào)試結(jié)果來看,大大改善了電路的性能,電路制作方便、操作簡單,在數(shù)字邏輯電路實驗教學(xué)中具有一定的推廣價值,電路主要不足是不能實現(xiàn)故障自動檢查,如果能對電路故障進(jìn)行自動檢測,電路性能將更加完善。