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

📄 lcd.lst

📁 读SD卡用SST单片机与tlc5620播放音乐程序
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   02/27/2009 02:52:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "lcd.h"
*** WARNING C258 IN LINE 32 OF LCD.H: 'img': mspace on parameter ignored
   2          
   3          /*************************************************************************************************/
   4          //内部函数
   5          void CheckBusy (void)
   6          {
   7   1        P1=0xff;
   8   1        LcdRs=0;
   9   1        LcdRw=1;
  10   1        LcdE=1;
  11   1        while(Busy==1);
  12   1        LcdE =0;
  13   1      }
  14          
  15          unsigned char ReadLcd ()        //写操作
  16          {
  17   1        unsigned char Rddata;
  18   1        CheckBusy ();
  19   1        LcdRs=1;   //数据
  20   1        LcdRw=1;   //读
  21   1        LcdE=1;
  22   1        Rddata=LCD_DATA; 
  23   1        LcdE=0;
  24   1        return Rddata;
  25   1      }
  26          
  27          void WriteLcd (unsigned char dat_type,unsigned char content)    //写操作
  28          {
  29   1        CheckBusy ();
  30   1        if(dat_type)
  31   1         {
  32   2          LcdRs=1;   //数据
  33   2          LcdRw=0;   //写
  34   2         }
  35   1        else 
  36   1         {
  37   2          LcdRs=0;   //指令
  38   2          LcdRw=0;   //写
  39   2         }
  40   1        LCD_DATA=content;  
  41   1        LcdE=1;
  42   1        LcdE=0;
  43   1      }
  44          
  45          //用户函数
  46          void Initlcd (void)                                                                                             //初始化LCD
  47          {               
  48   1      
  49   1         WriteLcd (LCDCOMM,0x30);  //基本指令动作  
  50   1         WriteLcd (LCDCOMM,0x01);  //清屏,地址指针指向00 
  51   1         WriteLcd (LCDCOMM,0x06);  //光标的移动方向
  52   1         WriteLcd (LCDCOMM,0x0c);  //开显示,关游标
  53   1      
  54   1      }
C51 COMPILER V7.06   LCD                                                                   02/27/2009 02:52:51 PAGE 2   

  55          
  56          void ClearRam (void)                                                                    //清RAM
  57          {
  58   1        WriteLcd (LCDCOMM,0x30);
  59   1        WriteLcd (LCDCOMM,0x01);
  60   1      }
  61          
  62          void ChnPrintf (unsigned char x,unsigned char y,unsigned char code *chn)                                                //显示汉字或字符
  63          {
  64   1        xdata unsigned char i,len;
  65   1        WriteLcd (LCDCOMM,0x30);
  66   1        for(len=0;*chn!='\0';chn++,len++);
  67   1              chn-=len;
  68   1        switch(x)
  69   1              {       
  70   2              case 1:
  71   2              WriteLcd (LCDCOMM,0x80+y-1);            
  72   2                      for (i=0;i<16-2*(y-1)&&i<len;i++)
  73   2                               WriteLcd (LCDDAT,chn[i]);
  74   2                      WriteLcd (LCDCOMM,0x90);
  75   2                      for (;i<16-2*(y-1)+16&&i<len;i++)
  76   2                               WriteLcd (LCDDAT,chn[i]);
  77   2                      WriteLcd (LCDCOMM,0x88);
  78   2                      for (;i<16-2*(y-1)+32&&i<len;i++)
  79   2                               WriteLcd (LCDDAT,chn[i]);
  80   2                      WriteLcd (LCDCOMM,0x98);
  81   2                      for (;i<16-2*(y-1)+48&&i<len;i++)
  82   2                               WriteLcd (LCDDAT,chn[i]);
  83   2              break;
  84   2              case 2:
  85   2                      WriteLcd (LCDCOMM,0x90+y-1);            
  86   2                      for (i=0;i<16-2*(y-1)&&i<len;i++)
  87   2                               WriteLcd (LCDDAT,chn[i]);
  88   2                      WriteLcd (LCDCOMM,0x88);
  89   2                      for (;i<16-2*(y-1)+16&&i<len;i++)
  90   2                               WriteLcd (LCDDAT,chn[i]);
  91   2                      WriteLcd (LCDCOMM,0x98);
  92   2                      for (;i<16-2*(y-1)+32&&i<len;i++)
  93   2                               WriteLcd (LCDDAT,chn[i]);
  94   2              break;
  95   2              case 3:
  96   2                      WriteLcd (LCDCOMM,0x88+y-1);            
  97   2                      for (i=0;i<16-2*(y-1)&&i<len;i++)
  98   2                               WriteLcd (LCDDAT,chn[i]);
  99   2                      WriteLcd (LCDCOMM,0x98);
 100   2                      for (;i<16-2*(y-1)+16&&i<len;i++)
 101   2                               WriteLcd (LCDDAT,chn[i]);
 102   2              break;
 103   2              case 4:
 104   2                      WriteLcd (LCDCOMM,0x98+y-1);            
 105   2                      for (i=0;i<16-2*(y-1)&&i<len;i++)
 106   2                               WriteLcd (LCDDAT,chn[i]);
 107   2              break;  
 108   2        }
 109   1      }
 110          void ImgPrintf (unsigned char x,unsigned char y,unsigned char Row,unsigned char Lis,unsigned char code img
             -[][2])                                                //显示图形
