8x8矩陣顯示器實習(3)-字母左移跑馬燈
8x8矩陣顯示器實習(3)-字母左移跑馬燈
接續"8x8矩陣顯示器實習(2)-跑跑小藍人"的觀念,接著讓字母像
跑馬燈左移。
這裡特別一提左移的觀念
觀念速記
程式裡有這一段,白話一點解釋
- //白話解釋:設一個temp為暫存器,剩下的7排led往前推進,例如
- //character[0]排被character[0+1]排取代,依此類推,迴圈跑
- //完後最後一個被推到最前一排再被存入暫存器
- temp=character[0];
- for (byte i = 0; i < 7; i++){
- character[i]=character[i+1];
- }
- character[7]=temp;
程式碼
- # include <SPI.h>
- byte temp;
- // 定義 MAX7219 暫存器值
- const byte NOOP = 0x0; // 不運作
- const byte DECODEMODE = 0x9; // 解碼模式
- const byte INTENSITY = 0xA; // 顯示強度
- const byte SCANLIMIT = 0xB; // 掃描限制
- const byte SHUTDOWN = 0xC; // 停機
- const byte DISPLAYTEST = 0xF; // 顯示器檢測
- byte character[8]={0x00,0xfc,0x12,0x11,0x11,0x12,0xfc,0x00};
- void max7219(byte reg, byte data){
- digitalWrite(SS, LOW);
- SPI.transfer(reg);
- SPI.transfer(data);
- digitalWrite(SS,HIGH);
- }
- void setup(){
- SPI.begin();
- max7219(SCANLIMIT, 7); // 設定掃描 8 行
- max7219(DECODEMODE, 0); // 不使用 BCD 解碼
- max7219(INTENSITY, 8); // 設定成中等亮度
- max7219(DISPLAYTEST, 0); // 關閉顯示器測試
- max7219(SHUTDOWN, 1); // 關閉停機模式(開機)
- for (byte i = 0; i < 8; i++){
- max7219(i+1, 0);
- }
- }
- void loop(){
- //白話解釋:設一個temp為暫存器,剩下的6排led往前推進,例如
- //character[0]排被character[0+1]排取代,依此類推,迴圈跑
- //完後最後一個被推到最前一排再被存入暫存器
- temp=character[0];
- for (byte i = 0; i < 7; i++){
- character[i]=character[i+1];
- }
- character[7]=temp;
- for (byte j = 0; j < 8; j++){
- max7219(j+1, character[j]);
- }
- delay(500);
- }
留言
張貼留言