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

📄 lcd1602.lst

📁 Keil C 写的51单片机LCD1602的驱动程序
💻 LST
字号:
C51 COMPILER V8.16   LCD1602                                                               01/11/2009 11:10:52 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN .\bin\LCD1602.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE src\LCD1602.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\
                    -bin\LCD1602.lst) OBJECT(.\bin\LCD1602.obj)

line level    source

   1          #include<reg51.h>
   2          #include"inc/define.h"
   3          #include"inc/lcd1602.h"
   4          
   5          #define BUSY 0x80               //用于检测LCD状态字中的Busy标识
   6          
   7          u8 BusyCheck()  //忙检测  LCD正操作忙则返回1;不忙则返回0
   8          {
   9   1              u8 flag;
  10   1      
  11   1              LCD_Data = 0xFF; 
  12   1              LCD_RS = 0;
  13   1              LCD_RW = 1;
  14   1              LCD_E = 1;
  15   1              flag = LCD_Data & BUSY;
  16   1              LCD_E = 0;
  17   1      
  18   1              return flag;
  19   1      }
  20          void BusyWait() //忙等待  一直等到LCD不忙时再返回
  21          {
  22   1              while(1 == BusyCheck())
  23   1                      ;
  24   1      }
  25          
  26          void WriteCMD(u8 CData) 
  27          {
  28   1              BusyWait();
  29   1              LCD_Data = CData;
  30   1              LCD_RS = 0;
  31   1              LCD_RW = 0; 
  32   1              LCD_E = 1;      
  33   1              LCD_E = 0; 
  34   1      }
  35          
  36          void WriteData(u8 DData)
  37          {
  38   1              BusyWait();
  39   1              LCD_Data = DData;
  40   1              LCD_RS = 1;
  41   1              LCD_RW = 0;
  42   1              LCD_E = 1;               
  43   1              LCD_E = 0;               
  44   1      }
  45          
  46          u8 ReadData()
  47          {
  48   1              u8 DData;
  49   1              LCD_RS = 1; 
  50   1              LCD_RW = 1;
  51   1              LCD_E = 1;
  52   1              DData=LCD_Data;
  53   1              LCD_E = 0;
  54   1      
C51 COMPILER V8.16   LCD1602                                                               01/11/2009 11:10:52 PAGE 2   

  55   1              return DData;
  56   1      }
  57          
  58          /**********在指定位置显示一个字符*************/
  59          void DisplayChar(u8 x,u8 y,uchar DData)
  60          {
  61   1              x &= 0xF;                       
  62   1              y &= 0x1;                       //限制x不能大于15,y不能大于1
  63   1              if (1 == y) 
  64   1                      x |= 0x40;      //当要显示第二行时地址码 0x40;
  65   1              x |= 0x80;                      //算出指令码
  66   1              WriteCMD(x);            //这里不检测忙信号,发送地址码
  67   1              WriteData(DData);
  68   1      }
  69          
  70          /*********按指定位置显示一串字符**************/
  71          void DisplayStr(u8 x,u8 y,uchar *DData)
  72          {
  73   1              u8 char_posi = 0;
  74   1              x &= 0xF;
  75   1              y &= 0x1;                       //限制x不能大于15,y不能大于1
  76   1              while ((DData[char_posi] != '\0') && (x <= 0x0F)) //若到达字串尾则退出并且位置不在末尾
  77   1              {
  78   2                      DisplayChar(x,y,DData[char_posi]);  //显示单个字符
  79   2                  char_posi++;
  80   2                  x++;
  81   2              }
  82   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    156    ----
   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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -