Advertisement
pigg

Arduino 16x16LED矩陣顯示圖案

Mar 13th, 2015
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.66 KB | None | 0 0
  1. #include <Arduino.h>
  2.  
  3. //IO    
  4. #define LEDARRAY_D 2
  5. #define LEDARRAY_C 3
  6. #define LEDARRAY_B 4
  7. #define LEDARRAY_A 5
  8. #define LEDARRAY_G 6
  9. #define LEDARRAY_DI 7
  10. #define LEDARRAY_CLK 8
  11. #define LEDARRAY_LAT 9
  12.  
  13.  
  14. unsigned char Display_Buffer[2];
  15.  
  16. //******************************************************************
  17. const unsigned char  Word1[1][32] =
  18. {
  19.  
  20. 0xFF,0xFF,0xFF,0xE1,0xC0,0x80,0x80,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,
  21. 0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,//心形
  22.  
  23. };
  24. //******************************************************************
  25. const unsigned char  Init_Display[1][32] =
  26. {
  27.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  29. };
  30.  
  31. void setup()
  32. {
  33.     pinMode(LEDARRAY_D, OUTPUT);
  34.     pinMode(LEDARRAY_C, OUTPUT);
  35.     pinMode(LEDARRAY_B, OUTPUT);
  36.     pinMode(LEDARRAY_A, OUTPUT);
  37.     pinMode(LEDARRAY_G, OUTPUT);
  38.     pinMode(LEDARRAY_DI, OUTPUT);
  39.     pinMode(LEDARRAY_CLK, OUTPUT);
  40.     pinMode(LEDARRAY_LAT, OUTPUT);
  41.  
  42.     Display(Init_Display);
  43. }
  44.  
  45. void loop()
  46. {
  47.     Display(Word1);
  48. }
  49.  
  50.  
  51.  
  52. void Display(const unsigned char dat[][32])                
  53. {
  54.     unsigned char i;
  55.  
  56.     for( i = 0 ; i < 16 ; i++ )
  57.     {
  58.         digitalWrite(LEDARRAY_G, HIGH);    
  59.        
  60.         Display_Buffer[0] = dat[0][i];     
  61.         Display_Buffer[1] = dat[0][i+16];
  62.  
  63.         Send(Display_Buffer[1]);
  64.         Send(Display_Buffer[0]);
  65.  
  66.         digitalWrite(LEDARRAY_LAT, HIGH);                    
  67.         delayMicroseconds(1);
  68.    
  69.         digitalWrite(LEDARRAY_LAT, LOW);
  70.         delayMicroseconds(1);
  71.  
  72.         Scan_Line(i);                          
  73.  
  74.         digitalWrite(LEDARRAY_G, LOW);
  75.        
  76.         delayMicroseconds(100);;                               
  77.     }  
  78. }
  79.  
  80.  
  81. void Scan_Line( unsigned char m)
  82. {  
  83.     switch(m)
  84.     {
  85.         case 0:        
  86.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);                   
  87.             break;
  88.         case 1:                
  89.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);      
  90.             break;
  91.         case 2:                
  92.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);      
  93.             break;
  94.         case 3:                
  95.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);     
  96.             break;
  97.         case 4:
  98.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);      
  99.             break;
  100.         case 5:
  101.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);     
  102.             break;
  103.         case 6:
  104.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);     
  105.             break;
  106.         case 7:
  107.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);        
  108.             break;
  109.         case 8:
  110.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);      
  111.             break;
  112.         case 9:
  113.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);     
  114.             break; 
  115.         case 10:
  116.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);     
  117.             break;
  118.         case 11:
  119.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);        
  120.             break;
  121.         case 12:
  122.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);     
  123.             break;
  124.         case 13:
  125.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);        
  126.             break;
  127.         case 14:
  128.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);        
  129.             break;
  130.         case 15:
  131.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);       
  132.             break;
  133.         default : break;   
  134.     }
  135. }
  136.  
  137.  
  138. void Send( unsigned char dat)
  139. {
  140.     unsigned char i;
  141.     digitalWrite(LEDARRAY_CLK, LOW);
  142.     delayMicroseconds(1);; 
  143.     digitalWrite(LEDARRAY_LAT, LOW);
  144.     delayMicroseconds(1);;
  145.  
  146.     for( i = 0 ; i < 8 ; i++ )
  147.     {
  148.         if( dat&0x01 )
  149.         {
  150.             digitalWrite(LEDARRAY_DI, HIGH);   
  151.         }
  152.         else
  153.         {
  154.             digitalWrite(LEDARRAY_DI, LOW);
  155.         }
  156.  
  157.         delayMicroseconds(1);
  158.         digitalWrite(LEDARRAY_CLK, HIGH);                
  159.             delayMicroseconds(1);
  160.         digitalWrite(LEDARRAY_CLK, LOW);
  161.             delayMicroseconds(1);      
  162.         dat >>= 1;
  163.            
  164.     }          
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement