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

📄 mainprog.lst

📁 单体电容测试仪源码程序 可测电压、有A/D转换等。
💻 LST
📖 第 1 页 / 共 5 页
字号:
 814   1                              Channel_Votage(ADC_result_intr,2);      //单位毫伏
 815   1                              current=Votage/25;                              //当前电流
 816   1                              if ((disp_flag==1) && (flag_1s_1==1) ) {
 817   1                                      flag_1s_1=0;
 818   1                                      Channel_Votage(ADC_result_intr,2);      //单位毫伏
 819   1                                      print(" I:");
 820   1                                      disp_float_votage(current,2);           //显示当前电流
 821   1                                      ADC_filter(3);                                  //测量电压
 822   1                                      print(" V:");
 823   1                                      Channel_Votage(ADC_result_intr,3);      //单位毫伏
 824   1                                      disp_float_votage(Votage,2);            //显示当前电压
 825   1                              }
 826   1                      }
 827   1                      ADC_filter(3);          //测量电压
 828   1                      Channel_Votage(ADC_result_intr,3);      //单位毫伏
 829   1                      Curent_Votage=Votage;                   //当前电压
 830   1                      //每达到0.1伏打印一次
 831   1                      if(((Curent_Votage/100)<((Votage_record/100)-1))||(stop_flag==1)){      //打印电压
 832   1                              printh(0x0d);printh(0x0a);
 833   1                              print("1.2VF: ");
 834   1                              print("V:");
 835   1                              disp_float_votage(Curent_Votage,2);     //显示当前电压
 836   1                              print("I:");
 837   1                              disp_float_votage(current,2);                   //显示当前电流
 838   1                              print("Counter:");
 839   1                              disp_float_decimal(ADC_counter);        //显示累加次数
 840   1                              print("Q:");
 841   1                              disp_float_decimal(charge);                     //显示累加电荷量
 842   1                              print("ΔQ:");
 843   1                              disp_float_decimal(charge-charge_record);       //显示电荷量差
 844   1                              print("ΔC:");
 845   1                              Channel_Votage(charge-charge_record,2); //折合成电压,单位:毫伏
 846   1                              //disp_float_decimal(Votage);
 847   1                              Votage=Votage/25000;                                    //折合成电流(以25毫欧为采样电阻)
 848   1                              //disp_float_decimal(Votage);
 849   1                              Votage=Votage*10000/(Votage_record-Curent_Votage);      //折合成电容
 850   1                              disp_float_votage(Votage,2);                            //显示电容量
 851   1                              print("C:");
 852   1                              Channel_Votage(charge/1000,2);  //折合成电压,单位:毫伏
 853   1                              //disp_float_decimal(Votage);
 854   1                              Votage=Votage/25;                               //折合成电流(以25毫欧为采样电阻)
 855   1                              //disp_float_decimal(Votage);
 856   1                              Votage=Votage*10000/(start_votage-Curent_Votage);       //总电容
 857   1                              disp_float_votage(Votage,2);            //显示电容量
 858   1                              printh(0x0d);printh(0x0a);
 859   1      
 860   1                              charge_record=charge;                   //记录本次电荷累计数量
 861   1                              Votage_record=Curent_Votage;                    //记录当前电压
C51 COMPILER V8.06   MAINPROG                                                              02/13/2009 09:29:07 PAGE 15  

 862   1                      }
 863   1                      if (stop_flag==1)       {
 864   1                              stop_flag=0;
 865   1                              disp_flag=0;
 866   1                      }
 867   1                      break;
 868   1              //28V电容内阻测量开始(短路放电法)
 869   1              case resistance_measure_28V_start:
 870   1                      if (resistance_measure_1ms==1) {
 871   1                              resistance_measure_1ms=0;       
 872   1                              //测量起始电压
 873   1                              ADC_filter(1);          //测量电压
 874   1                              Channel_Votage(ADC_result_intr,1);      //单位毫伏
 875   1                              start_votage=Votage;                    //充电起始电压
 876   1                              //清累计电荷量
 877   1                              charge=0;                       //充电总电荷
 878   1                              charge_record=0;        //充电电荷记录
 879   1                              ADC_counter=0;          //累加次数
 880   1                              current=0;                      //电流
 881   1                              printh(0x0d);printh(0x0a);
 882   1                              Mesure_state=resistance_measure_28V_1;          //开始测量
 883   1                              Swich_Ctr=0;    //开始放电
 884   1                      }
 885   1                  break;
 886   1              //28V电容内阻测量_放电10毫秒后测量电流电流
 887   1              case resistance_measure_28V_1:
 888   1                      if (resistance_measure_1ms==1) {
 889   1                              resistance_measure_1ms=0;       
 890   1                              ADC_filter(2);                          //测量电流
 891   1                              current=ADC_result_intr;                        //停止放电前取样电阻电压AD
 892   1                              ADC_filter(1);                          //测量电压
 893   1                              Votage_record=ADC_result_intr;          //停止放电前电压AD
 894   1                              Swich_Ctr=1;                            //停止放电
 895   1                              Mesure_state=resistance_measure_28V_2;
 896   1                      }
 897   1                      break;
 898   1              //28V电容内阻测量_停止放电10毫秒后测量电压
 899   1              case resistance_measure_28V_2:
 900   1                      if (resistance_measure_1ms==1) {
 901   1                              resistance_measure_1ms=0;       
 902   1      
 903   1                              ADC_filter(1);                                  //测量电压
 904   1                              //计算停止放电后电压
 905   1                              Channel_Votage(ADC_result_intr,1);      //单位毫伏
 906   1                              Curent_Votage=Votage;                   //当前电压
 907   1                              //计算停止放电前电流
 908   1                              Channel_Votage(current,2);              //停止放电时,取样电阻毫伏值,单位:毫伏
 909   1                              current=1000*Votage/75;                         //停止放电时,取样电阻电流(毫安)
 910   1                              //计算停止放电前电压
 911   1                              Channel_Votage(Votage_record,1);//停止放电时,电容电压,单位毫伏
 912   1                              Votage_record=Votage;                   //放电停止前电压
 913   1                              //计算电阻
 914   1                              float_temp=1000*(Curent_Votage-Votage_record)/current;  //单位:毫欧
 915   1                              //显示
 916   1                              print("28VR: ");
 917   1                              print("Vs:");
 918   1                              disp_float_votage(start_votage,2);              //显示当前电压
 919   1                              print("V1:");
 920   1                              disp_float_votage(Votage_record,2);             //显示当前电压
 921   1                              print("V2:");
 922   1                              disp_float_votage(Curent_Votage,2);             //显示当前电压
 923   1                              print("ΔV:");
C51 COMPILER V8.06   MAINPROG                                                              02/13/2009 09:29:07 PAGE 16  

 924   1                              disp_float_votage(Curent_Votage-Votage_record,2);               //显示当前电压
 925   1                              print("I:");
 926   1                              disp_float_votage(current,1);           //显示当前电流
 927   1                              print("R:");
 928   1                              disp_float_votage(float_temp,3);        //显示电阻(单位:欧姆)
 929   1                              printh(0x0d);printh(0x0a);
 930   1                              Mesure_state=stop_state;
 931   1                      }
 932   1                      break;
 933   1              //28V电容内阻测量_停止
 934   1              case stop_state:
 935   1                      break;
 936   1              case voltage_current_disp_28V_start:  //电压电流曲线
 937   1                      break;
 938   1              case voltage_current_disp_28V:            //电压电流曲线
 939   1                      break;
 940   1              }
 941   1      */
 942   1      
 943   1      }
 944          
 945          //键盘扫描
 946          void JP_SM(void)
 947          {
 948   1              if (UP==0) {
 949   2                      if (Display_state==adc_display) {
 950   3                              Display_state=votage_display;
 951   3                              ClearDisplay();
 952   3                      }
 953   2              }
 954   1              if (DOWN==0) {
 955   2                      if (Display_state==votage_display){
 956   3                              Display_state=adc_display;
 957   3                              ClearDisplay(); 
 958   3                      }
 959   2                      if ((Display_state==charge_28V_display) || (Display_state==discharge_28V_display)){
 960   3                              P2=0;   //关闭充放电通道
 961   3                              DisplayChar(3,0x11);            //--表示停止充放电
 962   3                              DisplayChar(4,0x11);
 963   3                      }
 964   2              }
 965   1              if (OPEN==0){   //开始充电
 966   2                      ClearDisplay(); 
 967   2                      DisplayChar(0,0x0c);            //CD表示充电
 968   2                      DisplayChar(1,0x0d);
 969   2                      P2=0;   //关闭充放电通道
 970   2                      SW7=1;  //打开充电通道
 971   2                      ADC1_open=1;    //adc1打开控制
 972   2                      ADC3_open=1;    //adc3打开控制
 973   2                      Display_state=charge_28V_display;
 974   2              }
 975   1              if (FEE==0){    //开始放电
 976   2                      ClearDisplay(); 
 977   2                      DisplayChar(0,0x0F);            //FD表示放电
 978   2                      DisplayChar(1,0x0d);
 979   2                      P2=0;   //关闭充放电通道
 980   2                      //等待20毫秒
 981   2                      flag_10ms_1=0;
 982   2      //              while (flag_10ms_1==0) {}       //
 983   2                      flag_1ms_adc=0;
 984   2      //              while (flag_10ms_1==0) {}
 985   2                      //读取3通道起始起始电压
C51 COMPILER V8.06   MAINPROG                                                              02/13/2009 09:29:07 PAGE 17  

 986   2                      read_start_votage();
 987   2                      P2=0;   //关闭充放电通道,由-
 988   2                      //P2=0x03;      //打开0、1放电通道
 989   2                      //P2=0x0;       //打开3放电通道
 990   2                      ADC1_open=1;    //adc1打开控制
 991   2                      ADC3_open=1;    //adc3打开控制
 992   2                      Display_state=discharge_28V_start;
 993   2              }
 994   1              if (BILL==0){   //开始放电
 995   2                      Display_state=cap_test_start;
 996   2                      ADC1_open=1;    //adc1打开控制
 997   2                      ADC3_open=1;    //adc3打开控制
 998   2              }
 999   1      }
1000          //读取中断ADC值
1001          void read_intr_adc(void)
1002          {
1003   1              EA=0;   //关闭总中断
1004   1              ADC_result1=ADC_result_intr1;
1005   1              ADC_result2=ADC_result_intr2;
1006   1              ADC_result3=ADC_result_intr3;
1007   1              ADC1_accumulate=ADC1_accumulate_intr;                                   //1通道累加值
1008   1              EA=1;   //打开中断
1009   1      }
1010          //读取3通道起始起始电压
1011          void read_start_votage(void)
1012          {
1013   1              read_intr_adc();        //读取中断ADC值
1014   1              start_votage=ADC_result3*ADC3_coefficient;              //充电起始电压
10

⌨️ 快捷键说明

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