lcd1602.lst

来自「基于51单片机的用LCD1602液晶的人机界面代码。可以直接调用。基于keil开」· LST 代码 · 共 230 行

LST
230
字号
C51 COMPILER V8.05a   LCD1602                                                              04/18/2009 09:19:44 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE LCD1602.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          功能:lcd1602的驱动
   3                          提供的函数为:
   4                                          Delayms(uchar i)  延时ms数,单位ms
   5                                          Lcdclr(void) LCD清屏函数
   6                                          Lcdreset(void) LCD复位函数
   7                                          Lcdcur(uchar cur) 光标控制命令
   8                                          Lcdwrchar(uchar c,uchar xpos,uchar ypos) Lcd写字符函数
   9                                          Lcdwrstring(uchar *s,uchar xpos,uchar ypos) Lcd写字符串函数
  10          作者:荒草
  11          时间:2008年6月6日
  12          修改:无
  13          */
  14          
  15          //#include "spce061a.h"
  16          #include "LCD1602.h"
  17          #include <reg52.h>
  18          
  19          #define DPORT P1
  20          
  21          
  22          sbit RS   = P2^0;
  23          sbit RW   = P2^2;
  24          sbit E    = P2^1;
  25          
  26          ///功能:延时ms函数,单位是ms
  27          //参数:延时的时间
  28          //返回:无
  29          void Delayms(unsigned char i)
  30          {
  31   1              unsigned int j;
  32   1              for(;i>0;i--)
  33   1              {
  34   2                      for(j=350;j>0;j--)
  35   2                      {;}
  36   2              }               
  37   1      }
  38          
  39          //功能:检查LCD的状态是否为忙信号
  40          //参数:无
  41          //返回:若忙,则等待
  42          void Waitfree(void)
  43          {       
  44   1              unsigned char temp1;
  45   1              RS=0;
  46   1              RW=1;
  47   1              E=0;
  48   1              Delayms(5);
  49   1              E=1;
  50   1              DPORT=0xFF00;
  51   1              for(;;)
  52   1              {
  53   2                      temp1=DPORT;
  54   2                      temp1&=0x80;
  55   2                      if(temp1==0)
C51 COMPILER V8.05a   LCD1602                                                              04/18/2009 09:19:44 PAGE 2   

  56   2                          break;      
  57   2              }
  58   1              E=0;
  59   1      }
  60          
  61          //功能:送控制字(不检测忙信号)
  62          //参数:控制字代码:c
  63          //返回:无
  64          void Lcdwcmdn(unsigned char c)
  65          {
  66   1              RS=0;
  67   1              RW=0;
  68   1              E=1;
  69   1              DPORT=c;
  70   1              Delayms(3);
  71   1              E=0;
  72   1      }
  73          
  74          //功能:送控制字(检测忙信号)
  75          //参数:控制字代码:C
  76          //返回:无
  77          void Lcdwcmd(unsigned char c)
  78          {
  79   1              Waitfree();
  80   1              Lcdwcmdn(c);
  81   1      }
  82          
  83          //功能:复位LCD
  84          //参数:无
  85          //返回:无
  86          void Lcdreset(void)
  87          {
  88   1              Delayms(15);
  89   1              Lcdwcmd(0x38);
  90   1              Delayms(5);
  91   1              Lcdwcmd(0x08);
  92   1              Delayms(5);
  93   1              Lcdwcmd(0x01);
  94   1              Delayms(5);
  95   1              Lcdwcmd(0x06);
  96   1              Delayms(5);
  97   1              Lcdwcmd(0x0c);
  98   1              Delayms(5);
  99   1      }
 100          
 101          //功能:光标设置
 102          //参数:光标类型0为关显示,关光标,且不闪烁
 103          //       1为开显示,无光标,无闪烁
 104          //               2为开显示,开光标,但光标不闪烁
 105          //               3为开显示,开光标,开闪烁
 106          //返回:无
 107          void Lcdcur(unsigned char cur)
 108          {
 109   1              Delayms(5);
 110   1              switch(cur)
 111   1              {
 112   2                      case 0:
 113   2                              {
 114   3                                      Lcdwcmd(0x08); 
 115   3                                      break;
 116   3                              }
 117   2                      case 1:
C51 COMPILER V8.05a   LCD1602                                                              04/18/2009 09:19:44 PAGE 3   

 118   2                              {
 119   3                                      Lcdwcmd(0x0c);
 120   3                                      break;
 121   3                              }
 122   2                      case 2:
 123   2                              {
 124   3                                      Lcdwcmd(0x0e);
 125   3                                      break;
 126   3                              }
 127   2                      case 3:
 128   2                              {
 129   3                                      Lcdwcmd(0x0f);  
 130   3                                      break;
 131   3                              }
 132   2                      default:
 133   2                              break;
 134   2              }
 135   1      } 
 136          
 137          //功能:清屏LCD
 138          //参数:无
 139          //返回:无
 140          void Lcdclr(void)
 141          {
 142   1              Lcdwcmd(0x01);
 143   1      }
 144          
 145          //功能:确定显示位置
 146          //参数:光标位置x y
 147          //返回:无
 148          void Lcdpos(unsigned char xpos,unsigned char ypos)
 149          {
 150   1              unsigned char temp;
 151   1              xpos &=0x0f;
 152   1              ypos &=0x01;
 153   1              if(ypos==0)
 154   1                      temp=xpos;
 155   1              else temp=xpos+0x40;
 156   1              temp |=0x80;
 157   1              Lcdwcmd(temp);
 158   1      }
 159          
 160          //功能:送字符
 161          //参数:待显示的字符
 162          //返回:无
 163          void Lcdwr(unsigned char c)
 164          {
 165   1              Waitfree();
 166   1              RS=1;
 167   1              RW=0;
 168   1              E=1;
 169   1              DPORT=c;
 170   1              Delayms(3);
 171   1              E=0;
 172   1      }
 173          
 174          //功能:写字符
 175          //参数:待显示的字符
 176          //返回:无
 177          void Lcdwrchar(unsigned char c,unsigned char xpos,unsigned char ypos)
 178          {
 179   1              Lcdpos(xpos,ypos);
C51 COMPILER V8.05a   LCD1602                                                              04/18/2009 09:19:44 PAGE 4   

 180   1              Lcdwr(c);
 181   1      }
 182          
 183          //功能:写字符串
 184          //参数:字符串,位置
 185          //返回:无
 186          void Lcdwrstring(unsigned char *s,unsigned char xpos,unsigned char ypos)
 187          {
 188   1              unsigned char i;
 189   1              if(*s==0) 
 190   1                      return;
 191   1              for(i=0;;i++)
 192   1              {
 193   2                      if(*(s+i)==0)
 194   2                              break;
 195   2                      Lcdwrchar(*(s+i),xpos,ypos);
 196   2                      xpos++;
 197   2                      if(xpos>=15) 
 198   2                              break;
 199   2           }
 200   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    277    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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