LED矩陣顯示器可以顯示文本、圖形、動畫,具有很高的靈活性,你可以在顯示地鐵、公路或街邊廣告牌上看到它們。下面英銳恩單片機開發工程師們分享了使用PIC單片機制作的LED矩陣顯示器,該LED矩陣顯示器為8行40列排列的320個LED,使用的單片機為PIC16F1847單片機,它通過串行端口(或使用USB-UART接口的USB)從PC接收數據,并借助五個74HC595移位寄存器在LED矩陣上顯示。
一、基于PIC單片機的LED矩陣顯示器原理及電路圖
在本方案中,五個8×8方形LED顯示模塊以線性方式排列,以構建一個8行X 40列的顯示矩陣。我在該方案中使用的LED顯示模塊是Futurlec的NFM-12883AS。它們是共行陰極型,這意味著每行中所有LED的陰極都相互連接。因此,每行引腳應從該行中的八個LED吸收電流。所有5個模塊的相似行引腳進一步連接在一起,并饋送到ULN2803 IC的輸出接收器,該IC由8個達林頓陣列組成?,F在,ULN2803的每個輸出引腳都是該特定行中40個(= 8×5)LED的接收器。由于ULN2803可以每個引腳吸收高達500 mA的電流,因此每個LED的電流被限制為500/40 = 12.5 mA。
LED的陽極端子可通過列引腳訪問,由于用的是行掃描技術,所以每個列引腳只需要為一個LED提供電流,也就是說一次在該列中只有一行處于活動狀態。這些列由40位串行并行并行輸出的輸出驅動,該輸出是通過級聯五個74HC595 IC來構建的。74HC595器件是一個8位串行輸入和并行/串行輸出移位寄存器,串行輸出功能允許級聯多個74HC595器件。從工程學的角度來看,74HC595可能不是列驅動器的理想選擇,因為它們并不打算為LED提供電流。但是過去的一些實驗表明,它們可以驅動LED合理地點亮,因此可以用作此類LED矩陣顯示器方案中的列驅動器。
在方案中使用的單片機是增強型中檔8位PIC系列的PIC16F1847。它使用內部時鐘源(啟用PLL)以32 MHz運行。PORTB通過ULN2803達林頓對陣列為各個行(陰極)提供接地路徑,而RA0,RA1和RA2引腳用于控制級聯移位寄存器的Data,SH_CP和ST_CP線。PIC16F1847的引腳8和7是UART通信的默認引腳。他們進入USB-UART模塊與PC進行串行通信。PC上運行的串行終端程序可用于將字符數據發送到單片機,單片機將接收到的信息保存到其內部EEPROM中。
二、本方案使用的單片機開發軟件
這個方案的固件是使用mikroC Pro for PIC編譯器開發的。該程序使用8×5字節(= 320位)的數組(Buffer [8][5])存儲顯示像素信息,每一位對應一個LED。用戶可以使用串行終端程序將消息從PC發送到顯示板。我在Windows上使用Termite 2.9程序。發送的信息將保存到PIC的內部EEPROM中。前兩個EEPROM位置保留用于數據輸入標志和消息中的字符數。以下步驟詳細描述了該方案的固件如何運行:
1.電源打開。PIC單片機初始化端口,并監聽其串行端口。它會顯示一條消息“你準備好輸入了嗎?Y/N到串行端口,并且該消息顯示在PC串行終端應用程序窗口中。用戶有3秒的時間發送字符“Y”。否則,單片機會繼續并顯示預存儲的消息。從右向左滾動顯示該消息。單片機和PC之間的串行通信速度為115200 bps。
2.如果用戶發送“ Y”,則單片機等待輸入數據。單片機讀取傳入的字節,直到接收到“?!?,這表示PC發送的最后一個字符字節。然后,單片機將1寫入EEPROM位置0x00,并保存在EEPROM位置0x01接收的字節數。接收到的字符從0x02開始順序保存到EEPROM順序位置。
3.接下來,單片機將字符數據從EEPROM加載到RAM中,并從右向左滾動顯示在LED矩陣上。每個字符都映射到其圖形字體,該圖形字體作為靜態數組保存在程序存儲器中。
三、源代碼附件
以上就是英銳恩單片機開發工程師分享的使用PIC單片機制作LED矩陣顯示器的方法。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機。