向兵 趙紅軍
摘要:單片機(jī)的應(yīng)用在日常生活中已逐漸普及,大至家用電器,小至兒童玩具。在高等教育中,尤其是電子信息專業(yè)方面,單片機(jī)知識也是必不可少的一門課程。在使用單片機(jī)的同時,不但要求對理論知識的掌握,也需要在實際應(yīng)用中得心應(yīng)手,游刃有余。最基本的莫過于單片機(jī)的端口操作,其中I/O口的電平控制給我們?nèi)粘I顜砹藰O大方便。在使用的過程中,低端單片機(jī)由于I/O口數(shù)量不足導(dǎo)致部分功能無法實現(xiàn),我們常使用數(shù)字集成芯片進(jìn)行擴(kuò)展,如74LS系列移位寄存器,但是這種集成芯片也會由于引腳數(shù)量限制而無法確保單片機(jī)端口的充分?jǐn)U展。所以,在此我們采用復(fù)雜可編程邏輯器件CPLD(Complex Programmable Logic Device)進(jìn)行擴(kuò)展研究,選取EPM1270T144結(jié)合AT89C51芯片進(jìn)行設(shè)計,可根據(jù)實際需求擴(kuò)展對應(yīng)數(shù)量的端口。
關(guān)鍵詞:單片機(jī);I/0口;擴(kuò)展;CPLD
一、AT89C51端口使用
在使用單片機(jī)進(jìn)行電路開發(fā)時,我們肯定會用到其中32個輸入輸出引腳,在程序中對其電平進(jìn)行控制便能實現(xiàn)外圍電路的相應(yīng)功能。例如,控制8*8LED點(diǎn)陣屏?xí)r,我們將其中16個引腳分別接至點(diǎn)陣的行和列,便可讓點(diǎn)陣屏顯示相應(yīng)內(nèi)容??刂?6*16點(diǎn)陣時,將單片機(jī)所有IO口分為兩組,即2*16,便可實現(xiàn)控制。但是如果點(diǎn)陣屏太大,如32*32點(diǎn)陣,則徐64個IO口,這樣,只靠一片AT89C51單片機(jī)是無法直接實現(xiàn)功能控制,所以,我們選擇復(fù)雜可編程邏輯器件EPM1270進(jìn)行端口擴(kuò)展。
二、EPM1270T144
EPM1270是Altera公司旗下MAXⅡ系列產(chǎn)品,內(nèi)部包含1270個邏輯單元,外部144個引腳,根據(jù)使用情況來講,排除下載端口及時鐘引腳,此芯片可用作普通I/O口的數(shù)量高達(dá)115(24個電源接口+4個下載接口+1個時鐘引腳)。EPM1270采用JTAG編程方式,對應(yīng)引腳編號為33-36。
因CPLD無內(nèi)部時鐘,需要外部晶振提供脈沖信號作為其處理節(jié)拍標(biāo)準(zhǔn),在選擇時鐘引腳時,可使用引腳編號為18,20,89,91任一引腳作為時鐘信號輸入端,在此我們使用有源晶振頻率為11.0592MHz作為時鐘基準(zhǔn)。
三、譯碼擴(kuò)展
EPM120為復(fù)雜可編程邏輯器件,其通用I/O口均可設(shè)置為雙向或單向端口。在此,以2-4譯碼為例,即使用單片機(jī)兩個I/O口擴(kuò)展為4路I/O口。我們使用AT89C51D的P1.0,P1.1引腳作為待擴(kuò)展引腳,將其連接至EPM1270編號21,22引腳,通過編號130-133引腳輸出擴(kuò)展信號。此譯碼原理與二進(jìn)制譯碼原理相同,也可進(jìn)行3-8譯碼或4-16譯碼擴(kuò)展。本文擴(kuò)展輸出的4個I/O口連接4路LED進(jìn)行控制。
四、軟件設(shè)計
我們通過AT89C51兩路引腳控制4路LED工作狀態(tài),按照2-4譯碼原理,兩路輸入可形成4種狀態(tài),分別對應(yīng)4路輸出引腳的電平,并在某一時刻單獨(dú)點(diǎn)亮單個LED,若進(jìn)行動態(tài)掃描,則可使顯示效果類似于靜態(tài)多路顯示。單片機(jī)P1.0,P1.1四種工作狀態(tài)00,01,10,11對應(yīng)擴(kuò)展輸出工作狀態(tài)分別為0001,0010,0100,1000。在此,我們以第三種情況為例,將單片機(jī)P1.1-1.0引腳電平設(shè)置為10,則通過P1=0X02即可實現(xiàn),此后譯碼工作由EPM1270完成。由于P1.1-1.0引腳信號作為EPM1270輸入,則需將EPM1270的20,21引腳設(shè)為輸入端口,其設(shè)置代碼如下:
moduleblock1(P10,P11,LED0,LED1,LED2,LED3);
input P10,P11;//定義21,22為輸入引腳
output LED0,LED1,LED2,LED3;//定義130-133為輸出引腳
reg LED0,LED1,LED2,LED3;//將輸出引腳設(shè)置為寄存器類型變量
由于EPM1270輸出信號是由21,22引腳的輸入信號決定,所以邏輯上屬于組合邏輯,只要21,22引腳電平產(chǎn)生變化,則130-133引腳電平會隨之變化,因此,EPM1270程序設(shè)計如下:
always @ (P10 or P11)
begin
if({p11,p10} == 2b00)
begin
{LED3,LED2,LED1,LED0} <= 4b0001;
End
else if({p11,p10} == 2b01)
begin
{LED3,LED2,LED1,LED0} <= 4b0010;
End
else if({p11,p10} == 2b10)
begin
{LED3,LED2,LED1,LED0} <= 4b0100;
end
else if({p11,p10} == 2b11)
begin
{LED3,LED2,LED1,LED0} <= 4b1000;
end
end
編譯完成后,在quartues中點(diǎn)擊assignment->pin,打開Pin Planner進(jìn)行引腳分配,將P10,P11引腳分別配置到EPM1270的第21,22引腳即,將LED0,LED1,LED2,LED3分別分配至EPM1270的130-133引腳即可。
五、小結(jié)
本文通過復(fù)雜可編程邏輯器件EPM1270對單片機(jī)I/O口進(jìn)行擴(kuò)展,其優(yōu)越的可編程性能可充分滿足單片機(jī)應(yīng)用中的端口需求,譯碼原理清晰,程序設(shè)計簡單方便。但是對于追求低成本的電路系統(tǒng)而言,EPM1270價格偏高,焊接技術(shù)要求過硬,對于普通開發(fā)者來講,在需求度不是很高的情況下仍建議采用數(shù)字集成芯片進(jìn)行設(shè)計。
參考文獻(xiàn):
[1]沈莉麗等.FPGA/CPLD設(shè)計與實踐教程[M].中國電力出版社.2017.02
[2]王靜霞.單片機(jī)基礎(chǔ)與應(yīng)用[M].高等教育出版社.2016.3
[3]王金明.數(shù)字系統(tǒng)設(shè)計與verilog HDL[M].電子工業(yè)出版社.2019.01
[4]趙勇等.單片機(jī)原理與接口技術(shù)[M].電子科技大學(xué)出版社.2016.12
[5]劉春龍等.CPLD應(yīng)用技術(shù)實用教程[M].機(jī)械工業(yè)出版社.2012.06
作者簡介:
向兵(1990-),男,漢,四川南充人,助教,碩士研究生,從事單片機(jī)原理與應(yīng)用、電子產(chǎn)品分析與制作等課程研究及項目開發(fā)。
趙紅軍(1980-),男,漢,四川南充人,副教授,在讀博士,從事電力系統(tǒng)設(shè)計與研究。