led_num.lst

来自「51单片机实验例程」· LST 代码 · 共 147 行

LST
147
字号
C51 COMPILER V7.10   LED_NUM                                                               03/14/2010 12:15:49 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE LED_NUM
OBJECT MODULE PLACED IN LED_Num.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED_Num.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************************************************************
   2          *                                                                                                                                                        *
   3          *                        LED点阵实验(流动显示1 2 3 4 5 6 7 8 9)                                                          *
   4          *       说明 通过P0 和 P2 作为点阵接口                                                                                   *
   5          *要求学员掌握 LED点阵的工作原理和 各点阵脚的定义及接法,具体接线请参考接线说明               *
   6          *我们采用的LED点阵式是低功耗,在做实验时可以用单片机脚直接驱动                           *
   7          ******************************************************************************************/
   8          
   9          
  10          #include<reg51.h>
  11          
  12          unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  13          
  14          
  15          unsigned char code digittab[18][8]={
  16          
  17          {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
  18          
  19          {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
  20          
  21          {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
  22          
  23          {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
  24          
  25          {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
  26          
  27          {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
  28          
  29          {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
  30          
  31          {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
  32          
  33          {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
  34          
  35          {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9
  36          
  37          {0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00}, //P
  38          
  39          {0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00}, //R
  40          
  41          {0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00}, //E
  42          
  43          {0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00}, //C
  44          
  45          {0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00}, //H
  46          
  47          {0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, //I
  48          
  49          {0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00}, //N
  50          
  51          {0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00}  //中
  52          
  53          };
  54          
  55          unsigned int timecount;
C51 COMPILER V7.10   LED_NUM                                                               03/14/2010 12:15:49 PAGE 2   

  56          
  57          unsigned char cnta;
  58          
  59          unsigned char cntb;
  60          
  61          void main(void)
  62          
  63          {
  64   1      
  65   1      TMOD=0x01;
  66   1      
  67   1      TH0=(65536-3000)/256;
  68   1      
  69   1      TL0=(65536-3000)%256;
  70   1      
  71   1      TR0=1;     //开启定时0
  72   1      ET0=1;      
  73   1      
  74   1      EA=1;      //开启中断
  75   1      
  76   1      cntb=0;
  77   1        
  78   1      while(1)
  79   1      
  80   1      { ;
  81   2      
  82   2      }
  83   1      
  84   1      }
  85          
  86          
  87          /*************************************************
  88          *
  89          *          定时中断
  90          ********************************************************/                                                   
  91          void t0(void) interrupt 1 using 0
  92          {
  93   1      
  94   1        TH0=(65536-3000)/256;  //定时器高位装载数据
  95   1        TL0=(65536-3000)%256;  //定时器低位装载数据
  96   1      
  97   1        if(cntb<18) //红色
  98   1        {
  99   2          P1=0xFF;
 100   2          P2=tab[cnta];
 101   2          P0=digittab[cntb][cnta];
 102   2        }
 103   1        else //绿色
 104   1        {
 105   2          P2=0xFF;
 106   2          P1=tab[cnta];
 107   2          P0=digittab[cntb-18][cnta];
 108   2        }
 109   1      
 110   1      
 111   1        if(++cnta>=8) cnta=0;
 112   1        if(++timecount>=333)
 113   1        {
 114   2          timecount=0;
 115   2          if(++cntb>=36)cntb=0;
 116   2        }
 117   1      
C51 COMPILER V7.10   LED_NUM                                                               03/14/2010 12:15:49 PAGE 3   

 118   1      }
 119          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    168    ----
   CONSTANT SIZE    =    152    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?