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

📄 lcd.lst

📁 单片机与DSP通信源程序
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   04/07/2006 23:20:56 PAGE 1   


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

line level    source

   1          #include "52init.h"
   2          #include "distable.h"
   3          sbit LcdDI=P1^0;
   4          sbit LcdRW=P1^1;
   5          sbit LcdEN=P1^2;
   6          sbit LcdCS1=P1^4;
   7          sbit LcdCS2=P1^5;
   8          sfr  DatBus=0x80;
   9          uchar xdata PicBuf[64];
  10          
  11          
  12          uchar code EchoMenu[]={"Echo Cancel "};
  13          uchar code EqMenu[]  ={"Equilizer   "};
  14          uchar code FFTMenu[] ={"FFT Analyse "};
  15          uchar code LMSMenu[] ={"LMS Analyse "};
  16          
  17          void lcddelay(uchar delay_num)  //22.1184 the loop time is 0.543us
  18             {
  19   1          uchar i,k;                //delay_num 0.1ms/num
  20   1          for(i=delay_num;i>0;i--)
  21   1           {
  22   2            for(k=100;k>0;k--)
  23   2             {;}
  24   2            }
  25   1          }
  26          void LcdChkBusy(void)
  27           {
  28   1        uchar CheckTmp;
  29   1         DatBus=0xff;
  30   1         LcdEN=1;
  31   1         CheckTmp=DatBus;
  32   1         CheckTmp&=0x80;
  33   1         LcdEN=0;
  34   1         lcddelay(1);
  35   1      /*
  36   1         while(CheckTmp==0x80)
  37   1          {
  38   1            DatBus=0xff;
  39   1            LcdEN=1;
  40   1            CheckTmp=DatBus;
  41   1            CheckTmp&=0x80;
  42   1            LcdEN=0;
  43   1               }
  44   1      */
  45   1        }
  46          void LcdCmdWr(bit DispArea,uchar CmdP)
  47           { 
  48   1         if(DispArea==0)
  49   1           {
  50   2                LcdCS1=1;
  51   2                LcdCS2=0;
  52   2                }
  53   1         else 
  54   1           {
  55   2                LcdCS1=0;
C51 COMPILER V7.50   LCD                                                                   04/07/2006 23:20:56 PAGE 2   

  56   2                LcdCS2=1;       
  57   2                }
  58   1         LcdDI=0;
  59   1         LcdRW=1;
  60   1         LcdChkBusy();
  61   1         LcdRW=0;
  62   1         DatBus=CmdP;
  63   1         LcdEN=1;
  64   1         LcdEN=0;
  65   1        }
  66          void LcdDatWr(bit DispArea,uchar DatP)
  67           {
  68   1         if(DispArea==0)
  69   1           {
  70   2                LcdCS1=1;
  71   2                LcdCS2=0;
  72   2                }
  73   1         else 
  74   1           {
  75   2                LcdCS1=0;
  76   2                LcdCS2=1;       
  77   2                }
  78   1         LcdDI=0;
  79   1         LcdRW=1;
  80   1         LcdChkBusy();
  81   1         LcdDI=1; 
  82   1         LcdRW=0;
  83   1         DatBus=DatP;
  84   1         LcdEN=1;
  85   1         LcdEN=0;    
  86   1        }
  87          uchar LcdDatRd(bit DispArea)
  88           {
  89   1         uchar BufDatTmp;
  90   1         if(DispArea==0)
  91   1           {
  92   2                LcdCS1=1;
  93   2                LcdCS2=0;
  94   2                }
  95   1         else 
  96   1           {
  97   2                LcdCS1=0;
  98   2                LcdCS2=1;       
  99   2                }
 100   1          LcdDI=0;
 101   1              LcdRW=1;
 102   1              LcdChkBusy();
 103   1              LcdDI=1;
 104   1              DatBus=0xff;
 105   1              LcdEN=1;
 106   1              BufDatTmp=DatBus;
 107   1              LcdEN=0;
 108   1              return(BufDatTmp);
 109   1        }
 110          void LcdInit(void)
 111           {
 112   1        LcdCmdWr(0,0xc0);
 113   1        LcdCmdWr(1,0xc0);
 114   1        LcdCmdWr(0,0x3f);
 115   1        LcdCmdWr(1,0x3f);
 116   1        }
 117          void LcdClear(void)
