首页 > 代码库 > Arduino 数码管LED驱动 读位法 16进制

Arduino 数码管LED驱动 读位法 16进制

区别与上两个驱动的方法,用bitRead()读取位数,代码简介一点。

//设置阴极接口
int d1 = 1;
int d2 = 2;
int d3 = 3;
int d4 = 4;
int d5 = 5;
int d6 = 6;
int d7 = 7;
//设置阳极接口
int a = 8;
int b = 9;
int c = 10;
int d = 11;
int e = 12;
int f = 13;
int g = A0;
int h = A1;

const unsigned char Yang[] = { a, b, c, d, e, f, g, h };
const unsigned char YangCode[]={
  0x03,    // 0 = 缺水
  0x0C,    // 1 = 低水位
  0x70,    // 2 = 定时关机
  0x3F,    // 3 = 0
  0x06,    // 4 = 1
  0x5B,    // 5 = 2
  0x4F,    // 6 = 3
  0x66,    // 7 = 4
  0x6D,    // 8 = 5
  0x7D,    // 9 = 6
  0x07,    // 10 = 7
  0x7F,    // 11 = 8
  0x6F,    // 12 = 9
  0x80,    // 13 = 摄氏度符号、睡眠符号
};

byte gyin[7] = { d1, d2, d3, d4, d5, d6, d7 };
byte gong_yin[5][7] = { 
                          { 1,1,1,1,1,1,0 },  // 0 = 缺水、低水位、定时关机
                          { 0,1,1,1,1,1,1 },  // 1 = 温度十位、摄氏度符号
                          { 1,0,1,1,1,1,1 },  // 2 = 温度个位、睡眠符号
                          { 0,0,1,1,1,1,1 },  // 3 = 温度个和十位
                          { 1,1,0,0,0,0,1 },  // 4 = 时钟个、十位和两点
                        }; 

void setup()
{
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  for(int i=1; i<14;i++)
  {
    pinMode(i,OUTPUT);
  }
}

void loop()
{
  GongYin(3);
  GongYin(4);
  for (int a=3;a<13;a++)
  {
    digitalWrite(h, HIGH);//显示时钟的冒号
    delay(300);
    YangShow(a);
    delay(300);
  }
}

void GongYin(int y)
{
  for (int i = 0; i < 7; i++) 
  {
    digitalWrite(gyin[i], gong_yin[y][i]);
  }
}

void YangShow(char data)
{
  char i;
  char j;
  char hc;
  if(0<=data<14)
  {
    hc = YangCode[data];
    for(i=0;i<8;i++)
    {
      j = bitRead(hc,i);
      digitalWrite(Yang[i], j);
    }
  }
}