首页 理论教育 数码管静态显示教程-51单片机C语言编程一学就会

数码管静态显示教程-51单片机C语言编程一学就会

时间:2023-10-11 理论教育 版权反馈
【摘要】:以共阳极数码管为例,用单片机P2端口驱动一个共阳极数码管的电路如图3-4所示。当执行到第12行时,n的值在0~15范围内从小到大依次变化,数码管将依次显示0~F。在这种情况,宜采用数码管的动态显示。

数码管静态显示教程-51单片机C语言编程一学就会

1.数码管静态显示电路

所谓静态显示,就是数码管的笔画点亮后,这些笔画就一直处于点亮状态,而不是处于周期性点亮状态。

以共阳极数码管为例,用单片机P2端口驱动一个共阳极数码管的电路如图3-4所示。

978-7-111-46996-4-Part01-136.jpg

图3-4 P2端口驱动一个共阳极数码管

2.段码(字形码)

数码管的笔画a接在单片机的低位即P2.0脚,h(或叫dp)接在单片机的高位即P2.7脚。这是常用的接法。采用该接法时,要显示数字的常用数字的段码详见表3-2。

3-2 共阳数码管显示常用字符对应的段码

978-7-111-46996-4-Part01-137.jpg

这些段码可以记住或查资料,但要知道为什么段码是这样的。例如,要显示3,则数码管的a、b、g、c、d应点亮,即公共端为高电平,a、b、g、c、d的引脚应为低电平(a=b=g=c=d=0),其他引脚均为高电平(e=f=h=1)。所按从高位到低位排列为hgfedcba=10110000,1011十六进制为b,0000的十六进制为0,所以编码为0xb0。要显示3,只需将0xb0赋给P2端口(即P2=0xb0),就可以了。其他字符的段码编制方法与此相同。

注意:如果数码管的引脚a不接单片机端口的低位,则段码就要改变,可以自己编写段码。

3.数码管的静态显示示例(www.xing528.com)

(1)任务书:利用图3-4所示的电路,使数码管间隔0.5s依次循环显示:

0→1→2→3→4→5→6→7→8→9→A→b→C→d→E→F的效果。

(2)程序示例

978-7-111-46996-4-Part01-138.jpg

(3)代码解释

1)第04行、05行:由于数码管要显示的字符的段码是没有规律的,但是,我们把0、1、2……F这16个数对应的段码按顺序存入数组,这样数组的下标就与段码所显示的字符一一对应起来了。例如,a[0]表示0的段码,a[1]表示1的段码,a[10]表示A的段码。

2)第09、12、14、15行:n的不同值表示数组的不同下标,P2=LED[n]也就是将不同的段码赋给了P0端口。当执行到第12行时,n的值在0~15范围内从小到大依次变化,数码管将依次显示0~F。

3)第14行和15行也可以合并写成:n=(n+1)%16。解释:%是取余运算,若n+1的值小于16,则(n+1)%16的值就是n+1。当(n+1)=16时,则(n+1)%16=0;当(n+1)=17时,则(n+1)%16=1;当(n+1)=18时,则(n+1)%16=2。总之,(n+1)%16这个表达式的值被限制在0~15范围内。

这种静态显示方法的局限性是:使用一个数码管要占用单片机的8个端口,当需要同时显示多个字符时,单片机的端口不够用。在这种情况,宜采用数码管的动态显示。

注:数码管的静态显示除了用段码之外,还可以用硬件译码器(如CD4511)来完成数据到段码的转换。优点是编程简单,缺点是硬件电路复杂。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