C51 COMPILER V7.50   LCD                                                                   04/07/2006 23:20:56 PAGE 3   

 118           {
 119   1        uchar PageTmp,ColumnTmp,CmdTmp;
 120   1         for(PageTmp=0;PageTmp<8;PageTmp++)
 121   1          {
 122   2                CmdTmp=PageTmp|0xb8;
 123   2            LcdCmdWr(0,CmdTmp);
 124   2            LcdCmdWr(1,CmdTmp);
 125   2                LcdCmdWr(0,0x40);
 126   2            LcdCmdWr(1,0x40);
 127   2                 for(ColumnTmp=0x0;ColumnTmp<0x40;ColumnTmp++)
 128   2               {
 129   3                        LcdDatWr(0,0x00);
 130   3                LcdDatWr(1,0x00);
 131   3                        }           
 132   2               }
 133   1        }
 134          void DisMod(uchar ColP,uchar ModP)
 135            {  
 136   1         LcdCmdWr(0,0x40+ColP);
 137   1         switch(ModP)
 138   1           {
 139   2                 case 0:
 140   2                   LcdDatWr(0,0x00);
 141   2                   break;
 142   2                 case 1:
 143   2                   LcdDatWr(0,0x80);
 144   2                       break;
 145   2                 case 2:
 146   2                   LcdDatWr(0,0xc0);
 147   2                       break;
 148   2                 case 3:
 149   2                   LcdDatWr(0,0xe0);
 150   2                       break; 
 151   2                 case 4:
 152   2                   LcdDatWr(0,0xf0);
 153   2                       break;
 154   2                 case 5:
 155   2                   LcdDatWr(0,0xf8);
 156   2                       break;
 157   2                 case 6:
 158   2                   LcdDatWr(0,0xfc);
 159   2                       break;   
 160   2             case 7:
 161   2                   LcdDatWr(0,0xfe);
 162   2                       break;    
 163   2                 }
 164   1         }
 165          void PicFft(void)
 166            {
 167   1         uchar i,ii;
 168   1         uchar ByteNum,ByteMod,RowTmp,CmdTmp;
 169   1         for(i=0;i<64;i++)
 170   1           {
 171   2                  ByteNum=PicBuf[i]>>3;
 172   2              ByteMod=PicBuf[i]%8;
 173   2                   for(RowTmp=0;RowTmp<ByteNum;RowTmp++)
 174   2                        {
 175   3                             CmdTmp=(7-RowTmp)|0xb8;
 176   3                     LcdCmdWr(0,CmdTmp);
 177   3                         LcdCmdWr(0,0x40+i);
 178   3                     LcdDatWr(0,0xff);
 179   3                         }
C51 COMPILER V7.50   LCD                                                                   04/07/2006 23:20:56 PAGE 4   

 180   2                      if(ByteMod!=0)
 181   2                       {
 182   3                CmdTmp=(7-ByteNum)|0xb8;
 183   3                LcdCmdWr(0,CmdTmp);
 184   3                DisMod(i,ByteMod);
 185   3                        }
 186   2                      else
 187   2                       {
 188   3                        if(ByteNum==0)
 189   3                         {CmdTmp=0xc0;}
 190   3                        }
 191   2                      for(ii=0xb8;ii<CmdTmp;ii++)
 192   2                        {  
 193   3                          LcdCmdWr(0,ii);
 194   3                      LcdCmdWr(0,0x40+i);
 195   3                  LcdDatWr(0,0x00);
 196   3                         }
 197   2                }
 198   1         }
 199          
 200          void DisChar(uchar PageAddrP,uchar RowAddrP,uint DisDatP)
 201           {
 202   1         uchar cc,PageTmp,RowTmp;
 203   1         uint  TabTmp;
 204   1         PageTmp=PageAddrP|0xb8;
 205   1         RowTmp =RowAddrP+0x40;
 206   1         TabTmp =DisDatP-0x20;
 207   1         TabTmp*=5;
 208   1         LcdCmdWr(1,PageTmp);
 209   1         LcdCmdWr(1,RowTmp);
 210   1         for(cc=0;cc<5;cc++)
 211   1          {
 212   2            LcdDatWr(1,ziku[TabTmp+cc]);
 213   2           }
 214   1        }
 215          
 216          void DisEcho(void)
 217           {
 218   1        uchar i,OffSetTmp;
 219   1         for(i=0;i<12;i++)
 220   1          {
 221   2             OffSetTmp=i*5;  
 222   2             DisChar(0,OffSetTmp,EchoMenu[i]);
 223   2            }
 224   1        }
 225          void DisEq(void)
 226           {
 227   1        uchar i,OffSetTmp;
 228   1         for(i=0;i<12;i++)
 229   1          {
 230   2             OffSetTmp=i*5;  
 231   2             DisChar(2,OffSetTmp,EqMenu[i]);
 232   2            }
 233   1        }
 234          
 235          void DisFFT(void)
 236           {
 237   1        uchar i,OffSetTmp;
 238   1         for(i=0;i<12;i++)
 239   1          {
 240   2             OffSetTmp=i*5;  
 241   2             DisChar(4,OffSetTmp,FFTMenu[i]);
C51 COMPILER V7.50   LCD                                                                   04/07/2006 23:20:56 PAGE 5   

 242   2            }
 243   1        }
 244          void DisLMS(void)
 245           {
 246   1        uchar i,OffSetTmp;
 247   1         for(i=0;i<12;i++)
 248   1          {
 249   2             OffSetTmp=i*5;  
 250   2             DisChar(6,OffSetTmp,LMSMenu[i]);
 251   2            }
 252   1        }
 253          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    654    ----
   CONSTANT SIZE    =    532    ----
   XDATA SIZE       =     64    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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