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

📄 lcd1602func.lst

📁 通过编程实现对LCD的驱动
💻 LST
字号:
C51 COMPILER V8.02   LCD1602FUNC                                                           10/22/2006 21:45:32 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          *******************************************************************/
   7          
   8          #include "lcd1602.h>
   9          unsigned char data  ac=0;
  10          
  11          /*************************************************************
  12          **功能:延时                                                                                            **
  13          **参数:无                                                                                                      **
  14          *************************************************************/
  15          
  16          void delay1_64ms(void)
  17          {
  18   1              uint i;
  19   1              for(i = 0;i < 1500;i++)
  20   1              {
  21   2                      ;
  22   2              }
  23   1      }
  24          
  25          /*************************************************************
  26          **功能:判断LCD忙                                                                                       **
  27          **参数:无                                                                                              **
  28          *************************************************************/
  29          
  30          unsigned char Lcd_Wait(void)
  31          {
  32   1              LcdRs=0;
  33   1              LcdRw=1;
  34   1              
  35   1              LcdEn=1;
  36   1              _nop_();
  37   1              _nop_();
  38   1              //LcdEn=0;
  39   1              //while(DBPort&0x80);
  40   1              LcdEn=0;
  41   1              return DBPort;
  42   1      }
  43          /**************************************************************
  44          **功能:写LCD函数                                                                                        **
  45          **参数:style为写命令/数据,0-命令,1-数据;input为写入的8位 **
  46          **              命令/数据                                                                                        **
  47          **************************************************************/
  48          
  49          
  50          void Lcd_Write(bit style,unsigned char input)
  51          {
  52   1              LcdEn=0;
  53   1              LcdRs=style;
  54   1              LcdRw=0;
  55   1              DBPort=input;
C51 COMPILER V8.02   LCD1602FUNC                                                           10/22/2006 21:45:32 PAGE 2   

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    228    ----
   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 + -