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

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

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

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

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

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

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

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

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

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

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

ABCDEFDP为段码,12345678为位码

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

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

2、写出程序

#include<reg51.h>
  • unsigned char a[4]={0xf9,0xa4,0xb0,0x99}; //1、2、3、4的字形码
  • void main()
  • {
  • unsigned int j;
  • while(1)
  • {
  • for(j=0;j<250;j++) //用循环来实现1234的延时时间
  • {
  • P0=a[0]; //将1的段码输入P0
  • P2=0x01; //将第一位的位码0x01输入P2
  • delay(1); //1ms的延时
  • P0=0xff;P2=0x00; //数码管消隐
  • P0=a[1]; //将2的段码输入P0
  • P2=0x02; //将第二位的位码0x02输入P2
  • delay(1);
  • P0=0xff;P2=0x00; //数码管消隐
  • P0=a[2];P2=0x04;delay(1); //以下同理
  • P0=0xff;P2=0x00;
  • P0=a[3];P2=0x08;delay(1);
  • P0=0xff;P2=0x00;
  • }
  • for(j=0;j<250;j++) //用循环来实现0000的延时时间
  • {
  • P0=0xc0; //将0的段码输入P0
  • P2=0xff; //本设计为共阳极数码管,此句位码全1选择所 //有位
  • delay(1);
  • P0=0xff;P2=0x00; //数码管消隐
  • }
  • }
  • }
  • 复制代码

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

    3、下载并调试程序

     

    PARTNER CONTENT

    文章评论0条评论)

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