51单片机的初了解(11)

时间:2024-03-07 09:34:03

静态数码管显示数字

1、数字编码(段码)的获取

要显示的数字            数码管的LED            段码二进制           十六进制

      0                              abcdef                  11000000                0xc0

      1                                 bc                      11111001                 0xf9

      2                               abedg                  10100100                0xa4

      3                               abcdgh                10110000                 0xb0

      4                                bcfg                    10011001                 0x99

      5                               acdfg                   10010010                 0x92

      6                             acdefg                   10000010                 0x82

      7                                abc                     11111000                  0xf8

      8                              abcdefg                10000000                 0x80

      9                                abcdfg                10010000                 0x90

      A                                abcefg                10001000                 0x88

      b                                cdefg                  10000011                  0x83

      C                                adef                         11000110                  0xc6

      d                                 bcdeg                      10100001                0xa1

      E                                adefg                       10000110                 0x86

      F                                 aefg                            10001110              0x8c

 

结论:(1)、不同数码管数字编码表完全可能不同

   (2)、同一个数码管接线方式不同编码表可能完全不同

   (3)、硬件确定后可通过调试的方法来实验确定编码表

 

2、让数码管依次显示0到f

#include <reg51.h>

void delay(void)

{

     unsigned char i,j,k;

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

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

   for(k=0;k<20;k++);

} 

void main(void)

{

        unsigned char va1[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8c};

   unsigned char i=0;

   while(1)

   {

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

     {

          P0=va1[i];

        delay();

     }

   }

}