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

📄 led_sm.lst

📁 单片机51 4*16点阵电子显示屏的设计
💻 LST
字号:
C51 COMPILER V7.00  LED_SM                                                                 07/10/2006 19:20:47 PAGE 1   


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

stmt level    source

   1          /*--------------------------------------
   2                  多个16*16LED显示演示程序
   3                   MCU AT89C52  XAL 24MHz
   4                       2005年5月18日
   5          --------------------------------------*/
   6          //以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移//
   7          #include "reg52.h"
   8          #define BLKN 8          //列锁存器数(=LED显示字数*2)
   9          #define TOTAL 20        //待显示字个数,本例共20个
  10          #define CONIO P1        //显示控制口
  11          sbit G=CONIO^7;         //CONIO.7为154译码器显示允许控制信号端口,0时输出,1时输出全为高阻态.
  12          sbit CLK=CONIO^6;       //CONIO.6为595输出锁存器时钟信号端,1时输出数据,从1到0时锁存输出数据.
  13          sbit SCLR=CONIO^5;      //CONIO.5为595移位寄存器清零口,平时为1,为0时,输出全为0.
  14          unsigned char idata dispram[(BLKN/2)*32]={0}; //显示区缓存,四字共4*32单元
  15          //
  16          //**************字模表******************//
  17          unsigned char code Bmp[][32]={
  18          {
  19          0xEF,0xFF,0xEF,0x03,0x81,0xBB,0xDD,0xBB,0xDD,0xD7,0xEB,0xEF,0xF3,0xD7,0xCD,0xB9,
  20          0x3E,0xFF,0xC0,0x07,0xFE,0xF7,0xFD,0xF7,0xFD,0xF7,0xFB,0xF7,0xF7,0xD7,0xEF,0xEF},/*--  文字:  努  --*/
  21          {
  22          0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x80,0x03,0xFE,0xFB,0xFE,0xFB,0xFE,0xFB,
  23          0xFE,0xFB,0xFD,0xFB,0xFD,0xFB,0xFB,0xFB,0xFB,0xFB,0xF7,0xFB,0xEF,0xD7,0xDF,0xEF},/*--  文字:  力  --*/
  24          {
  25          0xFE,0xF7,0xEF,0x73,0xF3,0x37,0xF7,0x6F,0x80,0x01,0xBF,0xFB,0x70,0x17,0xFF,0xBF,
  26          0xFF,0x7F,0x80,0x01,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFD,0x7F,0xFE,0xFF},/*--  文字:  学  --*/
  27          {
  28          0xFF,0xFF,0xC0,0x03,0xFF,0xFB,0xF7,0xFB,0xFB,0xFB,0xFC,0xFB,0xFE,0xEB,0xFF,0x9B,
  29          0xFE,0x7B,0xF9,0xFB,0xC7,0xFB,0xEF,0xFB,0xFF,0xFB,0xFF,0xDB,0xFF,0xEA,0xFF,0xF6},/*--  文字:  习  --*/
  30          //
  31          {
  32          0xEF,0xDF,0xEF,0xDF,0xDF,0xDF,0xC1,0xDF,0xBF,0xC1,0x83,0xDF,0x6F,0xDF,0xEF,0xDF,
  33          0x02,0x03,0xEE,0xFB,0xEE,0xFB,0xEE,0xFB,0xEA,0xFB,0xE6,0x03,0xEE,0xFB,0xFF,0xFF},/*--  文字:  钻  --*/
  34          {
  35          0xFF,0xFF,0x02,0x01,0xEF,0x77,0xEF,0x77,0xDF,0x77,0xDF,0x77,0x84,0x01,0x97,0x77,
  36          0x57,0x77,0xD7,0x77,0xD7,0x77,0xD6,0xF7,0xC6,0xF7,0xDD,0xF7,0xFB,0xF7,0xF7,0xF7},/*--  文字:  研  --*/
  37          {
  38          0xEF,0xDF,0xEF,0xDF,0xEF,0xDF,0x02,0x01,0xEF,0xDF,0xEB,0xDF,0xE6,0x03,0xCE,0xF7,
  39          0x2F,0x77,0xEF,0x6F,0xEF,0x9F,0xEF,0x9F,0xEF,0x6F,0xEE,0xF1,0xA9,0xFB,0xDF,0xFF},/*--  文字:  技  --*/
  40          {
  41          0xFE,0xFF,0xFE,0xDF,0xFE,0xEF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFC,0x7F,0xFA,0xBF,
  42          0xFA,0xDF,0xF6,0xEF,0xEE,0xE7,0xDE,0xF1,0x3E,0xFB,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF},/*--  文字:  术  --*/
  43          //
  44          {
  45          0xC3,0x03,0xDB,0x7B,0xDB,0x7B,0xDB,0x6B,0xC3,0x77,0xDB,0x7F,0xDB,0x03,0xC3,0x3B,
  46          0xDB,0x3B,0xDB,0x57,0xDB,0x57,0xDB,0x6F,0xBB,0x57,0xAB,0x31,0x77,0x7B,0xFF,0xFF},/*--  文字:  服  --*/
  47          {
  48          0xFB,0xFF,0xF8,0x0F,0xF3,0xEF,0xEB,0xDF,0x9D,0xBF,0x7E,0x7F,0xF9,0x9F,0xE6,0xE1,
  49          0x9E,0xFB,0xE0,0x0F,0xFD,0xEF,0xFD,0xEF,0xFB,0xEF,0xF7,0xEF,0xCF,0xAF,0x3F,0xDF},/*--  文字:  务  --*/
  50          {
  51          0xDF,0xBF,0xEF,0xBF,0xEF,0xBF,0x03,0xBF,0xFB,0xBF,0xF7,0xBF,0xF4,0x03,0xEF,0xBF,
  52          0xC7,0xBF,0x2B,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xE8,0x01,0xEF,0xFF},/*--  文字:  社  --*/
  53          {
  54          0xFE,0xFF,0xFE,0xFF,0xFD,0x7F,0xFB,0xBF,0xF7,0xDF,0xEF,0xE7,0x90,0x11,0x7F,0xFB,
  55          0xFF,0xFF,0xC0,0x07,0xFD,0xFF,0xFB,0xDF,0xF7,0xEF,0xEE,0x06,0xC0,0xE6,0xEF,0xEE},/*--  文字:  会  --*/
C51 COMPILER V7.00  LED_SM                                                                 07/10/2006 19:20:47 PAGE 2   

  56          //
  57          {
  58          0xDF,0xFF,0xEE,0x07,0xEE,0xF7,0x02,0xF7,0xFA,0xF7,0xF6,0xF7,0xEE,0xF7,0xC6,0x07,
  59          0xAB,0x6F,0x6B,0x6F,0xEF,0x6F,0xEF,0x6F,0xEE,0xED,0xEE,0xED,0xED,0xED,0xEB,0xF1},/*--  文字:  祝  --*/
  60          {
  61          0xFF,0xFF,0x80,0x03,0xBF,0xFB,0xBF,0xFB,0xA0,0x0B,0xBF,0xFB,0xBF,0xFB,0xB0,0x1B,
  62          0xB7,0xDB,0xB7,0xDB,0xB7,0xDB,0xB0,0x1B,0xB7,0xDB,0xBF,0xFB,0xBF,0xEB,0xBF,0xF7},/*--  文字:  同  --*/
  63          {
  64          0xFE,0xF7,0xEF,0x73,0xF3,0x37,0xF7,0x6F,0x80,0x01,0xBF,0xFB,0x70,0x17,0xFF,0xBF,
  65          0xFF,0x7F,0x80,0x01,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFD,0x7F,0xFE,0xFF},/*--  文字:  学  --*/
  66          {
  67          0xF5,0xFF,0xF6,0xFF,0xEE,0x43,0xEE,0xFB,0xCB,0xFB,0xDB,0xFB,0x9B,0xFB,0x5B,0xFB,
  68          0xDB,0xFB,0xDB,0xFB,0xDB,0xFB,0xDB,0xFB,0xDB,0xFB,0xDB,0xEB,0xDB,0xF7,0xFF,0xFF},/*--  文字:  们  --*/
  69          //
  70          {
  71          0xFF,0xFF,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,
  72          0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF},/*--  文字:  早  --*/
  73          {
  74          0xFF,0xFF,0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,
  75          0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF},/*--  文字:  日  --*/
  76          {
  77          0xFF,0x5F,0xFF,0x6F,0xFF,0x7F,0xC0,0x01,0xDF,0x7F,0xDF,0x7F,0xC1,0x77,0xDD,0x73,
  78          0xDD,0xB7,0xDD,0xAF,0xDD,0xDF,0xD5,0x9F,0xBB,0x6D,0xBE,0xF5,0x79,0xF9,0xFF,0xFD},/*--  文字:  成  --*/
  79          {
  80          0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xC0,0x06,0xFF,0x7E,0xFE,0x7E,0xFE,0x7E,
  81          0xFD,0x7E,0xFB,0x7E,0xF7,0x7E,0xEF,0x7E,0x9F,0x7F,0xFF,0x7F,0xFD,0x7E,0xFE,0x7E}/*--  文字:  才  --*/
  82          };
  83          //**************字模表******************//
  84          unsigned char code Bmp1[][32]={
  85            {
  86            0xF9,0xBF,0xC7,0xAF,0xF7,0xB7,0xF7,0xB7,0xF7,0xBF,0x00,0x01,0xF7,0xBF,0xF7,0xB7,
  87            0xF1,0xD7,0xC7,0xCF,0x37,0xDF,0xF7,0xAF,0xF6,0x6D,0xF7,0xF5,0xD7,0xF9,0xEF,0xFD
  88            }/*我*/,
  89            {
  90            0xFF,0x07,0xC0,0x6F,0xED,0xEF,0xF6,0xDF,0xC0,0x01,0xDD,0xFD,0xBD,0xFF,0xC0,0x03,
  91            0xFB,0xFF,0xF8,0x0F,0xF3,0xDF,0xF4,0xBF,0xEF,0x3F,0x9C,0xCF,0x73,0xF1,0xCF,0xFB
  92            }/*爱*/,
  93            {
  94            0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,
  95            0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF
  96            }/*单*/,
  97            {
  98            0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,
  99            0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF
 100            }/*片*/,
 101            {
 102            0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77,
 103            0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF
 104            }/*机*/,
 105            {
 106            0xF8,0x3F,0xE7,0xCF,0xDF,0xF7,0xBF,0xFB,0xB3,0x9B,0x73,0x9D,0x7F,0xFD,0x7F,0xFD,
 107            0x6F,0xED,0x67,0xCD,0xB3,0x9B,0xB8,0x3B,0xDF,0xF7,0xE7,0xCF,0xF8,0x3F,0xFF,0xFF
 108            }/*:)*/
 109          };
 110          //
 111          /***********延时函数(约1毫秒)************/
 112          void delay(unsigned int dt)
 113          {
 114   1      register unsigned char bt;
 115   1      for (; dt; dt--)
 116   1        for (bt=0; bt<255; bt++);
 117   1      }
