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

📄 lcd.lst

📁 ti公司的高速AD驱动以及用1602液晶显示的源代码
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   05/18/2002 13:46:58 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\keil\新建文件夹\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <c8051f020.h>
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          
   5          
   6          void Lcd1602_Write_Command(uchar Command_Code);
   7          void Lcd1602_Write_Data(uchar row,uchar column,uchar Data);     //row取1或2,column取0到15
   8          void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer);
   9          void delay(uint t1,t2);
  10          
  11          void Lcd1602_initial( )
  12          {  
  13   1          Lcd1602_Write_Command(0x38);//显示模式设置
  14   1          Lcd1602_Write_Command(0x0c);//开显示,显示光标,光标闪烁
  15   1          Lcd1602_Write_Command(0x01);//显示清屏。
  16   1          Lcd1602_Write_Command(0x06);//显示光标自动右移,整屏不移动。
  17   1      
  18   1          Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
  19   1          Lcd1602_Write_Command(0x02);//数据指针清零
  20   1          Lcd1602_Write_Command(0x0c);//开显示,显示光标,光标闪烁
  21   1          Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
  22   1         
  23   1      }    
  24          
  25          
  26          //===========================
  27          //写一个命令字节
  28          //===========================
  29          void Lcd1602_Write_Command(uchar Command_Code)
  30          {
  31   1          P4=0x00;                       //RS=0,RW=0
  32   1          P5=Command_Code;
  33   1          delay(10,1);
  34   1          P4 |=0x04;                      //EN=1
  35   1          delay(10,10);
  36   1          P4 &=~0x04;                    //EN=0            
  37   1                      
  38   1      }
  39          //===========================
  40          //写一个字节数据
  41          //===========================
  42          
  43          void Lcd1602_Write_Data(uchar row,uchar column,uchar Data)
  44          {
  45   1      
  46   1          if (row==2) 
  47   1              column |= 0x40; //当要显示第二行时地址码+0x40;
  48   1              column |= 0x80; // 算出指令码
  49   1      
  50   1          Lcd1602_Write_Command(column); //这里不检测忙信号,发送地址码
  51   1      
  52   1          P4=0x01;                     //RS=1,RW=0
  53   1          P5=Data;    
  54   1          delay(10,10);
  55   1          P4 |=0x04;                   //EN=1
C51 COMPILER V8.02   LCD                                                                   05/18/2002 13:46:58 PAGE 2   

  56   1          delay(10,10);
  57   1          P4 &=~0x04;                  //EN=0
  58   1      
  59   1      }
  60          
  61          
  62          //===========================================
  63          //写字符串到LCD,如果一行写不下,则写到下一行,
  64          //如果一屏写不下,则只写一屏
  65          //row的值从1-2,column的值从1-16,不进行值的
  66          //有效性检查,有调用者自己保证
  67          //===========================================
  68          
  69          void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer)
  70          {
  71   1          uchar i=0;
  72   1             
  73   1          while(dis_buffer[i]!='\0')
  74   1              {
  75   2                  Lcd1602_Write_Data(row,column,dis_buffer[i]);
  76   2                  i++;column++;
  77   2                  if(column==40)
  78   2                  {               
  79   3                      column=1;
  80   3                      row++;
  81   3                      if(row==2)
  82   3                          return;
  83   3                      else
  84   3                      {
  85   4                        switch(row)//这种结构保持以后升级到多行显示液晶
  86   4                        {
  87   5                          case 1:Lcd1602_Write_Command(0x80);break;
  88   5                          case 2:Lcd1602_Write_Command(0x80+0x40);break;//重新调整数据地址指针
  89   5                          default:break;
  90   5                        }
  91   4                      }
  92   3                  }
  93   2              } 
  94   1      }                       
  95             
  96          void delay(uint t1,t2)
  97          {   
  98   1         long int i,j;               //为什么不能改为uint ,一改即有问题  
  99   1         for(i=1;i<t1;i++)
 100   1            for(j=1;j<t2;j++);
 101   1          
 102   1      }
 103           
 104           


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