*** WARNING C258 IN LINE 110 OF LCD.C: 'img': mspace on parameter ignored
 111          {
 112   1              xdata unsigned char i,j;
 113   1              for(i=0;i<Row;i++)
 114   1              for(j=0;j<Lis;j++)
C51 COMPILER V7.06   LCD                                                                   02/27/2009 02:52:51 PAGE 3   

 115   1                      {
 116   2                              if(y+i>32) 
 117   2                              {
 118   3                              WriteLcd (LCDCOMM,0x34);
 119   3                                      WriteLcd (LCDCOMM,Y+y+i-33);
 120   3                                      WriteLcd (LCDCOMM,X+x+j+7);
 121   3                              }
 122   2                              else
 123   2                              {
 124   3                                      WriteLcd (LCDCOMM,0x34);
 125   3                                      WriteLcd (LCDCOMM,Y+y+i-1);
 126   3                                      WriteLcd (LCDCOMM,X+x+j-1);
 127   3                              }
 128   2                              WriteLcd (LCDCOMM,0x30);
 129   2                              WriteLcd (LCDDAT,img[i*Lis+j][0]);
 130   2                              WriteLcd (LCDDAT,img[i*Lis+j][1]);
 131   2                      }
 132   1              WriteLcd (LCDCOMM,0x36);
 133   1      }
 134          
 135          void DotPrintf (unsigned char data1,unsigned char data2)                //显示点阵
 136          {
 137   1        xdata unsigned char i,j,k,x;
 138   1        x=X;
 139   1        for(k=0;k<2;k++)
 140   1        {
 141   2          for(j=0;j<16;j++)
 142   2          {
 143   3            for(i=0;i<8;i++)
 144   3            {
 145   4              WriteLcd (LCDCOMM,0x34);
 146   4              WriteLcd (LCDCOMM,Y+j*2);
 147   4              WriteLcd (LCDCOMM,x+i);
 148   4              WriteLcd (LCDCOMM,0x30);
 149   4              WriteLcd (LCDDAT,data1);
 150   4              WriteLcd (LCDDAT,data1);
 151   4            }
 152   3            for(i=0;i<8;i++)
 153   3            {
 154   4              WriteLcd (LCDCOMM,0x34);
 155   4              WriteLcd (LCDCOMM,Y+j*2+1);
 156   4              WriteLcd (LCDCOMM,x+i);
 157   4              WriteLcd (LCDCOMM,0x30);
 158   4              WriteLcd (LCDDAT,data2);
 159   4              WriteLcd (LCDDAT,data2);
 160   4            }
 161   3          }
 162   2          x=XX;
 163   2        }
 164   1        WriteLcd (LCDCOMM,0x36);
 165   1      }
 166          
 167          void DisPrintf (unsigned char data1,unsigned char data2,unsigned char x0,unsigned char y0,unsigned char x1
             -,unsigned char yl)                            //反白显示
 168          {
 169   1        xdata unsigned char i,j;
 170   1        for(j=0;j<yl;j++)
 171   1        {
 172   2          for(i=0;i<x1;i++)
 173   2          {
 174   3            WriteLcd (LCDCOMM,0x34);                                                  //扩充指令集,绘图关
 175   3            WriteLcd (LCDCOMM,y0+j);
C51 COMPILER V7.06   LCD                                                                   02/27/2009 02:52:51 PAGE 4   

 176   3            WriteLcd (LCDCOMM,x0+i);
 177   3            WriteLcd (LCDCOMM,0x30);                                                  //基本指令集
 178   3            WriteLcd (LCDDAT,data1);
 179   3            WriteLcd (LCDDAT,data2);
 180   3          }
 181   2        }
 182   1        WriteLcd (LCDCOMM,0x36);                                                              //扩充指令集,绘图开
 183   1      }
 184          
 185          
 186          void StdIntPrintf(unsigned char x,unsigned char y,signed int i)//将一个整数直接在屏幕上打印出来,可以显示的
             -数据的范围:-32767到+32767
 187          {
 188   1              unsigned char code StdNumber[11][3]={"0","1","2","3","4","5","6","7","8","9","10"};
 189   1              xdata unsigned char m[5];
 190   1              xdata unsigned char n=0,fushu=0;
 191   1              if (i<0)
 192   1              {
 193   2                      i=-i;
 194   2                      fushu=1;
 195   2              }
 196   1              while(i!=0)
 197   1              {
 198   2                      m[n]=i%10;
 199   2                      i/=10;
 200   2                      n++;
 201   2              }
 202   1              if (fushu)
 203   1              {
 204   2                      ChnPrintf(x,y,"-");
 205   2                      y++;
 206   2              }
 207   1                      for(i=0;i<n;i++)
 208   1                              ChnPrintf(x,y+i,StdNumber[m[n-i-1]]);
 209   1      }
 210          
 211          void PixelPrintf (unsigned char x,unsigned char y,unsigned char real)                                           //显示图形
 212          {
 213   1              xdata unsigned char LcdData0,LcdData1,LcdData2=0x80,LcdData3=0x80;
 214   1              LcdData2=0x80;
 215   1              LcdData3=0x80;
 216   1              if(x%16==0)
 217   1              {
 218   2                      LcdData3>>=7;
 219   2                      LcdData2=0x00;
 220   2              }
 221   1              else if(x%16<8)
 222   1              {
 223   2                      LcdData2>>=x%16-1;
 224   2                      LcdData3=0x00;
 225   2              }
 226   1              else if(x%8==0)
 227   1              {
 228   2                      LcdData2>>=7;
 229   2                      LcdData3=0x00;
 230   2              }
 231   1              else
 232   1              {       
 233   2                      LcdData3>>=(x%16-9);
 234   2                      LcdData2=0x00;
 235   2              }
 236   1              if(y>32)
C51 COMPILER V7.06   LCD                                                                   02/27/2009 02:52:51 PAGE 5   

 237   1              {
 238   2                      y-=32;
 239   2                      x+=128;
 240   2              }
 241   1              WriteLcd (LCDCOMM,0x34);
 242   1              WriteLcd (LCDCOMM,Y+y-1);
 243   1              WriteLcd (LCDCOMM,X+(x-1)/16);
 244   1              WriteLcd (LCDCOMM,0x30);
 245   1              LcdData0=ReadLcd();
 246   1              LcdData0=ReadLcd();
 247   1              LcdData1=ReadLcd();
 248   1              WriteLcd (LCDCOMM,0x34);
 249   1              WriteLcd (LCDCOMM,Y+y-1);
 250   1              WriteLcd (LCDCOMM,X+(x-1)/16);  
 251   1              WriteLcd (LCDCOMM,0x30);
 252   1              if(real)
 253   1              {
 254   2                      WriteLcd (LCDDAT,LcdData0|LcdData2);
 255   2                      WriteLcd (LCDDAT,LcdData1|LcdData3);
 256   2              }
 257   1              else
 258   1              {
 259   2                      LcdData2^=0xff;
 260   2                      LcdData3^=0xff;
 261   2                      WriteLcd (LCDDAT,LcdData0&(LcdData2));
 262   2                      WriteLcd (LCDDAT,LcdData1&(LcdData3));
 263   2              }
 264   1              WriteLcd (LCDCOMM,0x36);
 265   1              
 266   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1763    ----
   CONSTANT SIZE    =     35    ----
   XDATA SIZE       =   ----      21
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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