2013年6月26日 星期三

S3C2440嵌入式8*8 點矩陣

VB程式工具  "S3C2440嵌入式ARM" "計算8*8 點矩陣LED值" 

download: 下載此工具





















#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"


#define LED8X8_Address *(volatile U16 *)( 0x08001000 )  //nGCS1
U16 LED8X8_Disp1[8] = { 0X00,0X00,0X00,0X84,0XFE,0X80,0X00,0X00 } ;//1
U16 LED8X8_Disp2[8] = { 0X00,0X00,0XF2,0X92,0X92,0X92,0X9E,0X00 } ;//2
U16 LED8X8_Disp3[8] = { 0X00,0X00,0X92,0X92,0X92,0X92,0XFE,0X00 } ;//3
U16 LED8X8_Disp4[8] = { 0X00,0X00,0X1E,0X10,0X10,0X10,0XFE,0X00 } ;//4
U16 LED8X8_Disp5[8] = { 0X00,0X00,0X9E,0X92,0X92,0X92,0XF2,0X00 } ;//5

void LED8X8_Display( U16 *LED8X8, U32 d)
{
 U16 m,j;
 while( d-- )
 {
  for( j = 0; j < 16; j++ )
  {
  for( m = 0; m < 8; m++ )
  {
   LED8X8_Address = ( (1<<(j+m))&0xff00 ) | ( (~LED8X8[m]) & 0x00ff ) ;
   Delay(10 ) ;
  }
  }
break ;
 }
}

void Test_LED8X8(void)
{
   Uart_Printf( "S3C2410A 8X8 LED test, press ESC key to exit !\n" ) ;

    while( Uart_GetKey() != ESC_KEY )
    {
  LED8X8_Display( LED8X8_Disp1, 30 ) ;
  LED8X8_Display( LED8X8_Disp2, 30 ) ;
  LED8X8_Display( LED8X8_Disp3, 30 ) ;
  LED8X8_Display( LED8X8_Disp4, 30 ) ;
  LED8X8_Display( LED8X8_Disp5, 30 ) ;
    }

    LED8X8_Address = 0xffff ;
}




原理
8×8 LED 點矩陣電路是需透過CPLD 來作解碼的動作,才可驅動8×8 LED點矩陣電路的資料工作。
8x8 LED點矩陣原理利用總共64LED排成點矩陣型式,建構成大面積的顯示幕即可用來顯示複雜的字型或圖案。而其外觀的圖示,如圖下圖所示。
LED8X8點矩陣電路實體圖如圖下圖所示。
LED8X8點矩陣控制方法
8個行接點(C1~C8)8個列接點(R1~R8),規劃成8條資料線與8條掃描線。每次資料線送出1行編碼資料(1 Bytes),並使用掃描線,選擇其中一行輸出,經短暫的延遲時間,送出下一行編碼資料,8行輪流顯示,利用眼睛視覺暫留效應,看到整個編碼圖形的顯示。
如下圖所示,為送出一組位元組(11011111b)顯示的圖式的示意圖。
而其控制方式,如下所列:1.掃描輸出:由於點矩陣字幕需要多點輸出(8x8共需64LED) ,因此需採用掃描輸出方式(程式),解碼出擴充接點(電路),以節省輸出埠的數量。
2.輸出方式:共陽型與共陰型(輸出準位剛好相反
3.顯示圖案/字型編碼:單色字幕機,每個LED 需要一個位元的資料。若以8x8 點矩陣來說,每列個點則需要一個位元組資料,共計八列需要8 Bytes 資料。因此,在程式中需設定陣列資料。

上圖:資料栓鎖電路硬體電路由資料線 [0:15]通過HC574栓鎖器,再經過電晶體放大來驅動8×8 LED點矩陣,靜態方式顯示。

沒有留言:

張貼留言