李宗瑛
摘要:以國產(chǎn)STC89C52單片機(jī)為核心,控制8×8 LED點(diǎn)陣顯示數(shù)字與簡(jiǎn)單圖形。按照總體方案設(shè)計(jì),硬件單元設(shè)計(jì),應(yīng)用程序設(shè)計(jì),固化與脫機(jī)運(yùn)行的單片機(jī)系統(tǒng)開發(fā)流程進(jìn)行闡述。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);74HC595;8×8點(diǎn)陣
中圖分類號(hào):TN873 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)02-0017-02
8×8點(diǎn)陣模塊是構(gòu)成LED點(diǎn)陣顯示屏的基本單元,掌握了8×8點(diǎn)陣的工作原理、硬件制作及C51編程方法,能更好地使用單片機(jī)控制8×16、16×16及16×64等更大規(guī)模的點(diǎn)陣進(jìn)行顯示。
1 總體方案設(shè)計(jì)
方案一:利用STC89C52單片機(jī)的2個(gè)8位并行I/O口分別控制8×8點(diǎn)陣的8行與8列,點(diǎn)陣的行與列引腳收到單片機(jī)發(fā)出的0或1信號(hào),從而點(diǎn)亮對(duì)應(yīng)位置的LED。
方案二:由于STC89C52單片機(jī)上的I/O接口數(shù)量有限,在系統(tǒng)設(shè)計(jì)過程中,對(duì)單片機(jī)的I/O接口進(jìn)行擴(kuò)展,以此來增強(qiáng)其輸出能力[1]。
方案一的電路工作原理簡(jiǎn)單,但占用較多單片機(jī)I/O引腳。方案二不但節(jié)省I/O引腳,還能提高單片機(jī)的驅(qū)動(dòng)能力,但電路連線比方案一復(fù)雜。經(jīng)過比較,選擇方案二,利用2片74HC595芯片分別驅(qū)動(dòng)8×8點(diǎn)陣的行與列。
2 單片機(jī)控制8×8LED點(diǎn)陣的工作原理
74HC595是一個(gè)8位串行輸入、并行輸出的位移緩存器,既能鎖存,也能移位寄存。本設(shè)計(jì)中,用單片機(jī)P3.4引腳控制第1個(gè)74HC595的14引腳(SDATA),用P3.5引腳控制74HC595的12引腳(STCLK),用P3.6引腳控制74HC595的11引腳(SHCLK),即用單片機(jī)的3個(gè)I/O引腳控制74HC595的3個(gè)引腳,就可以驅(qū)動(dòng)8×8點(diǎn)陣進(jìn)行顯示。
從圖1中可以看出,兩個(gè)74HC595公用時(shí)鐘信號(hào),所以第1個(gè)74HC595的12引腳與第2個(gè)74HC595的12引腳相連,第1個(gè)74HC595的11引腳與第2個(gè)74HC595的11引腳相連。單片機(jī)通過P3.4引腳將8位數(shù)據(jù)依次串行發(fā)送給第1個(gè)74HC595的數(shù)據(jù)端14引腳。單片機(jī)P3.6引腳每做出一個(gè)脈沖,14引腳收到的1位數(shù)據(jù)進(jìn)行移位,直到第1個(gè)74HC595的Q0-Q7存滿了8位數(shù)據(jù),當(dāng)多于8位數(shù)據(jù),數(shù)據(jù)就通過第1個(gè)74HC595的9引腳(SOUT)串行進(jìn)入到第2個(gè)74HC595的14引腳。要將第1個(gè)74HC595的Q0-Q7數(shù)據(jù)依次串行送入第2個(gè)74HC595的Q0-Q7(a-h),用于控制點(diǎn)陣的8列,再由單片機(jī)串行輸入數(shù)據(jù)至第1個(gè)74HC595的Q0-Q7(A-H),用于控制點(diǎn)陣的8行,直至兩個(gè)74HC595 都鎖存了8位數(shù)據(jù),此時(shí),通過P3.5引腳輸出一個(gè)脈沖,使得兩個(gè)74HC595鎖存的8位數(shù)據(jù)全部并行輸出,與此同時(shí),點(diǎn)陣模塊通過相應(yīng)的電平信號(hào)將點(diǎn)陣燈點(diǎn)亮,即可達(dá)到顯示效果,可以顯示文字、數(shù)據(jù)或者圖像[2]。
總之,當(dāng)數(shù)據(jù)移位時(shí),可以保持鎖存器輸出的數(shù)據(jù)不改變,等所有8位數(shù)據(jù)全部串入完成移位操作后,一次性的將數(shù)據(jù)打入鎖存器中,從而實(shí)現(xiàn)了并行輸出的同步改變[3]。
3 應(yīng)用程序的設(shè)計(jì)與調(diào)試
在整個(gè)C51程序中摘取部分程序,74HC595的串行輸入與并行輸出的程序如下所示:
sbit SER= P3^4; //串行數(shù)據(jù)輸入,對(duì)應(yīng)74HC595的14腳SDATA
sbit SH_CK = P3^6;//移位寄存器時(shí)鐘輸入,對(duì)應(yīng)74HC595的11腳SHCLK
sbit ST_CK = P3^5;//存儲(chǔ)寄存器時(shí)鐘輸入,對(duì)應(yīng)74HC595的12腳STCLK
void Ser_IN(uchar Data)//串行數(shù)據(jù)輸入
上段程序中,通過一個(gè)for(i=0;i<8;i++)來存儲(chǔ)數(shù)據(jù),假設(shè)單片機(jī)要發(fā)送Data 為10101101的8位數(shù)據(jù),i=0時(shí),執(zhí)行語句SER=Data&0x80;后,單片機(jī)首先通過P3^4發(fā)送位于最高位的1給第1個(gè)74HC595的14引腳,再給Q0。當(dāng)SH_CK=1;時(shí),數(shù)據(jù)寄存器的數(shù)據(jù)移位,即Q0的數(shù)據(jù)1移位給Q1。for(i=0;i<8;i++)循環(huán)8次,數(shù)據(jù)按照Q0->Q1->Q2-->Q3-->...-->Q7進(jìn)行移位,當(dāng)8位數(shù)據(jù)移位結(jié)束時(shí)Q7Q6Q5Q4Q3Q2Q1Q0分別為10101101。此時(shí),讓ST_CK=1;則74HC595同時(shí)輸出8位數(shù)據(jù)。
4 結(jié)語
LED顯示屏在現(xiàn)代生活中應(yīng)用廣泛,掌握單片機(jī)控制LED顯示屏成為必然要求,要理解74HC595如何驅(qū)動(dòng)8×8點(diǎn)陣,多練習(xí)軟件編程的方法。
參考文獻(xiàn)
[1]李鵬程.LED顯示屏技術(shù)與控制系統(tǒng)研究[J].無線互聯(lián)科技,2017,(15):67-68.
[2]程垚,張向陽,孔令楊等.基于MCS51單片機(jī)的大屏幕廣告顯示牌設(shè)計(jì)[J].科技廣場(chǎng),2017(5):77-80.
[3]周克輝.基于單片機(jī)的自動(dòng)計(jì)數(shù)器設(shè)計(jì)[J].時(shí)代農(nóng)機(jī),2015,42(3):34-36.