Advertisement
pigg

Arduino 16x16LED矩陣校徽

Mar 14th, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.72 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. unsigned char  Word1[1][32] =
  16. {
  17. 0xFF,0xF6,0xF0,0xF3,0x87,0xC0,0xDE,0x90,0x16,0xD0,0xDE,0x80,0xF7,0xF0,0xF2,0xFE,
  18. 0x7F,0x6F,0x0F,0xEF,0xE1,0x09,0x7B,0x09,0x68,0x0B,0x7B,0x01,0xE7,0x0F,0x6F,0x7F,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\1.bmp",0*/
  19.  
  20. };
  21.  
  22. unsigned char  Word2[1][32] =
  23. {
  24. 0xFE,0xF6,0xE0,0xF3,0x87,0x80,0xDE,0x90,0x16,0xD0,0xDE,0x80,0xC7,0xF0,0xF2,0xFF,
  25. 0xFF,0x4F,0x0F,0xEB,0xE1,0x0B,0x7B,0x08,0x69,0x0B,0x79,0x01,0xE7,0x07,0x2F,0x7F,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\2.bmp",0*/
  26.  
  27. };
  28. unsigned char  Word3[1][32] =
  29. {
  30. 0xFE,0xFC,0xE0,0xE3,0xC7,0x90,0xDE,0xD0,0x16,0x90,0xDE,0xC0,0xC7,0xF0,0xF1,0xFF,
  31. 0xFF,0xCF,0x0F,0xE3,0xE3,0x0B,0x79,0x08,0x69,0x0B,0x79,0x01,0xE7,0x07,0x3F,0x7F,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\3.bmp",0*/
  32.  
  33. };
  34. unsigned char  Word4[1][32] =
  35. {
  36. 0xFF,0xFC,0xE0,0xE3,0xE7,0x90,0x9E,0xD0,0x16,0x10,0xDE,0xC0,0xC7,0xF8,0xF9,0xFF,
  37. 0xFF,0xDF,0x1F,0xE3,0xE3,0x0B,0x78,0x08,0x6B,0x09,0x79,0x01,0xE7,0x07,0x3F,0xBF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\4.bmp",0*/
  38.  
  39. };
  40. unsigned char  Word5[1][32] =
  41. {
  42. 0xFD,0xFC,0xE0,0xE3,0xE7,0x80,0x9E,0xD0,0x96,0x10,0xDE,0xE0,0xC7,0xF8,0xF9,0xFF,
  43. 0xFF,0x9F,0x1F,0xE3,0xE3,0x0B,0x78,0x09,0x6B,0x09,0x79,0x07,0xE7,0x07,0x3F,0xBF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\5.bmp",0*/
  44.  
  45. };
  46. unsigned char  Word6[1][32] =
  47. {
  48. 0xFD,0xF9,0xE8,0xC3,0xE7,0x80,0x1E,0xD0,0xD6,0x10,0x9E,0xE0,0xC7,0xF8,0xF8,0xFF,
  49. 0xBF,0x9F,0x17,0xE3,0xE7,0x09,0x78,0x09,0x69,0x08,0x79,0x07,0xE3,0x13,0x9F,0xBF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\6.bmp",0*/
  50.  
  51. };
  52. unsigned char  Word7[1][32] =
  53. {
  54. 0xFF,0xF9,0xF8,0xC7,0xC7,0xC0,0x1E,0x90,0xD6,0x90,0x9E,0xE0,0xE7,0xF0,0xFC,0xFF,
  55. 0xBF,0x3F,0x17,0xE7,0xE7,0x09,0x79,0x0B,0x69,0x08,0x7B,0x03,0xE3,0x1F,0x9F,0xFF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\7.bmp",0*/
  56.  
  57. };
  58. unsigned char  Word8[1][32] =
  59. {
  60. 0xFF,0xF9,0xF8,0xC7,0xC7,0xC0,0x9E,0x10,0xD6,0x90,0x9E,0xC0,0xE7,0xF0,0xFC,0xFE,
  61. 0xFF,0x3F,0x07,0xC7,0xE7,0x09,0x79,0x0B,0x68,0x08,0x7B,0x03,0xE3,0x1F,0x9F,0xFF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\8.bmp",0*/
  62. };
  63. unsigned char  Word9[1][32] =
  64. {
  65. 0xFF,0xFB,0xF8,0xC3,0xC7,0xC0,0x9E,0x10,0xD6,0xD0,0x9E,0x80,0xE7,0xF0,0xF4,0xFE,
  66. 0x7F,0x3F,0x07,0xC7,0xE1,0x09,0x7B,0x0B,0x68,0x09,0x7B,0x03,0xE3,0x0F,0x4F,0xFF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\9.bmp",0*/
  67.  
  68. };
  69. unsigned char  Word10[1][32] =
  70. {
  71. 0xFF,0xF2,0xF0,0xD3,0xC7,0xC0,0xDE,0x10,0x96,0xD0,0x9E,0x80,0xF7,0xF0,0xF6,0xFE,
  72. 0x7F,0x6F,0x07,0xC7,0xE1,0x09,0x7B,0x09,0x68,0x09,0x7B,0x01,0xE3,0x0F,0x4F,0xFF,/*"C:\Users\照臨\Downloads\校徽\gear\bmp\10.bmp",0*/
  73.  
  74.  
  75. };
  76. const unsigned char  Init_Display[1][32] =
  77. {
  78.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  79.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  80. };
  81.  
  82. void setup()
  83. {
  84.     pinMode(LEDARRAY_D, OUTPUT);
  85.     pinMode(LEDARRAY_C, OUTPUT);
  86.     pinMode(LEDARRAY_B, OUTPUT);
  87.     pinMode(LEDARRAY_A, OUTPUT);
  88.     pinMode(LEDARRAY_G, OUTPUT);
  89.     pinMode(LEDARRAY_DI, OUTPUT);
  90.     pinMode(LEDARRAY_CLK, OUTPUT);
  91.     pinMode(LEDARRAY_LAT, OUTPUT);
  92.         Display(Init_Display);
  93.         Serial.begin(9600);
  94. }
  95.  
  96. void loop()
  97. {
  98.   int spd = 18;        //delay時間
  99.   for  (int i=1;i<=spd;i++)
  100.   {
  101.   Display(Word1);
  102.   Serial.println('1');
  103.   }
  104.    for  (int i=1;i<=spd;i++)
  105.   {
  106.   Display(Word2);
  107.    Serial.println('2');
  108.   }
  109.   for  (int i=1;i<=spd;i++)
  110.   {
  111.    Display(Word3);
  112.     Serial.println('3');
  113.   }
  114.     for  (int i=1;i<=spd;i++)
  115.   {
  116.   Display(Word4);
  117.    Serial.println('4');
  118.   }
  119.    for  (int i=1;i<=spd;i++)
  120.   {
  121.   Display(Word5);
  122.    Serial.println('5');
  123.   }
  124.   for  (int i=1;i<=spd;i++)
  125.   {
  126.    Display(Word6);
  127.     Serial.println('6');
  128.   }
  129.     for  (int i=1;i<=spd;i++)
  130.   {
  131.   Display(Word7);
  132.    Serial.println('7');
  133.   }
  134.    for  (int i=1;i<=spd;i++)
  135.   {
  136.   Display(Word8);
  137.    Serial.println('8');
  138.   }
  139.   for  (int i=1;i<=spd;i++)
  140.   {
  141.    Display(Word9);
  142.     Serial.println('9');
  143.   }
  144.   for  (int i=1;i<=spd;i++)
  145.   {
  146.    Display(Word10);
  147.     Serial.println('0');
  148.   }
  149. }
  150.  
  151.  
  152.  
  153. void Display(const unsigned char dat[][32])                
  154. {
  155.     unsigned char i;
  156.  
  157.     for( i = 0 ; i < 16 ; i++ )
  158.     {
  159.         digitalWrite(LEDARRAY_G, HIGH);    
  160.        
  161.         Display_Buffer[0] = dat[0][i];     
  162.         Display_Buffer[1] = dat[0][i+16];
  163.  
  164.         Send(Display_Buffer[1]);
  165.         Send(Display_Buffer[0]);
  166.  
  167.         digitalWrite(LEDARRAY_LAT, HIGH);                  
  168.         delayMicroseconds(1);
  169.    
  170.         digitalWrite(LEDARRAY_LAT, LOW);
  171.         delayMicroseconds(1);
  172.  
  173.         Scan_Line(i);                      
  174.  
  175.         digitalWrite(LEDARRAY_G, LOW);
  176.        
  177.         delayMicroseconds(100);;                           
  178.     }  
  179. }
  180.  
  181.  
  182. void Scan_Line( unsigned char m)
  183. {  
  184.     switch(m)
  185.     {
  186.         case 0:        
  187.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);                   
  188.             break;
  189.         case 1:                
  190.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);      
  191.             break;
  192.         case 2:                
  193.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);      
  194.             break;
  195.         case 3:                
  196.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);     
  197.             break;
  198.         case 4:
  199.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);      
  200.             break;
  201.         case 5:
  202.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);     
  203.             break;
  204.         case 6:
  205.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);     
  206.             break;
  207.         case 7:
  208.             digitalWrite(LEDARRAY_D, LOW);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);        
  209.             break;
  210.         case 8:
  211.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);      
  212.             break;
  213.         case 9:
  214.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);     
  215.             break; 
  216.         case 10:
  217.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);     
  218.             break;
  219.         case 11:
  220.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, LOW);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);        
  221.             break;
  222.         case 12:
  223.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, LOW);     
  224.             break;
  225.         case 13:
  226.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, LOW);digitalWrite(LEDARRAY_A, HIGH);        
  227.             break;
  228.         case 14:
  229.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, LOW);        
  230.             break;
  231.         case 15:
  232.             digitalWrite(LEDARRAY_D, HIGH);digitalWrite(LEDARRAY_C, HIGH);digitalWrite(LEDARRAY_B, HIGH);digitalWrite(LEDARRAY_A, HIGH);       
  233.             break;
  234.         default : break;   
  235.     }
  236. }
  237.  
  238.  
  239. void Send( unsigned char dat)
  240. {
  241.     unsigned char i;
  242.     digitalWrite(LEDARRAY_CLK, LOW);
  243.     delayMicroseconds(1);; 
  244.     digitalWrite(LEDARRAY_LAT, LOW);
  245.     delayMicroseconds(1);;
  246.  
  247.     for( i = 0 ; i < 8 ; i++ )
  248.     {
  249.         if( dat&0x01 )
  250.         {
  251.             digitalWrite(LEDARRAY_DI, HIGH);   
  252.         }
  253.         else
  254.         {
  255.             digitalWrite(LEDARRAY_DI, LOW);
  256.         }
  257.  
  258.         delayMicroseconds(1);
  259.         digitalWrite(LEDARRAY_CLK, HIGH);          
  260.             delayMicroseconds(1);
  261.         digitalWrite(LEDARRAY_CLK, LOW);
  262.             delayMicroseconds(1);      
  263.         dat >>= 1;
  264.            
  265.     }          
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement