8x8矩陣顯示器實習(3)-字母左移跑馬燈

 8x8矩陣顯示器實習(3)-字母左移跑馬燈


接續"8x8矩陣顯示器實習(2)-跑跑小藍人"的觀念,接著讓字母像
跑馬燈左移。

這裡特別一提左移的觀念

觀念速記

程式裡有這一段,白話一點解釋
  1. //白話解釋:設一個temp為暫存器,剩下的7排led往前推進,例如
  2. //character[0]排被character[0+1]排取代,依此類推,迴圈跑
  3. //完後最後一個被推到最前一排再被存入暫存器
  1. temp=character[0];
  2. for (byte i = 0; i < 7; i++){
  3. character[i]=character[i+1];
  4. }
  5. character[7]=temp;

程式碼

  1. # include <SPI.h>
  2.  
  3. byte temp;
  4.  
  5. // 定義 MAX7219 暫存器值
  6. const byte NOOP = 0x0; // 不運作
  7. const byte DECODEMODE = 0x9; // 解碼模式
  8. const byte INTENSITY = 0xA; // 顯示強度
  9. const byte SCANLIMIT = 0xB; // 掃描限制
  10. const byte SHUTDOWN = 0xC; // 停機
  11. const byte DISPLAYTEST = 0xF; // 顯示器檢測
  12.  
  13. byte character[8]={0x00,0xfc,0x12,0x11,0x11,0x12,0xfc,0x00};
  14.  
  15. void max7219(byte reg, byte data){
  16. digitalWrite(SS, LOW);
  17. SPI.transfer(reg);
  18. SPI.transfer(data);
  19. digitalWrite(SS,HIGH);
  20. }
  21.  
  22. void setup(){
  23. SPI.begin();
  24. max7219(SCANLIMIT, 7); // 設定掃描 8 行
  25. max7219(DECODEMODE, 0); // 不使用 BCD 解碼
  26. max7219(INTENSITY, 8); // 設定成中等亮度
  27. max7219(DISPLAYTEST, 0); // 關閉顯示器測試
  28. max7219(SHUTDOWN, 1); // 關閉停機模式(開機)
  29. for (byte i = 0; i < 8; i++){
  30. max7219(i+1, 0);
  31. }
  32. }
  33.  
  34. void loop(){
  35. //白話解釋:設一個temp為暫存器,剩下的6排led往前推進,例如
  36. //character[0]排被character[0+1]排取代,依此類推,迴圈跑
  37. //完後最後一個被推到最前一排再被存入暫存器
  38. temp=character[0];
  39. for (byte i = 0; i < 7; i++){
  40. character[i]=character[i+1];
  41. }
  42. character[7]=temp;
  43.  
  44. for (byte j = 0; j < 8; j++){
  45. max7219(j+1, character[j]);
  46. }
  47. delay(500);
  48. }

實作成果







留言

這個網誌中的熱門文章

平衡小車(balance-Robot)-基本平衡-Arduino