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