原创 【单片机基础-8】多位数码管的显示

2023-3-26 20:45 438 6 6 分类: MCU/ 嵌入式 文集: 单片机基础

风风雨雨二十载,多少bug在心间。

代码编译不通过,急得抓耳直挠腮。

回想当年恩师讲,基础知道全忘干。

忙里偷闲回首看,权当引玉的抛转。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

还记得(七)里面提到的数码管动态显示吗?多位数码管的显示正是运用了此原理。我们所看到的是封装之后的数码管,引脚分为两部分,即位码公共端和段码阴脚。所以首先要清楚多位数码管内部具体的电路结构图。

1、8位数码管的关键字:7seg-mpx8-cc(ca)注意区别共阴极cc和共阳极ca

2、搞清楚8位数码管的内部结构图

3、封装图16个引脚的意义(包括段码和位码)

ABCDEFDP为段码,12345678为位码

以下设计4位数码管显示两个不同的四位数

1、电路图(采用共阴极接法,P2口接位码,P0口接段码)

2、写出程序

  1. #include<reg51.h>
  2. unsigned char a[4]={0xf9,0xa4,0xb0,0x99}; //1、2、3、4的字形码
  3. void main()
  4. {
  5. unsigned int j;
  6. while(1)
  7. {
  8. for(j=0;j<250;j++) //用循环来实现1234的延时时间
  9. {
  10. P0=a[0]; //将1的段码输入P0
  11. P2=0x01; //将第一位的位码0x01输入P2
  12. delay(1); //1ms的延时
  13. P0=0xff;P2=0x00; //数码管消隐
  14. P0=a[1]; //将2的段码输入P0
  15. P2=0x02; //将第二位的位码0x02输入P2
  16. delay(1);
  17. P0=0xff;P2=0x00; //数码管消隐
  18. P0=a[2];P2=0x04;delay(1); //以下同理
  19. P0=0xff;P2=0x00;
  20. P0=a[3];P2=0x08;delay(1);
  21. P0=0xff;P2=0x00;
  22. }
  23. for(j=0;j<250;j++) //用循环来实现0000的延时时间
  24. {
  25. P0=0xc0; //将0的段码输入P0
  26. P2=0xff; //本设计为共阳极数码管,此句位码全1选择所 //有位
  27. delay(1);
  28. P0=0xff;P2=0x00; //数码管消隐
  29. }
  30. }
  31. }

所谓数码管的消隐是指,在全部数码显示完成后再全部熄灭,然后再跳到第一个显示。数码管动态显示有时候看起来数字不是很清晰,不亮的地方有亮阴影,这时候就需要消隐。动态显示是利用人眼的残留效应,数码管每扫描一个周期一般就需要消隐一次,因为最后一次显示的残留会影响下一次扫描。

3、下载并调试程序

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条