这篇文章记录的是我学习动态数码管获得的知识和学习笔记。我手上的单片机是普中51-单核-A2开发板。
数码管动态扫描
一、硬件方面动态数码管模块是由多个发光二极管排列成 8. 形状。发光二极管的阳极接高电平阴极接低电平才会点亮。当需要显示特定的形状,只需设置特定的段发光即可。
从商家给的原理图可以看出这是个共阳极的数码管,8节的同一段阳极都是接在一起的通过74hc245芯片由P00至P07管脚控制。每一节的8段发光二极管阴极都连在一起通过74hc138译码器由P22至P24管脚控制。
138译码器输出端与数码管阴极连接,输入端由P22,P23,P24控制
数码管阳极由P0管脚控制
74HC138译码器的工作原理A,B,C是输入端与P22,P23,P24相连。
Y0至Y7是输出管脚与数码管阴极连接。
其中的输入输出关系由下图可以看出。其大致描述就是A,B,C代表1,2,4,其中高电平的相加结果的值是多少,对应的输出端就输出低电平,其余的输出端输出高电平。
138译码器的真值表
74HC245芯片我在百度上了解到,DIR脚的作用是输入输出端口转换,高电平时信号由A端输入,B端输出。OE脚控制A与B端的信号能否导通。个人感觉这个芯片好像没有作用,两边就直接连上了。最终P00至P07还是直接控制数码管段的阳极高低电平。详细信息建议百度。
如何让数码管显示指定的值比如说让最左边的数码管 a段发光,那么a的阴极就应该接低电平,那么就应该设置LED7为低电平,由74HC138译码器输入输入关系P22,P23,P24就都应该设置为高电平。a段的阳极就应接高电平,对应的P00就应该设置为高电平。
由此推出数码管表示0-9 ,P0对应值为{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
二、软件层面为了能让数码管显示指定的值,就需要控制其阳极和阴极。
操控数码管阴极函数
知道了硬件原理就比较容易写代码了,写这个函数是为了方便的控制数码管阴极电平。
操控数码管阳极由于排出了数码管显示0-9对应的值,所以只需将要显示的数字作为下标对应的值传给P0即可设置阳极。
到这里就能够控制数码管的显示了。
小编学了硬件之后觉得这种数码管不能静态的显示不同的值,对么?
,