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

📄 lcd_1602.lst

📁 主要在C8051F020的平台上实现对运放UA741的失调电压、失调电流
💻 LST
字号:
C51 COMPILER V8.02   LCD_1602                                                              04/06/2009 11:38:16 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD_1602
OBJECT MODULE PLACED IN LCD_1602.OBJ
COMPILER INVOKED BY: D:\单片机\C51\BIN\C51.EXE LCD_1602.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<c8051f020.h>
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          
   5          //***************程序说明*******************
   6          // 对字符型液晶显示器定义三根地址线:
   7          // sbit RS=P4^0;sbit RW=P4^1;sbit EN=P4^2;               
   8          // 由于P4口在f020单片机上不可位寻址,故以下
   9          // 程序均采用对P4口赋值的形式给三根控制位赋值
  10          //*******************************************
  11          
  12          //*******************************************
  13          // 该部分主要是对要用到的函数进行申明
  14          // 后面将具体的对相关函数进行定义,可选择性的选
  15          // 择相关函数
  16          //*******************************************
  17          void Lcd1602_Initial( );
  18          void Lcd1602_Write_Command(uchar Command_Code);
  19          void Lcd1602_Write_Data(uchar row,uchar column,uchar Data);
  20          void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer);
  21          //void Lcd1602_Clear_Char(uchar row,uchar column);
  22          //void Lcd1602_Clear_Line(uchar line);
  23          //void Lcd1602_Clear_All( );   //这三个函数没用
  24          
  25          void Lcd_delay(uint t1,t2);
  26          //void Lcd_delay(uint t1,uint t2); 可以写成上面这种方式
  27          
  28          //**********************************************
  29          // 功能说明:对字符型液晶显示器LCD1602进行初始化
  30          // 输入变量:无 ; 全局变量:无
  31          // 返回值: 无
  32          // 调用函数:Lcd1602_Write_Command()
  33          //**********************************************
  34          void Lcd1602_Initial( )
  35          {  
  36   1          Lcd1602_Write_Command(0x38);//显示模式设置:0011(数据位8位),1(双行显示)0(5*7点阵)**
  37   1          Lcd1602_Write_Command(0x0c);//显示开关设置:0000,11(开显示),1(开光标),1(字符闪烁)
  38   1          Lcd1602_Write_Command(0x01);//清屏显示设置:显示清屏。
  39   1          Lcd1602_Write_Command(0x06);//输入方式设置:0000,011(光标自左向右移)0(整屏不移动)。
  40   1              Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
  41   1          Lcd1602_Write_Command(0x02);//光标复位命令:数据指针清零
  42   1          Lcd1602_Write_Command(0x0c);//开显示,显示光标,光标闪烁
  43   1          Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
  44   1      } 
  45          
  46          //**************************************************
  47          // 功能说明:对字符型液晶显示器LCD1602写入控制字
  48          // 输入变量:uchar Command_Code ;全局变量:无
  49          // 返回值 :无
  50          // 调用函数 :无 
  51          //************************************************** 
  52          void Lcd1602_Write_Command(uchar Command_Code)
  53          {
  54   1      
  55   1          P4=0x00;                             //RS=0;RW=0;EN=0;开始写入指令
C51 COMPILER V8.02   LCD_1602                                                              04/06/2009 11:38:16 PAGE 2   

  56   1          P5=Command_Code;             //将待写入指令赋给P5口
  57   1          Lcd_delay(10,1);
  58   1          P4=0x04;                 //NE=1;开启使能      
  59   1          Lcd_delay(10,10);
  60   1          P4=0x00;                 //EN=0;当EN由高向底转变时,LCD接收数据或指令       
  61   1                      
  62   1      }
  63          
  64          //**************************************************
  65          // 功能说明:对字符型液晶显示器LCD1602写入数据
  66          // 输入变量:uchar row,uchar column,uchar Data 
  67          // 其中row的取值范围为1~2,column的取值范围为0~15
  68          // 全局变量 :无   ;返回值 : 无
  69          // 调用函数 :Lcd1602_Write_Command()
  70          //**************************************************
  71          void Lcd1602_Write_Data(uchar row,uchar column,uchar Data)
  72          {
  73   1      
  74   1          if (row==2) 
  75   1              column |= 0x40;            //当要显示第二行时,相应的地址码为当前列数+0x40;
  76   1              column |= 0x80;            //算出指令码即让DDRAM指针指向相应的位置
  77   1      
  78   1          Lcd1602_Write_Command(column); //这里不检测忙信号,发送地址码
  79   1      
  80   1          P4=0x01;                                       //RS=1;RW=0;EN=0;开始写入数据
  81   1          P5=Data;                                       
  82   1          Lcd_delay(10,10);
  83   1          P4=0x05;                       //EN=1
  84   1          Lcd_delay(10,10);
  85   1          P4=0x01;                       //EN=0
  86   1      
  87   1      }
  88          
  89          //***********************************************************
  90          // 功能说明:写字符串到LCD,如果一行写不下,则写到下一行
  91          //           如果一屏写不下,则只写一屏;
  92          // 输入变量:uchar row,uchar column,uchar *dis_buffer
  93          // 全局变量 :无  ;返回值 : 无
  94          // 调用函数 :Lcd1602_Write_Data();Lcd1602_Write_Command
  95          //***********************************************************
  96          void Lcd1602_Write_String(uchar row,uchar column,uchar *dis_buffer)
  97          {
  98   1              uchar i=0;
  99   1             
 100   1          while(dis_buffer[i]!='\0')
 101   1              {
 102   2                  Lcd1602_Write_Data(row,column,dis_buffer[i]);
 103   2                  i++;column++;
 104   2                  if(column==40)
 105   2                  {               
 106   3                      column=1;
 107   3                      row++;
 108   3                      if(row==2)
 109   3                          return;
 110   3                      else
 111   3                      {
 112   4                        switch(row)                                     //这种结构保持以后升级到多行显示液晶
 113   4                        {
 114   5                          case 1:Lcd1602_Write_Command(0x80);break;
 115   5                          case 2:Lcd1602_Write_Command(0x80+0x40);break;//重新调整数据地址指针
 116   5                          default:break;
 117   5                        }
C51 COMPILER V8.02   LCD_1602                                                              04/06/2009 11:38:16 PAGE 3   

 118   4                      }
 119   3                  }
 120   2              } 
 121   1      }   
 122          
 123          //************************************************************
 124          // 功能说明:清除指定的位置的字符,光标返回最左边第一个字符位置
 125          // 输入变量:uchar row,uchar column ;全局变量:无
 126          // 返回值 : 无
 127          // 调用函数 : Lcd1602_Write_String()
 128          //************************************************************
 129          /*void Lcd1602_Clear_Char(uchar row,uchar column)
 130          {
 131              Lcd1602_Write_String(row,column," ");
 132          }*/ 
 133          
 134          //*************************************************************
 135          // 功能说明:清除指定的行,光标返回最左边第一个字符位置
 136          // 输入变量:uchar line ; 全局变量 : 无
 137          // 返回值  : 无
 138          // 调用函数 :Lcd1602_Write_String();Lcd1602_Write_Command()
 139          //*************************************************************
 140          /*void Lcd1602_Clear_Line(uchar line)
 141          {
 142              Lcd1602_Write_String(line,0,"                ");
 143              switch(line)                                           //这种结构保持以后升级到多行显示液晶
 144                  {
 145                     case 1:Lcd1602_Write_Command(0x80);break;       //将数据地址指针定位到第一行
 146                     case 2:Lcd1602_Write_Command(0x80+0x40);break;  //将数据地址指针定位到第二行
 147                     default: break;
 148                  }   
 149          }  
 150          */
 151          //**************************************************************
 152          //      功能说明:清屏,并将DDRAM指针指向第一行第一列
 153          //      输入变量:无 ;全局变量: 无 ;返回值:无
 154          //  调用函数:Lcd1602_Write_Command()
 155          //***************************************************************
 156          /*void Lcd1602_Clear_All( )
 157          {
 158             Lcd1602_Write_Command(0x01);//显示清屏。
 159             Lcd1602_Write_Command(0x80);//将数据指针设置到第一行的第一个字符。
 160          }
 161          */ 
 162          
 163          //**************************************************************
 164          //      功能说明:延时
 165          //      输入变量:uint t1,t2    全局变量:无   ;返回值:无
 166          //      调用函数:无
 167          //*************************************************************
 168          
 169          //void Lcd_delay(uint t1,uint t2)可以写成下面这种方式
 170          void Lcd_delay(uint t1,t2)
 171          {   
 172   1              uint i,j;
 173   1              for(i=1;i<t1;i++)
 174   1          for(j=1;j<t2;j++);
 175   1                    
 176   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   LCD_1602                                                              04/06/2009 11:38:16 PAGE 4   

   CODE SIZE        =    222    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   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 + -