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

📄 lcd1602func2.lst

📁 通过编程实现对LCD的驱动
💻 LST
字号:
C51 COMPILER V8.02   LCD1602FUNC2                                                          11/03/2006 22:20:18 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              /*LcdRs=0;
  39   1              LcdRw=1;
  40   1              
  41   1              LcdEn=1;
  42   1              _nop_();
  43   1              _nop_();
  44   1              //LcdEn=0;
  45   1              //while(DBPort&0x80);
  46   1              LcdEn=0;
  47   1              return DBPort;*/
  48   1              return read_lcd_command;
  49   1      }
  50          /**************************************************************
  51          **功能:写LCD函数                                                                                        **
  52          **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
  53          **              命令/数据                                                                                        **
  54          **************************************************************/
  55          
C51 COMPILER V8.02   LCD1602FUNC2                                                          11/03/2006 22:20:18 PAGE 2   

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

 118   1      }
 119          
 120          /****************************************************************
 121          **功能:显示位置设置                                                                               **
 122          **参数:x-行;y-列                                                                                         **
 123          ****************************************************************/
 124          void GotoXY(unsigned char x,unsigned char y)
 125          {
 126   1              if(y==0)
 127   1                      {Lcd_Write(Lcd_Command,0x80|x);
 128   2                      ac=x%8;}
 129   1              if(y==1)
 130   1                      {Lcd_Write(Lcd_Command,0x80|(x+0x40));
 131   2                       ac=17+x%8;}
 132   1      }
 133          
 134          /****************************************************************
 135          **功能:LCD显示函数                                                                                        **
 136          **参数:str-要显示的字符串指针                                                             **
 137          ****************************************************************/
 138          void Print(unsigned char *str)
 139          {       
 140   1              while(*str!='\0')
 141   1              {
 142   2                      
 143   2                      if(ac==16)
 144   2                      GotoXY(0,1);
 145   2                      else if(ac==32)
 146   2                      {GotoXY(0,0);
 147   3                      ac=0;}
 148   2                      Lcd_Write(Lcd_Data,*str);
 149   2                      ac++;
 150   2                      str++;
 151   2              }
 152   1      }
 153          /****************************************************************
 154          **功能:LCD清屏函数                                                                                    **
 155          **参数:无                                                                                             **
 156          ****************************************************************/
 157          void ClrScreen(void)
 158          {
 159   1              
 160   1              Lcd_Write(Lcd_Command,Lcd_Clear_Screen);
 161   1              delay1_64ms();                                                  //必须有,LCD清屏要1.64ms
 162   1              ac=0;
 163   1      }
 164                          
 165          


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 + -