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

📄 progm.lst

📁 这是测量接触电阻的程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   PROGM                                                                 03/05/2009 08:55:15 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PROGM
OBJECT MODULE PLACED IN E:\设计与~1\科发回路\通用接~1\PROGM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\设计与~1\科发回路\通用接~1\PROGM.C DB SB OE

stmt level    source

   1          #include        "mdefine.h"
   2          #include        "IIC_Soft.h"
   3          #include        "Key_Dispose.h"
   4          #include        "Ziku.h"
   5          #include        "Lcd12864.h"
   6          //#include      "PCF8563.h"
   7          #include        "Ad2543.h"
   8          //#include      "Tlc5615.h"
   9          #include        "24c64.h"
  10          
  11          const float code  RB = 0.001 ;//标准电阻为100A/100mV,即1000uΩ
  12          const float code VB = 20.000 ;    //电流回路放大器的电阻R20=2.600K
  13          float idata  SHUAIJIAN = 1.00; //信号衰减倍数,此处不衰减
  14          float idata   DIANLIUXIAO = 1.000;//电流校正因子
  15          float idata   DIANZUXIAO3=1.000;//400uΩ以下修正,即VX=100时
  16          float idata   DIANZUXIAO2=1.000;//4000uΩ以下大于400uΩ修正,即VX=10时
  17          float idata   DIANZUXIAO1=1.000;//40000uΩ以下大于4000uΩ修正,即VX=1时
  18          float idata   xiao=1.000;//程序调用到的修正系数
  19          uchar xiaozhen[20];//读入的系数值
  20          
  21          uchar idata  UiBuffer[8]={0,0,0,0,0,0,0,0};//电流电阻显示缓冲区,前4位电流
  22          float idata   VX = 1.0;       //电压初始档位,放大倍数=1
  23          ulong   idata  iZHENGSHU=0;
  24          ulong   idata  iXIAOSHU=0;   /*保存浮点数的整数和小数*/
  25          uchar idata  dian_bit=0;//结果共4位显示,小数点位置=0无小数点,=1小数点后1位,=2后两位,=3后三位
  26          
  27          uchar mod_10000( uint* ulTmp)   /*分离出万位数并返回,保留余下的部分*/
  28          {
  29   1                      uint ult1;
  30   1                      ult1 = *ulTmp / 10000;
  31   1                      *ulTmp = *ulTmp % 10000;
  32   1                      return ult1;
  33   1      }
  34          
  35          
  36          uchar mod_1000( uint* ulTmp)   /*分离出千位数并返回,保留余下的部分*/
  37          {
  38   1                      uint ult1;
  39   1                      ult1 = *ulTmp / 1000;
  40   1                      *ulTmp = *ulTmp % 1000;
  41   1                      return ult1;
  42   1      }
  43          
  44          uchar mod_100( uint* ulTmp)   /*分离出百位数并返回,保留余下的部分*/
  45          {
  46   1                      uint ult1;
  47   1                      ult1 = *ulTmp / 100;
  48   1                      *ulTmp = *ulTmp % 100;
  49   1                      return ult1;
  50   1      }
  51          
  52          uchar mod_10( uint* ulTmp)     /*分离出十位数并返回,保留余下的部分*/
  53          {
  54   1                      uint ult1;
  55   1                      ult1 = *ulTmp / 10;
C51 COMPILER V7.06   PROGM                                                                 03/05/2009 08:55:15 PAGE 2   

  56   1                      *ulTmp = *ulTmp % 10;
  57   1                      return ult1;
  58   1      }
  59          
  60          void div_u_shuzi(uint ucTmp)            //分离电压数字
  61          {
  62   1              uint uctmp;
  63   1              uctmp           =       ucTmp;
  64   1              UiBuffer[0]     =       mod_1000(&uctmp);
  65   1              UiBuffer[1]     =       mod_100(&uctmp);
  66   1              UiBuffer[2]     =       mod_10(&uctmp);
  67   1              UiBuffer[3]     =       uctmp;
  68   1      }
  69          
  70          void div_i_shuzi(uint ucTmp)            //分离电流数字
  71          {
  72   1              uint uctmp;
  73   1              uctmp           =       ucTmp;
  74   1              UiBuffer[0]     =       mod_1000(&uctmp);
  75   1              UiBuffer[1]     =       mod_100(&uctmp);
  76   1              UiBuffer[2]     =       mod_10(&uctmp);
  77   1              UiBuffer[3]     =       uctmp;
  78   1      }
  79          
  80          void Shipin_U_dispose()        //处理电压读数 显示
  81          {
  82   1              uint uiDianya;
  83   1              uiDianya        =       (uint)(Read2543(1) * 2.5/4096*1000);//读出的值放大10倍
  84   1              uiDianya        =       (uint)(Read2543(1) * 2.5/4096*1000);
  85   1              div_u_shuzi(uiDianya);
  86   1      }
  87          
  88          void Shipin_I_dispose()        //处理电流读数 显示
  89          {
  90   1         uint  uiDianliu;
  91   1         uiDianliu    =       (uint)(Read2543(0) *2.5/4096*1000*10);//读出的值放大10倍
  92   1         uiDianliu    =       (uint)(Read2543(0) *2.5/4096*1000*10);
  93   1         div_i_shuzi(uiDianliu);
  94   1      }
  95          
  96          void diyiping()
  97          {
  98   1              df(0,28,13,0);
  99   1              df(0,36,14,0);
 100   1              df(0,44,16,0);
 101   1              df(0,52,6,0);
 102   1              df(0,60,1,0);
 103   1              df(0,68,0,0);
 104   1              df(0,76,4,0);
 105   1              dh(0,84,4,0);
 106   1      
 107   1              dh(3,8,5,0);
 108   1              dh(3,24,6,0);
 109   1              dh(3,40,7,0);
 110   1              dh(3,56,8,0);
 111   1              dh(3,72,9,0);
 112   1              dh(3,88,10,0);
 113   1              dh(3,104,11,0);
 114   1      
 115   1              dh(6,8,12,0);
 116   1              dh(6,24,13,0);
 117   1              dh(6,40,14,0);
C51 COMPILER V7.06   PROGM                                                                 03/05/2009 08:55:15 PAGE 3   

 118   1              dh(6,56,15,0);
 119   1              dh(6,72,16,0);
 120   1              dh(6,88,17,0);
 121   1              dh(6,104,18,0);
 122   1      
 123   1      }
 124          
 125          void dierping()
 126          {
 127   1              dh(0,0,9,0);
 128   1              dh(0,16,10,0);
 129   1              dh(0,32,17,0);
 130   1              dh(0,48,20,0);
 131   1              df(0,64,17,0);
 132   1      
 133   1              xs12(2,40,0,0);
 134   1              xs12(2,52,1,0);
 135   1              xs12(2,64,1,0);
 136   1              xs12(2,76,2,0);
 137   1      
 138   1              dh(6,24,25,0);//请
 139   1              dh(6,40,26,0);//按
 140   1              dh(6,56,9,0);//测
 141   1              dh(6,72,10,0);//试
 142   1              dh(6,88,27,0);//键
 143   1      
 144   1      }
 145          
 146          void disanping()
 147          {
 148   1              dh(0,0,21,0);//显示正在测试中
 149   1              dh(0,16,22,0);
 150   1              dh(0,32,9,0);
 151   1              dh(0,48,10,0);
 152   1              dh(0,64,28,0);
 153   1      
 154   1              dh(2,0,25,0);//请稍侯
 155   1              dh(2,16,29,0);
 156   1              dh(2,32,30,0);
 157   1      
 158   1              dh(2,48,31,0);
 159   1              dh(2,64,31,0);
 160   1              dh(2,80,31,0);
 161   1              dh(2,96,31,0);
 162   1              dh(2,112,31,0);
 163   1      }
 164          
 165          void xsdianzu(uchar flag)//根据小数点的位置显示结果
 166          {
 167   1              df(flag,34,19,0);//R=xxx.xmΩ
 168   1              df(flag,42,20,0);
 169   1              df(flag,86,15,0);
 170   1              dh(flag,94,19,0);
 171   1              switch(dian_bit)
 172   1                {
 173   2                      case 0:
 174   2                                      df(flag,50,UiBuffer[4],0);
 175   2                                              df(flag,58,UiBuffer[5],0);
 176   2                                              df(flag,66,UiBuffer[6],0);
 177   2                                              df(flag,74,UiBuffer[7],0);
 178   2                                              break;
 179   2                      case 1:
C51 COMPILER V7.06   PROGM                                                                 03/05/2009 08:55:15 PAGE 4   

 180   2                                      df(flag,50,UiBuffer[4],0);
 181   2                                              df(flag,58,UiBuffer[5],0);
 182   2                                              df(flag,66,UiBuffer[6],0);
 183   2                                              df(flag,74,21,0);
 184   2                                              df(flag,78,UiBuffer[7],0);
 185   2                                              break;
 186   2                  case 2:
 187   2                        df(flag,50,UiBuffer[4],0);
 188   2                                              df(flag,58,UiBuffer[5],0);
 189   2                                              df(flag,66,21,0);
 190   2                                              df(flag,70,UiBuffer[6],0);
 191   2                                              df(flag,78,UiBuffer[7],0);
 192   2                                              break;
 193   2                              case 3:
 194   2                                df(flag,50,UiBuffer[4],0);
 195   2                                df(flag,58,21,0);
 196   2                                              df(flag,62,UiBuffer[5],0);
 197   2                                              df(flag,70,UiBuffer[6],0);
 198   2                                              df(flag,78,UiBuffer[7],0);
 199   2                                              break;
 200   2                }
 201   1      }
 202          
 203          void showdianliu(uchar flag)//显示电流
 204          {
 205   1              df(flag,34,18,0);//I=xxx.xA
 206   1              df(flag,42,20,0);
 207   1              df(flag,50,UiBuffer[0],0);
 208   1              df(flag,58,UiBuffer[1],0);

⌨️ 快捷键说明

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