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

📄 lcd1062.lst

📁 C语言单片机编程的代码及教程文献
💻 LST
字号:
C51 COMPILER V7.20   LCD1062                                                               08/23/2007 23:01:48 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCD1062
OBJECT MODULE PLACED IN lcd1062.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1062.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************************
   2             本头文件描述了用89S52/89S51控制液晶显示器1602的一些连接情况,并而编写了些控制
   3          液晶显示的函数.
   4          ******************************************************************************/
   5          
   6          #include<REG51.H>
   7          #include"lcd1062.h"
   8          /***********************************void wait()*****************************
   9              该函数的作用是对LCD进行检测,看LCD是否处于忙的状态.当bflag=1时表示忙,
  10          此时不可以向LCD进行读写操作.而当bflag=0时,表示可以向它读写数据.
  11          ****************************************************************************/
  12           void Wait()
  13           {
  14   1         DATA=0xff;
  15   1         RW=1; RS=0;                   //设LCD为读控制字的状态
  16   1         do
  17   1          {E=0;E=1;}while(bflag==1);
  18   1       }
  19          
  20          
  21          
  22          /**********************************void Wrcom()*******************************
  23                该函数的作用是向LCD写入控制字.
  24          ******************************************************************************/
  25           void Wrcom(uchar com)
  26            {
  27   1          DATA=com;
  28   1          RW=0; RS=0;                    //设LCD为写控制字的状态
  29   1          E=0; E=1;    
  30   1          Wait();
  31   1        }
  32          
  33          
  34          /**************************************void Disdata()*******************************
  35              该函数的作用是向LCD写入数据并显示出来.
  36          ***********************************************************************************/
  37           void Disdata(uchar dat)
  38            {
  39   1           DATA=dat;
  40   1           RW=0; RS=1;                  //设LCD为写数据的状态
  41   1           E=0; E=1;                    
  42   1           Wait();
  43   1        }
  44          
  45          
  46          
  47          /***************************************void Init_LCD()*******************************
  48               该函数的作用是初始化LCD.
  49          *****************************************************************************************/
  50           void Init_LCD()
  51            {
  52   1           Wrcom(0x01);        //清屏
  53   1           Wrcom(0x0c);        //开显示,关光标及闪烁
  54   1           Wrcom(0x06);        //文字不动,光标右移
  55   1           Wrcom(0x3c);        //8位,两行,5*10点阵
C51 COMPILER V7.20   LCD1062                                                               08/23/2007 23:01:48 PAGE 2   

  56   1        }
  57          
  58          
  59          /****************************************************************************
  60              该函数能定位光标到指定的位置,并选择是否要闪烁
  61          ****************************************************************************/  
  62           void Dis_cursor(uchar row,uchar line)
  63            {
  64   1          Wrcom(0x0d);        //开显示,闪烁、不开光标
  65   1              //Wrcom(0x0e);        //开显示、光标、不闪烁
  66   1              //Wrcom(0x0f);        //开显示、光标、闪烁
  67   1              if(row==1)
  68   1                {
  69   2                  Wrcom(0x80+line-1);
  70   2                }
  71   1              else 
  72   1                {
  73   2                  Wrcom(0xc0+line-1);
  74   2                }
  75   1              
  76   1        }
  77          
  78          
  79          /****************************************void Disdatastring()********************************
  80              该函数的作用是向LCD写入一串数据,并把数据串显示出来. 先行再列,列不能为0,行下边的为0
  81          ********************************************************************************************/
  82           void Dis_string(uchar line,uchar row,uchar dat[])
  83            {
  84   1           uchar com,*s;
  85   1           s=dat;
  86   1      
  87   1           if(line==1)                 
  88   1             {
  89   2                    com=0x80+row-1;           //把数据写到第一行
  90   2                Wrcom(com);
  91   2      
  92   2                while(*s!='@'&&com<=0x8f)    //写入数据串
  93   2                       {
  94   3                                  Disdata(*s);
  95   3                      com++;
  96   3                          s++;
  97   3                       }
  98   2             }
  99   1      
 100   1           else 
 101   1             {com=0xc0+row-1;             //把数据写入第二行
 102   2                Wrcom(com);
 103   2      
 104   2                while(*s!='@'&&com<=0xcf)      //写入数据串
 105   2                       {
 106   3                                 Disdata(*s);
 107   3                          com++;
 108   3                          s++;
 109   3                        }
 110   2              }
 111   1       }
 112          
 113          
 114          
 115          
 116          
 117          /****************************************void Disdatastring()********************************
C51 COMPILER V7.20   LCD1062                                                               08/23/2007 23:01:48 PAGE 3   

 118              该函数的作用是向LCD写入一个浮点数,并把数据显示出来.
 119          ********************************************************************************************/
 120           void Dis_float(uchar line,uchar row,float dat)
 121            {
 122   1           uchar dat1[9],i=0,com;
 123   1           uint temp1;
 124   1           uint temp2;
 125   1      
 126   1           if(dat>0) 
 127   1             {
 128   2                    dat1[0]='+';
 129   2                temp2=((ulong)(dat*1000))%1000;
 130   2                temp1=(uint)dat;
 131   2             }
 132   1      
 133   1           else 
 134   1             {
 135   2                    dat1[0]='-';
 136   2                temp2=(ulong)(-dat*1000)%1000;
 137   2                temp1=(uint)(-dat);
 138   2             }
 139   1      
 140   1           dat1[1]=(temp1/1000)%10+'0';
 141   1           dat1[2]=(temp1/100)%10+'0';
 142   1           dat1[3]=(temp1/10)%10+'0';
 143   1           dat1[4]=temp1%10+'0';
 144   1           dat1[5]='.';
 145   1           dat1[6]=(temp2/100)%10+'0';
 146   1           dat1[7]=(temp2/10)%10+'0';
 147   1           dat1[8]=temp2%10+'0';
 148   1      
 149   1           if(line==1)                 
 150   1            {
 151   2               com=0x80+row-1;           //把数据写到第一行
 152   2               Wrcom(com);
 153   2      
 154   2               while(i<=8&&com<=0x8f)    //写入数据串
 155   2                     {
 156   3                        Disdata(dat1[i]);
 157   3                    com++;
 158   3                        i++;
 159   3                     }
 160   2             }
 161   1      
 162   1           else 
 163   1            {
 164   2               com=0xc0+row-1;             //把数据写入第二行
 165   2               Wrcom(com);
 166   2      
 167   2               while(i<=8&&com<=0xcf)      //写入数据串
 168   2                     {
 169   3                        Disdata(dat1[i]);
 170   3                        com++;
 171   3                        i++;
 172   3                     }
 173   2            }
 174   1      
 175   1        }
 176          
 177          
 178          
 179          /****************************************void Disdatastring()********************************
C51 COMPILER V7.20   LCD1062                                                               08/23/2007 23:01:48 PAGE 4   

 180              该函数的作用是向LCD写入一个8位的整数,并把数据显示出来.
 181          ********************************************************************************************/
 182            void Dis_char(uchar line,uchar row,char dat)
 183             {
 184   1            uchar dat1[4],i=0,com;
 185   1            if(dat&0x80)
 186   1              {
 187   2                 dat1[0]='-';
 188   2                 dat=~dat+1;
 189   2              }
 190   1            else 
 191   1                  dat1[0]='+';
 192   1      
 193   1            dat1[1]=dat/100+'0';
 194   1            dat1[2]=(dat/10)%10+'0';
 195   1            dat1[3]=dat%10+'0';
 196   1      
 197   1            if(line==1)                 
 198   1             {
 199   2                com=0x80+row-1;           //把数据写到第一行
 200   2                Wrcom(com);
 201   2      
 202   2                while(i<=3&&com<=0x8f)    //写入数据串
 203   2                      {
 204   3                         Disdata(dat1[i]);
 205   3                     com++;
 206   3                         i++;
 207   3                      }
 208   2             }
 209   1      
 210   1            else 
 211   1             {
 212   2                com=0xc0+row-1;             //把数据写入第二行
 213   2                Wrcom(com);
 214   2      
 215   2                while(i<=3&&com<=0xcf)      //写入数据串
 216   2                      {
 217   3                         Disdata(dat1[i]);
 218   3                         com++;
 219   3                         i++;
 220   3                      }
 221   2              }
 222   1      
 223   1         }
 224          
 225          
 226          /****************************************void Disdatastring()********************************
 227              该函数的作用是向LCD写入一个16位整数,并把数据显示出来.
 228          ********************************************************************************************/
 229          void Dis_int(uchar line,uchar row,int dat)
 230            {
 231   1           uchar dat1[6],i=0,com;
 232   1           if(dat&0x8000)
 233   1            {
 234   2               dat1[0]='-';
 235   2               dat=~dat+1;
 236   2            }
 237   1           else 
 238   1                 dat1[0]='+';
 239   1      
 240   1           dat1[1]=dat/10000+'0';
 241   1           dat1[2]=(dat/1000)%10+'0';
C51 COMPILER V7.20   LCD1062                                                               08/23/2007 23:01:48 PAGE 5   

 242   1           dat1[3]=(dat/100)%10+'0';
 243   1           dat1[4]=(dat/10)%10+'0';
 244   1           dat1[5]=dat%10+'0';
 245   1      
 246   1           if(line==1)                 
 247   1            {
 248   2               com=0x80+row-1;           //把数据写到第一行
 249   2               Wrcom(com);
 250   2      
 251   2               while(i<=5&&com<=0x8f)    //写入数据串
 252   2                     {
 253   3                        Disdata(dat1[i]);
 254   3                    com++;
 255   3                        i++;
 256   3                     }
 257   2            }
 258   1      
 259   1           else 
 260   1            {
 261   2               com=0xc0+row-1;             //把数据写入第二行
 262   2               Wrcom(com);
 263   2      
 264   2               while(i<=5&&com<=0xcf)      //写入数据串
 265   2                     {
 266   3                        Disdata(dat1[i]);
 267   3                        com++;
 268   3                        i++;
 269   3                     }
 270   2            }
 271   1      
 272   1         }              


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