C51 COMPILER V7.00  LED_SM                                                                 07/10/2006 19:20:47 PAGE 3   

 118          //
 119          /*****************主函数 *********************/
 120          void main(void)
 121          { 
 122   1      register unsigned char i,j,k,l,q,w;
 123   1      //初始化
 124   1      SCON  = 0x00;              //串口工作模式0:移位寄存器方式
 125   1      TMOD = 0x01;               //定时器T0工作方式1:16位方式
 126   1      TR0 = 1;                   //启动定时器T0
 127   1      CONIO = 0x3f;                 //CONIO端口初值
 128   1      IE = 0x82;                 //允许定时器T0中断
 129   1      //
 130   1      while (1)
 131   1        {
 132   2      delay(2000);             //2秒
 133   2      //第一种显示效果:卷帘出显示笑脸图案
 134   2        for (i=0;i<32;i++)       
 135   2          {
 136   3          for(q=0;q<BLKN/2;q++) {dispram[i+q*32]=Bmp1[5][i];}
 137   3            if (i%2) delay(120);
 138   3          }                      
 139   2      delay(1000);
 140   2      //卷帘出显示文字,每次字数为BLKN/2,共显示TOTAL*2/BLKN次
 141   2      for (w=0;w<TOTAL*2/BLKN;w++)
 142   2      {
 143   3      for (i=0;i<32;i++)       
 144   3          {
 145   4          for(q=0;q<BLKN/2;q++) {dispram[i+q*32]=Bmp[q+w*BLKN/2][i];}
 146   4            if (i%2) delay(120);
 147   4          }                      
 148   3      delay(3000);
 149   3      }
 150   2      //第一种显示效果:卷帘出显示笑脸图案
 151   2        for (i=0;i<32;i++)       
 152   2          {
 153   3          for(q=0;q<BLKN/2;q++) {dispram[i+q*32]=Bmp1[5][i];}
 154   3            if (i%2) delay(120);
 155   3          }                      
 156   2      delay(1000);
 157   2      //第二种显示效果:向上滚屏,每次BLKN/2个字
 158   2        for (i=0; i<TOTAL*2/BLKN; i++)      
 159   2          {
 160   3          for (j=0; j<16; j++)
 161   3            {
 162   4            for (k=0; k<15; k++)
 163   4              {
 164   5               for(q=0;q<BLKN/2;q++)
 165   5               {dispram[k*2+q*32] = dispram[(k+1)*2+q*32];dispram[k*2+1+q*32] = dispram[(k+1)*2+1+q*32];}
 166   5              }
 167   4            for(q=0;q<BLKN/2;q++)
 168   4              {dispram[30+q*32] = Bmp[q+i*BLKN/2][j*2];dispram[31+q*32] = Bmp[q+i*BLKN/2][j*2+1];}
 169   4            delay(100);
 170   4            }
 171   3          delay(3000);//滚动暂停
 172   3          }    
 173   2      //第一种显示效果:卷帘出黑屏
 174   2        for (i=0;i<32;i++)       
 175   2          {
 176   3          for(q=0;q<BLKN/2;q++) {dispram[i+q*32]=0xff;}
 177   3            if (i%2) delay(120);
 178   3          }                      
 179   2      delay(1000);
C51 COMPILER V7.00  LED_SM                                                                 07/10/2006 19:20:47 PAGE 4   

 180   2      //第三种显示效果:左移出显示
 181   2        for (i=0; i<TOTAL; i++)    
 182   2          {
 183   3          for (j=0; j<2; j++)
 184   3            for (k=0; k<8; k++)
 185   3              {
 186   4              for (l=0; l<16; l++)
 187   4                {  
 188   5                for(q=0;q<BLKN/2;q++)
 189   5                   {
 190   6                    dispram[l*2+q*32] = dispram[l*2+q*32]<<1 | dispram[l*2+1+q*32]>>7;
 191   6                    if(q==BLKN/2-1) dispram[l*2+1+q*32] = dispram[l*2+1+q*32]<<1 | Bmp[i][l*2+j]>>(7-k);
 192   6                   else dispram[l*2+1+q*32] = dispram[l*2+1+q*32]<<1 | dispram[l*2+(q+1)*32]>>7;
 193   6                       }
 194   5                }
 195   4              delay(100);
 196   4              }
 197   3          }
 198   2        delay(3000);
 199   2      //第一种显示效果:卷帘出黑屏
 200   2        for (i=0;i<32;i++)       
 201   2          {
 202   3          for(q=0;q<BLKN/2;q++) {dispram[i+q*32]=0xff;}
 203   3            if (i%2) delay(120);
 204   3          }                      
 205   2      delay(1000);
 206   2      //第三种显示效果:右移出显示
 207   2        for (i=0; i<TOTAL; i++)    
 208   2          {
 209   3          for (j=2; j>0; j--)
 210   3            for (k=0; k<8; k++)
 211   3              {
 212   4              for (l=0; l<16; l++)
 213   4                {  
 214   5                for(q=0;q<BLKN/2;q++)
 215   5                   {
 216   6                    dispram[l*2+1+q*32] = dispram[l*2+1+q*32]>>1 | dispram[l*2+q*32]<<7;
 217   6                    if(q==0) dispram[l*2+q*32] = dispram[l*2+q*32]>>1 | Bmp[i][l*2+j-1]<<(7-k);
 218   6                   else dispram[l*2+q*32] = dispram[l*2+q*32]>>1 | dispram[l*2+1+(q-1)*32]<<7;
 219   6                       }
 220   5                }
 221   4              delay(100);
 222   4              }
 223   3          }
 224   2        delay(3000);
 225   2      //第四种显示效果:卷帘入
 226   2        for (i=0;i<32;i++)   
 227   2          {
 228   3          for(q=0;q<BLKN/2;q++)
 229   3             {dispram[i+q*32]= 0x00;}
 230   3             if (i%2) delay(100);
 231   3          } 
 232   2        }
 233   1      }
 234          //主函数结束
 235          //
 236          /**********显示屏扫描(定时器T0中断)函数**********/
 237          void leddisplay(void) interrupt 1 using 1
 238          {
 239   1      register unsigned char m, n=BLKN;
 240   1      TH0 = 0xFc;                //设定显示屏刷新率每秒62.5帧(16毫秒每帧)
 241   1      TL0 = 0x18;
C51 COMPILER V7.00  LED_SM                                                                 07/10/2006 19:20:47 PAGE 5   

 242   1      m = CONIO;                 //读取当前显示的行号
 243   1      m = ++m & 0x0f;            //行号加1,屏蔽高4位
 244   1      do {
 245   2         n--;
 246   2         SBUF = dispram[m*2+(n/2)*30 + n]; //送显示数据
 247   2         while (!TI); TI = 0;
 248   2         }while (n);             //完成一行数据的发送
 249   1      G = 1;                     //消隐(关闭显示)
 250   1      CONIO &= 0xf0;             //行号端口清○
 251   1      CLK=1;                     //显示数据打入输出锁存器
 252   1      CONIO |= m;                //写入行号
 253   1      CLK=0;                     //锁存显示数据
 254   1      G = 0;                     //打开显示
 255   1      }
 256          //
 257          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1130    ----
   CONSTANT SIZE    =    832    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   IDATA SIZE       =    128    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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