江蘇聯(lián)合職業(yè)技術(shù)學(xué)院南京分院 楊 陽
對(duì)于智能儀表人機(jī)交互化實(shí)現(xiàn)媒介,我們通常使用LCD液晶或者LED數(shù)碼管來作為顯示器件。顯然,對(duì)于輸出信息量不多且低成本儀表而言,后者是眾多此類儀表的首選。LED數(shù)碼管的顯示方式通常可分為:靜態(tài)方式和動(dòng)態(tài)方式。為降低儀表功耗、簡化電路,多數(shù)智能儀表采用動(dòng)態(tài)顯示方式。我們知道,如果為節(jié)約I/O口資源便于更多的鍵盤輸入等用途,工作于動(dòng)態(tài)顯示方式的顯示電路需要輔以諸如74HC164串入并出等芯片;或者采用專用的動(dòng)態(tài)顯示接口集成芯片如ZLG8279等。這樣雖然節(jié)約了I/O口資源,但同時(shí)也增加了設(shè)計(jì)成本和電路體積。為避免額外芯片的使用,本文提出了一種基于并行模式下的動(dòng)態(tài)顯示和鍵盤輸入相結(jié)合的電路。
系統(tǒng)以STC89S51單片機(jī)為例,構(gòu)成的八位LED動(dòng)態(tài)顯示及輸入電路。圖1所示為動(dòng)態(tài)顯示及輸入電路的硬件組成部分。電路中我們僅用到了8個(gè)PNP型三極管(9012)以及電阻等,未用到任何的集成電路。由于使用并行的動(dòng)態(tài)顯示模式,系統(tǒng)響應(yīng)快;同時(shí)電路設(shè)計(jì)成本較低,便于批量應(yīng)用。
電路中數(shù)碼管為共陽極:段碼端(a—h)經(jīng)限流電阻RP2(阻值選取視數(shù)碼管工作電流定)與單片機(jī)P0口相連;位碼端(1—8)分別與對(duì)應(yīng)PNP三極管集電極(C)相接,而三極管基極經(jīng)分壓電阻RP1與單片機(jī)P2口相連,同時(shí)八個(gè)三極管發(fā)射極(E)共連接電源VCC(+5V)。位碼端同時(shí)分別與八個(gè)按鍵以及發(fā)光二極管連接(如圖1示),電阻R1一端接單片機(jī)P1.3引腳,限流電阻R2一端與發(fā)光二極管串聯(lián),一端接至單片機(jī)P1.2引腳。
我們?cè)O(shè)定電路工作動(dòng)態(tài)掃描從右至左。我們以使第一位數(shù)碼管能夠顯示所要顯示的數(shù)為例,我們需要使得此數(shù)碼管位選端1為高電平就是使與之相連的三極管Q0導(dǎo)通(當(dāng)基極b為低電平時(shí)Q0導(dǎo)通),所以P2口送位碼為EFH選中第一位數(shù)碼管,然后P0口送出此位所要顯示數(shù)的段碼,實(shí)現(xiàn)顯示。為能夠?qū)崿F(xiàn)按鍵輸入(按鍵閉合一段時(shí)間即為有效輸入),即我們需要對(duì)各按鍵的閉合與否檢測。那么我們?cè)趩纹瑱C(jī)送出數(shù)碼管位碼同時(shí)(此時(shí)P2.0=0,P2.1—P2.7=0則只有三極管Q0的集電極C為高電平,其余三極管集電極為高阻態(tài))檢測單片機(jī)P1.3口(讀之前先對(duì)P1.3寫1)的狀態(tài):若此時(shí)P1.3=1說明與被選中數(shù)碼管位相連的按鍵K0被按下了,若P1.3=0則此鍵K0未被按下。由于電路采用的是動(dòng)態(tài)掃描以及三極管的三態(tài)效應(yīng)(數(shù)碼管中未被選中的位對(duì)應(yīng)的三極管處于截止?fàn)顟B(tài),集電極是高阻態(tài)),即便此時(shí)其他按鍵被按下P1.3也不會(huì)為1。至于發(fā)光二極管,要使得二極管L0能夠點(diǎn)亮,則當(dāng)單片機(jī)在送出位碼時(shí),使得P1.2=0此時(shí)與位碼位P2.0相對(duì)應(yīng)的發(fā)光二極管L0即被點(diǎn)亮;如果使P1.2=1則L0被熄滅。如要顯示下一位則改變位碼,依次選中要顯示的位,如此循環(huán),完成八位字符的顯示,數(shù)碼管可以達(dá)到近似靜態(tài)顯示的效果。
以STC89S51單片機(jī)構(gòu)成的8位數(shù)碼管動(dòng)態(tài)顯示及按鍵輸入子程序如圖2所示。
設(shè)位碼端P2.0—P2.1對(duì)應(yīng)的各位數(shù)碼管待顯示的數(shù)據(jù)放在顯示緩沖區(qū)LEDP20--LEDP27中,對(duì)應(yīng)地址為40H—47H;位碼寄存器地址為DISPBIT。動(dòng)態(tài)掃描采用定時(shí)器每隔一定的時(shí)間對(duì)顯示數(shù)據(jù)刷新一次。則定時(shí)器中斷子程序如下:
圖1 LED動(dòng)態(tài)顯示及鍵盤輸入等電路
圖2 子程序流程圖
在程序清單中只列舉了掃描P2.0位和P2.1位程序代碼,其余數(shù)碼管位掃描代碼只需同上作少量改動(dòng)即可,這里就不一一贅述了。由于使用的動(dòng)態(tài)顯示方式,我們?cè)诰幊虝r(shí)需要根據(jù)實(shí)際硬件和要求確定合適的掃描周期,這里我們采用定時(shí)器定時(shí)每隔2ms掃描一位。對(duì)于實(shí)際顯示中可能出現(xiàn)的顯示拖尾等現(xiàn)象,我們也在程序中作了一定的處理。
本設(shè)計(jì)顯示及按鍵輸入電路,是在最基本的數(shù)碼管動(dòng)態(tài)顯示電路的基礎(chǔ)上,利用了三極管的特性對(duì)電路加以改進(jìn)。這樣充分利用了數(shù)碼管動(dòng)態(tài)顯示電路中位選端在單片機(jī)上所占用的端口,既保留了并行動(dòng)態(tài)顯示響應(yīng)快的優(yōu)點(diǎn),又沒有增加使用過多的單片機(jī)I/O資源,同時(shí)電路設(shè)計(jì)成本較低,電路在硬件結(jié)構(gòu)上簡單易搭,具有一定的實(shí)用價(jià)值。
[1]李廣第,朱月秀,冷祖祁編著.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2007.
[2]康華光主編.電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2006.