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

📄 lcdparse.lst

📁 个人学习参考!禁止使用到产品上! 任何人不得公开发布!
💻 LST
字号:
C51 COMPILER V7.10   LCDPARSE                                                              02/03/2005 10:45:40 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE LCDPARSE
OBJECT MODULE PLACED IN lcdparse.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcdparse.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002
                    -\;F:\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND

line level    source

   1          /*========================================*/
   2          /*系统名称:DDSF-CECG-JiangSu             */
   3          /*函数名称:液晶显示                          */
   4          /*程序编写:步爱军                                    */
   5          /*开始日期:2005-01-01                            */
   6          /*完成日期:                                          */
   7          /*修改记录:                                          */
   8          /*软件版本:DDSF-CECG-002                 */
   9          /*版本说明:用户数据保存在外部            */
  10          /*外部器件:LM75、AT24C02、HT1621、LPC932 */
  11          /*          R8025、ADE7755                */
  12          /*========================================*/
  13          //液晶显示方式选择
  14          //利用到的重要数据
  15          //显示停顿时间---LcdShowTime=IicByteRead(0xa0,0x62);
  16          //历史电量显示标志---LcdShowBit[1]=IicByteRead(0xa0,0x63);
  17          //当前电量显示标志---LcdShowBit[0]=IicByteRead(0xa0,0x64)&0x80;
  18          #include <REG932.H>
  19          #include <define.h>
  20          #include <Stdio.h>
  21          #include <Intrins.h>
  22          
  23          void LcdFull(unsigned char DataOne,unsigned char DataTwo,unsigned char DataThree,unsigned char DataFour)
  24          {
  25   1          unsigned char data i,j,k;
  26   1              unsigned char idata DataBufA[4],DataBufB[4];
  27   1              unsigned char code      Digit[12]={     
  28   1                                                              0xBE,   //0
  29   1                                                              0x06,   //1
  30   1                                                              0x7C,   //2
  31   1                                                              0x5E,   //3
  32   1                                                              0xC6,   //4
  33   1                                                              0xDA,   //5
  34   1                                                              0xFA,   //6
  35   1                                                              0x0E,   //7
  36   1                                                              0xFE,   //8
  37   1                                                              0xDE,   //9
  38   1                                                              0xf8,   //a--E
  39   1                                                              0x40,   //b--_
  40   1                                                        };   
  41   1         DataBufA[0]=DataOne;
  42   1         DataBufA[1]=DataTwo;
  43   1         DataBufA[2]=DataThree;
  44   1         DataBufA[3]=DataFour;
  45   1         
  46   1         if(BataMoveFg)
  47   1         {
  48   2           for(i=0;i<4;i++)//
  49   2           {
  50   3             k=DataBufA[i];                   
  51   3             j=DataBufA[i+1];                 
  52   3             k=k&0x0f;                                                
  53   3             k=k<<4;                                                  
  54   3             j=j>>4;                                  
C51 COMPILER V7.10   LCDPARSE                                                              02/03/2005 10:45:40 PAGE 2   

  55   3             j=j&0x0f;        
  56   3             DataBufB[i]=k|j;
  57   3           }
  58   2         }
  59   1         for(i=0;i<3;i++)
  60   1         {
  61   2            k=DataBufB[i] & 0xf0;
  62   2            k=k>>4;
  63   2            LcdShowBuf[i+i]=Digit[k];
  64   2            k=DataBufB[i] & 0x0f;
  65   2            LcdShowBuf[i+i+1]=Digit[k];
  66   2         }
  67   1      
  68   1      }
  69          void LcdDisplayData(unsigned char DataOne,unsigned char DataTwo,unsigned char DataThree,unsigned char Data
             -Four,unsigned char DataFive,unsigned char DataSix,unsigned char DataSeven)
  70          {
  71   1              unsigned char data i;
  72   1      
  73   1              LcdShowBuf[6]=DataFive;
  74   1          LcdShowBuf[7]=DataSix;
  75   1      
  76   1          switch(DataSeven)
  77   1          {
  78   2             case 0x00 : //没有小数点的显示/                  
  79   2                         LcdFull(DataOne,DataTwo,DataThree,DataFour);                  
  80   2             break;
  81   2             case 0x21 : //第2位带小数点的显示/                  
  82   2                         LcdFull(DataOne,DataTwo,DataThree,DataFour);  
  83   2                         LcdShowBuf[1]=LcdShowBuf[1]|0x01;
  84   2             break;
  85   2             case 0x41 : //第4位带小数点的显示/                  
  86   2                         LcdFull(DataOne,DataTwo,DataThree,DataFour);  
  87   2                         LcdShowBuf[1]=LcdShowBuf[1]|0x01;
  88   2                         LcdShowBuf[3]=LcdShowBuf[3]|0x01;
  89   2             break;
  90   2             case 0x51 : //第5位带小数点的显示/                  
  91   2                         LcdFull(DataOne,DataTwo,DataThree,DataFour);  
  92   2                         LcdShowBuf[4]=LcdShowBuf[4]|0x01;
  93   2             break;
  94   2         }
  95   1         if(ComFg)
  96   1         {
  97   2                      LcdShowBuf[7]=LcdShowBuf[7]|0x10;
  98   2         }
  99   1         else
 100   1         {
 101   2              LcdShowBuf[7]=LcdShowBuf[7]&0xef;
 102   2         }
 103   1         if(ReverseFgToLcd)
 104   1         {
 105   2              LcdShowBuf[7]=LcdShowBuf[7]|0x40;
 106   2         }
 107   1         else
 108   1         {
 109   2              LcdShowBuf[7]=LcdShowBuf[7]&0xbf;
 110   2         }    
 111   1         LcdStart();
 112   1         LcdSendId(0xa0);               //写数据操作
 113   1         LcdSendAddress(0x00);
 114   1         for(i=0;i<8;i++)
 115   1         {
C51 COMPILER V7.10   LCDPARSE                                                              02/03/2005 10:45:40 PAGE 3   

 116   2              LcdSendByte(LcdShowBuf[i]);
 117   2                      Delay(LcdDelay);
 118   2         }
 119   1         LcdStop();
 120   1      }
 121          void LcdParse(void)
 122          {
 123   1          unsigned char data i,j,k,l,m;
 124   1              unsigned char data databuf[4];
 125   1              if(LcdTimeFg)
 126   1          {
 127   2              //LcdTimeFg=0;
 128   2              m=LcdShowBit[0]&0x80;
 129   2              switch(LcdRunData)
 130   2              {
 131   3                  case 0x01 ://第01种显示方式数据提取到显示缓冲区---当前日期/                   
 132   3                             if(LcdShowBit[0]&0x01)
 133   3                             {
 134   4                                i=IicByteRead(0x64,0x40) & 0x3f;
 135   4                                j=IicByteRead(0x64,0x50) & 0x1f;
 136   4                                k=IicByteRead(0x64,0x60);
 137   4                                l=0;
 138   4                                BataMoveFg=0;//不执行移位操作 
 139   4                                LcdDisplayData(i,j,k,l,0x80,0x00,0x41);
 140   4                             }
 141   3                             else
 142   3                             {
 143   4                                LcdRunData=0x02;
 144   4                             }
 145   3                    break;       
 146   3                    case 0x02 ://第02种显示方式数据提取到显示缓冲区---当前时间/
 147   3                               if(LcdShowBit[0]&0x02)
 148   3                               {
 149   4                                   k=IicByteRead(0x64,0x00) & 0x7f;
 150   4                                   j=IicByteRead(0x64,0x10) & 0x7f;
 151   4                                   i=IicByteRead(0x64,0x20) & 0x3f;
 152   4                                   l=0; 
 153   4                                   BataMoveFg=0;//不执行移位操作
 154   4                                   LcdDisplayData(i,j,k,l,0x40,0x0c,0x00);
 155   4                               }
 156   3                               else
 157   3                               {
 158   4                                   LcdRunData=0x03;
 159   4                               }
 160   3                    break;                                       
 161   3                    case 0x03 ://第03种显示方式数据提取到显示缓冲区---当前总电量(整数加小数|整数)
 162   3                  
 163   3                                   //电表先显示整数---6位整数
 164   3                                   if(m)
 165   3                               {        
 166   4                                   BataMoveFg=0;//不执行移位操作 
 167   4                                                   for(i=0;i<4;i++)   
 168   4                                                       {
 169   5                                                              databuf[i]=HexToBcd(SumPulseData[i]);
 170   5                                                       }
 171   4                                   LcdDisplayData(databuf[2],databuf[1],databuf[0],0x00,0x08,0x82,0x00);
 172   4                               }
 173   3                               //电表显示整数加小数---5位整数加一位小数
 174   3                               else
 175   3                               {
 176   4                                   BataMoveFg=1;//执行移位操

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -