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

📄 newyear.lst

📁 16*16点阵实现
💻 LST
字号:
C51 COMPILER V8.08   NEWYEAR                                                               01/21/2008 01:17:24 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE NEWYEAR
OBJECT MODULE PLACED IN newyear.OBJ
COMPILER INVOKED BY: D:\Keilc51V808a\C51\BIN\C51.EXE newyear.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <reg51.h>       //51芯片管脚定义头文件
   3          #include <intrins.h>     //内部包含延时函数 _nop_();
   4          
   5          #define uchar unsigned char
   6          #define uint  unsigned int
   7          
   8          #define BLKN 2          //列锁存器数
   9          
  10          sbit  SDATA_595=P0^0;   //串行数据输入
  11          sbit  SCLK_595 =P2^7;   //移位时钟脉冲
  12          sbit  RCK_595  =P0^2;   //输出锁存器控制脉冲
  13          sbit  G_74138  =P2^4;   //显示允许控制信号端口
  14          
  15          uchar data  dispram[32];  //显示缓存
  16          uchar temp;
  17          
  18          void  delay(uint );
  19          
  20          uchar code Bmp[][32]=          
  21           {
  22             {0xff,0x7f,0xff,0x7f,0xfe,0xbf,0xfe,0xbf,0xfd,0xdf,0x83,0xe0,0xdf,0xfd,0xef,0xfb,0xf7,0xf7,0xfb,0xef,0x
             -f7,0x77,0xf6,0xb7,0xe9,0xcb,0xe7,0xf3,0xdf,0xfd,0xff,0xff},
  23          
  24             {0xff,0x7f,0xff,0x7f,0xfe,0x3f,0xfe,0x3f,0xfc,0x1f,0x80,0x0,0xc0,0x1,0xe0,0x3,0xf0,0x7,0xf8,0xf,0xf0,0x
             -7,0xf0,0x87,0xe1,0xc3,0xe7,0xf3,0xdf,0xfd,0xff,0xff},
  25          
  26            {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  27              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  28                  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
  29          
  30             {0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0xFF,
  31              0xFD,0xFF,0xFE,0xFF,0xFF,0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,
  32              0xFF,0xF7,0xFF,0xFB,0xFF,0xFD,0xFF,0xFE},
  33          
  34             {0xef,0xf7,0xf5,0xe3,0x80,0x9f,0xff,0xbf,0xdd,0xbf,0xeb,0xbb,0x0,0x1,0xf5,0xb7,0x80,0xb7,0xf7,0xb7,0xf5
             -,0xb7,0xd6,0x77,0xb7,0x77,0x76,0xf7,0xd7,0xf7,0xef,0xf7},//新
  35           
  36             {0xf7,0xff,0xf7,0xf7,0xe0,0x3,0xee,0xff,0xde,0xff,0xbe,0xef,0xe0,0x7,0xee,0xff,0xee,0xff,0xee,0xfb,0x0,
             -0x1,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff},//年
  37            
  38             {0xef,0x7f,0xef,0x7f,0xef,0x7f,0xef,0x77,0xa4,0x3,0xab,0x77,0xaf,0x77,0x6f,0x77,0xef,0x77,0xe0,0x1,0xef
             -,0x7f,0xee,0xbf,0xee,0xdf,0xed,0xef,0xeb,0xf1,0xe7,0xfb},//快
  39            
  40             {0xff,0xdf,0xff,0xf,0xe0,0xff,0xef,0xff,0xee,0xff,0xee,0xff,0xde,0xfb,0x80,0x1,0xfe,0xff,0xfe,0xff,0xf6
             -,0xdf,0xf6,0xef,0xee,0xf7,0xde,0xf3,0xba,0xfb,0xfd,0xff}//乐 
  41           };
  42          
  43          /*******************************************************
  44          *                                                      *
  45          * 延时函数                                             *
  46          *                                                      *
  47          *******************************************************/
  48          void  delay(uint dt)
  49          {
C51 COMPILER V8.08   NEWYEAR                                                               01/21/2008 01:17:24 PAGE 2   

  50   1         uchar bt;
  51   1         for(;dt;dt--)
  52   1         for(bt=0;bt<255;bt++);
  53   1       }
  54          
  55          /**********************************************************/
  56          void delay0(uint x)    //x*0.14MS
  57          {
  58   1         uchar b;
  59   1         while(x--)
  60   1         {
  61   2          for (b = 0; b<13; b++) {}
  62   2         }
  63   1      } 
  64          /*******************************************************
  65          *                                                      *
  66          *将显示数据送入74HC595内部移位寄存器                   *
  67          *                                                      *
  68          *******************************************************/
  69          void WR_595(void)
  70          {
  71   1           uchar x;
  72   1            for (x=0;x<8;x++)
  73   1           {
  74   2            temp=temp<<1; 
  75   2            SDATA_595=CY;
  76   2            SCLK_595=1;        //上升沿发生移位
  77   2             _nop_();
  78   2             _nop_();
  79   2            SCLK_595=0;
  80   2           }        
  81   1      }
  82          
  83          /*******************************************************
  84          *                                                      *
  85          * 主函数                                               *
  86          *                                                      *
  87          *******************************************************/
  88          void  main(void)
  89          {
  90   1        uchar i,k,h,s;
  91   1        TMOD = 0x01;             //定时器T0工作方式1
  92   1        TH0 = 0xFC;              //1ms定时常数
  93   1        TL0 = 0x66;
  94   1        G_74138 = 1;             //关闭显示
  95   1        RCK_595=0;
  96   1        P2 =0xF0;                //行号端口清零
  97   1      
  98   1        IE = 0x82;               //允许定时器T0中断
  99   1        TR0 = 1;                 //启动定时器T0
 100   1        while(1)
 101   1        {
 102   2          for(k=0;k<3;k++)       
 103   2          {
 104   3            for(i=0;i<32;i++)         
 105   3                {
 106   4                  dispram[i]= Bmp[k][i];
 107   4            }
 108   3                delay(1500);
 109   3          }
 110   2      
 111   2            TR0=0;
C51 COMPILER V8.08   NEWYEAR                                                               01/21/2008 01:17:24 PAGE 3   

 112   2                s=0;
 113   2            h=0;
 114   2            while(s!=32)        
 115   2                {
 116   3                  G_74138=1;          //关闭显示
 117   3              s++;              
 118   3              temp = Bmp[3][s];  
 119   3              WR_595();
 120   3                      s--;      
 121   3              temp = Bmp[3][s];
 122   3              WR_595();
 123   3                      s++;
 124   3                      s++;
 125   3      
 126   3                      RCK_595 = 1;        //上升沿将数据送到输出锁存器
 127   3               _nop_();
 128   3              RCK_595 = 0;        //锁存显示数据
 129   3      
 130   3              G_74138=0;          //打开显示
 131   3              
 132   3                      for(i=0;i<16;i++)
 133   3                  {
 134   4                while(h!=0x10)
 135   4                        {              
 136   5                         P2=h;
 137   5                         h++;
 138   5                         delay0(10);
 139   5                }         
 140   4                       h=0;
 141   4              }
 142   3            }
 143   2           
 144   2            temp = 0x00;
 145   2            WR_595();
 146   2                WR_595();
 147   2            RCK_595 = 1;        //上升沿将数据送到输出锁存器
 148   2             _nop_();
 149   2            RCK_595 = 0;        //锁存显示数据
 150   2            h=0;
 151   2                while(h!=0x10)
 152   2                {              
 153   3                      P2=h;
 154   3                      h++;
 155   3                      delay0(2000);
 156   3            }           
 157   2                TR0=1;
 158   2      
 159   2           for(k=4;k<8;k++)       //显示"伟纳电子"
 160   2          {
 161   3            for(i=0;i<32;i++)         
 162   3                {
 163   4                  dispram[i]= Bmp[k][i];
 164   4            }
 165   3                delay(1500);
 166   3          }
 167   2      
 168   2        } //end of while(1)
 169   1      } //end of main()
 170          
 171          
 172           
 173          /*******************************************************
C51 COMPILER V8.08   NEWYEAR                                                               01/21/2008 01:17:24 PAGE 4   

 174          *                                                      *
 175          * 中断服务函数                                         *
 176          *                                                      *
 177          *******************************************************/
 178          void  leddisplay(void) interrupt 1 using 1
 179          {
 180   1         uchar i,j=BLKN;
 181   1         TH0 = 0xFC;          //1ms定时常数
 182   1         TL0 = 0x66;
 183   1         i=P2;                //读取当前显示的行号
 184   1         i=++i & 0x0f;        //行号加1,屏蔽高4位
 185   1         do{
 186   2                j--;
 187   2            temp = dispram[i*BLKN+j];
 188   2            WR_595();
 189   2           }while(j);
 190   1         
 191   1         G_74138=1;          //关闭显示
 192   1         P2 &= 0xf0;         //行号端口清零
 193   1         RCK_595 = 1;        //上升沿将数据送到输出锁存器
 194   1         P2 |=i;             //写入行号
 195   1         RCK_595 = 0;        //锁存显示数据
 196   1         G_74138=0;          //打开显示
 197   1      }
 198          
 199          /******************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    367    ----
   CONSTANT SIZE    =    256    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       1
   IDATA SIZE       =   ----    ----
   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 + -