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

📄 lcd1602func.lst

📁 通过编程实现对LCD的驱动
💻 LST
字号:
C51 COMPILER V8.02   LCD1602FUNC                                                           01/07/2007 20:42:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD1602FUNC
OBJECT MODULE PLACED IN lcd1602func.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602func.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************
   2          **函数功能:LCD的驱动函数                                                                                 **
   3          **创建人:xingyuegu                                                                                               **
   4          **创建日期:2006-7-12                                                                                     **
   5          **版本:1.0                                                                                                               **
   6          **修改日期:2006-10-30                                                                                    **
   7          **版本:2.0                                                                                                               **
   8          *******************************************************************/
   9          
  10          #include "lcd1602.h>
  11          //unsigned char data  ac=0;
  12          
  13          /*************************************************************
  14          **功能:延时1.64ms                                                                                      **
  15          **参数:无                                                                                                      **
  16          *************************************************************/
  17          
  18          void delay1_64ms(void)
  19          {
  20   1              uint i;
  21   1              for(i = 0;i < 255;i++)
  22   1              {
  23   2                      ;
  24   2              }
  25   1      }
  26          /*************************************************************
  27          **功能:延时40us                                                                                        **
  28          **参数:无                                                                                                      **
  29          *************************************************************/
  30          
  31          void delay40us(void)
  32          {
  33   1              uchar i;
  34   1              for(i = 0;i < 20;i++)
  35   1              {
  36   2                      ;
  37   2              }
  38   1      }
  39          /*************************************************************
  40          **功能:判断LCD忙                                                                                       **
  41          **参数:无                                                                                              **
  42          *************************************************************/
  43          
  44          unsigned char Lcd_Wait(void)
  45          {
  46   1              LcdRs=0;
  47   1              LcdRw=1;
  48   1              
  49   1              LcdEn=1;
  50   1              _nop_();
  51   1              _nop_();
  52   1              DBPort=0xff;
  53   1              //while(DBPort&0x80);
  54   1              //LcdEn=0;
  55   1              delay40us();
C51 COMPILER V8.02   LCD1602FUNC                                                           01/07/2007 20:42:12 PAGE 2   

  56   1              return DBPort;
  57   1      }
  58          /**************************************************************
  59          **功能:写LCD函数                                                                                        **
  60          **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
  61          **              命令/数据                                                                                        **
  62          **************************************************************/
  63          
  64          
  65          void Lcd_Write(bit style,unsigned char input)
  66          {
  67   1              LcdEn=0;
  68   1              LcdRs=style;
  69   1              LcdRw=0;
  70   1              DBPort=input;
  71   1              _nop_();
  72   1              _nop_();
  73   1              LcdEn=1;
  74   1              _nop_();
  75   1              _nop_();
  76   1              _nop_(); 
  77   1              LcdEn=0;
  78   1              _nop_();
  79   1              Lcd_Wait();
  80   1      }
  81          /****************************************************************
  82          **功能:LCD清屏函数                                                                                    **
  83          **参数:无                                                                                             **
  84          ****************************************************************/
  85          void ClrScreen(void)
  86          {
  87   1              
  88   1              Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
  89   1              delay1_64ms();                                                  //必须有,LCD清屏要1.64ms
  90   1              
  91   1      }
  92          
  93          /****************************************************************
  94          **功能:LCD归位函数                                                                                    **
  95          **参数:无                                                                                             **
  96          ****************************************************************/
  97          void Screen_home(void)
  98          {
  99   1              
 100   1              Lcd_Write(Lcd_Command,Lcd_Home);
 101   1              delay1_64ms();                                                  //必须有,LCD清屏要1.64ms
 102   1      
 103   1      }
 104          /***************************************************************
 105          **功能:设置显示模式                                                                              **
 106          **参数:                                                                                                          **
 107          ***************************************************************/
 108          
 109          void  Lcd_SetDisplay(unsigned char DisplayMode)
 110          {
 111   1              Lcd_Write(Lcd_Command,0x08|DisplayMode);
 112   1              delay40us(); //在真硬件时不需要
 113   1      }
 114          /***************************************************************
 115          **功能:LCD移动设置                                                                                       **
 116          **参数:取值如下                                                                                          **
 117          ***************************************************************/
C51 COMPILER V8.02   LCD1602FUNC                                                           01/07/2007 20:42:12 PAGE 3   

 118          
 119          
 120          void Lcd_Move(unsigned char MoveMode)
 121          {
 122   1              Lcd_Write(Lcd_Command,0x10|MoveMode);
 123   1              delay40us(); //在真硬件时不需要
 124   1      }
 125          
 126          /****************************************************************
 127          **功能:LCD输入设置                                                                                        **
 128          **参数:取值如下                                                                                           **
 129          ****************************************************************/
 130          //
 131          void Lcd_SetInput(unsigned char InputMode)
 132          {
 133   1              Lcd_Write(Lcd_Command,0x04|InputMode);
 134   1              delay40us(); //在真硬件时不需要
 135   1      }
 136          /****************************************************************
 137          **功能:LCD初始化                                                                                      **
 138          **参数:取值如下                                                                                           **
 139          ****************************************************************/
 140          void Lcd_Init(void)
 141          {
 142   1      
 143   1              Lcd_Write(Lcd_Command,0x38);           //8位数据端口,2行显示,5*7点阵
 144   1              //Lcd_Write(Lcd_Command,0x38);
 145   1              delay40us();
 146   1              Lcd_SetDisplay(Lcd_Display_On|Lcd_Cursor|Lcd_Flash);    //开启显示, 无光标
 147   1              Lcd_Move(Lcd_CursorMove|Lcd_Left);
 148   1      //      Lcd_Write(Lcd_Command,Lcd_Clear_Screen);   //清屏
 149   1              //ClrScreen();                                                                                           
 150   1              Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move);       //AC递增, 画面不动_To        
 151   1              //delay1_64ms(); //在真硬件时不需要
 152   1              
 153   1      }
 154          
 155          /****************************************************************
 156          **功能:显示位置设置                                                                               **
 157          **参数:x-行;y-列                                                                                         **
 158          ****************************************************************/
 159          void GotoXY(unsigned char x,unsigned char y)
 160          {
 161   1              if(y==0)
 162   1                      {Lcd_Write(Lcd_Command,0x80|x);
 163   2                      }
 164   1              if(y==1)
 165   1                      {Lcd_Write(Lcd_Command,0x80|(x+0x40));
 166   2                       }
 167   1              delay40us();
 168   1      }
 169          
 170          /****************************************************************
 171          **功能:LCD显示函数                                                                                        **
 172          **参数:str-要显示的字符串指针                                                             **
 173          ****************************************************************/
 174          void Print(unsigned char *str)
 175          {       
 176   1              while(*str!='\0')
 177   1              {
 178   2      
 179   2                      Lcd_Write(Lcd_Data,*str);
C51 COMPILER V8.02   LCD1602FUNC                                                           01/07/2007 20:42:12 PAGE 4   

 180   2      
 181   2                      str++;
 182   2                      delay40us();
 183   2              }
 184   1      }
 185          
 186                          
 187          


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