手把手教你用Arduino点亮HPDL-1414

目录

起因和写在前面的一些废话

datasheet的分析

1.引脚图

2.推荐工作电压

3.字符集(各个图形对应的二进制数据)

4.真值表

代码的编写

显示效果


  • 起因和写在前面的一些废话

这个比我还老的四段式ASCii字符显示器不知道啥时候在咸鱼上火起来了,我发现后立即对其产生了兴趣,看起来超有复古情怀的有木有?手痒难耐,思考再三还是剁手了,连datasheet都没查……十分内疚……以后还是先查datasheet再剁手好了……

就是这个玩意,这是微距拍的,看看面包板的动动就知道很小
就是这个玩意,看看面包板的洞洞就知道它有多小

到手后发现……这玩意……也太小了吧……不过反正这个古董也就5块钱一片,我买的时候亏了一点,想买黑色版本的,结果卖家说没货了,就发了5.5软妹币的版本,多发了一块……555……

本人是个不爱学习的菜鸡,所以所有单片机中玩的比较熟的就只有Arduino了,在金钱的驱动力下不得不找办法把这货点亮了(只有剁手才有可能刺激我学习),还好,这玩意其实不难点亮。

  • datasheet的分析

抱着试一试的态度,我找了一下datasheet,竟然意外的好找2333,下面的图片节选自datasheet,如有版权问题,请联系我删除,谢谢。

这个datasheet是HPDL 1414和HPDL 2416的,所以很多内容是关于HPDL 2416的,我们并不用去了解它

1.引脚图

1号引脚是D5,12号引脚是D6,印刷的不太清楚了

这张图说明了各个引脚的功能以及怎样确定1号引脚,后面的引脚其实按照常用的逆时针顺序就可以确定了,表中1号引脚是D5,12号引脚是D6,印刷的不太清楚了,具体各个引脚的作用后面再告诉你。

2.推荐工作电压

爽啦,就是常用的USB的5V供电,Arduino正好带这个引脚可以给它供电。

3.字符集(各个图形对应的二进制数据)

一共能显示64种字符哦

想必你刚看到这张表的时候有些头大,不过对ASCii熟悉的大佬们大概已经看出来了,这就是ASCii的后7个bits啊!这么说,你肯定不会觉得它难了吧?

我们也能通过这张图知道D0~D6管脚是用来确定每一段的米字显示的字符的。

4.真值表

这张表就很清楚地说明了D0~D6对应的就是ASCii表(我当时还没发现,还准备一位位地摆弄Arduino的引脚的……)

另外可以看出A0、A1是用来确定控制哪一段数码管的,例如{A0,A1}=0时就是将D0~D6对应的字符显示到右边开始第一段,这样我们就能通过改变A0、A1的值选择四个段了。

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

  • 代码的编写

说明了各个引脚的作用,我们就可以使用Arduino控制HPDL 1414各个引脚的电平来显示字符啦。

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() {
  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() {
	dispchar(3,'H');    //写入你需要让它显示的字符和位置即可,这里显示的是“HPDL”,大约一秒后显示“1414”
	dispchar(2,'P');
	dispchar(1,'D');
	dispchar(0,'L');
	delay(1000);
	dispchar(3,'1');
	dispchar(2,'4');
	dispchar(1,'1');
	dispchar(0,'4');
	delay(1000);
}
  • 显示效果

把它和你的Arduino按setup()部分的注释连接起来,接上电源就能显示内容啦。

gif压缩了,实际上虽然小,但是显示的还是很清楚的

你会在酷安看到这篇文章

https://www.coolapk.com/feed/19960250?shareKey=YjcyYWZlNmZhY2EwNWVmZmNmZmM~&shareUid=2554518&shareFrom=com.coolapk.market_10.3.1

,也是我上传的,除此以外没有上传其它平台了。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值