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

📄 lcd.lst

📁 电赛一等奖作品:音频信号分析仪单片机源码
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   09/05/2007 11:52:44 PAGE 1   


C51 COMPILER V8.02, 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 <at89x51.h>
   2          #include <intrins.h>
   3          #include "lcd.h"
   4          typedef unsigned int uint;
   5          typedef unsigned char uchar;
   6          ////////////////////////////////////////////////////////////////////////
   7          #define CMD_CLEAR                       0x01
   8          #define CMD_HOME                        0x03
   9          #define CMD_DISPLAYON           0x0c
  10          #define CMD_FUNCTION            0x30   //8 bit basic instr
  11          #define CMD_ENTRY                       0x06   //ac plus
  12          #define CMD_SHOWCURSOR      0x0f
  13          #define CMD_SETCURSOR       0x14
  14          #define CMD_GRAPH_ON            0x3e
  15          #define CMD_GRAPH_OFF           0x3c
  16          ////////////////////////////////////////////////////////////////////////
  17          sbit RS=P1^5;
  18          sbit RW=P2^1;
  19          sbit EN=P1^7;
  20          ////////////////////////////////////////////////////////////////////////
  21          void Delay()
  22          {
  23   1              uchar n;
  24   1              for(n=0;n<5;n++);       
  25   1      }
  26          void SendLcdCmd(uchar cmd)
  27          {
  28   1              P2=0xff;
  29   1              RS=0;
  30   1              RW=0;
  31   1              EN=0;
  32   1              P0=cmd;
  33   1              EN=1;
  34   1              _nop_();
  35   1              EN=0;
  36   1      }
  37          void SendLcdData(uchar dat)
  38          {
  39   1              P2=0xff;
  40   1              RS=1;
  41   1              RW=0;
  42   1              EN=0;
  43   1              P0=dat;
  44   1              EN=1;
  45   1              _nop_();
  46   1              EN=0;
  47   1              RS=0;
  48   1      }
  49          /*
  50          uchar ReadLcdState()
  51          {
  52                  uchar state;
  53                  P2=0xff;
  54                  RS=0;
  55                  RW=1;
C51 COMPILER V8.02   LCD                                                                   09/05/2007 11:52:44 PAGE 2   

  56                  EN=0;
  57                  EN=1;
  58                  _nop_();
  59                  state=P0;
  60                  EN=0;
  61                  return state;
  62          }  
  63          uchar ReadLcdData()
  64          {
  65                  uchar dat;
  66                  P2=0xff;
  67                  RS=1;
  68                  RW=1;
  69                  EN=0;
  70                  EN=1;
  71                  _nop_();
  72                  dat=P0;
  73                  EN=0;
  74                  RS=0;
  75                  return dat;
  76          }
  77          */
  78          void ShowCursor()
  79          {
  80   1          Delay();
  81   1          SendLcdCmd(CMD_SHOWCURSOR);
  82   1          Delay();
  83   1          SendLcdCmd(CMD_SETCURSOR);
  84   1      }
  85          void HideCursor()
  86          {
  87   1          Delay();
  88   1          SendLcdCmd(CMD_DISPLAYON);
  89   1          
  90   1      }
  91          void LcdClear()
  92          {
  93   1              uint n;
  94   1              Delay();
  95   1              SendLcdCmd(CMD_CLEAR);
  96   1              for(n=0;n<4800;n++);
  97   1      }
  98          void LcdInit()
  99          {
 100   1              uint n;
 101   1              EN=0;
 102   1              SendLcdCmd(CMD_FUNCTION);
 103   1              Delay();
 104   1              SendLcdCmd(CMD_DISPLAYON);
 105   1              Delay();
 106   1              SendLcdCmd(CMD_CLEAR);
 107   1              for(n=0;n<4800;n++);
 108   1              SendLcdCmd(CMD_ENTRY);
 109   1              EN=0;
 110   1      }
 111          bit SetPos(uchar x,uchar y)
 112          {
 113   1              uchar addr;
 114   1              if(y>3 || x>7) return 0;
 115   1              switch(y)
 116   1              {
 117   2                      case 0: addr=0x80+x;
C51 COMPILER V8.02   LCD                                                                   09/05/2007 11:52:44 PAGE 3   

 118   2                                      break;
 119   2                      case 1: addr=0x90+x;
 120   2                                      break;
 121   2                      case 2: addr=0x88+x;
 122   2                                      break;
 123   2                      case 3: addr=0x98+x;
 124   2                                      break;
 125   2              }
 126   1              Delay();
 127   1              SendLcdCmd(addr);
 128   1              EN=0;
 129   1              return 1;
 130   1      }
 131          void LcdPrint(uchar *c, uchar len)
 132          {
 133   1              uchar i;
 134   1              for(i=0;i<len;i++)
 135   1              {
 136   2                      Delay();
 137   2                      SendLcdData(c[i]);
 138   2              }
 139   1              EN=0;
 140   1      }
 141          bit LcdPrintLine(uchar *c,uchar len,uchar x,uchar y)
 142          {
 143   1              uchar i=0,j=x;
 144   1              bit add=0;
 145   1              if(!SetPos(x,y)) return 0;
 146   1              while(i<len) 
 147   1              {       
 148   2                      Delay();
 149   2                      SendLcdData(c[i]);
 150   2                      i++;
 151   2                      if(add)
 152   2                      {
 153   3                              j++;
 154   3                              if(j>=8)
 155   3                              {
 156   4                                      y++;if(y>=4) y-=4;
 157   4                                      j=0;
 158   4                                      SetPos(0,y);
 159   4                              }
 160   3                      }
 161   2                      add=!add;
 162   2              }
 163   1              EN=0;
 164   1              return 1;
 165   1      }
 166          void DrawPic(char *pic)
 167          {
 168   1              uchar x,y;
 169   1              uint i=0;
 170   1          SendLcdCmd(CMD_GRAPH_OFF);
 171   1          Delay();
 172   1          for(y=0x80;y<0xa0;y++)
 173   1          {
 174   2              SendLcdCmd(y);
 175   2              Delay();
 176   2              SendLcdCmd(0x80);
 177   2              Delay();
 178   2              for(x=0;x<16;x++)
 179   2              {
C51 COMPILER V8.02   LCD                                                                   09/05/2007 11:52:44 PAGE 4   

 180   3                 SendLcdData(pic[i]);
 181   3                 Delay();
 182   3                 i++;
 183   3              }
 184   2          }
 185   1          for(y=0x80;y<0xa0;y++)
 186   1          {
 187   2              SendLcdCmd(y);
 188   2              Delay();
 189   2              SendLcdCmd(0x88);
 190   2              Delay();
 191   2              for(x=0;x<16;x++)
 192   2              {
 193   3                 SendLcdData(pic[i]);
 194   3                 Delay();
 195   3                 i++; 
 196   3              }
 197   2          }
 198   1          SendLcdCmd(CMD_GRAPH_ON);
 199   1          Delay();
 200   1      }
 201          
 202                   
 203                  


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