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

📄 d.lst

📁 新写的LCD1602源码 LCD1602驱动 可以让字符惑数字在屏幕上跑的函数 函数结构清析
💻 LST
字号:
C51 COMPILER V7.01  D                                                                      04/07/2007 21:43:11 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE D
OBJECT MODULE PLACED IN d.OBJ
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE d.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          
   4          sbit RSPIN = P2^6;
   5          sbit RWPIN = P2^5;
   6          sbit EPIN = P2^7;
   7          sbit E=P3^4;//使数码管高阻
   8          
   9          unsigned char XPOS,YPOS;
  10          
  11          void delay(unsigned int t)
  12          {  unsigned int i,j;
  13   1         for(i=0;i<t;i++)
  14   1            for(j=0;j<10;j++); 
  15   1      }
  16          
  17          void lcdwaitidle(void) //忙检查
  18          {  P0=0xff; //读作准备
  19   1         RSPIN=0;
  20   1         RWPIN=1;
  21   1         EPIN=1;
  22   1         while((P0&0x80)==0x80);
  23   1         EPIN=0;
  24   1      }
  25          
  26          void lcdwcn(unsigned char c)//确定光标位置,由参数C值决定 及初始化
  27          {  RSPIN=0;
  28   1         RWPIN=0;
  29   1         P0=c;
  30   1         EPIN=1;
  31   1         _nop_(); //空操作
  32   1         EPIN=0;
  33   1      }
  34          
  35          void lcdwc(unsigned char c)
  36          {  lcdwaitidle();
  37   1         lcdwcn(c);    
  38   1      }
  39          
  40          void lcdwd(unsigned char d)
  41          {  lcdwaitidle();
  42   1         RSPIN=1;
  43   1         RWPIN=0;   //送要显示的数据
  44   1         P0=d;
  45   1         EPIN=1;
  46   1         _nop_();
  47   1         EPIN=0;
  48   1      }
  49          
  50          void lcdpos(void)
  51          {  XPOS&=0x0f;       //xp0s=xpos&0x0f 
  52   1         YPOS&=0x03;
  53   1         if(YPOS==0x00)
  54   1            lcdwc(XPOS|0x80);    
  55   1         else if(YPOS==0x01)
C51 COMPILER V7.01  D                                                                      04/07/2007 21:43:11 PAGE 2   

  56   1            lcdwc((XPOS+0x40)|0x80);     //第一行与第二行地址相差40H
  57   1      }
  58          
  59          void lcdreset()     //复位
  60          {  delay(150);lcdwcn(0x38);
  61   1         delay(50); lcdwcn(0x38);
  62   1         delay(50); lcdwcn(0x38);
  63   1         lcdwc(0x38);
  64   1         lcdwc(0x08);
  65   1         lcdwc(0x01);
  66   1         lcdwc(0x06);
  67   1         lcdwc(0x0c);
  68   1      }
  69          
  70          /*v oid lcdfill(unsigned char n) //全部显示同一个字符
  71          {
  72             for(YPOS=0;YPOS<2;YPOS++)   //两行
  73                for(XPOS=0;XPOS<16;XPOS++)//一行16个字符
  74                {  lcdpos();
  75                   lcdwd(n);  }
  76          }*/
  77          
  78          /*void lcdwda(unsigned char x,unsigned char y,unsigned char *s)//X,Y显示的开始位置 S表示
  79          {  YPOS=y;
  80             for(XPOS=x;XPOS<16;XPOS++)
  81             {  lcdpos();     //确定显示位置
  82                lcdwd(*s);    //显示数据
  83                s++;
  84                delay(400);
  85             }
  86          }*/
  87          
  88          
  89          //读状态 
  90          /*unsigned char  ReadStatusLCM(void)
  91          { 
  92           P0= 0xFF;  
  93           RSPIN = 0; 
  94           RWPIN = 1; 
  95           EPIN = 0; 
  96           EPIN = 0; 
  97           EPIN = 1; 
  98           while (P0 & 0x80); //检测忙信号 
  99           return(P0); 
 100          } */
 101          void main()
 102          {   
 103   1         unsigned int i=0;
 104   1         EPIN=0;
 105   1         RD=0;
 106   1         WR=1;
 107   1         E=1;
 108   1         lcdreset();
 109   1         XPOS=0;YPOS=0;
 110   1         lcdpos();
 111   1         delay(150);
 112   1         lcdwd(0xa0);
 113   1         lcdwd(0x57);  //显示一个Welcome!
 114   1         lcdwd(0x65);
 115   1         lcdwd(0x6c);
 116   1         lcdwd(0x63);
 117   1         lcdwd(0x6f);
C51 COMPILER V7.01  D                                                                      04/07/2007 21:43:11 PAGE 3   

 118   1         lcdwd(0x6d);
 119   1         lcdwd(0x65);
 120   1         lcdwd(0x21);
 121   1         lcdwc(0x02);
 122   1         lcdwc(0x05);
 123   1         delay(500);
 124   1      
 125   1         while(1)
 126   1         {   i++;
 127   2             switch (i)
 128   2            {
 129   3               case 15:
 130   3                  {   // i=15;
 131   4                         lcdreset(); 
 132   4                         lcdwc(0x00);
 133   4                         delay(150);
 134   4                         
 135   4                         XPOS=30;YPOS=1;
 136   4                         lcdpos();
 137   4                         lcdwd(0xa0);
 138   4                         lcdwd(0x57);  //显示一个Welcome!
 139   4                         lcdwd(0x65);
 140   4                         lcdwd(0x6c);
 141   4                         lcdwd(0x63);
 142   4                         lcdwd(0x6f);
 143   4                         lcdwd(0x6d);
 144   4                         lcdwd(0x65);
 145   4                         lcdwd(0x21);
 146   4                        // lcdwc(0x02);
 147   4                         lcdwc(0x07);
 148   4                         delay(1000);
 149   4                         break;
 150   4                   }
 151   3             case 30:
 152   3                   {  i=0;
 153   4                         lcdreset();
 154   4                         XPOS=0;YPOS=0;
 155   4                         lcdpos();
 156   4                         delay(150);
 157   4      
 158   4                       //  lcdwc(0x00);
 159   4                         delay(150);
 160   4                         lcdwd(0xa0);
 161   4                         lcdwd(0x57);  //显示一个Welcome!
 162   4                         lcdwd(0x65);
 163   4                         lcdwd(0x6c);
 164   4                         lcdwd(0x63);
 165   4                         lcdwd(0x6f);
 166   4                         lcdwd(0x6d);
 167   4                         lcdwd(0x65);
 168   4                         lcdwd(0x21);
 169   4                         lcdwc(0x02);
 170   4                         lcdwc(0x05);
 171   4                         delay(1000);
 172   4                         break;
 173   4      
 174   4                    }
 175   3              default:  
 176   3                 { lcdwd(0xa0);
 177   4                   delay(1000);
 178   4                  break;
 179   4                  } 
C51 COMPILER V7.01  D                                                                      04/07/2007 21:43:11 PAGE 4   

 180   3      }}}


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