摘 要:當前手工撥盤方式編碼譯碼顯示實驗電路存在輸入信號不穩定、控制性較差等缺點,為了克服上述缺點,電路設計采用89C51單片機為核心器件作為編碼信號發生器和自動控制系統。通過Proteus平臺仿真和實驗調試,電路能產生高質量輸入信號和實現自動控制,較好地解決了手工撥盤方式編碼譯碼顯示實驗電路存在的缺陷。
關鍵詞:89C51單片機; 編碼譯碼; 顯示; Proteus仿真
中圖分類號:TN919-34文獻標識碼:A
文章編號:1004-373X(2010)21-0194-03
Design of Coding and Decoding Display Experimental Circuit Based on 89C51 MCU
WEN Han-quan
(Huizhou City Senior Technician School, Huizhou 516001, China)
Abstract: The coding and decoding display experimental circuit with manual dial method has disadvantages of unstable input signal and poor control performance. The circuit design used 89C51 core device as a coded signal generator and automatic control system to overcome these shortcomings. The circuit can produce high-quality input signal and achieve automatic control by Proteus platform simulation and experimental debug. The defects of coding and decoding display experimental circuit with manual dial method are solved.
Keywords: 89C51MCU; coding and decoding; display; Proteus simulation
0 引 言
在日常數字邏輯電路實驗中編碼譯碼顯示實驗電路是編碼、譯碼、顯示三個電路的綜合運用,在數字邏輯實驗電路中具有重要的地位,在實驗的過程中,時常會出現顯示結果的抖動,經研究出現這種現象主要原因是:編碼電路的編碼信號輸入采用手工撥盤方式,產生的編碼輸入信號往往不穩定;另外,電路控制性能較差,不能達到自動復位,為此有必要對現有電路進行改進,在電路的設計上采用89C51單片機為控制電路制作而成,自動提供穩定編碼輸入信號,顯示結果穩定性和電路控制性能大大提升, 提高了教學實驗質量。
1 編碼譯碼顯示實驗電路的基本結構
編碼譯碼顯示電路的基本結構如圖1所示,主要由控制電路、編碼信號發生器、編碼譯碼顯示電路等組成,控制電路產生編碼信號作為編碼譯碼顯示電路輸入信號,譯碼電路將編碼信號轉換成對應的七段數碼顯示信號,送至LED數碼管顯示。
2 系統硬件設計
控制系統和編碼信號發生器采用89C51單片機實現。89C51性價比較高,采用12 MHz晶振,其內部帶有4 KB的FLASH ROM,無須外擴程序存儲器。編碼譯碼電路沒有大量運算和暫存數據。89C51內部的128 B片內RAM已能滿足要求,無須外擴片外RAM。系統硬件設計如圖2所示。
2.1 編碼信號發生器電路
編碼信號由89C51內部編程控制,鍵盤輸入“0~8”從P0.0~P0.7口送給編碼器74LS147,“9”從P2.0口送給編碼器,具體編碼見表1。
表1 編碼信號表
P0~P2口狀態
鍵 盤
0123456789Rst
P0.000111111111
P0.101011111111
P0.201101111111
P0.301110111111
P0.401111011111
P0.501111101111
P0.601111110111
P0.701111111011
P2.001111111101
2.2 鍵盤設計
鍵盤采用4×3陣列結構設計,P1.0~P1.3為鍵盤掃描高4位,P1.4~P1.6為低4位。設計有“0~9”、Rst(復位)、Ser(順序)。列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下。
圖1 編碼譯碼顯示實驗結構圖
圖2 編碼譯碼顯示實驗電路
2.3 編碼譯碼顯示電路
編碼譯碼顯示電路主要由編碼器(74LS147)、六反相器(74AC04)、譯碼器(74LS247)、七段LED數碼管組成。編碼器74LS147的1~5腳,10~13腳為編碼輸入端,低電平有效,實驗時可用接地作為低電平輸入;14,6,7,9腳為編碼輸出(反碼);16,8腳為電源正負極。譯碼器74LS247的6,2,1,7腳為譯碼輸入(高電平有效);9~15為譯碼輸出;8,16腳為電源正負極。六反相器(74AC04)主要是解決編碼器74HC147和譯碼器74LS247信號匹配問題,共有6組輸入與輸出,只取其中4組。七段LED數碼管主要是顯示譯碼器輸出狀態。
電路主要原理是在74LS147的1~9輸入011111111~111111110,編碼后得到4位反碼,經74AC04反相后送到74LS247,由74LS247驅動LED數碼管,正確時能顯示0~9。
3 系統軟件設計
軟件設計由初始化、鍵盤掃描、編碼程序三部分組成。開始進行初始化,P0、P2口按復位狀態附值輸出,LED無顯示。然后4×3陣列式鍵盤開始進行掃描,當判斷有鍵按下時,延時去鍵抖動,判斷是否務抖動,當確定判斷是有鍵按下時,等待閉合鍵釋放,保存鍵值。根據鍵值調用編碼程序,將表1對應的編碼送到P0,P2口輸出,主程序流程圖如圖3所示。
圖3 主程序流程圖
當按Ser(順序序列)鍵時,依次按1~9編碼值送至P0,P2口,間隔0.5 s輸出。Ser編碼編碼子程序如下:
/********Ser鍵編碼********/
Void ser()
{
Unsigned int Move,i;
Move=0xFE
P0=0xFF;//P0口復位
P2=0xFF;//P2口復位
For(i=0,i<8,i++)
{
P0=Move;//P0口輸出1編碼
Delay(500);//調用延時500 ms子程序
Move<<1|0x01;//左移一位輸出下一位編碼,直至到8編碼
}
P2=0xFE;//編碼9從P2口輸出
Delay(500); //調用延時500 ms子程序
}
4 系統仿真與調試
Proteus是一個基于ProSpice混合模型仿真器的,完整的嵌入式系統軟、硬件設計仿真平臺。編碼譯碼顯示電路能很方便地在此平臺上進行調試和仿真,延時時間同選用的單片機和所用晶體振蕩器有關,在調試時須注意。
5 結 語
提出了一款編碼譯碼顯示實驗電路設計,其控制系
統和編碼信號發生器采用89C51單片機實現,經Proteus仿真和實驗調試結果來看,大大改善了電路的性能,電路制作方便、操作簡單,在數字邏輯電路實驗教學中具有一定的推廣價值,電路主要不足是不能實現故障自動檢查,如果能對電路故障進行自動檢測,電路性能將更加完善。
參考文獻
[1]肖金球.單片機原理與接口[M].北京:清華大學出版社,2004.
[2]肖明耀.數字邏輯電路[M].3版.北京:中國勞動社會保障出版社,2003.
[3]王志功,陳瑩梅.集成電路設計[M].2版.北京:電子工業出版社,2009.
[4]胡斌,胡松.電子電路知識點:顯示電路(合訂本)[M].北京:機械工業出版社,2010.
[5]吳云.典型電子電路160例[M].北京:中國電力出版社,2010.
[6]梅開鄉,梅軍進.電子電路實驗[M].北京:北京理工大學出版社,2010.
[7]黃繼昌,張海貴,徐巧魚.數字集成電路應用集萃[M].北京:中國電力出版社,2008.
[8]王守中,聶元銘.51單片機開發入門與典型實例[M].2版.北京:人民郵電出版社,2009.
[9]劉寧.創意電子設計與制作[M].北京:北京航空航天大學出版社,2010.
[10]任文霞.電子電路仿真技術[M].北京:中國電力出版社,2009.
[11]何希才.新型集成電路應用300例[M].北京:中國電力出版社,2009.