“第二十七课--Microduino 8*8点阵静态显示/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
原理图
程序
 
(未显示2个用户的3个中间版本)
第7行: 第7行:
  
 
==设备==
 
==设备==
*'''[[Microduino-Core]]'''
+
*'''[[Microduino-Core/zh]]'''
*'''[[Microduino-FT232R]]'''
+
*'''[[Microduino-USBTTL/zh]]'''
 
*其他硬件设备
 
*其他硬件设备
 
**面包板跳线  一盒   
 
**面包板跳线  一盒   
第69行: 第69行:
  
 
==程序==
 
==程序==
<source lang="cpp">
 
  
 
+
[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Advanced/Microduino8_8static Microduino8_8static]
    //Pin 连接到 74HC595的ST_CP
 
    int latchPin = 8;
 
    //Pin 连接到 74HC595的SH_CP
 
    int clockPin = 12;
 
    ////Pin 连接到 74HC595的DS
 
    int dataPin = 11;
 
   
 
   
 
   
 
    void setup() {
 
      //波特率为9600,用于调试 
 
      Serial.begin(9600);
 
      //设置 latchpin 为 output
 
      pinMode(latchPin, OUTPUT);
 
   
 
    }
 
   
 
    void loop() {
 
      //Smile for 8x8 Matrix LED
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B01111111);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B00111100);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B10111111);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B01000010);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11011111);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B10100101);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11101111);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B10000001);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11110111);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B10100101);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11111011);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B10011001);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11111101);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B01000010);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
      digitalWrite(latchPin, 0);
 
      shiftOut(dataPin, clockPin, B11111110);  //掩盖的列(col)
 
      shiftOut(dataPin, clockPin, B00111100);  //行row
 
      digitalWrite(latchPin, 1);
 
   
 
   
 
    }
 
   
 
    void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
 
   
 
      //初始化设置
 
      int i=0;
 
      int pinState;
 
      pinMode(myClockPin, OUTPUT);
 
      pinMode(myDataPin, OUTPUT);
 
   
 
      //clear everything out just in case to
 
      //prepare shift register for bit shifting
 
      digitalWrite(myDataPin, 0);
 
      digitalWrite(myClockPin, 0);
 
   
 
      //for each bit in the byte myDataOut&#239;&#191;&#189;
 
      //NOTICE THAT WE ARE COUNTING DOWN in our for loop
 
      //This means that %00000001 or "1" will go through such
 
      //that it will be pin Q0 that lights.
 
      for (i=7; i>=0; i--)  {
 
        digitalWrite(myClockPin, 0);
 
   
 
        //if the value passed to myDataOut and a bitmask result
 
        // true then... so if we are at i=6 and our value is
 
        // %11010100 it would the code compares it to %01000000
 
        // and proceeds to set pinState to 1.
 
        if ( myDataOut & (1<<i) ) {
 
          pinState= 1;
 
        }
 
        else {     
 
          pinState= 0;
 
        }
 
   
 
        //Sets the pin to HIGH or LOW depending on pinState
 
        digitalWrite(myDataPin, pinState);
 
        //register shifts bits on upstroke of clock pin 
 
        digitalWrite(myClockPin, 1);
 
        //zero the data pin after shift to prevent bleed through
 
        digitalWrite(myDataPin, 0);
 
      }
 
   
 
      //stop shifting
 
      digitalWrite(myClockPin, 0);
 
    }
 
 
 
 
 
</source>
 
  
 
==调试==
 
==调试==
第184行: 第76行:
  
 
步骤二:电路连接如下图:
 
步骤二:电路连接如下图:
[[File:第二十七课-Microduino 8*8点阵静态显示连接图.jpg|600px|center|thumb]]
+
[[File:第二十七课-Microduino 8_8点阵静态显示连接图.jpg|600px|center|thumb]]
 
为了更好的保护电路,可以在其中一个74HC595芯片连接8*8点阵之间的八条线中各加一个220欧姆电阻,本例中没有加入电阻所以LED特别亮,如果点阵的质量不好的话很容易坏掉。
 
为了更好的保护电路,可以在其中一个74HC595芯片连接8*8点阵之间的八条线中各加一个220欧姆电阻,本例中没有加入电阻所以LED特别亮,如果点阵的质量不好的话很容易坏掉。
  

2014年10月29日 (三) 04:50的最新版本

Language English

目的

本教程将教大家如何使用2个74HC595芯片来控制8*8点阵LED,显示一个静态的笑脸

设备


8*8点阵LED简介: 8*8点阵LED就是把64个发光二极管做成点阵的形式,由于型号不同,引脚的定义也不同,本例用到的8*8点阵LED的型号是:LD-1088BS,其引脚定义如下图:

第二十七课-Microduino 8 8点阵引脚定义.jpg

原理图

第二十七课-Microduino 8 8点阵静态显示原理图.jpg


引脚表:

点阵ROW 点阵16pin 74HC595 74HC595
1 13 15 Q0
2 3 1 Q1
3 4 2 Q2
4 10 3 Q3
5 6 4 Q4
6 11 5 Q5
7 15 6 Q6
8 16 7 Q7
点阵COL 点阵16pin 74HC595 74HC595
1 5 15 Q0
2 2 1 Q1
3 7 2 Q2
4 1 3 Q3
5 12 4 Q4
6 8 5 Q5
7 14 6 Q6
8 9 7 Q7

程序

Microduino8_8static

调试

步骤一:把代码复制到IDE中,编译

步骤二:电路连接如下图:

第二十七课-Microduino 8 8点阵静态显示连接图.jpg

为了更好的保护电路,可以在其中一个74HC595芯片连接8*8点阵之间的八条线中各加一个220欧姆电阻,本例中没有加入电阻所以LED特别亮,如果点阵的质量不好的话很容易坏掉。

步骤三:运行代码

结果

8*8点阵LED上面会显示一个笑脸

视频