⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16×16 c52.lst

📁 几年搜的LED显示屏程序大全20多个实例带仿真.rar
💻 LST
字号:
C51 COMPILER V8.05a   16×16_C52                                                           11/29/2008 22:13:53 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 16×16_C52
OBJECT MODULE PLACED IN 16×16 C52.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 16×16 C52.c OMF2 DEBUG

line level    source

   1          #include <AT89X52.H>
   2          #include <intrins.h>
   3          #define  uint unsigned int
   4          #define  uchar unsigned char
   5          
   6          #define  BLKN 2                 /*列存贮器数,表示8*8led组合的行数*/
   7          
   8          sbit E1         =P3^4;          //74HC154(18)-E1 为0开列(col)输出  显示允许控制信号端口
   9          sbit ST_CP      =P3^2;          //74HC595(12)-ST_CP 上升沿--移位寄存器的数据进入数据存储寄存器 输出锁存器的时钟信号端口
  10          sbit MR         =P3^3;          //74HC595(10)-MR 为0将移位寄存器的数据清0
  11          
  12          void delay(unsigned int);  //延时函数
  13          uchar data dispram[32];  //显示缓存
  14          
  15          
  16          uchar code bmp[][32]={  //字模表
  17          //{                                                                               
  18          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" "
  19          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,                      
  20          //},
  21          {
  22          0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,
  23          0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",2*/
  24          },{
  25          0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,
  26          0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",3*/
  27          },{
  28          0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,
  29          0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00,/*"机",4*/
  30          },{
  31          0x40,0x00,0x20,0x00,0x10,0x00,0xEC,0x7F,0x07,0x40,0x0A,0x20,0x08,0x18,0x08,0x06,
  32          0xF9,0x01,0x8A,0x10,0x8E,0x20,0x88,0x40,0x88,0x20,0xCC,0x1F,0x88,0x00,0x00,0x00,/*"仿",5*/
  33          },{
  34          0x00,0x10,0x04,0x90,0x04,0x90,0x04,0x50,0xF4,0x5F,0x54,0x35,0x5C,0x15,0x57,0x15,
  35          0x54,0x15,0x54,0x35,0x54,0x55,0xF4,0x5F,0x04,0x90,0x06,0x90,0x04,0x10,0x00,0x00,/*"真",6*/
  36          }                                       };
  37                         
  38          void main( )
  39          {
  40   1              uchar num,cur,tmp,nums=sizeof(bmp)/32;
  41   1                                                                                                      //num:当前显示的文字块指针
  42   1                                                                                                      //cur:当前文字块的断码指针(bmp)
  43   1                                                                                                      //tmp:临时变量
  44   1                                                                                                      //nums:总文字块数
  45   1              SCON = 0x00;    //串口工作模式0;移位寄存器方式
  46   1              TMOD = 0x01;    //定时器T0工作方式1:16位方式
  47   1              TR0  = 1;       //T1
  48   1              P1   = 0x3f;    //              
  49   1              IE   = 0x82;    //中断允许设置
  50   1      
  51   1      
  52   1      
  53   1              while (1)
  54   1              {
  55   2                      delay(1000);                                    //2种效果之间的停顿
C51 COMPILER V8.05a   16×16_C52                                                           11/29/2008 22:13:53 PAGE 2   

  56   2      //              for(tmp=0;tmp<1;tmp++)                  //让卷动效果只显示一次
  57   2                      {
  58   3                              //delay(2000);                          //延时2s 一条标语滚动一次前的延时时间
  59   3                              delay(100);
  60   3                              for(num=0;num<nums;num++)
  61   3                              {
  62   4                                      for(cur=0;cur<32;cur++) //显示效果:卷帘出
  63   4                                      {
  64   5                                              dispram[cur]=bmp[num][cur];
  65   5                                              if((cur % 2)==1)
  66   5                                                      delay(100);
  67   5                                      }
  68   4                                      delay(100);     
  69   4                              }
  70   3                      }
  71   2                      delay(1000);                                    //2种效果之间的停顿
  72   2      //              for(tmp=0;tmp<1;tmp++)                  //让卷动效果只显示一次
  73   2                      {
  74   3                              //delay(2000);                          //延时2s 一条标语滚动一次前的延时时间
  75   3                              delay(100);
  76   3                              for(num=0;num<nums;num++)
  77   3                              {
  78   4                                      for(cur=31;cur<0xff;cur--)//显示效果:卷帘入 当cur为0时,再循环一次就为0xff
  79   4                                      {
  80   5                                              dispram[cur]=bmp[num][cur];
  81   5                                              if((cur % 2)==0)
  82   5                                                      delay(100);
  83   5                                      }
  84   4                                      delay(100);     
  85   4                              }
  86   3                      }
  87   2              }
  88   1      }
*** WARNING C280 IN LINE 40 OF 16×16 C52.C: 'tmp': unreferenced local variable
  89          
  90          
  91          ///////延时函数
  92          void delay(uint dt)
  93          {
  94   1              uchar bt;
  95   1              for(;dt;dt--)
  96   1                      for(bt=0;bt<255;bt++);
  97   1      
  98   1      }
  99          
 100          //////////显示屏扫描(定时器T0中断)函数
 101          void leddisplay(void) interrupt 1 using 1
 102          {
 103   1              static uchar col=0;
 104   1      
 105   1              TH0 = 0xF8;                                     //设定显示屏刷新率62.5帧/S
 106   1              TL0 = 0x30;
 107   1      
 108   1              MR=0;                           //清理行输出,将移位寄存器的数据清0
 109   1              MR=1;
 110   1              
 111   1              SBUF = dispram[col*2];  //送显示数据
 112   1              while(TI==0);                   //等待发送完毕
 113   1                      T1 = 0;
 114   1              SBUF = dispram[col*2+1];        //送显示数据
 115   1              while(TI==0);                   //等待发送完毕
 116   1                      T1 = 0; 
C51 COMPILER V8.05a   16×16_C52                                                           11/29/2008 22:13:53 PAGE 3   

 117   1      
 118   1              E1 = 1;                 //消隐(关闭显示)
 119   1      
 120   1              P1 = 0xF0;              //行号端口清0   多余2行,但是去掉后不行
 121   1              P1 = 0xF0;              //行号端口清0
 122   1      
 123   1      
 124   1              E1 = 0;                 //打开显示
 125   1              ST_CP =1;               //显示数据打入输出锁存器
 126   1              ST_CP = 0;              //锁存显示数据
 127   1              P1 = col;               //写入行号
 128   1              col=(col+1)%16;
 129   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    286    ----
   CONSTANT SIZE    =    160    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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