基于多端口串行Flash的條形LED顯示屏控制
4 超長LED 顯示屏顯示程序設計
在1 /16 單色LED 顯示屏硬件電路設計中,74HC595 采用直通方式連接。 根據直通方式特點,預先對單色顯示數據進行優化組織,將組織后的顯示數據預先存放在串行Flash 存儲器SST26VF016B 中。 如圖4 所示,單片機輸出顯示每行數據時按"輸出數據→送移位脈沖→地址加1"的順序重復進行,顯示完一行后,RCK 鎖存顯示,通過ABCD 切換行選通線。
圖4 1 /16 掃描單色F3. 75 或F5. 0 單元板( 64 × 32 點) 連接方式。
以LED 顯示屏的水平方向點數為4 096 點為例,其顯示一幀數據的程序代碼如下:
woid Display( unsigned long begin_Addr)
{
unsigned char Ln
,Bv = 1;
unsigned int Data_Length,Lw = 4096;
unsigned long Addr;
Data_Length = Bv* Lw
) ;
for ( Ln = 0; Ln 16; Ln + + )
{
Addr = Begin_Addr + Ln* Data_Length;
CS = 0;
SendSQI_Byte( 0x0B) ; / /送讀命令
/ /送3 個字節地址
SendSQI_Byte( ( Addr 》 16) 0xff) ;
SendSQI_Byte( ( Addr 》 8) 0xff) ;
SendSQI_Byte( ( Addr0xff) ;
SendSQI_Byte( ( 0xff) ; / /送虛字節
P2 = P2 |0x0f;
SPCTL = 0xd0; / /允許SPI 接口
SPDAT = 0xff; / /啟動第1 次SPI 發送
Data_Length = ( Data_Length 》 3) - 1;
while( Data_Length! = 0)
{ / /SPI 時鐘每次傳輸8 個脈沖
while( ( SPSTAT0x80) == 0) ;
SPSTAT = 0x80; / /清接收標志
SPDAT = 0xff; / /啟動SPI 發送
Data_Length -- ;
}
while( ( SPSTAT0x80) == 0) ;
SPSTAT = 0x80; / /清接收標志
SPCTL = 0x90; / /禁止SPI 接口
CS = 1; /* disable devicce * /
EN = 0;
RCK = 1; RCK = 0;
PI = ( ( P10xf0) | Ln
) ;
EN = 1;
}
}
在設計程序時,僅在換行時關閉顯示屏,避免它產生余輝,其余時間都點亮。 在該程序中,Bv為數據線在垂直方向使用595 的組數; Lw為LED 顯示屏水平方向像素點數; Ln為當前LED 顯示屏顯示數據行號。 當顯示數據時,采用存儲器和LED 顯示屏的數據輸出模式,單片機先向串行存儲器輸出"讀數據"命令字"0x0B",然后輸出24 位地址和虛擬字節,再使單片機數據口輸出高電平,就可以根據LED 顯示屏的長度輸出SCK 脈沖。 送完一行數據后,禁止SPI 接口,RCK 鎖存信號有效,切換至下一行,按重復步驟繼續輸出顯示數據。
5 測試
經過測試后,顯示屏顯示正常,沒有抖動情況,使用邏輯分析儀測試了其刷新率,如圖5( b) 所示,信號A 的電平寬度表示顯示1 行所需要的時間,其寬度為1. 036 16 ms,顯示1 幀的時間為16 ×1. 036 16 ms≈16 ms,所以LED 顯示屏的刷新率為1 /16 ms = 62. 5 Hz. 而當LED 顯示屏的刷新率大于50 次/s 時,就可以滿足設計要求,故本設計能夠滿足正常顯示要求。 通過測試SCK 信號,如圖5( a)所示,可以看出SCK 信號每8 個脈沖1 組,每組之間的時間間隔僅為570 ns,該時間主要消耗在判斷SPI 數據傳輸完成標志和循環控制上。
圖5 LED 屏信號測試
6 結論
本文提出了基于多端口串行Flash 存儲器的LED 顯示控制系統,利用單片機的SPI 接口產生可控時鐘,將多端口串行Flash 存儲器中的顯示數據以"DMA"方式直接輸出至超長條形LED 顯示屏。
其制造成本低廉,根據本文程序及邏輯分析儀得到的時序圖可知,該方法可以控制4 096 × 64 點陣單色LED 顯示屏,在超長顯示屏市場上有很好的應用前景。
評論