点亮HPDL-1414

手册中的一些重要信息

供电电压

相关引脚与引脚作用

​ WR信号可以看作触发器的时钟信号,只有WR为低电位时被A0、A1选中的段才会改变,否则显示之前的字符,这样就可以同时控制多个HPDL 1414了,A0、A1、D0~D6都可以复用只要单独控制WR即可。

字符集

​ 这个字符表即是ASCII码表的后7个bit

ASCII表具体如图

真值表

​ D0D6使用来控制字符的显示,A1,A0用来控制时哪一个数码管来显示,并且可以通过WR位来控制多个HPDL_1414,这也说明了A0,A1,D0D6是可以复用的(WR要被拉低了才能控制HPDL1414)。

相关代码

void dispchar(int add,char data){    //add即是A0,A1,用来控制字符显示的位置,data即是D0~D6,用来控制对应位显示的字符
  switch (add) {                   //字符显示的位置
      case 0:
        digitalWrite(10, 0);
        digitalWrite(11, 0);
        break;
      case 1:
        digitalWrite(10, 1);
        digitalWrite(11, 0);
        break;
    case 2:
        digitalWrite(10, 0);
        digitalWrite(11, 1);
      break;
    case 3:
        digitalWrite(10, 1);
        digitalWrite(11, 1);
      break;
      default:
        digitalWrite(10, 0);
        digitalWrite(11, 0);
        break;
  }

  digitalWrite(2, (data>>0) & 1);    //获取char的各个bit,即ASCii的后7个bits,将其分配至各自的引脚
  digitalWrite(3, (data>>1) & 1);
  digitalWrite(4, (data>>2) & 1);
  digitalWrite(5, (data>>3) & 1);
  digitalWrite(6, (data>>4) & 1);
  digitalWrite(7, (data>>5) & 1);
  digitalWrite(8, (data>>6) & 1);

  digitalWrite(9,0);                  //拉低WR引脚,改变状态
  delay(1);                           //holdtime,使得触发器能够正确的采样各个引脚的电平(并不用这么久,实际只用200ns)
  digitalWrite(9,1);                  //拉高WR引脚,防止已经成功保存的状态再次改变
}


void setup() {
  // put your setup code here, to run once:
  pinMode(2,OUTPUT);  //D0 8 HPDL_ 1414的管脚功能 HPDL_1414的管脚编号
  pinMode(3,OUTPUT);  //D1 9
  pinMode(4,OUTPUT);  //D2 10
  pinMode(5,OUTPUT);  //D3 11
  pinMode(6,OUTPUT);  //D4 2
  pinMode(7,OUTPUT);  //D5 1
  pinMode(8,OUTPUT);  //D6 12

  pinMode(9,OUTPUT);  //WR 3
  pinMode(10,OUTPUT); //A0 5
  pinMode(11,OUTPUT); //A1 4
}

void loop() {
//  // put your main code here, to run repeatedly:
  dispchar(3,'3');
  dispchar(2,'3');
  delay(80);
  dispchar(3,'0');
  dispchar(2,'2');
  delay(80);
  dispchar(3,'4');
  dispchar(2,'4');
  delay(80);
  dispchar(3,'1');
  dispchar(2,'6');
  delay(80);
  dispchar(3,'5');
  dispchar(2,'3');
  delay(80);
  dispchar(3,'9');
  dispchar(2,'8');
  delay(80);
  dispchar(3,'7');
  dispchar(2,'1');
  delay(80);
  dispchar(3,'6');
  dispchar(2,'3');
  delay(80);
  dispchar(3,'2');
  dispchar(2,'5');
  delay(80);
  dispchar(3,'8');
  dispchar(2,'7');
  delay(80);
  dispchar(3,'0');
  dispchar(2,'9');
  delay(2000);
}

慢慢来,准备的是先弄一个HPDL1414的驱动测试板来做些测试,要不然用洞洞板和Arduino来测试的话太鸡肋了。

后期将原驱动一个HPDL_1414的驱动函数改为驱动两个HPDL_1414的驱动函数