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

📄 main.lst

📁 DIY小型LED点阵显示系统.rar
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  10/16/2008 12:31:20 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************
   2          程序名称:LED3216点阵拉幕显示图片
   3          简要说明:可显示分辨率为32X16的图片
   4                    P0口接上行线,P2口接下行线,P3口接扫描线
   5                            P3.0接左屏译码器使能端(CS1)
   6                            P3.1接右屏译码器使能端(CS2)
   7          编    写:JiangX.net
   8          *********************************************************/
   9          #include<AT89X52.h>
  10          #define uchar unsigned char                     //宏定义                        
  11          #define hang1   P0                                      //上半屏行线
  12          #define hang2   P2                                      //下半屏行线
  13          #define lie     P1                                      //扫描列线
  14          #define CS1         P3_0                                //接左屏译码器使能端,低电平使能
  15          #define CS2     P3_1                        //接右屏译码器使能端,低电平使能
  16          #define num             sizeof(pic)/64          //自动计算图片总数
  17          uchar m=0,n=0;                                          //m为扫描过程中的中间变量,n为显示指针
  18          uchar a,b;                                                      //a、b分别为左半屏、右半屏的扫描变量
  19          
  20          /*****参数调整项*****/
  21          #define light   100                                     //显示亮度调节,数值不可过大,以不感到屏幕闪烁为准
  22          #define speed   5                                       //卷动速度调节
  23          
  24          /*******************************
  25          图片取模:纵向取模,字节倒序
  26          图片大小:32*16
  27          *******************************/
  28          uchar code pic[]={        
  29          0x00,0x00,0x08,0xF8,0xF8,0x08,0x00,0x00,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF0,
  30          0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF0,0x00,0xF8,0xF8,0x00,0x00,0x00,0xF8,0xF8,0x00,
  31          0x00,0x00,0x10,0x1F,0x1F,0x10,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,
  32          0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x1F,0x0F,0x00,//I LOVE YOU
  33          
  34          0xC0,0x40,0xC0,0x00,0xF0,0x08,0x00,0x00,0xF0,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,
  35          0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0xF0,0x00,0x00,0x08,0xF0,0x00,0xC0,0x40,0xC0,
  36          0x01,0x01,0x01,0x00,0x07,0x08,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x08,0x08,
  37          0x08,0x08,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x08,0x07,0x00,0x01,0x01,0x01,//o(∩_∩)o
  38          
  39          0xFC,0x04,0x04,0x04,0xFC,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0x02,0xFE,0x02,0x00,
  40          0xFC,0x04,0x04,0x04,0xFC,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0x02,0xFE,0x02,0x00,
  41          0x0F,0x02,0x02,0x02,0x07,0x00,0x07,0x02,0x02,0x02,0x27,0x40,0x80,0x7F,0x00,0x00,
  42          0x0F,0x02,0x02,0x02,0x07,0x00,0x07,0x02,0x02,0x02,0x27,0x40,0x80,0x7F,0x00,0x00 //呵呵
  43          
  44          };
  45          
  46          /*****延时子程序*****/
  47          void delay(void)                                        //专门设置的延时程序用来改变扫描速度以方便调节亮度
  48          {
  49   1              uchar i;
  50   1              for(i=0;i<light;i++);
  51   1      }
  52          
  53          /*****初始化子程序*****/
  54          void init(void)                         //定时器初始化,设置定时器0工作方式1,定时时间5ms
  55          {                        
C51 COMPILER V8.02   MAIN                                                                  10/16/2008 12:31:20 PAGE 2   

  56   1              TMOD=0x1;
  57   1              TH0=0xec;
  58   1              TL0=0x78;
  59   1      }
  60          
  61          /*****计数器中断程序*****/
  62          void timer0(void) interrupt 1           //中断处理
  63          {
  64   1              uchar k;                                                //定义变量k
  65   1              TH0=0xec;
  66   1              TL0=0x78;
  67   1              k++;                                                    //定时时间到,初始变量加1
  68   1              if(k>speed) {m++;k=0;}
  69   1      
  70   1              if(m<=16) {a=m;b=0;}                    //扫描左半屏,不扫描右半屏              
  71   1              else {a=16;b=m-16;}                             //全屏扫描左半屏,扫描右半屏
  72   1      
  73   1              if(m>32) b=16;                                  //全屏扫描右半屏
  74   1                                                                              //中间这段时间是为了看清楚整屏画面内容,稍作停顿
  75   1              if(m==48) {m=0;n++;}                    //一幅图片卷动显示过程结束,载入下一幅图片
  76   1      
  77   1              if(n>num-1) n=0;                                //所有图片显示完毕,回到第一幅图片                                      
  78   1      }
  79          
  80          /*****显示子程序*****/
  81          void display(void)
  82          {
  83   1              uchar i,j;
  84   1              CS2=1;                                                  //关右屏
  85   1              CS1=0;                                                  //开左屏                                                        
  86   1              for(i=0;i<a;i++)                                //变量a决定了一次扫描左半屏列数
  87   1              {
  88   2                      lie=i;                                          //左屏列扫描信号输出
  89   2                      hang1=pic[i+64*n];                      
  90   2                      hang2=pic[i+64*n+32];           //行信号输出
  91   2                      delay();                                        
  92   2                      hang1=0;                                        
  93   2                      hang2=0;                                        
  94   2              }       
  95   1              CS1=1;                                                  //关左屏
  96   1              CS2=0;                                                  //开右屏
  97   1              for(j=0;j<b;j++)                                //变量b决定了一次扫描右半屏列数
  98   1              {               
  99   2                      lie=j<<4;                                       //右屏列扫描信号输出
 100   2                      hang1=pic[j+64*n+16];           
 101   2                      hang2=pic[j+64*n+48];           //行信号输出
 102   2                      delay();                                
 103   2                      hang1=0;
 104   2                      hang2=0;                                        
 105   2              }                                                               
 106   1      }
 107          
 108          /*****主程序*****/
 109          void main(void)
 110          {
 111   1              init();
 112   1              TR0=1;
 113   1              ET0=1;
 114   1              EA=1;                                                   //开中断
 115   1              while(1)
 116   1              {
 117   2                      display();
C51 COMPILER V8.02   MAIN                                                                  10/16/2008 12:31:20 PAGE 3   

 118   2              }
 119   1      }
 120          
 121          /*****END*****/
 122          /*****欢迎到作者博客交流:http://www.jiangx.net*****/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    283    ----
   CONSTANT SIZE    =    192    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       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 + -