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