1. 程式人生 > >51微控制器的初瞭解(11)

51微控制器的初瞭解(11)

靜態數碼管顯示數字

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();

     }

   }

}