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

📄 0851led.lst

📁 51控制08接口双色LED51控制08接口双色LED
💻 LST
字号:
C51 COMPILER V7.06   0851LED                                                               04/21/2009 01:31:32 PAGE 1   


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

stmt level    source

   1          #include <REG52.H>   
   2          #define uchar unsigned char
   3          #define uint unsigned int                      
   4          unsigned char col,i;
   5          unsigned char code num[16]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xf
             -f};
   6          unsigned int one=0,two=2,three=3,four=9,five=10,six=5,seven=6,eight=7;
   7          sbit EN  =P2^4;                   //使能
   8          sbit STB =P2^6;                   //锁存
   9          sbit CLK =P2^7;                   //时钟
  10          sbit G   =P0^7;                   //红数据
  11          sbit R   =P2^5;                   //绿数据
  12          void delay();                     //延时
  13          
  14          unsigned char code logo[128]={
  15          0xFF,0x7F,0xFF,0x7F,0x03,0x7F,0xFA,0x01,0x7A,0xFB,0xB5,0xB7,0xD7,0xBF,0xEF,0xBF,
  16          0xE7,0xBF,0xE7,0x9F,0xDB,0x5F,0xDB,0x6F,0xBE,0xE7,0x79,0xF1,0xC7,0xFB,0xFF,0xFF,/*"欢",0*/
  17          0xBF,0xFF,0xDE,0x7F,0xC9,0x83,0xDB,0xBB,0xFB,0xBB,0xFB,0xBB,0x1B,0xBB,0xDB,0xBB,
  18          0xDA,0xBB,0xD9,0xAB,0xDB,0xB7,0xDF,0xBF,0xDF,0xBF,0xAF,0xFF,0x70,0x01,0xFF,0xFF,/*"迎",1*/
  19          0xF7,0xBF,0xF3,0xBF,0xE4,0x01,0xEF,0xBF,0xC8,0x03,0x9B,0xBB,0x5B,0xBB,0xD8,0x03,
  20          0xDB,0xBB,0xDD,0xBF,0xDE,0x7F,0xDF,0x7F,0xDE,0x8F,0xDD,0xE1,0xD3,0xFB,0xFF,0xFF,/*"使",2*/
  21          0xFF,0xFF,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,
  22          0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xDF,0x7B,0xDF,0x7B,0xBF,0x6B,0x7F,0x77,/*"用",3*/
  23          };
  24          unsigned char code number[192]={
  25          0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/
  26          0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1",1*/
  27          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2",2*/
  28          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3",3*/
  29          0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4",4*/
  30          0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5",5*/
  31          0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/
  32          0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7",7*/
  33          0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/
  34          0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9",9*/
  35          0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x9F,0xFF,0xFF,/*".",0*/
  36          0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
  37          };
  38          /*********************************************************
  39          函数名:delay()
  40          功能:延时
  41          /*********************************************************/
  42          void delay(){
  43   1              unsigned int n;
  44   1              for(n=2;n>0;n--){;}
  45   1      }
  46          /*********************************************************
  47          函数名:out_R
  48          功能:发送数据 c=1-红色显示 c=2-绿色显示 c=3-黄色显示
  49          /*********************************************************/
  50          void out_RGY(uchar *d,uint c){//发送数据
  51   1              unsigned char j,TEMP;
  52   1          bit o;
  53   1          TEMP=*d;                   
  54   1              if(c==1){
C51 COMPILER V7.06   0851LED                                                               04/21/2009 01:31:32 PAGE 2   

  55   2                      G=1; 
  56   2                      for(j=0;j<8;j++){
  57   3                      o=(TEMP<<j)&0x80;   //取出最高位。
  58   3                      if(o==0)        R=0;
  59   3                      else    R=1;        //输出数据1
  60   3                      CLK=1;              //发送时钟
  61   3                      CLK=0;
  62   3              }
  63   2              }
  64   1              else if(c==2){
  65   2                      R=1;                    //关闭红色
  66   2                      for(j=0;j<8;j++){
  67   3                      o=(TEMP<<j)&0x80;   //取出最高位。
  68   3                      if(o==0)        G=0;
  69   3                      else    G=1;             //输出数据1
  70   3                      CLK=1;              //发送时钟
  71   3                      CLK=0;
  72   3                      }
  73   2              }
  74   1              else if(c==3){
  75   2                      for(j=0;j<8;j++){
  76   3                      o=(TEMP<<j)&0x80;   //取出最高位。
  77   3                      if(o==0){G=0;R=0;}
  78   3                          else{G=1;R=1;}             //输出数据1
  79   3                      CLK=1;              //发送时钟
  80   3                      CLK=0;
  81   3                      }
  82   2              }
  83   1      } 
  84          
  85          /*********************************************************
  86          函数名:SHOW_alp()
  87          功能:显示图形程序
  88          /*********************************************************/
  89          void SHOW_alp(uchar *alpha,uint color)
  90          {    
  91   1                 out_RGY(&alpha[8*((i+1)/2-1)],color);        //从串口输出第1个字的第二字节。  
  92   1             out_RGY(&alpha[8*((i+1)/2-1)+1],color);  //从串口输出第1个字的第一字节。  
  93   1                 out_RGY(&alpha[8*((i+1)/2-1)+2],color);      //从串口输出第2个字的第二字节
  94   1             out_RGY(&alpha[8*((i+1)/2-1)+3],color);  //从串口输出第2个字的第一字节。
  95   1                 out_RGY(&alpha[8*((i+1)/2-1)+4],color);
  96   1             out_RGY(&alpha[8*((i+1)/2-1)+5],color);
  97   1                 out_RGY(&alpha[8*((i+1)/2-1)+6],color);
  98   1                 out_RGY(&alpha[8*((i+1)/2-1)+7],color);      
  99   1      }
 100          /*********************************************************
 101          函数名:SHOW_chn()
 102          功能:显示汉字
 103          /*********************************************************/
 104          void SHOW_chn(uchar *china,uint color)
 105          {
 106   1                 out_RGY(&china[i-1],color);  //从串口输出第1个字的第二字节。
 107   1             out_RGY(&china[i],color);        //从串口输出第1个字的第一字节。
 108   1                 out_RGY(&china[32+i-1],color);       //从串口输出第2个字的第二字节
 109   1             out_RGY(&china[32+i],color);     //从串口输出第2个字的第一字节。
 110   1                 out_RGY(&china[64+i-1],color);
 111   1             out_RGY(&china[64+i],color);
 112   1                 out_RGY(&china[96+i-1],color);
 113   1                 out_RGY(&china[96+i],color); 
 114   1      }
 115          /*********************************************************
 116          函数名:SHOW_num()
C51 COMPILER V7.06   0851LED                                                               04/21/2009 01:31:32 PAGE 3   

 117          功能:显示数字
 118          /*********************************************************/
 119          void SHOW_num(uchar *numbers,uint color)
 120          {
 121   1                 out_RGY(&numbers[one*16+(i+1)/2-1],color);   //从串口输出第1个字的第二字节。
 122   1             out_RGY(&numbers[two*16+(i+1)/2-1],color);       //从串口输出第1个字的第一字节。
 123   1                 out_RGY(&numbers[three*16+(i+1)/2-1],color); //从串口输出第2个字的第二字节 //      
 124   1                 out_RGY(&numbers[four*16+(i+1)/2-1],color);  //从串口输出第2个字的第一字节。
 125   1                 out_RGY(&numbers[five*16+(i+1)/2-1],color);
 126   1             out_RGY(&numbers[six*16+(i+1)/2-1],color);
 127   1                 out_RGY(&numbers[seven*16+(i+1)/2-1],color);
 128   1                 out_RGY(&numbers[eight*16+(i+1)/2-1],color); 
 129   1      }
 130          /*********************************************************
 131          函数名:main()
 132          功能:主功能函数
 133          /*********************************************************/
 134          void main(){
 135   1              CLK=0; 
 136   1              while(1){                               //重复循环显示
 137   2                      for(i=1;i<32;i+=2){                  
 138   3                              EN=1;
 139   3                              SHOW_chn(logo,1);               //关闭显示                              
 140   3                      STB=1;                                  //锁存为高,595锁存信号
 141   3                              P2=(P2|0x0f)&num[col];    //输出行信号
 142   3                              EN=0;                   //开显示
 143   3               //     delay();                                //延时,等待一段时间,让这列显示的内容在人眼内产生视觉暂
 144   3                      STB=0;                  //关闭显示
 145   3                              col++;                          //行加一
 146   3                              if(col==16)     col=0;                  //一共16行。
 147   3                      }                                                                                
 148   2              }       
 149   1      }                                        


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    964    ----
   CONSTANT SIZE    =    336    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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