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

📄 lcd1602func2.lst

📁 通过编程实现对LCD的驱动
💻 LST
字号:
C51 COMPILER V8.02   LCD1602FUNC2                                                          11/05/2006 14:56:35 PAGE 1   


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

line level    source

   1          /*******************************************************************
   2          **函数功能:LCD的驱动函数                                                                                 **
   3          **创建人:xingyuegu                                                                                               **
   4          **创建日期:2006-7-12                                                                                     **
   5          **版本:1.0                                                                                                               **
   6          **修改日期:2006-10-12                                                                                    **
   7          **版本:2.0                                                                                                               **
   8          *******************************************************************/
   9          
  10          #include "lcd1602.h>
  11          #include <absacc.h>
  12          unsigned char data  ac=0;
  13          
  14          /*************************************************************
  15          **功能:延时                                                                                            **
  16          **参数:无                                                                                                      **
  17          *************************************************************/
  18          
  19          void delay1_64ms(void)
  20          {
  21   1              uint i;
  22   1              for(i = 0;i < 1500;i++)
  23   1              {
  24   2                      ;
  25   2              }
  26   1      }
  27          
  28          /*************************************************************
  29          **功能:判断LCD忙                                                                                       **
  30          **参数:无                                                                                              **
  31          *************************************************************/
  32          #define write_lcd_command XBYTE[0x8000]
  33          #define write_lcd_data XBYTE[0x8001]
  34          #define read_lcd_command XBYTE[0x8802]
  35          #define read_lcd_data XBYTE[0x8003]
  36          unsigned char Lcd_Wait(void)
  37          {
  38   1              return read_lcd_command;
  39   1      }
  40          /**************************************************************
  41          **功能:写LCD函数                                                                                        **
  42          **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
  43          **              命令/数据                                                                                        **
  44          **************************************************************/
  45          
  46          
  47          void Lcd_Write(bit style,unsigned char input)
  48          {
  49   1      
  50   1              if(style)
  51   1                      write_lcd_data=input;
  52   1              else
  53   1                      write_lcd_command=input;
  54   1              Lcd_Wait();
  55   1      }
C51 COMPILER V8.02   LCD1602FUNC2                                                          11/05/2006 14:56:35 PAGE 2   

  56          /***************************************************************
  57          **功能:设置显示模式                                                                              **
  58          **参数:                                                                                                          **
  59          ***************************************************************/
  60          
  61          void  Lcd_SetDisplay(unsigned char DisplayMode)
  62          {
  63   1              Lcd_Write(Lcd_Command,0x08|DisplayMode);
  64   1      }
  65          /***************************************************************
  66          **功能:LCD移动设置                                                                                       **
  67          **参数:取值如下                                                                                          **
  68          ***************************************************************/
  69          
  70          //
  71          void Lcd_Move(unsigned char MoveMode)
  72          {
  73   1              Lcd_Write(Lcd_Command,0x10|MoveMode);
  74   1      }
  75          
  76          /****************************************************************
  77          **功能:LCD输入设置                                                                                        **
  78          **参数:取值如下                                                                                           **
  79          ****************************************************************/
  80          //
  81          void Lcd_SetInput(unsigned char InputMode)
  82          {
  83   1              Lcd_Write(Lcd_Command,0x04|InputMode);
  84   1      }
  85          /****************************************************************
  86          **功能:LCD初始化                                                                                      **
  87          **参数:取值如下                                                                                           **
  88          ****************************************************************/
  89          void Lcd_Init(void)
  90          {
  91   1      
  92   1              Lcd_Write(Lcd_Command,0x38);           //8位数据端口,2行显示,5*7点阵
  93   1              Lcd_Write(Lcd_Command,0x38);
  94   1              
  95   1              _nop_();
  96   1              Lcd_SetDisplay(Lcd_Display_On|Lcd_Cursor|Lcd_Flash);    //开启显示, 无光标
  97   1              Lcd_Write(Lcd_Command,Lcd_Clear_Screen);   //清屏
  98   1              Lcd_SetInput(Lcd_Ac_Up|Lcd_No_Move);       //AC递增, 画面不动
  99   1              
 100   1      }
 101          
 102          /****************************************************************
 103          **功能:显示位置设置                                                                               **
 104          **参数:x-行;y-列                                                                                         **
 105          ****************************************************************/
 106          void GotoXY(unsigned char x,unsigned char y)
 107          {
 108   1              if(y==0)
 109   1                      {Lcd_Write(Lcd_Command,0x80|x);
 110   2                      ac=x%8;}
 111   1              if(y==1)
 112   1                      {Lcd_Write(Lcd_Command,0x80|(x+0x40));
 113   2                       ac=17+x%8;}
 114   1      }
 115          
 116          /****************************************************************
 117          **功能:LCD显示函数                                                                                        **
C51 COMPILER V8.02   LCD1602FUNC2                                                          11/05/2006 14:56:35 PAGE 3   

 118          **参数:str-要显示的字符串指针                                                             **
 119          ****************************************************************/
 120          void Print(unsigned char *str)
 121          {       
 122   1              while(*str!='\0')
 123   1              {
 124   2                      
 125   2                      if(ac==16)
 126   2                      GotoXY(0,1);
 127   2                      else if(ac==32)
 128   2                      {GotoXY(0,0);
 129   3                      ac=0;}
 130   2                      Lcd_Write(Lcd_Data,*str);
 131   2                      ac++;
 132   2                      str++;
 133   2              }
 134   1      }
 135          /****************************************************************
 136          **功能:LCD清屏函数                                                                                    **
 137          **参数:无                                                                                             **
 138          ****************************************************************/
 139          void ClrScreen(void)
 140          {
 141   1              
 142   1              Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
 143   1              delay1_64ms();                                                  //必须有,LCD清屏要1.64ms
 144   1              ac=0;
 145   1      }
 146                          
 147          


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