51单片机的初了解(12)

动态数码管:段码一侧仍接一个单片机端口,COM(共级)接单片机一个IO口,多个联排数码管的COM共同接一个IO端口。

 

静态和动态数码管的本质区别:静态数码管只给段码数码管就一定工作(只取决于段码端),动态数码管需段码值及COM端配合。

 

动态数码管工作:

(1)某一特定时间段,只有一个数码管工作,其他不工作。

(2)COM端选定哪一数码管工作,段码端输出显示的数字段码;延时;COM端选下一个,段码端改输这要显示的数字段码;延时;......

(3)快速切换工作的数码管,人看到的是所有数码管都亮(亮度比静态驱动低)。

(4)动态数码管利用人眼的视觉暂留。

 

动态数码管的段码表显示:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

 

#include  <reg51.h>

void  delay(void)

{

      unsigned  char  i,j;

  for(i=0;i<10;i++)

    for(j=0;j<10;j++);

}

 

unsigned  char  duanma[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 

unsigned  char  weima[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

 

void  main  (void)

{

      while(1)

  {

    unsigned  char  i=0;

    for(i=0;i<8;i++)

    {

      P2=weima[i];           //依次选择数码管1-8

      P0=duanma[i+1];     //依次显示1-8

      delay ();

      P0=0x00;               //消隐

    }

  }

}

 

38译码器:由3个二进制进行编码的硬件设备。

作用:用3个IO口来控制8路输出

驱动数码管意义:用3路输入来控制数码管的8路位码,省5个IO口。

连接方式:J15和J16连接;ABC分别接P1.0、P1.1、P1.2三个。

 

 

#include  <reg51.h>

 

void  delay(void)

 

{

 

      unsigned  char  i;

 

  for(i=0;i<200;i++);

 

}

 

 

 

unsigned  char  duanma[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

 

 

 

unsigned  char  weima[8]={0,1,2,3,4,5,6,7};

 

 

 

void  main  (void)

 

{

 

      while(1)

 

  {

 

    unsigned  char  i=0;

 

    for(i=0;i<8;i++)

 

    {

 

      P1=weima[i];           //依次选择数码管1-8

 

      P0=duanma[i+3];     //依次显示1-8

 

      delay ();

 

      P0=0x00;               //消隐

 

    }

 

  }

 

}

 

 

 

posted @ 2019-01-12 16:41  justicar  阅读(583)  评论(0编辑  收藏  举报